基础知识2-seq ack

1、三次握手
A-B 发syn包 seq=j
B-A 发syn,ack包 seq=k ack=j+1
A-B 发ack包,seq=上一个包的ack ack=k+1

2、发起请求(seq表示这个包的序号,注意,这个序号不是按1递增的,而是按tcp包内数据字节长度加上,如包内数据是21字节,而当前IP1发到IP2的包的seq是10的话,那下个IP1发到IP2的包的seq就是10+21=31)
三次握手:

第一次握手(发送):seq为x(x为任意值),无视ack(因为是第一个包,不需要给其他包应答)

第二次握手(发送):seq为y(y为任意值),ack等于接收包seq+1(即x+1)

第三次握手(发送):seq等于上一个本机发送包ack ,也就是1,ack等于接收包seq+1(即y+1)

数据传输:

某主机发送的seq和ack是根据上一个接收包的seq、ack和len得到,具体为:seq=ack,ack=seq+len

提醒:如果某一主机连续发了4个包,后三个包的seq和ack和第一个包的一样

提醒:seq会单调增大

特别:如果握手完第一个数据包是客户端发送,第一个数据包的seq和ack和第三次握手的一

3、注:
1)、如果A发到B连续几个包,seq号不变,ack号一直在变大,说明A一直在收B的数据,一直在给B应答
2)、如果A发到B连续几个包,seq号一直变大,ack号一直没变,说明A一直在向B发数据,不用给B应答,而是在等B的应答
3)、tcp包分为包头的内容,tcp的包头长度是32字节,整个数据包的包头是66字节(不一定的),如果整个数据包是66字节的话,那内容长度就是0
4)、每个tcp包都带有win、ack,这些是告诉对方,我还可以接收数据的滑动窗口是多少,如果A发到B的包的win为0,就是A告诉B说我现在滑动窗口为0了,饱了,你不要再发给我了,就说明A端环境有压力(如带宽满了等
5)、ack可以理解为应答。A发给B的ack是告诉B,我已收到你发的数据包,收到ack号这里了,你下次要发seq为ack号的给我

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值