背景
在网络中,经常遇到丢包问题,特别是特定的流丢包,何为特定的流,即五元组一样的报文(源目的ip,源目的端口,协议)。在排查问题时,我们经常需要来构造这样的流量去复现问题。那有什么比较好用的工具来实现这样的功能呢?
说明
其中nc工具,是一个不错的工具,它能够指定五元组进行打流。
nc -p 33988 192.168.0.28 5001 < /dev/zero
但是除了nc之外,还有没有其他的方法呢?自然是有的。
不知道你有没有在Linux服务器抓过包,抓包的时候,有没有发现,tcp/udp端口的范围在一定的范围之内,比如常见的32768-60999,为什么是这样的范围,正常端口的范围不是在 0~65535么?是什么来控制着这个端口范围呢?
在Linux系统中,是由内核参数 /proc/sys/net/ipv4/ip_local_port_range 来控制的。
如 sysctl -w net.ipv4.ip_local_port_range='45004 45004' 你就能将你发起的测试连接的源端口控制在 45004来做测试。
在内核协议栈设计中,还是有比较多的知识可以学习和了解。