对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数据
- 对tcp连接的第一次握手的分析
- 对tcp连接的第二次握手的分析
- 对tcp连接的第三次握手的分析
- 对 TCP 建立连接需要 3 次握手的理解
- TCP连接的三次握手
- TCP连接的三次握手
- TCP连接的三次握手
- TCP连接的三次握手
- TCP 协议的握手连接
- 对TCP/IP三次握手的理解
- TCP连接的3次握手原理
- TCP连接的三次握手原理
- TCP/IP的三次握手建立连接
- TCP建立连接的三次握手
- TCP连接的三次握手原理(转)
- TCP建立连接的三次握手
- TCP连接的三次握手原理
- 建立TCP连接的三次握手
- 一次tcp连接及断开的抓包
- Discuz7.2 首页四格图片不刷新的解决方案
- POJ2253的Kruskal做法
- ERP专业词汇
- Agile Testing - Google Tech Talk (notes)
- 对tcp连接的第一次握手的分析
- 看到写道(1)
- 对tcp连接的第二次握手的分析
- CT图像重建技术
- 求N多特最大公约数和最小公倍数
- ACM一周年记
- setInterval全面的介绍
- 建立窗体,获得鼠标所指的坐标值【菜鸟】
- 对tcp连接的第三次握手的分析