本文主要是介绍CAPL如何在底层模拟TCP Server端建立TCP连接,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
TCP连接的三次握手过程中,Server端需要做的事情是:接受连接请求,确认和发起自己的连接,这是通过一条ACK+SYN报文完成的。
如果Server端不使用TCP/IP协议栈和Socket接口函数完成连接,而是通过组装以太网报文完成连接,需要注意:
- Server不使用TCP/IP协议栈,所以不应该配置TCP/IP协议栈。否则收到Client端的SYN后协议栈会回复RST。
- 发送的ACK+SYN报文,序列号是随机值,确认号是Client发送的SYN的序列号加1,Flags字段的ACK和SYN位需要置为1。
- Client发送SYN报文前,如果不知道Server端的MAC地址,那么会发送ARP Request报文。Server端需要对ARP Request报文响应。
完整代码:
variables
{ethernetPacket ppkt;
}on ethernetPacket *
{if (this.dir != 0)//must be ecu sendreturn;if (this.destination != ethGetMacAddressAsNumber("02:00:00:00:00:52") &&this.destination != ethGetMacAddressAsNumber("FF:FF:FF:FF:FF:FF"))return;if (this.arp.IsAvailable()){if (this.arp.protDestinationAddr == ipGetAddressAsNumber("192.168.0.52")){if (this.arp.operati
这篇关于CAPL如何在底层模拟TCP Server端建立TCP连接的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!