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

三次握手

2014-02-24 00:00 281 查看
摘要: tcp协议

最近,由于需要模拟3次握手,所以把tcp协议稍微升入的了解了下。

最后完成一个demo,模拟web服务器同客户端建立tcp连接,并返回模拟的http响应。

代码量很小,注意点有几点。

一:seq和ack_seq需要变化,三次握手中,服务器的syn+ack响应中,seq为随机值,如为1,而ack_seq是客户端的seq + 1。

二:数据传输中,http响应的seq是三次握手中的seq + 1, 而ack_seq是客户端请求的seq + http报文的长度

三 : tcp和ip的校验和计算需要注意。计算之前需要先把checksum置0,并且校验和的长度是整个tcp报文的长度。既三次握手中直接是tcp->doff << 4,而数据传输中是tcp->doff + http的长度。

注:wireshake很坑爹,校验和计算不对,报文显示也是绿色(正常) 。所以我拷贝代码时,忘记修改tcp的长度,结果校验和计算不对,而wireshake显示正常,但是客户端死活收不到服务器模拟的http 响应。导致这个问题查了很久。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tcp三次握手