三次握手
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 响应。导致这个问题查了很久。
最近,由于需要模拟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学习(2)--TCP连接的建立(三次握手)
- 三次握手协议
- TCP的三次握手和四次挥手
- TCP的状态和三次握手
- TCP三次握手和四次挥手
- 使用wireshark抓包工具查看三次握手
- TCP的三次握手和四次挥手
- TCP协议的三次握手建立连接及四次握手断开连接
- TCP的三次握手,四次挥手
- TCP协议中的三次握手和四次挥手(图解)
- iOS TCP三次握手过程 有意思的解释
- TCP协议中的三次握手和四次挥手(图解)
- TCP/IP的三次握手与四次挥手详解
- TCP 三次握手理解和过程
- TCP协议中的三次握手和四次挥手
- TCP连接:“三次握手,四次挥手”
- TCP/IP具体解释--三次握手和四次握手 Dos攻击
- 简析TCP的三次握手与四次分手
- 简析TCP的三次握手与四次分手
- 三次握手和四次挥手