对tcp连接的第一次握手的分析

来源:互联网 发布:小说印刷排版软件 编辑:程序博客网 时间:2024/06/06 10:11

可以参考如下文章:

http://linux.vbird.org/linux_server/0110network_basic.php#ipandmac_head

 

tcp连接的第一次握手
============
15:20:16.299527 00:22:19:4f:7a:09 > 00:22:19:4f:7c:f2, ethertype IPv4 (0x0800), length 62: IP 192.168.20.17.2513 > localhost.localdomain.9900: S 2733155023:2733155023(0) win 65535 <mss 1460,nop,nop,sackOK>
        0x0000:  4500 0030 aabb 4000 7b06 8ca1 c0a8 1411  E..0..@.{.......
        0x0010:  c0a8 3309 09d1 26ac a2e8 a2cf 0000 0000  ..3...&.........
        0x0020:  7002 ffff 447f 0000 0204 05b4 0101 0402  p...D...........

IP Header
(1)前4位是Version,4代表IPv4
(2)接着4位是IHL,IP头的长度,是4字节的整数倍,最小的IP头长度为20字节,因此这里是5
(3)8位服务类型:PPPDTRUU
  P:IP包的优先级;
  D:0--一般延迟,1--低迟延
  T:0--一般传输量,1--高传输量
  R:0--一般可靠度,1--高可靠度
  UU:保留
这里为00,表示,优先级一般,延迟一般,传输量一般,可靠度一般
(4)16位IP包的总长度:0030表示48bytes,这里面一共3行数据,每行16个字节,正好48bytes
(5)16位的识别码:071d,因为IP要分包,所以这个用于识别数据是否是同一个包的
(6)3位的flag:0DM
  D:0--可以分段,1--不可分段
  M:0--最后分段,1--非最后分段
这里为4000,转成二进制的前三位为010,为不可以分段,是最后分段
(7)13位分段偏移
用于将分包组合到一起时用,由于无分包,这里为13位的0
(8)8位的ttl
7b表示79跳后就弃包
(9)8位的protocol
  1--ICMP
  2--IGMP
  3--GGP
  4--IP
  6--TCP
  8--EGP
  17--UDP
06表示TCP协议
(10)16位header checksum:7b06
(11)32位源ip:c0a8 1411 ==> 192.168.20.17
(12)32位目的ip:c0a8 3309 ==> 192.168.51.9
(13)Options是其他参数,后面padding用来补齐,使其为4字节的倍数
因为ip header长度为20个字节,在(2)IHL中指定,因此IP Header到第二行的3309为止
(14)接着是IP Data,TCP包就封装在这里


TCP Header
在上面的IP Header后,紧接着封装数据,此包为TCP数据
(1)16位源port:09d1 ==> 10进制为2513
(2)16位目的port:26ac ==> 10进制为9900
(3)32位用于tcp的序列号:a2e8 a2cf ==> 10进制为2733155023
(4)32位的Acknowlege Number:0000 0000 ==> 因为这是tcp三次握手的第一次,所以ack number为0
(5)4位的Data偏移:表示TCP包的总长度,7,说明是28bytes,从第二行的09d1到第三行结束
(6)6位的保留位
(7)6位的控制标志:02 ==> 00000010,后六位为000010
每一位含义如下:
  URG
  ACK
  PSH
  RST
  SYN
  FIN
因为这是tcp三次握手的第一次,只发送syn,因此只有第5位为1
(8)16位window大小:ffff ==> 65535
(9)16位checksum:447f
(10)16位的紧急资料:0000
(11)Options和Padding:其它选项和填充位
0204 05b4 0101 0402是选项
  kind:一个字节
  长度:一个字节
  数据
  注意:长度中包括kind所占大小
  kind=1,无操作(1字节)
  kind=2,最大报文段长度,(4字节),0204 05b4  02为kind,04为长度,05b4为最大报文段长度
  kind=4,是否支持sack,(2字节),0402
(12)Data:tcp数据

 

原创粉丝点击