TCP/IP协议栈设计—TCP设计实现(初步)
TCP/IP协议栈设计—TCP设计实现(初步)
目录
1,TCP连接(三次握手)测试
2,TCP数据发送与接收测试
3,TCP收发的优化与测试
4,结束连接与请求重置测试
1,TCP连接(三次握手)测试
经过这几天艰难的调试,终于初见成效:TCP连接成功啦。下面给出连接的抓包情况。
下面是TCP&UDP调试助手的设置情况。
2,TCP数据发送与接收测试
上面连接成功后,开始进行数据传输测试。如下图,助手任意设置发送数据,点击发送后,接收窗口,开始接收TCP数据。TCP传输成功。
下面是对应的TCP数据发送抓包情况。
到此,基本打通TCP连接与传输,下面继续进行改进、优化和完善。
3,TCP收发的优化与测试
3.1 发送过程实测截图1,如下。FPGA发送一个,PC端的助手回复一个ACK。测试中采用低速,1s发送一次。所以,可见接收速率为46MB/S。
3.2 改变发送字节的长度,测试如下。此时,接收速率为48MB/S。
3.3 再次测试TCP数据传输,如下,传输状态正常。
4,结束连接与请求重置测试
4.1 疑问:客户端发送TCP请求重置,需要服务器端回复ack吗?
查了下,没有明确的回答。当前设计,认为收到RST帧后,让FPGA端重置,且不再回复ACK了。只有等下次SYN帧来了,才开启下个TCP的连接。
4.2 请求断开FIN帧测试
结果如下,由TCP助手发起请求断开,FPGA作出断开回应,并也回复FIN帧,最后TCP助手接收到FPGA发来的FIN帧,并作出回应。4次握手完成,断开成功!
4.3 FIN可靠性测试与TCP重连
结果如下,上个10000端口号的TCP4次握手断开连接后,10001端口号进行连接建立,成功握手。
在此连接下,启动数据发送,均正常。
此时,点击断开连接,抓取结果如下。4次握手正常断开。
到此,tcp连接、接收、发送、断开的整个流程测试完成。实现了初步的TCP/IP协议栈。
欢迎交流、源码分享见****资源,笔者扣扣:1021100382