您的位置:首页 > 理论基础 > 计算机网络

TCP 原理抓包分析

2014-06-26 13:45 204 查看


client简称为c, server简称为s. seq指sequence number, ack指Ack number.

建立连接过程中:

c到s的SYN包,seq=0, ack=0

s到c的SYN ACK包, seq=0, ack=1 (即ack为上个SYN包的seq+1)

c到s的ACK包, seq=1, ack=1 (即ack为上个SYN ACK包的seq+1)

发送数据中:

c->s发送包为PSH ACK包, seq为1,next seq=23, ack=1 (因为该包数据长度为22,所以是在基础序列号1的基础上加22,得到23)

回应包为ACK包, seq=1, ack=23(即此ack为上一个包指明的next seq)

c->发送包为PSH ACK包, seq为23,next seq=69, ack=1 (该包数据长度为46,23+46=69)

回应包为ACK包, seq=1, ack=69(即此ack为上一个包指明的next seq)

s->c发送包为PSH ACK包, seq为1,next seq=6, ack=69 (该包数据长度为5,1+5=6)

回应包为ACK包, seq=, ack=(即此ack为上一个包指明的next seq) (由于程序中server没有等client回应就提前结束,所以没有ack包)

释放连接过程中:

s->c FIN ACK包, seq=6, ack=69

c->s ACK包, seq=69, ack=7 (即ack为上个SYN包的seq+1)

c->s FIN ACK包, seq=69, ack=7

s->c ACK包, seq=7, ack=70 (即ack为上个SYN包的seq+1)

目前存在问题:

SYN包中的序列号为0, 但是在抓包中对应的二进制数是 60 2f 30 02, 不知道是如何翻译过来的?有谁知道请回复哦,谢谢



另外TCP的校验和计算请参考文章“UDP协议”中的算法。




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: