TCP抓包分析
一 TCP格式
源端口:数据发起者的端口号;?
目的端口:数据接收方的端口号;
32bit序列号:标识当前数据段的唯一性;
32bit的确认号:接收数据方返回给发送方的通知;
TCP头部长度为20字节,若TCP头部的Options选项启用,则会增加首部长度,因此TCP是首部变长的传输层协议;
Reserved、Reserved、Nonce、CWR、ECN-Echo:共6bit,保留待用。?
URG:1bit紧急指针位,取值1代表这个数据是紧急数据需加速传递,取值0代表这是普通数据;?
ACK:1bit确认位,取值1代表这是一个确认的TCP包,取值0则不是确认包;PSH:1bit紧急位,取值1代表要求发送方马上发送该分段,而接收方尽快的将报文交给应用层,不做队列处理。取值0阿迪表这是普通数据;?
RST:1bit重置位,当TCP收到一个不属于该主机的任何一个连接的数据,则向对方发一个复位包,此时该位取值为1,若取值为0代表这个数据包是传给自己的;?
SYN:1bit请求位,取值1代表这是一个TCP三次握手的建立连接的包,取值为0就代表是其他包;?
FIN:1bit完成位,取值1代表这是一个TCP断开连接的包,取值为0就代表是其他包;?
Window?Size:16bit窗口大小,表示准备收到的每个TCP数据的大小;?
Checksum:16bit的TCP头部校验,计算TCP头部,从而证明数据的有效性;?
Urgent?Pointer:16bit紧急数据点,当功能bit中的URG取值为1时有效;?
Options:TCP的头部最小20个字节。如果这里有设置其他参数,会导致头部增大;?
Padding:当TCP头部小于20字节时会出现,不定长的空白填充字段,填充内容都是0,但是填充长度一定会是32的倍数;?
Data:被TCP封装进去的数据,包含应用层协议头部和用户发出的数据。
二 数据截图
1.第一个TCP报文:
2.第二个TCP报文:
3.第三个TCP报文:
二 分析
上面截图的三个TCP报文段表示了TCP连接时的三次握手阶段。
1.第一个TCP报文
这是要建立连接的客户(我)向服务器发出连接请求段tcp三次握手图解
在TRANSMISSION CONTROL PROTOCOL这张截图中我们可以知道源端口号也就是主机端口号为50590,而目的端口号为HTTP的80端口,确认号为0(相对的),而首部长度为32字节,在标志位FLAGS(0x0002)中,只设置了SYN,也就是位同步标志,表示请求建立连接。窗口大小WINDOW SIZE为8192,校验和CHECKSUM为0x553a,说明是正确的。选项是12字节,里面的内容有最大段(MSS)大小为1440字节,占4个字节。
2.第二个TCP报文
这是服务器在收到请求后,发回确认(SYN+ACK)。
在TRANSMISSION CONTROL PROTOCOL这张截图中我们可以知道源主机(服务器)端口号为80,目的主机(客户机)端口号为50590,SEQUENCE NUMBER=0,ACK=1,首部长度为32字节。在标志位(0x0012)中设置了ACK和SYN,其中SYN表示认可连接,ACK表示对所接受的段的确认。窗口大小( WINDOW SIZE)为5840,校验和(checksum)为0x646d,表示正确。选项(options)占12字节,其中包括最大段(MSS)大小为1460字节,占4字节。
3.第三个TCP报文
这是客户向服务器发出的确认段
源主机(客户机)端口号为50590,目的主机(服务器)端口号为80,SEQUENCE NUMBER=1,ACK=1,首部长度为20字节。标志位(0x0010)中只设置了ACK,表示对所接受的段的确认。窗口大小为16560,校验和为0x7b5f,表示正确。这样就完成了TCP连接的建立阶段。没有options选项。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论