分享

扒一扒TCP的三次握手

 立志德美 2022-03-05
传说中,创建TCP连接,需要经历三次握手,今天扒一扒
在电脑A(192.168.11.111)上启动TCP Server,端口号60000;在电脑B(192.168.11.1)上启动WireShark,并启动TCP Client
Client连接Server时,WireShark抓到三帧数据

Image

第一帧由Client发送给Server,66字节

Image

根据网络报文的格式定义,可将其划分为14+20+20+12=66字节。以太网报文头部占14字节

Image

0x0800表示上层为IP报文。IP报文头部占20字节

Image

0x06表示再上层是TCP协议。0x34表示TCP报文长度为52-20=32字节

Image

序列号为随机数0xC0563472,确认号为0。标志位0x02表示这是TH_SYN帧。标志位取值主要有
  • 0x01 TH_FIN 

  • 0x02 TH_SYN 

  • 0x04 TH_RST 

  • 0x08 TH_PUSH 

  • 0x10 TH_ACK 

  • 0x20 TH_URG 

0x8表示TCP头部为8*4=32字节,因此除了固定的20字节外,还有12字节的option字段,并且没有数据字段
常见的option如下

Image

因此,这12字节如下

Image

MSS为0x05B4=1460即TCP报文的数据字段最长为1460

再看第二帧,由Server发送给Client,长度62字节

Image

同样方式划分为14+20+20+8=62

Image

序列号为随机数0x57B6972B,确认号为0xC0563472+1。TCP的头部长度由8变为7,表示第二帧少4个字节。标志位0x12,表示TH_ACK和TH_SYN

最后是三帧,Client发送给Server,54字节

Image

划分为14+20+20=54

Image

序列号为0xC0563472+1,确认号为0x57B6972B+1。TCP的头部长度变为5,表示没有option了。标志位0x10,表示TH_ACK

总结一下,三次握手长这样

Image


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多