tcp序列号和路由规则

网络工程 路由器 tcp 网络 linux
2022-02-18 21:32:13

我正在做一个网络项目。

我首先创建一个 tcp 套接字,它只是一个占位符。

然后我通过 libnet 发送 tcp 很多数据包。ISN是通过tcp 3-way handshake捕获的,seq number after是我自己计算的。

由于我不通过系统套接字发送数据包,客户端/服务器将继续发送零长度数据包,指示它在从对等方接收数据包时期望的下一个序列号。这是由于标准。

这可以工作。但问题是与在同一网络中使用 udp 相比速度较慢。

所以我想知道,如果路由器接收到具有不同序列号的数据包,例如第一个数据包 ISN、第二个 seq1(seq>ISN) 和第三个 ISN,它会做什么。

路由器/防火墙会路由它遇到的所有东西,还是会因为错误的 tcp seq 号而丢弃数据包。

1个回答

路由器是第 3 层设备,它只关心 IP 数据包。TCP 是第 4 层协议,因此它对路由器“不可见”。TCP 序列检查取决于本地 IP 堆栈。

防火墙决定做什么完全取决于防火墙及其执行的状态检查。合理地,它不应该丢弃乱序的 TCP 数据包,而只是转发它们。但是,如果在一个套接字上接收到多个 ISN,防火墙应该检测并过滤它。