TCP 原理抓包分析

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协议”中的算法。







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值