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

网络通信协议之TCP

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

Acknowledgement number 为4是因为,服务端接接收了客户端的2个字节的数据,在之前的客户端的Sequence number的基础上加了2。

服务端到客户端收到消息响应

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

服务端给客户端发送消息

从源端口53262,目的端口20000可以看出下图表示客户端向服务端反馈收到了消息。Acknowledgement number 为4是因为,客户端接收了服务端的2个字节的数据,在之前的服务端的Sequence number的基础上加了2。

客户端收到服务端消息后的响应

TCP断开连接四次挥手

TCP断开连接示意图如下:

TCP断开连接示意图

对应的Python的客户端代码s.shutdown(2),客户端主动断开连接的。

  • 断开连接的Flags中Fin是设置为1的,表示希望断开连接。
  • 断开连接的Flags中Ack是设置为1的,表示确认应答字段有效。

响应的Wireshark抓包分析如下:

TCP断开连接第一次挥手,从源端口53262到目的端口20000,可以看出是客户端主动断开连接的。Flags中的Fin是设置为1的,Sequence number为7。

TCP断开连接第一次挥手

TCP断开连接第二次挥手,从源端口20000到目的端口53262,可以看出是服务端给予客户端断开连接的响应。并且Acknowledge number对之前的客户端的Sequence number做了加1操作。

TCP断开连接第二次挥手

TCP断开连接第三次挥手,从源端口20000到目的端口53262,Flags中的Fin是设置为1的,可以看出是服务端向客户端发送断开连接的。Sequence number为7。

TCP断开连接第三次挥手

TCP断开连接第四次挥手,从源端口53262到目的端口20000,可以看出是客户端给予服务端断开连接的响应。并且Acknowledge number对之前的服务端的Sequence number做了加1操作。

TCP断开连接第四次挥手

下边,笔者贴出了IP和TCP首部及Wireshark捕获TCP请求过程的的图。有兴趣的读者可自行做简单分析。

TCP数据在IP数据报中的封装及TCP包首部

后来和昆哥一起交流,经过昆哥指正,上图的TCP首部已经更新过了,较新的TCP首部格式如下:

TCP首部

下图为TCP首部中的控制位部分:

控制位 Control Flag

TCP

TCP

(编辑:济源站长网)

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

热点阅读