当前位置:   article > 正文

CAPL如何在底层模拟TCP Server端建立TCP连接

CAPL如何在底层模拟TCP Server端建立TCP连接

TCP连接的三次握手过程中,Server端需要做的事情是:接受连接请求,确认和发起自己的连接,这是通过一条ACK+SYN报文完成的。

如果Server端不使用TCP/IP协议栈和Socket接口函数完成连接,而是通过组装以太网报文完成连接,需要注意:

  1. Server不使用TCP/IP协议栈,所以不应该配置TCP/IP协议栈。否则收到Client端的SYN后协议栈会回复RST。
  2. 发送的ACK+SYN报文,序列号是随机值,确认号是Client发送的SYN的序列号加1,Flags字段的ACK和SYN位需要置为1。
  3. Client发送SYN报文前,如果不知道Server端的MAC地址,那么会发送ARP Request报文。Server端需要对ARP Request报文响应。

完整代码:

variables
{
  ethernetPacket          ppkt;
}

on ethernetPacket *
{
  if (this.dir != 0)//must be ecu send
    return;
  
  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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/730227
推荐阅读
相关标签
  

闽ICP备14008679号