Nat 对 tcp , udp , icmp 报文的处理
来源:互联网 发布:大米线上销售数据 编辑:程序博客网 时间:2024/04/30 10:44
Nat对tcp,udp,icmp报文的处理
ICMP:
ICMP 没有端口号,在icmp报文中有一个序列号(identifier),这个是所发出的ICMP报文顺序的唯一标识。靠这个序列号,每一个请求包和它所对应的回应包的序列号是一样的,这个值代表唯一主机,同一台主机发出的所有的ICMP报文,它的identifier值都是一样的,不同主机的值不一样。
ICMP经过NAT后,nat首先在IP层改动了源IP,及相应的校验码。在ICMP中,将identifier及相应的序列号更改,更改后的idenfifier仍然标识唯一主机,序列号仍然是一对一的关系,最后ICMP的校验码也更改了。
如上图,假设10.1.1.2发送的原icmp请求包的identifier0x0300, 经过nat后,源IP改为200.1.1.1,identifier 改为0x0301。这里 identifier0x0300与 identifier 0x0301相对应。当router0 收到dentifier为 0x0301 的icmp回应包的时候,它就将回应包发给10.1.1.2。
TCP和UDP:
TCP和UDP都有端口号,经过NAT后,NAT改变了TCP和UDP的源地址,源端口及相应的校验码。如上图:10.1.1.0是私网,访问公网200.1.2.0。在router0 上做NAT。
数据包发送过程:
当10.1.1.2想访问200.1.2.1时。在router0上,nat先将10.1.1.2映射为200.1.1.1:200。然后数据包将使用转换后的200.1.1.1:200 为原源IP和端口号,将数据包发送到200.1..2.1.
路由过程:10.1.1.2:200----->200.1.1.1:200------>200.1.2.1:100
数据包返回过程:
在router1收到数据包以后,如果要返回数据包,router1 将数据包发往200.1.1.1,端口号为200. 在router0收到返回数据包的时候,它将检查端口号,端口号为200,对应的私网IP是10.1.1.2,于是router0 将数据包发送给主机10.1.1.2.
路由过程:200.1.2.1:100------>200.1.1.1:200----->10.1.1.2:200
问题:内网发packet到外网的时候,负责nat的路由器记下了这个报文的端口之类的信息,那这个记录什么时候删除?
TCP:nat删除记录有一个timeout值,这个值可以设置,一次tcp建立到结束的过程的时间比这个timeout值小,如果在timeout值到之前,有新的相同关系的tcp连接建立的的话,记录就不删除,如果在timeout值到了都没有新tcp建立的话,记录就删除。
UDP: 当存在udp session的时候。nat不会每次udp session为分配新端口号。nat给udp连接分配了端口号之后,在一次udp会话结束后,如果已经不存在udp会话,等达到timeout值之后,nat将删除记录的报文信息。如果存在一个udp会话,记录就不会删除。
ICMP:因为icmp的请求包或者回应包等都是使用相同的identifier 标识唯一的主机,当主机收到icmp回应包之后,在达到timeout值时,如果不存在icmp回应包和请求包的话,nat将删除报文记录
- Nat 对 tcp , udp , icmp 报文的处理
- iptables中对TCP,UDP,ICMP非常不错的阐述
- MAC IP TCP UDP ARP ICMP报文格式
- 1205 对icmp报文的构造
- 3.5 ICMP不可达报文的处理
- IP/UDP/TCP/ICMP的校验和
- TCP/UDP/IP/ICMP
- NAT对udp Session处理机制
- TCP,IP,UDP,帧的报文格式
- TCP,IP,UDP,帧的报文格式
- TCP和UDP报文分片的区别
- ICMP报文的类型
- TCP/UDP报文格式
- TCP/UDP报文格式
- TCP/UDP报文格式
- TCP,UDP报文详解
- IP/TCP/UDP/ICMP headers
- TCP、UDP、ICMP、IP header
- zhuanzai
- 快乐想象识字法最新破解注册完美版
- debian下mysql对中文的支持问题
- linux vi 基本命令
- OPC技术应用简析
- Nat 对 tcp , udp , icmp 报文的处理
- forward与sendRedirect区别
- 真机调试在BaseConstructL出错,无错误代码
- 可启动镜像
- Program Name、Process ID、Window Handle、Process Handle 的轉換函式
- select查询优化
- Install mplayer in ubuntu 9.10
- vnc (virtual connecting computer) 安装配置
- 谨慎设计方法的原型