基础知识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)
A-B seq=k+1+data长度 ack=k+1

B-A seq=上一个ack ack=上一个seq

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号的给我

猜你喜欢

转载自blog.csdn.net/qq_28748657/article/details/107689507
ACK
今日推荐