18-tcp数据报文封装格式

18-tcp数据报文封装格式_第1张图片

图1-tcp数据报文在网络中封装格式



下图中就是我们刚才通过wireshark软件抓到的TCP数据报。
18-tcp数据报文封装格式_第2张图片



图3是259这个数据报的封装格式:

18-tcp数据报文封装格式_第3张图片
图3-tcp数据报文结构



tcp数据报中首部的各个字段分析:

Transmission Control Protocol, Src Port: 51211, Dst Port: 80, Seq: 0, Len: 0
    Source Port: 51211     //源端口,是一个动态的端口
    Destination Port: 80    //访问的目的主机的80端口,说明是访问基于http协议的资源
[Stream index: 4]   //流索引,如果访问的源IP和源端口,目的IP和目的端口如果始终不变的话,这个索引值一直都是0,只要有其中一个变,这个索引值就会变,但是TCP数据报格式中是没有这个字段的

    [TCP Segment Len: 0] //tcp报文段的长度为0,说明我们还没有开始传输数据,这是一个tcp连接请求报文,并没有携带数据
    Sequence number: 0    (relative sequence number)  //序号分为相对序号和绝对序号,relative是相对的意思,这里说的是相对序号
    Acknowledgment number: 0   //确认号为0
    1000 .... = Header Length: 32 bytes (8)   //首部长度字段为32字节,说明可选字段长度为12字节,首部长度为20字节
    Flags: 0x002 (SYN)   //说明这是一个tcp请求连接
    000. .... .... = Reserved: Not set   //保留位没有用到,以0填充
    ...0 .... .... = Nonce: Not set     //这个标志位是为了防止SYN洪泛攻击而设计的,未来可能会用到
    .... 0... .... = Congestion Window Reduced (CWR): Not set  
    .... .0.. .... = ECN-Echo: Not set
    .... ..0. .... = Urgent: Not set    //紧急指针
    .... ...0 .... = Acknowledgment: Not set  //确认号
    .... .... 0... = Push: Not set       //推送
    .... .... .0.. = Reset: Not set      //复位
    .... .... ..1. = Syn: Set           //同步,synbit位被置1,说明这是一个tcp请求连接
    .... .... ...0 = Fin: Not set       //终止
    [TCP Flags: ··········S·]               
    Window size value: 8192              //windows系统下的窗口大小为8k   ,告诉目的设备发送的数据在8192字节以内都是可以接收的
    [Calculated window size: 8192]         //windows系统下的计算窗口大小为8k,这个由抓包软件计算的,在tcp数据段报文中只有窗口字段
    Checksum: 0xfe5e [correct]           //校验和,用于校验首部和数据部分,correct说明校验没有问题
    [Checksum Status: Good]            //Good表示校验和正确,bad表示校验和错误
    [Calculated Checksum: 0xfe5e]       //计算的校验和
    Urgent pointer: 0                 //紧急指针
Options: (12 bytes)               //可选字段
    TCP Option - Maximum segment size: 1440 bytes   //表示传输的数据最大是1440字节,需要注意,这里并不包括IP首部和tcp首部
    TCP Option - No-Operation (NOP)
    TCP Option - Window scale: 2 (multiply by 4)
    TCP Option - No-Operation (NOP)
    TCP Option - No-Operation (NOP)
    TCP Option - SACK permitted

关于tcp首部中各个字段在前面两篇中已经说过,这里就不再赘述了。

你可能感兴趣的:(tcp/ip协议修炼心法)