前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >计网 - TCP三次握手原理全曝光:深度解析与实战演示

计网 - TCP三次握手原理全曝光:深度解析与实战演示

作者头像
小小工匠
发布2023-12-18 12:45:32
发布2023-12-18 12:45:32
7850
举报
文章被收录于专栏:小工匠聊架构小工匠聊架构
文章目录
  • Pre
  • 导图
  • 过程分析
  • 抓包实战
    • 第一次握手
    • 第二次握手
    • 第三次握手

导图


过程分析

第一次握手:客户端将请求报文标志位 SYN 置为 1,请求报文的 Sequence Number 字段(简称 seq)中填入一个随机值 J,并将该数据包发送给服务器端,客户端进入 SYN_SENT 状态,等待服务器端确认。


第二次握手:服务器端收到数据包后由请求报文标志位 SYN=1 知道客户端请求建立连接,服务器端将应答报文标志位 SYN 和 ACK 都置为 1,应答报文的 Acknowledgment Number字段(简称 ack)中填入 ack=J+1,应答报文的 seq 中填入一个随机值 K,并将该数据包发送给客户端以确认连接请求,服务器端进入 SYN_RCVD 状态。


第三次握手:客户端收到应答报文后,检查 ack 是否为 J+1,ACK 是否为 1,如果正确则将第三个报文标志位 ACK 置为 1,ack=K+1,并将该数据包发送给服务器端,服务器端检查 ack 是否为 K+1,ACK 是否为 1,如果正确则连接建立成功,客户端和服务器端进入ESTABLISHED 状态,完成三次握手,随后客户端与服务器端之间可以开始传输数据了。

第三次握手是可以携带数据的,前两次握手是不可以携带数据的

一旦完成三次握手,双方都处于 ESTABLISHED 状态,此时连接就已建立完成,客户端和服务端就可以相互发送数据了


抓包实战

按照 tcp 三次握手的规则,三次握手包含一个 SYN 包、 一个 SYN/ACK 包和 一个 ACK包

我们用wireshark 抓一下

第一次握手

【数据链路层 】

从这里我们可以看出,这是数据链路层相关的信息,source 部分的地址和机器上的mac 地址一模一样


【IP层】

接下来,就是 IP 层的相关信息,其中表明了它的上一层协议是 TCP,同时本地和远程服务器的 IP 地址:


【TCP】

接下来,就是 TCP 层的相关信息,其中包括了本地端口和远程服务端口,既然是 syn 包,里面当然会带上 seq 值,本次通信是 1979849485,tcp 报文格式中的 syn 字段被设置为 1,用来表明这是一个 syn 包


第二次握手

数据链路层和 IP 层的报文我们不再查阅,直接看 TCP 层的报文,很明显,这是服务器给客户端的 ACK 报文,其中依然包括了远程服务端口和本地端口

  • 同时服务器要把自己端的 seq 值告诉客户端,我们看到实际值是 3366556883。
  • 同时服务器要把客户端传给自己的seq 值做个应答确认,所以我们看见 Acknowledgment number 字段值是 1979849486,刚好是第一次握手中,客户端传递给服务端的 seq 值 1979849485 加 1。
  • 同时 tcp 报文格式中的syn 字段被设置为 1,Acknowledgment 字段被设置为 1,用来表明这是一个 syn/ack 包

第三次握手

客户端收到应答报文后,检查 ack 是否为 J+1,ACK 是否为 1,如果正确则将第三个报文标志位 ACK 置为 1,ack=K+1,并将该数据包发送给服务器端,服务器端检查 ack 是否为 K+1,ACK 是否为 1,如果正确则连接建立成功,客户端和服务器端进入ESTABLISHED 状态,完成三次握手,随后客户端与服务器端之间可以开始传输数据了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 导图
  • 过程分析
  • 抓包实战
    • 第一次握手
    • 第二次握手
    • 第三次握手
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档