加入收藏 | 设为首页 | 会员中心 | 我要投稿 济源站长网 (https://www.0391zz.cn/)- 数据工具、数据仓库、行业智能、CDN、运营!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

网络通信协议之TCP

发布时间:2019-04-30 02:33:43 所属栏目:教程 来源:360技术
导读:部分非常容易能够创建一个本地TCP服务器,正好可以用来分析一下TCP的请求和响应过程。 在本篇文章,笔者将给大家介绍下TCP建立连接(三次握手),传输数据,断开连接(四次挥手)的过程。 TCP简介 TCP:TCP(Transmission Control Protocol 传输控制协议)是一种

TCP Window Update 是TCP通信中的一个状态,它可以发生的原因有很多,但最终归结于发送者传输数据的速度比接收者读取的数据还快,这使得接受端的在缓冲区必须释放一部分空间来装发送过来的数据,然后向发送者发送Windows Update,告诉给发送者应该以多大的速度发送数据,从而使得数据传输与接受恢复正常。参考:tcp三次握手

从上图TCP Window Update,根据Source Port:20000及Destination Port:59006可知,当前发送者是客户端,解释下上一段文字的意思是,客户端发送的数据太快,服务端读书数据慢,服务端向客户端发送了一个TCP Window Update的报文。

上述内容就是TCP建立连接的过程,下边笔者给大家介绍下传输数据部分的内容:

TCP的数据传输过程

查看数据传输过程和之前建立连接部分,用的是下图代码进行的分析:

代码内容和之前建立连接的代码一样,只是添加了发送数据和断开连接的几行代码。可见这次客户端分配的端口号为53262。

在分析数据传输过程之前,笔者先对下边会用到的名词及工具做个简单说明:

  • 字节即byte,比特即bit,1个字节(byte)=8个比特(bit)。
  • ASCII码:是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统

ASCII码对照表:

举个例子'A'的ASCII码为0x41

基本的16进制、2进制、10进制之间的转换:16进制0x41对应2进制为 0100 0001对应10进制为4 * 16 + 1 = 65

在线进制转换:

下边笔者带大家看一下数据传输部分的分析:

下图表示客户端s.send(b'A')以二进制形式传输'A'(其对应的ASCII码为65)传输过程:

客户端到服务端

下边展示一个客户端s.send(b'AB')并且服务端给予相应的回应(服务端也给客户端发送收到的'')的过程:

  • 接收数据的部分Flags中的Acknowledgement 设置为1,表示确认应答的字段有效
  • 接收数据的部分Flags中的Push 设置为1表示表示接收方应该尽快把数据传给上层应用协议

从源端口53262,目的端口20000可以看出,下图表示客户端向服务端发送消息,发送的数据为'AB','AB'的ASCII码为0x4142。

客户端向服务端发送消息

从源端口20000,目的端口53262可以看出下图表示服务端向客户端反馈收到了消息。

(编辑:济源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读