设为首页收藏本站language 语言切换
查看: 6937|回复: 12
收起左侧

[已解决] NAT是怎么处理ICMP的?

  [复制链接]
发表于 2013-6-23 17:54:22 | 显示全部楼层 |阅读模式
tcp/udp有端口号很容易multiplexing ICMP是怎么处理的? 同一个LAN subnet ping一个外网的host, identifier/sequence be/le同一个OS一样的概率不小啊 这样如果不看 ICMP payload怎么区分呢? 看payload的话对性能影响岂不太大了?

发表于 2013-6-23 18:09:10 | 显示全部楼层
等大神
沙发 2013-6-23 18:09:10 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-6-23 20:00:57 | 显示全部楼层
没看懂你什么意思。
首先,网络设备会封装和解封装,这是必须的一套流程,和什么性能消耗影响没关系;
其次,nat不会处理icmp,nat处理的是IP映射,和icmp半点毛关系都没有;
再有,icmp包字段封装在ip头下,nat则是整个大三层协议,而nat中的pat才牵涉到四层内容,通过端口实现其技术,这些都不是一个概念;
最后,你的问题应该问成NAT与路由的先后顺序,路由和icmp是不一样的概念,ping工具只是用来检测ip层是否可达,它不能完全代表路由。从内网NAT到外网时,是先走路由再做NAT,从外到内则反之。

点评

牛X: 5.0
牛X: 5
  发表于 2013-6-26 15:04

评分

参与人数 1鸿鹄币 +10 收起 理由
ccna_candidate + 10 谢谢 我确实忽略了PAT只是NAT的一种用法而已.

查看全部评分

板凳 2013-6-23 20:00:57 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-23 21:26:05 | 显示全部楼层
Araon_Marcellus 发表于 2013-6-23 20:00
没看懂你什么意思。
首先,网络设备会封装和解封装,这是必须的一套流程,和什么性能消耗影响没关系;
其 ...

谢谢解答 对的其实我说的是PAT 如果光static NAT用ip proto number作为条件的话实现起来确实很容易

内外ip的电脑ping公网的服务器 这个icmp包的地址转换是怎么实现的呢?
地板 2013-6-23 21:26:05 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-6-24 09:28:54 | 显示全部楼层
ccna_candidate 发表于 2013-6-23 21:26
谢谢解答 对的其实我说的是PAT 如果光static NAT用ip proto number作为条件的话实现起来确实很容易

内 ...

A为内网主机,B为外网主机,C为NAT设备;
A ping B,ICMP包源地址为A,目的地址为B;
包到达C时,经过nat转换,那么ICMP包源地址就是C的地址,而目的地址是B。

另外区分哪个主机发的包是看identifier值,不同主机值不同,而序列号是用来表示包顺序的~
推荐你看看TCPIP详解卷一,利于你对协议的认识!

评分

参与人数 1鸿鹄币 +10 收起 理由
ccna_candidate + 10 谢谢

查看全部评分

5# 2013-6-24 09:28:54 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-24 10:40:24 | 显示全部楼层
Araon_Marcellus 发表于 2013-6-24 09:28
A为内网主机,B为外网主机,C为NAT设备;
A ping B,ICMP包源地址为A,目的地址为B;
包到达C时,经过n ...

问题是Windows 7 ICMP identity全部都是1

看了http://www.cisco.com/en/US/tech/ ... 86a0080093f96.shtml 之后稍微明白点了 不过文章还是没提怎么处理ICMP identity冲突 如果改identity的话需要重新计算checksum
RFC5508是这么说的 不过不知道哪些设备是这么做的 毕竟2009年的RFC还算是很新的......
6# 2013-6-24 10:40:24 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-6-24 13:39:28 | 显示全部楼层
ccna_candidate 发表于 2013-6-24 10:40
问题是Windows 7 ICMP identity全部都是1

看了http://www.cisco.com/en/US/tech/tk648/tk361/technolo ...

能看懂RFC的都是高手啊
7# 2013-6-24 13:39:28 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-6-24 20:39:26 | 显示全部楼层
ccna_candidate 发表于 2013-6-24 10:40
问题是Windows 7 ICMP identity全部都是1

看了http://www.cisco.com/en/US/tech/tk648/tk361/technolo ...

win7.png win7

vm router.png
virtual router

other.jpg
other packet



抓了下包,win7的identifier确实都是1,但是用其他设备就不一样了,然后查了下文档,写的也不是很明白,不过可以看出确实是通过不同标示符来区别每一个会话的。win7都是1,我猜测可能是因为只有一个接口的原因吧,因为只在一张网卡上运行ping程序。。
identifiter.png
identifier


check.png
checksum recomputed


code.png

code




评分

参与人数 1鸿鹄币 +10 收起 理由
ccna_candidate + 10 谢谢

查看全部评分

8# 2013-6-24 20:39:26 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-6-24 22:32:07 | 显示全部楼层
9# 2013-6-24 22:32:07 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-6-25 17:18:08 | 显示全部楼层
赞美这样的过程,啊,啊啊啊  
10# 2013-6-25 17:18:08 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-6-26 11:26:25 | 显示全部楼层
本帖最后由 616390573 于 2013-6-26 11:30 编辑

{:soso_e179:}
11# 2013-6-26 11:26:25 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-6-26 15:08:45 | 显示全部楼层
好贴当顶
12# 2013-6-26 15:08:45 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2014-8-29 00:32:36 | 显示全部楼层
每个内网IP经过NAT设备后NAT设备就把identify或者其他字段(反正是无关ICMP结构的)改成不同的出去,回包的适合奇偶根据这个字段区分。
13# 2014-8-29 00:32:36 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-5-9 11:47 , Processed in 0.243245 second(s), 32 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表