wangyu- / udp2raw-multiplatform

multi-platform(cross-platform) version of udp2raw-tunnel, which supports Windows/Mac/BSD natively. Client-Only at the moment.
MIT License
645 stars 146 forks source link

请教个关于tcp ack 的问题 #37

Open MemeTao opened 4 years ago

MemeTao commented 4 years ago

三次握手:

clien to server: syn,seq =0 -------------- server to client: syn ack 1, seq = 0 client to server: seq = 1, ack =1 接着(pcap send): cllient to server: seq = 1, len = 29 ----------server to client: seq = 1, ack = 30

dummy tcp socket在收到服务端的 ack 30后,协议栈难道不会困惑么? 因为客户端tcp协议栈除了使用了三次握手中的seq 1后,2-29序号并不是协议栈发送的。它不应该发送RST 么?

我抓包看,协议栈并没有发出RST

wangyu- commented 3 years ago

dummy tcp socket在收到服务端的 ack 30后,协议栈难道不会困惑么? 因为客户端tcp协议栈除了使用了三次握手中的seq 1后,2-29序号并不是协议栈发送的。它不应该发送RST 么?

会困惑,但是不发RST。 我当时试过至少windows和linux,协议栈对这种情况的处理是忽略。 发RST的典型情况是,TCP包发到了没有open的端口/没有建立连接的端口。