⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc3022.txt

📁 本程序为在linux下实现FTP传输文件的实现
💻 TXT
📖 第 1 页 / 共 2 页
字号:
TV端口)的一个唯一绑定可能用于所有从相同地址主机中的任务传送的包。
3.2 地址查询和转换:
在一个地址绑定或地址对绑定(假设NAPT以建立),一个软状态将用绑定来维持
任何连接。属于相同任务的包将服从转换目的的任务查询。转换的确切属性将在接下去
的章节中进行讨论。
3.3	解开地址
     当基于单个地址或成对地址绑定的最后一个任务终止时,绑定自己将终止。
4.0 包传输
属于NAT管理任务的包经历任何方向的转换。对立包数据任务在接下去进行详细的描
述。
4.1	IP,TCP,UDP 和ICMP报头操作:
   在基本NAT模型,每个包的IP头必须改变,包括IP地址(外传包的源IP地址,往里
传的目的IP地址)和IP校验和。
   对TCP和UDP任务,改变包括TCP和UDP报头的校验和的更正。这是因为TCP/UDP
校验和同时有一个假头包含源和目的IP地址。有一个例外,校验和为0的UDP报头不需要
改变。至于ICMP查询包,由于在ICMP报头中不包含IP地址,所以不需要额外的变化。
   在NAPT模型中,IP头的变化和基本NAT中的相同。对TCP/UDP任务,在报头中变化
必须扩展成包含转换TV端口(外传数据的源TV端口和内传的目的TV端口)的转换。在
ICMP查询包中ICMP报头必须改变来代替查询ID和ICMP报头校验和。私有主机查询ID
必须转换成外传的指派ID和内传的相信转换。ICMP报头校验和必须更正来说明查询ID转
换。
4.2	校验和调整
NAT修正以每个包为准的,能够准确计算,因为除了简单域转换外,它们包括一个或多个
校验和修正。幸运的是,我们有一个算法,它能简单有效地调整IP,TCP,UDP和ICMP
报头校验和。因为所有这些报头用一个辅助校验和在转换时计算差距和把它加到校验和是足
够的。下面的算法只有对偶偏移有效(如:下面optr是从报头开始必须是偶偏移)和偶数
长度(如,下面的olen和nlen)。样本代码如下:
  
Void checksumadjust(unsigned char *chksum, unsigned char *optr, int olen, 
unsigned char *nptr, int nlen)
/assuming:unsigned char is 8 bits, long is 32 bits.
-	chksum points to the chksum in the packet
-	optr points to the old data in the packet
-	nptr points to the new data in the packet */
{
   long x,old,new;
x=chksum[0]*256+chksum[1];
x=x&0xFFFF;
while(olen)
{
   old = optr[0]*256+optr[1];
optr+=2;
x-=old&oxffff;
if(x<=0 ){ x--; x&=0xffff;}
olen-=2;
}
while(nlen)
{
	new=nptr[0]*256+nptr[1];
	nptr+=2;
	x+= new& 0xffff;
 	if(x & 0x10000){ x++; x&=0xffff;}
	nlen-=2;
}
x=x& 0xffff;
chksum[0]=x/256;
chksum[1]=x&0xff;
}
4.3 ICMP包错误修正:
ICMP错误信息的变化包括在外层的IP和ICMP报头的变化和嵌入在ICMP错误信息有
效负荷报头的改变。
为了使NAT对目的主机是透明的,嵌入在ICMP错误信息里的IP报头里的IP地址必
须改变,嵌入IP报头的校验和域也必须改变,最后ICMP报头校验和也必须随着有效负荷
的变化而变化。
在NAPT设置中,如果嵌入在ICMP里的IP信息和TCP,UDP或ICMP查询包同时发
生,你必须改变在TCP/UDP报头里的相应的TV端口数或ICMP查询报头里的查询标志域。
最后,传输ICMP包的IP头必须改变。
4.3	FTP支持
   作为最通用的一种应用之一,FTP要求一个ALG来管理控制任务有效负荷来决定保证数
据传输参数。FTP ALG是大部分NAT执行的一个整数部分。
   FTP ALG表需要一个一个专门的表来纠正TCP系列和确认源FTP或目的FTP端口数。
这个表里头应该有源地址,目的地址,源端口,目的端口,系列号和时间戳。新的内容只是
在FTP端口命令或PASV反馈时才增加。对每一个FTP端口命令或PASV反馈系列数有可
能增加或减少。系列数在外传时增加和确认数随往内传时减少。
对任何NAT,FTP有效负荷局限于私有地址和它们指派的外部地址(编码成ASCII码8
进制)。但是对NAPT设置,这个转换必须同时包括TCP端口(ASCII)。
4.5 DNS支持;
   考虑传统NAT任务主要是从本地外传数据,DNS ALG可能避免和下面的传统NAT相关
使用。在局域网内部的DNS服务器维持内部主机地址或有可能外部主机地址和名字的映射。
外部DNS服务器只是维持外部主机地址和名字的映射,而不对内部主机进行映射。如果一
个局域网没有内部DNS服务器,所有DNS请求直接到外部DNS服务器去找外部主机的映
射。
4.6 IP选项处理
一个含有任何IP选项记录路由,严格源路由或松散源路由的IP数据包括记录和使用中
间路由器的IP地址。NAT中间路由器可能不支持这些选项或者处理这些选项时不对地址进
行转换。不对地址进行转换的结果将是在源路由中私有地址一直暴露出来。这个不会危害报
文的传输路径,因为每个路由器只看下一跳的路由器。
5 混杂的问题
5.1本地和通用地址的划分
在这个文档里描述的NAT操作,有必要划分IP地址空间为两部分—在内部残域里使用的私
有地址和通用唯一的地址。不论是私有地址还是全球通用地址给定的话,都不能重叠。
交迭的问题为如下。假设在残域A的一个主机试图传送数据报到残域B中的主机,但是残
域B中的全球地址和残域A的私有地址交迭。在这种情况下,在残域A中的路由器不能够
从分辨它自己的私有地址和残域B的全球通用地址。
5.2推荐的私有地址空间
[RFC1918]已经对地址空间的分配作了推荐。因特网授权数量权威(IANA)有3个IP地址
空间块,相应的为:10.0.0.0/8,172.16.0.0/12,和192.168.0.0/16。在pre-CIDR符号中,第一个
为唯一的A类网络块,第二块为有16个相邻的B类网络块,第三块为有256个C类网络
的网络块。一个组织内部需要用如上的IP地址不需要和IANA或因特网注册机构有任何调
和。这些地址空间能够同时被许多对立组织使用,用边界路由器来执行NAT操作。
5.3	NAT上路由
   路由器运行NAT不应该用局域网影响到主干网。只有有通用地址的网络才能在残域网外
被识别。但是,NAT从残域边界路由器获得的全球信息能够进入残域。特别的是,NAT残
域路由器有一个静态路由配置来通过广域网连接传送外部流量到服务商路由器,和服务商路
由器有一个静态路由配置在广域网连接来传输NAT报文(如,目标IP地址在NAT管理通
用地址范围列表里)到NAT路由器。
5.4	从基本NAT到NAPT的交换
   在基本NAT设置里,当私有节点比通用地址数量多时(也就是说,一个B类私有网络
映射一个C类地址网络块),外面网络连接本地节点有可能突然中断在最后一个通用地址用
完之后。这个是非常不方便和受限制的。这样的情况能够安全的避免通过有选择地允许基本
NAT路由器为在地址表最后一个通用地址交换成NAPT设置。这能保证局域网里主机能够
和外部节点和服务能够在大部分应用中连续的连接。但是记住,如果一些基于基本NAT的
应用由于交换到NAPT突然中断有可能引起混乱。
6.0	NAT局限性
   广泛的说,[NAT-TERM]包括所有NAT类型的局限性。下面的部分说明传统NAT的局限
性。
6.1	私有和安全
   传统NAT被认为提供一种私有机制,因为任务是从主机出发的单向连接和私有主机地址
的确切地址对外部网络是不可见的。增强私有性的相同特性使调试问题更加困难(包括安全
问题)。如果私有网络里的一个主机用某种方式乱用因特网(例如试图攻击另外一台机器或
甚至发送大的垃圾数据报),那么更加困难追击确实的原因因为主机隐藏在NAT服务器中)。
6.2在局域网中根据映射通用地址NAT的ARP接口
   NAT必须只能在边缘路由器或残域中。在这个文档中提供的例子寿命了基本NAT和
NAPT可以从NAT路由器维持一个广域网连接到外部路由器中。(如,服务提供商路由器)。
但是,如果广域网连接由局域网连接代替和如果所有NAT映射的通用地址属于局域网段有
相同的IP子网,NAT路由器将提供属于相同子网的地址范围ARP支持。根据ARP要求NAT
映射通用地址用它自己的MAC地址 在基本NAT中是必须的设置。如果一个NAT路由器
不适应这些要求,在网络中没有其它节点拥有这些地址然后没有反映。
   这些设想不可能用NAPT设置除了当在NAPT映射中的单个地址不是NAT路由器的接
口地址。(例如,在上面5。4中谈到的从基本NAT到NAPT 的交换一样)。用NAT地址映
射直接连接的子网范围内的一个地址可以避免在服务提供商路由器的静态路由设置。
作者的意见是一个局域网连接到服务提供商路由器不是非常普通的。但是,销售商在这种情
况下对支持代理ARP比较感兴趣。
6.3在NAPT设置中外发TCP/UDP数据报的转换
在NAPT设置中外发TCP/UDP数据报的转换(如,那些从私有主机发出的地址)注定要失
败。它的原因如下:只有第一个数据片包含TCP/UDP报头,而这个数据报头对数据报的发
送又是必须的。接下去的片段不包含TCP/UDP端口信息,但是包含其它第一个数据报中包
含的一些标志信息。也就是说,两个私有主机发送TCP/UDP数据报到相同的目的主机。和,
它们用相同的片标志。当目的主机收到这两个没有相关的数据报,它们有相同的片标志,和
相同的指派主机地址,所以不可能决定数据报是属于哪个发送任务。相应的,两个任务同时
崩溃。
7.0 当前实现
很多行业应用商业应用,这些商业应用和这个文档中描述的NAT紧密关联。LINUX公众软
件在IP伪装下有NAT。FreeBSD公众软件用NAPT来运行用作邮件收发的后台程序。但是
必须注意,LINUX源程序包含GNU声明,而FreeBSD软件包含UC Berkeley 声明。8。0 安
全考虑
在{NAT-TERM}描述中的对任何NAT的安全考虑对传统NAT也是适用的。

参考资料
[NAT-TERM] Srisuresh, P. and M. Holdrege, "IP Network Address
              Translator (NAT) Terminology and Considerations", RFC
              2663, August 1999.

   [RFC 1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G.
              and E. Lear, "Address Allocation for Private Internets",
              BCP 5, RFC 1918, February 1996.

   [RFC 1700] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC
              1700, October 1994.

   [RFC 1122] Braden, R., "Requirements for Internet Hosts --
              Communication Layers", STD 3, RFC 1122, October 1989.

   [RFC 1123] Braden, R., "Requirements for Internet Hosts --
              Application and Support", STD 3, RFC 1123, October 1989.

   [RFC 1812] Baker, F., "Requirements for IP Version 4 Routers",  RFC
              1812, June 1995.

   [FTP]      Postel, J. and J. Reynolds, "FILE TRANSFER PROTOCOL
              (FTP)", STD 9, RFC 959, October 1985.

   [TCP]      Defense Advanced Research Projects Agency Information
              Processing Techniques Office, "TRANSMISSION CONTROL
              PROTOCOL (TCP) SPECIFICATION", STD 7, RFC 793, September
              1981.

   [ICMP]     Postel, J., "INTERNET CONTROL MESSAGE (ICMP)
              SPECIFICATION", STD 5, RFC 792, September 1981.

   [UDP]      Postel, J., "User Datagram Protocol (UDP)", STD 6, RFC
              768, August 1980.

   [RFC 2101] Carpenter, B., Crowcroft, J. and Y. Rekhter, "IPv4 Address
              Behaviour Today", RFC 2101, February 1997.
RFC3022 Traditional IP Network Address Translator (Traditional NAT)   传统IP网络地址转换(传统NAT)


1
RFC文档中文翻译计划

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -