剩余的数据部分即为TCP协议相关的。TCP也是20B固定长度+可变长度部分。
字节值 字节含义0x1ba8 16bit源端口7080
0xdb9b 16bit目的端口。56219
0x6d03 e87d 32bit序列号。1828972669
0xa59a 492f 32bit确认号。2778351919
0x8 4bit首部长度,以4byte为单位。共8*4=32字节。因此TCP报文的可选长度为32-20=12字节
0b000000 6bit保留位。目前置为0.
0b011000 6bitTCP标志位。从左到右依次是紧急 URG、确认 ACK、推送 PSH、复位 RST、同步 SYN 、终止 FIN。ack有效,同时psh有效
0x00ec 滑动窗口大小,滑动窗口即tcp接收缓冲区的大小,用于tcp拥塞控制。236
0xe113 16bit校验和。
0x0000 紧急指针。仅在 URG = 1时才有意义,它指出本报文段中的紧急数据的字节数。当 URG = 1 时,发送方 TCP 就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据。
可变长度部分,协议如下:
字节值 字节含义0x01 无操作
0x01 无操作
0x0402 表示支持SACK
0x080a 0f20 3af8 2e4c b2ef 时间戳。Ts val=0x2e4c b2ef=253770488, ecr=0x0f20 3acf=776778479
剩下来的就是数据部分了。我们一行一行地看。
首地址 字节流 字符0x0030 4854 5450 2f31 2e31 2032 3030 HTTP/1.1 200
0x0040 204f 4b0d 0a41 6363 6573 732d 436f 6e74 OK \r\n Access-Cont
0x0050 726f 6c2d 416c 6c6f 772d 4f72 6967 696e rol-Allow-Origin
0x0060 3a20 2a0d 0a44 6174 653a 2054 6875 2c20 : * \r\n Date: Thu,
0x0070 3033 204a 616e 2032 3031 3920 3132 3a32 03 Jan 2019 12:2
0x0080 333a 3437 2047 4d54 0d0a 436f 6e74 656e 3:47 GMT \r\n Conten
0x0090 742d 4c65 6e67 7468 3a20 3438 0d0a 436f t-Length: 48\r\n Co
0x00a0 6e74 656e 742d 5479 7065 3a20 7465 7874 ntent-Type: text
0x00b0 2f70 6c61 696e 3b20 6368 6172 7365 743d /plain; charset=
0x00c0 7574 662d 380d 0a0d 0a7b 2264 6174 6122 utf-8\r\n\r\n{"data"
0x00d0 3a7b 2261 7265 6122 3a34 3837 3634 3133 :{"area":4876413
0x00e0 3535 3937 2e38 3432 3630 367d 2c22 6572 5597.842606},"er
0x00f0 7273 7472 223a 2222 7d rstr":""}
把上表的最后一列连起来,就是:
HTTP/1.1 200 OK Access-Control-Allow-Origin: * Date: Thu, 03 Jan 2019 12:23:47 GMT Content-Length: 48 Content-Type: text/plain; charset=utf-8 {"data":{"area":48764135597.842606},"errstr":""}Content-Length: 48,最后一行的长度即为48个字节。
最后,第七个包,字节流如下:
0x0000: 4500 0034 0000 4000 3606 649c ac17 ccdc 0x0010: 0a60 5cd4 db9b 1ba8 a59a 492f 6d03 e942 0x0020: 8010 100f 1eb9 0000 0101 080a 2e4c b314 0x0030: 0f20 3af8 字节值 字节含义0x4 IP版本为ipv4
0x5 首部长度为5 * 4字节=20B
0x00 服务类型,现在基本都置为0
0x0034 总长度为52字节,即整个包的长度是52字节
0x0000 标识。同一个数据报的唯一标识。当IP数据报被拆分时,会复制到每一个数据中。
0x4000 3bit 标志 + 13bit 片偏移。3bit 标志对应 R、DF、MF。目前只有后两位有效,DF位:为1表示不分片,为0表示分片。MF:为1表示“更多的片”,为0表示这是最后一片。13bit 片位移:本分片在原先数据报文中相对首位的偏移位。(需要再乘以8 )
0x36 生存时间TTL。IP报文所允许通过的路由器的最大数量。每经过一个路由器,TTL减1,当为 0 时,路由器将该数据报丢弃。TTL 字段是由发送端初始设置一个 8 bit字段.推荐的初始值由分配数字 RFC 指定。发送 ICMP 回显应答时经常把 TTL 设为最大值 255。TTL可以防止数据报陷入路由循环。 此处为54.
0x06 协议类型。指出IP报文携带的数据使用的是哪种协议,以便目的主机的IP层能知道要将数据报上交到哪个进程。TCP 的协议号为6,UDP 的协议号为17。ICMP 的协议号为1,IGMP 的协议号为2。该 IP 报文携带的数据使用 TCP 协议,得到了验证。
0x649c 16bitIP首部校验和。
0xac17 ccdc 32bit源ip地址。
0x0a60 5cd4 32bit目的ip地址。