linux - 当我尝试通过原始套接字连接 TCP 服务器时,为什么它不回复我的 syn 数据包?

标签 linux sockets networking tcp tcpdump

这取决于iphdr.saddr字段。 当它设置为我自己的地址或随机多播地址时,我可以看到服务器回复了 syn/ack 数据包。 如果设置为其他ip,服务器不会回复。 怎么解释呢?

多播地址情况: 13:55:08.242535 IP 240.151.224.61.13579 > localhost.5223: 标志 [S],seq 123456,win 4096,长度 0 E..(g+..@......=....5..g...@....P...$X.. 13:55:14.906511 IP 239.151.224.61.13579 > localhost.5223: 标志 [S],seq 123456,win 4096,长度 0 E..(g+..@......=....5..g...@....P...%X.. 13:55:14.906549 IP localhost.5223 > 239.151.224.61.13579:标志[S.],seq 3502093187,ack 123457,win 43690,选项[mss 65495],长度0 E..,..@.@.........=.g5........A...N....... 13:55:15.904599 IP localhost.5223 > 239.151.224.61.13579:标志[S.],seq 3502093187,ack 123457,win 43690,选项[mss 65495],长度0

`

我自己的地址案例: 14:14:22.989225 IPslave1.domain.com.13579 > localhost.5223:标志[S],seq 123456,win 4096,长度0 E..(g+..@......m....5..g...@....P...3... 14:14:22.989236 IP localhost.5223>slave1.domain.com.13579:标志[S.],seq 3228604881,ack 123457,win 43690,选项[mss 65495],长度0 E..,..@.@........................m.g5..p.....A...A5...... 14:14:22.989259 IPslave1.domain.com.13579 > localhost.5223:标志[.],ack 3228604882,win 4096,长度0 E..(..@.@......m....5..g...A.p..P....... `

无 syn/ack 回复情况: 14:16:18.719629 IP 223.151.224.61.13579 > localhost.5223: 标志 [S],seq 123456,win 4096,长度 0 E..(g+..@......=....5..g...@....P...5X.. 14:16:46.511299 IP 240.151.224.61.13579 > localhost.5223: 标志 [S],seq 123456,win 4096,长度 0 E..(g+..@......=....5..g...@....P...$X..

最佳答案

iphdr.saddr表示IP数据包的源地址。我假设您的 SYN 数据包的接收端将尝试使用 ACK 响应您在 IP 数据包中提供的任何源地址。

关于linux - 当我尝试通过原始套接字连接 TCP 服务器时,为什么它不回复我的 syn 数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26646282/

相关文章:

java - 如何复用DatagramSocket?

java - 如何在 Spring Integration 中从 TCP 读取流(消息)

linux - Linux 上的 Putty 无需使用终端程序

c# - 获取下载和上传速度 C#

python - 以编程方式与 OS X 或 Linux 中的串行端口通信

linux - 尝试迭代存储在变量中的文件

通过 Socket 进行 Java TCP 通信

networking - 防火墙:2路UDP通信可能吗?

c++ - GLIBC_2.18 未找到,但在本地构建中

c - 对 fork 系统调用行为的一些解释?