TCP基础--协议包基本分析

来源:互联网 发布:算法工程师职业规划 编辑:程序博客网 时间:2024/06/07 17:24

协议包格式

以太网数据帧

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

        0x00004500 0028 624d4000 7d06 df9e c0a8 36e8    E..(bM@.}.....6.

        0x0010c0a8 03abdf0d 1bb2 0cfb c4df 2600 3248     ............&.2H

        0x00205010 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}>

        0x00004500 0034 624c4000 7d06 df93 c0a8 36e8      E..4bL@.}.....6.

        0x0010: c0a8 03abdf0d 1bb2 0cfb c4df 2600 2b0f       ............&.+.

        0x00208010 400a b11900000101050a 2600 30c3    ..@.........&.0.

        0x00302600 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 080a20a5 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

0 0