当前位置:主页 > 猎奇八卦 >

源地址和目的地址理解

源地址和目的地址理解_网络工程师(14):IP地址易容术weixin_39661353于 2020-11-21 20:06:39 发布23415收藏43文章标签:源地址和目的地址理解接下来要优化的,依然和IP有关!IP:“为什么受伤的还是我!!”别担心,不给你好好整整容,你不知道自己有多美!IP协议使用IP地址来标识网络中的节点,分为IPv4和IPv6。虽然一直在推行IPv6,但目前主流还是IPv4。IPv4使用32位二进制,分为A、B、C类(D类和E类有特殊用途,不用于标识网络中的节点),共计大约37亿多个可用单播地址。听上去很多,但是Internet发展太快了,早在2011年,IANA就宣布IPv4地址耗尽。等等,既然2011年IPv4地址就没了,那怎么直到现在,大家都还在高高兴兴地用着IPv4地址呢?这要归功于NAT(Network Address Translation,网络地址转换)。其实,在IPv4地址中,有一些特殊的地址范围:A类地址中,10.0.0.0~10.255.255.255;B类地址中,172.16.0.0~172.31.255.255;C类地址中,192.168.0.0~192.168.255.255。这些地址,我们称之为“私有地址”。什么是私有地址?就是说,这些地址不会在Internet公网上出现,任何人都可以随便使用,不用花钱!随便使用?那不会冲突吗?并不会,因为这些地址只限于你所在的局域网内部使用,如家庭、企业、学校等,公网上并没有这些地址。就好像你在一个局域网用10.1.1.1,我在另一个局域网也使用10.1.1.1,只要保证各自局域网内不冲突就行。可是,如果我们两人要通信呢?地址不是冲突了吗?不不,私有地址只在局域网内部使用,如果要访问外网,需要NAT给你发的数据包整个容!一般情况下,局域网接入公网的出口设备上都会配置NAT功能。家庭中常见的“无线路由器”,其实本质上不过是一台“无线NAT”而已!如果NAT设备发现有私有数据包要去公网,会给它整个容:把里面IP封装中的私有地址换成公网地址,做好记录,再发出去;数据包回来时,再把地址换回来,发回你的电脑。企业、学校的公网地址可以花钱向运营商购买固定地址,便于注册域名,向外提供网络服务;家庭上网一般由运营商动态分配。图中电脑的IP地址是私有地址192.168.1.10,出口NAT设备接入Internet的公网地址是12.34.56.78,假设公网上有一台地址为98.76.54.32的www服务器,内网电脑通过浏览器访问它。电脑产生http报文,向下交给传输层TCP协议。TCP封装时,源端口在49152~65535间随机选择一个,如60128,目的端口为80。TCP封装后,交给网络层IP协议,IP封装源地址为内网电脑的私网地址192.168.1.10,目的地址为公网服务器的地址98.76.54.32,协议号为6。链路层的封装和前面文章所述一样,这里我们省略。这个报文发到NAT设备后,NAT设备将源地址修改为12.34.56.78,做好记录“内网地址192.168.1.10映射到外网地址12.34.56.78”,然后将报文发到公网。公网根据报文中的目的地址98.76.54.32,将报文准确送达服务器。服务器返回的信息,数据是这样封装的:源和目的(gmp是什么意思?GMP全称(GOOD MANUFACTURING PRACTICES),中文含义是“生产质量管理规范”或“良好作业规范”“优良制造标准”。)端口号、IP地址互换位置,公网会根据目的地址12.34.56.78,把报文送达NAT设备。NAT根据记录“内网地址192.168.1.10映射到外网地址12.34.56.78”,把目的地址12.34.56.78换回192.168.1.10,然后根据内网地址192.168.1.10把报文送达电脑。但这样的转换方式并不妥当,因为一个内网地址需要对应转换为一个外网地址,内网电脑数量多就会消耗大量外网地址,并没有起到节省地址的作用。因此,我们所使用的NAT,叫做NAPT(Network Address Port Translation,网络地址端口转换)。NAT只转换IP封装中的IP地址,而NAPT则把传输层的端口号和IP地址一起转换,可以实现一个公网地址的复用。假设内网有两台电脑,地址分别为192.168.1.10和192.168.1.20,NAT设备地址和服务器地址和上例相同。假设两台电脑同时访问外网服务器,电脑A发出的报文封装是:电脑B发出的报文封装是:两个数据报文到达NAT设备后,NAT设备做个记录:然后,NAT把电脑A的报文修改为:而电脑B的报文也被NAT修改为:可以看到,NAT把两台内网电脑发出去的报文转换后,仅传输层的源端口号不同,IP的封装完全相同。这样一来,就可以实现同一个公网地址被不同内网电脑重复使用,只需通过端口号区别开就可以。外网返回的数据报文回到NAT设备后,NAT根据之前记录的信息再转换回内网地址和内网端口号,即可把报文送达不同的内网电脑。小Q:对于没有传输层的报文,如ICMP,无法进行端口号转换,NAT会怎么处理呢?欢迎大家留言讨论。相关资源:memcpy(目的地址,源地址字节数-数据结构Java实现的资源-CSDN文库weixin_39661353关注
上一篇:傅贞怡

猜你喜欢