当前位置:   article > 正文

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

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

TCP连接的三次握手过程中,Client端需要做的事情是:发起连接请求,接收Server端的连接请求并确认。

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

  1. Client不使用TCP/IP协议栈,所以不应该配置TCP/IP协议栈。否则收到Server端的ACK+SYN后协议栈会回复RST。
  2. 发起连接请求的报文是SYN,序列号随机,确认号为0,Flags字段中SYN位为1。
  3. Server端收到SYN后需要回复ACK+SYN,但是在发送ACK+SYN前需要获取到Client的MAC地址。所以Server端有可能发送ARP Request报文,那么Client端需要对ARP Request报文响应。
  4. Client端收到Server端的ACK+SYN后,需要回复ACK报文。这个ACK报文的序列号为Server端的ACK+SYN的确认号,ACK报文的确认号为Server端的ACK+SYN的序列号加1。

完整代码:

variables
{
  ethernetPacket          ppkt;
}

on key 'c'
{
  ppkt.tcp.Init();//tcp init
  
  ppkt.tcp.source         = 52;//source port
  ppkt.tcp.destination    = 17;//destination port
  ppkt.tcp.sequence       = random(0xFFFFFFFF);//sequence number: random
  ppkt.tcp.ackNumber      = 0;//ack number: 0
  ppkt.tcp.offset   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/730298
推荐阅读
相关标签
  

闽ICP备14008679号