协议包格式
以太网数据帧
TCP/IP数据包
TCP基本状态
tcpdump使用
常用命令:
tcpdump -s 0 -X port 33333 -i eth0
tcpdump -s 0 –A port 33333 and host 192.168.3.171 -i eth0
最短tcp数据包(46字节)
09:26:12.299419 IP 192.168.54.232.57101 >platform1.7090: . ack 17073 win 16425
0x0000: 4500 0028 624d4000 7d06 df9e c0a8 36e8 E..(bM@.}.....6.
0x0010: c0a8 03abdf0d 1bb2 0cfb c4df 2600 3248 ............&.2H
0x0020: 5010 4029 8ee40000 0000 0000 0000 P.@).
带tcp选项的数据包(40 + 12(sack选项))
09:26:12.298639 IP 192.168.54.232.57101 >platform1.7090: . ack 15224 win 16394<nop,nop,sack1 {16684:17073}>
0x0000: 4500 0034 624c4000 7d06 df93 c0a8 36e8 E..4bL@.}.....6.
0x0010: c0a8 03abdf0d 1bb2 0cfb c4df 2600 2b0f ............&.+.
0x0020: 8010 400a b11900000101 050a 2600 30c3 ..@.........&.0.
0x0030: 2600 3248 &.2H
常用TCP选项
每个选项的开始是1字节的kind字段,说明选项的类型:
Kind=0:选项表结束(1字节)
Kind=1:无操作(1字节)
Kind=2:最大报文段长度(4字节)
Kind=3: 窗口扩大因子(4字节)
Kind=5: 选择性确认 (10字节)
Kind=8: 时间戳(10字节)
普通数据包(无tcp选项)
09:26:12.298176 IP platform1.7090 >192.168.54.232.57101: . 15224:16684(1460) ack 8233 win 501
0x0000: 4500 05dc 53a4 4000 4006 2594 c0a8 03ab E...S.@.@.%.....
0x0010: c0a8 36e81bb2 df0d 2600 2b0f0cfb c4df ..6.....&.+.....
0x0020: 5010 01f5c1b2 0000 4854 54502f31 2e31 P.......HTTP/1.1
0x0030: 2032 3030 204f 4b0d 0a53 6572 7665 723a .200.OK..Server:
普通数据包(timestamp选项)
20:58:07.249446 IP platform1.13694 >platform2.33333: P 73:173(100) ack 72 win 46<nop,nop,timestamp 547708628 617844281>
0x0000: 4508 00989ab1 4000 4006 16ff c0a8 03ab E.....@.@.......
0x0010: c0a8 03ac357e 8235 9ef2 c4c788bf 784b ....5~.5......xK
0x0020: 8018 002e56a2 00000101 080a 20a5 5ed4 ....V.........^.
0x0030: 24d3 8e39 6000 0000 0373 656c6563 7420 $..9`....select.
0x0040: 636f 756e 7428 2a29 2061 7320 636f 756e count(*).as.coun
0x0050: 7420 6672 6f6d 2066 6169 6c6f 7665 725f t.from.failover_
0x0060: 746f 646f 5f74 2077 6865 7265 2062 7573 todo_t.where.bus
0x0070: 695f 6964 203d 2035 2061 6e64 2073 6572 i_id.=.5.and.ser
0x0080: 7665 725f 6964 203d 2031 3220 616e 6420 ver_id.=.12.and.
0x0090: 7479 7065 203d 2035 type.=.5