seq和ack号存在于TCP报文段的首部中,seq是序号,ack是确认号,大小均为4字节。
seq:占 4 字节,序号范围[0,2^32-1],序号增加到 2^32-1 后,下个序号又回到 0。TCP 是面向字节流的,通过 TCP 传送的字节流中的每个字节都按顺序编号,而报头中的序号字段值则指的是本报文段数据的第一个字节的序号。
ack:占 4 字节,期望收到对方下个报文段的第一个数据字节的序号。
扩展资料:
一个TCP连接的建立是通过三次握手来实现的
1. (A) _>[SYN] _>(B)
假如服务器B和客户机A通讯. 当A要和B通信时,A首先向B发一个SYN (Synchronize) 标记的包,告诉B请求建立连接.
注意: 一个 SYN包就是仅SYN标记设为1的TCP包(参见TCP包头Resources). 认识到这点很重要,只有当B受到A发来的SYN包,才可建立连接,除此之外别无他法。因此,如果你的防火墙丢弃所有的发往外网接口的SYN包,那么你将不能主动连接外部任何主机,除非不是TCP协议。
2. (A) <_ [SYN/ACK] <_(B)
接着,B收到后会发一个对SYN包的确认包(SYN/ACK)回去,表示对第一个SYN包的确认,并继续握手操作.
注意: SYN/ACK包是仅SYN 和 ACK 标记为1的包.
3. (A) _>[ACK] _>(B)
A收到SYN/ACK 包,A发一个确认包(ACK),通知B连接已建立。至此,三次握手完成,一个TCP连接完成
Note: ACK包就是仅ACK 标记设为1的TCP包. 需要注意的是当三此握手完成、连接建立以后,TCP连接的每个包都会设置ACK位
握手阶段:
参考资料来源:百度百科-三次握手
在tcp建立连接的三次握手中,服务器和客户端需要使用seq,ack等验证信号进行验证。具体可以看:http://baike.baidu.com/link?url=MceaSZo831h0GdwsZO5YFt_Rcwu-81W3-bejfEiBRxxg8Nsz5OHOzqgIrX06LHNsnamF3XKjM86RwY3-aUp7UK;这里的seq = 1024/4表示客户端发送给服务器的请求验证码是256;
当然,我也不确定。只能说应该是这样
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)