路由器处理icmp包的想法

阶段1、学习nat的四种映射模式。

阶段2、有人提出ping用了udp协议,我说没有,用的是icmp;被反驳:如果没有用到端口,那么路由器如果映射到局域网的pc?愣了一下,无话可说。

阶段3、上网搜索,有提到,利用icmp头的第5、6两个字节的"标识符",路由器用它代替了端口。有了点头绪。

阶段4、开了N个ping程序,wireshark抓包,发现所有的"标识符"都相同,所不同的只有"序号";(发现序号居然是同步递增的,难道ping程序做了进程间的同步?);于是开始怀疑上一条的结论,估计路由器是用 “序号”代替了端口。

阶段5、无意中发现rawsock可以接受所有icmp,也就是网卡收到一条icmp消息,所有rawsocket都可以接收它;(奇怪的是,自己写的rawsocket收不到ping程序的icmp回显信息。这又是一个新的疑问点。)



结论:

路由器转发icmp包时,确实用“标识符”代替了端口号;如果是用sequence代替,那么路由器端口的压力会太大,所以不成立。

至于多个ping可以分别接收不同的icmp返回信息,估计是根据sequce字段来判断是否处理的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值