10:08:51.006836 IP 58.16.246.110.25479 > 58.16.246.220.5016: P 33025:33041(16) ack 33228 win 5840 0x0000: 4500 0038 d14f 4000 4006 0805 3a10 f66e E..8.O@.@...:..n 0x0010: 3a10 f6dc 6387 1398 2e78 1088 5a1a ac28 :...c....x..Z..( 0x0020: 5018 16d0 6196 0000 0000 000c 8000 0015 P...a........... 0x0030: 0000 0000 a716 f4f8 ........
IP Header45 4 //协议版本 ipv4 4bit 5 //IHL位 20字节, 表示IP Header长度 以32bit为除数计算出的IP头部长度 本区域值 = IP头部长度 / 32 最长的IP包头长度可以为480bit00 // 服务类型 Type of Service Precedence和TOS。定义IP协议包的处理方法,它包含如下子字段 过程字段(优先权):3位,设置了数据包的重要性,取值越大数据越重要,取值范围为:0(正常)~ 7(网络控制) 延迟(时延)字段:1位,取值:0(正常)、1(期特低的延迟) 流量(吞吐量)字段:1位,取值:0(正常)、1(期特高的流量) 可靠性字段:1位,取值:0(正常)、1(期特高的可靠性) 成本(开销)字段:1位,取值:0(正常)、1(期特最小成本) 未使用(保留位):1位,恒设为0 TOS目前不太使用。而Precedence则用于QOS应用。(TOS字段的详细描述RFC 1340 1349)00 38 //IP数据报文总长d1 4f //标识符(Identifier):长度16比特。该字段和Flags和Fragment Offest字段联合使用,对大的上层数据包进行分段(fragment)操作。如果数据包原始长度超过MTU,那么将他分段为更小的数据包.然后路由器在每片数据包的标志字段打上相同的标记,以便接收设备可以识别出属于一个数据包的分段.分段的数据包不会在数据链路的另外一端重新组合,直到最终目的地才会重组.40 00 //标记(Flags):长度3比特 分段序号(Fragment Offset):长度13比特40 //TTL06 //协议(Protocol):长度8比特。标识了上层所使用的协议。TCP=06 UDP=17 ICMP=01 其他请查看cat /etc/protocols08 05 //头部校验(Header Checksum):长度16位,由于IP包头是变长的,所以提供一个头部校验来保证IP包头中信息的正确性。3a 10 f6 6e 3a 10 f6 dc tcp Header6387 //src port 本地端口254791398 //dest port 目标端口50162e78 1088 //Sequence Number 顺序号5a1a ac28 //ack num 确认号5018 //tcp头长度 20字节 5018 2进制01010000 00011000 5 0101 //表示tcp长度 20字节 0000 00 //保留 无意义 011000 //6bit 标志位
URG: (Urgent Pointer field significant)紧急指针。用到的时候值为1,用来处理避免TCP数据流中断
ACK: (Acknowledgment fieldsignificant)置1时表示确认号(AcknowledgmentNumber)为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。
PSH: (Push Function),PUSH标志的数据,置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。
RST: (Reset the connection)用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。如果接收到RST位时候,通常发生了某些错误。
SYN: (Synchronize sequence numbers)用来建立连接,在连接请求中,SYN=1,ACK=0,连接响应时,SYN=1,ACK=1。即,SYN和ACK来区分 Connection Request和Connection Accepted。
FIN: (No more data from sender)用来释放连接,表明发送方已经没有数据发送了。
16d0 6196 0000 data0000 000c 8000 0015 0000 0000 a716 f4f8 //承载的数据体