云计算百科
云计算领域专业知识百科平台

第五部分:网络层

目录

1、基本概念

2、IP协议格式

3、网段划分

3.1、子网掩码

3.2、IP地址数量限制

4、私网和公网IP

5、运营商

6、互联网

7、路由

8、NAT技术

8.1、转换过程

8.2、NAPT

8.3、内网穿透

8.4、代理服务器


IP协议的本质工作就是提供一种将数据跨网络从A主机发到B主机的能力。如下图所示:

1、基本概念

主机:配有IP地址,但是不进行路由控制的设备。

路由器:即配有IP地址,又能进行路由控制。

节点:主机和路由器的统称。

2、IP协议格式

IP协议的格式如下图所示:

4位版本:指定IP协议的版本,对于IPv4来说填的就是4;对于IPv6来说此处填6。

4位首部长度:单位是4字节,4比特表示最大的数字是15,因此IP头部最大长度是60字节,因此选项最多为40个字节。

8位服务类型:3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0);4位 TOS分别表示:最小延时、最大吞吐量、最高可靠性、最小成本,这四者相互冲突,只能选择一个。对于 ssh 或者 telnet 这样的程序,最小延时比较重要;对于 ftp 这样的程序,最大吞吐量比较重要。

16位总长度:IP数据报整体占多少个字节;最大取值为 65535(2¹⁶-1),即数据报最大长度为 65535字节。

16位标识:唯一的标识主机发送的报文。若IP报文因超出数据链路层 MTU(最大传输单元)限制被分片,所有分片的标识字段值完全相同,接收端通过该字段识别同一原始报文的所有分片,用于后续分片组装(需注意,IP 报文需向下交付至数据链路层,而数据链路层无法一次性发送过大报文,因此 IP 层会对超出 MTU 的报文进行分片,每个分片都是一个完整的 IP 报文;接收端则需根据标识字段,将所有分片组装为原始完整报文)。

3位标志字段:第一位保留(保留的意思是现在不用,说不定以后要用到);第二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文,若置为0表示允许分片;第三位用于标识当前分片是否为最后一个分片,如果分片了的话,最后一个分片置为0,其它是1,类似于一个结束标记。

13位片偏移:是分片相对于原始IP报文开始处的偏移,其实就是在表示当前分片在原报文中处在哪个位置,实际偏移的字节数是这个值 * 8 得到的,因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍。

8位生存时间:数据报到达目的地的最大报文跳数;一般是64,每次经过一个路由,TTL -= 1,一直减到0还没到达,那么就丢弃了;这个字段主要是用来防止出现路由循环的。

8位协议:表示上层协议的类型,也就是把IP报文的有效载荷交付给上层的哪一个协议。例如:6 表示TCP协议、17表示UDP协议。

16位首部校验和:用于校验IP首部的完整性,鉴别首部是否因传输过程中出现差错而损坏,校验失败,则丢弃报文。

32位源地址和32位目标地址:表示发送端和接收端。

选项字段:不定长,最多40字节。

3、网段划分

3.1、子网掩码

IP地址分为两个部分,网络号和主机号;将IP地址分为两个部分是为了快速的定位一台主机。

网络号:保证相互连接的两个网段具有不同的标识。

主机号:同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号。

例如:

注:路由器也是一个子网的主机,也是要配置IP地址的。路由器之所以称为路由器是因为它可以支持报文的跨网段转发,因此路由器至少要连接两个子网,因此路由器至少要处在两个子网中,因此路由器至少要配置两个IP地址。路由器一般是一个子网中的第一台设备,一般它的IP就是网络号.1。路由器不仅仅可以转发报文,还可以构建子网。

不同的子网其实就是把网络号相同的主机放到一起。如果在子网中新增一台主机,则这台主机的网络号和这个子网的网络号一致,但是主机号必须不能和子网中的其他主机重复。

注:手动管理子网内的IP,是一个相当麻烦的事情,有一种技术叫做DHCP,能够自动的给子网内新增主机节点分配IP地址,避免了手动管理IP的不便, 一般的路由器都带有DHCP功能,因此路由器也可以看做一个DHCP服务器。

过去曾经提出一种划分网络号和主机号的方案,叫做分类划分法,把所有IP地址分为五类,如下图所示:

A类:0.0.0.0到127.255.255.255。

B类:128.0.0.0到191.255.255.255。

C类:192.0.0.0到223.255.255.255。

D类:224.0.0.0到239.255.255.255。

E类:240.0.0.0到247.255.255.255。

随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址, 导致B类地址很快就分配完了,而A类却浪费了大量地址。例如:申请了一个B类地址,理论上一个子网内能允许6万5千多个主机,A类地址的子网内的主机数更多,然而实际网络架设中,不会存在一个子网内有这么多的情况,因此大量的IP地址都被浪费掉了。

针对这种情况提出了新的划分方案,称为CIDR,引入一个额外的子网掩码来区分网络号和主机号; 子网掩码也是一个32位的正整数,将IP地址和子网掩码进行 "按位与" 操作,得到的结果就是网络号;网络号和主机号的划分与这个IP地址是A类、B类还是C类无关。子网掩码可以对32位的IP地址进行任意划分。CIDR是基于分类划分法的,在分类划分法的基础上再进行更细致的划分。

例如:

可见,IP地址与子网掩码做与运算可以得到网络号,主机号比特位从全0到全1就是子网的地址范围;IP地址和子网掩码还有一种更简洁的表示方法,例如:140.252.20.68/24表示IP地址为140.252.20.68, 子网掩码的高24位是1,也就是255.255.255.0。

将IP地址中的主机号的比特位全部设为0,代表这个子网的网络标识;将IP地址中的主机号的比特位全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包;127.* 的IP地址用于本机环回测试,通常是127.0.0.1,通常用于网络测试。

注:子网范围减2才是实际允许的主机个数,因为里面有两个是有特殊用途的,一个是这个子网的网络标识,另一个是广播地址。

3.2、IP地址数量限制

IP地址(IPv4)是一个4字节32位的正整数,那么一共只有2的32次方个IP地址,大概是43亿左右, 而每个主机都需要有一个IP地址,这意味着,一共只有43亿台主机能接入网络吗?实际上,由于一些特殊的IP地址的存在,数量还不足43亿,另外IP地址并非是按照主机台数来配置的,而是每一个网卡都需要配置一个或多个IP地址。

CIDR相比于分类划分法,在一定程度上缓解了IP地址不够用的问题,提高了利用率,减少了浪费,但是IP地址的绝对上限并没有增加,仍然不够用,这时候有三种方式来解决:

1、动态分配IP地址:只给接入网络的设备分配IP地址,因此同一个MAC地址的设备,每次接入互联网中,得到的IP地址不一定是相同的。(无法从本质上解决IP数量的问题)

2、NAT技术(后面介绍)。

3、IPv6:IPv6并不是IPv4的简单升级版,这是互不相干的两个协议,彼此并不兼容,IPv6用16字节(也就是128个比特位)来表示一个IP地址,但是IPv6还没有普及,目前使用的仍然是IPv4。

4、私网和公网IP

如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上 使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址,如下:

1、10.*,前8位是网络号,共16777216个地址。

2、172.16. *到 172.31.*,前12位是网络号,共1048576个地址。

3、192.168.*,前16位是网络号,共65536个地址。

包含在上面范围中的,都是私有IP,其余的则称为公网IP。

使用ifconfig命令,可以在Linux上查看IP地址信息(在Windows上可以使用ipconfig查看),如下:

其中inet后面的显然就是私网IP地址;netmask就是指网络掩码;broadcast表示的就是广播地址;ether表示的就是MAC地址;mtu会在数据链路层说。

注:公网IP只能出现在公网中,私网IP也只能出现在私网中。另外,构建子网究竟使用10.*、172.16. *到 172.31.*还是192.168.*取决于子网中的主机个数,非常非常多就用10.*来构建子网,比较少就使用192.168.*来构建子网。

5、运营商

运营商在网络中扮演着核心角色,所有网络基础设施都是由运营商牵头搭建的,家家户户入网也都基于运营商的基础建设来实现。

比如说家庭中要入网,首先由运营商将光纤铺设入户,再接上调制解调器和路由器,之后通过路由器机身自带的默认管理账号和密码进入设置界面,配置好运营商提供的宽带账号和密码,这个账号会绑定手机号用于缴纳网费,也可以顺手修改路由器管理密码避免他人篡改设置,再设置好WiFi的名称和连接密码防止蹭网,全部配置妥当后,家里的各类设备就可以输入密码联网使用了,整个入网过程的基础和核心资源,都是由运营商提供和保障的。

而除了入户光纤外,运营商还搭建了全国的网络,以及各类通信基站、机房、网络交换机、光缆线路等核心设施,同时提供 IP 地址资源、宽带接入带宽、网络转发路由等核心网络资源,整个入网过程的基础硬件、网络资源和通信链路,都是由运营商提供和保障的。

企业和个人用户的入网本质逻辑一致,均需向运营商缴纳网费以获取网络接入服务,企业可根据自身需求,选择更高带宽、固定公网 IP、专线接入、专属技术保障等定制化服务;不同的国家和地区有不同的运营商,各自负责当地的网络基础设施搭建与网络服务运营。

6、互联网

IP 地址分配就是全球统管、层层往下分。全球IP管理的机构会按照某种规则分配给对应的区域,每个区域又将IP地址分配给对应的国家或者是运营商,然后由国家或者运营商来进行IP地址的分配,因为IPv4的地址数量有限,还没分配到一个个用户(或者是入网设备)的时候,就不足了,此时就会搭建局域网,局域网中的IP地址都是私网IP。如下图所示:

一个路由器可以配置两个IP地址,一个是WAN口IP,一个是LAN口IP(也就是子网IP);路由器LAN口连接的主机,都从属于当前这个路由器的子网中;子网内的主机IP地址不能重复,但是子网之间的IP地址就可以重复了。一般家用路由器的LAN口IP地址都是192.168.1.1。

每一个家用路由器,其实又作为运营商路由器的子网中的一个节点,这样的运营商路由器可能会有很多级,最外层的运营商路由器,WAN口IP就是一个公网IP了。

子网中有一个主机需要和某个设备进行通信时,主机会判断目的IP地址是否在当前子网(通过路由表进行判断),如果不在当前子网,则会转发给路由器,在经过路由器时,路由器会将IP协议中的源IP地址进行替换,替换成自身的WAN口IP,这样不停的转发,并逐级替换,最终数据包中的IP地址替换成为一个公网IP(这种私有IP不断被替换的技术称为NAT也叫网络地址转换);如果目的IP在当前子网,则直接转给当前子网的主机。

一般而言两台私网IP的主机是没法进行通信的,比如上面图中的主机A和主机B,以及主机A和主机C;除非在同一个局域网中,比如主机A和主机D是可以通信的,或者是子局域网中的一台主机先访问父局域网中的一台主机然后再进行通信(反过来父局域网中的一台主机是没法先访问子局域网中的主机的)。两台私网IP的主机要进行跨网通信一般需要内网穿透才行。

显然,内网的主机可以给公网的设备发送信息,但是公网设备的信息又要如何发送给对应的内网中的主机呢?后面的NAT技术回答这个问题。

所谓的数据发送到目标主机,本质上就是通过数个连续的子网实现的。如果希望自己实现的服务器程序,能够在公网上被访问到,就需要把程序部署在一台具有公网IP的服务器上,这样的服务器可以在云服务平台上进行购买。

这就是为什么访问国外的IP运营商是可以知道的,因为发送的信息要经过运营商的设备,此时,如果运营商的设备不想要你访问国外的IP,则可以丢弃掉访问请求。

注:显然互联网由公网和私网组成。另外,家用路由器和运营商的路由器并无本质上的区别,内网的IP地址都是由路由器进行管理的,管理内网IP地址分配的核心方案就是DHCP协议。手机开热点就相当于手机在充当路由器。

7、路由

路由就是在复杂的网络结构中,找出一条通往终点的路线。

路由的过程,就是这样一跳一跳"问路" 的过程,所谓 "一跳" 就是数据链路层中的一个区间,具体在以太网中指从源MAC地址到目的MAC地址之间的帧传输区间。

那么如何判定当前这个数据包该发送到哪里呢?这个就依靠每个节点内部维护一个路由表。路由表可以使用route命令查看,如下:

其中Destination是指目标地址,default是指缺省的意思;Gateway是指下一跳的地址,_gateway是指路由器的IP地址;Genmask是指子网掩码;Iface是指流量要从哪个网卡发出去。也可以加上-n选项,表示能展示数字就展示数字,如下:

拿着目标主机的IP地址和路由表中的网络掩码做&运算,然后判断运算结果和对应的Destination是不是相同的,如果相同则直接在对应的Iface发出去,如果不相同则继续进行下一个优先程度更低的条目;当目的地址与路由表中其它行都不匹配时,就按缺省路由条目规定的接口发送到下一跳地址。

简单来说路由表就是主机发数据时查的 “下一步去向表”,用来决定数据该交给谁。同时查路由表的结果也决定了接下来MAC帧中的目的MAC地址的内容。

8、NAT技术

8.1、转换过程

之前讨论了,IPv4协议中,IP地址数量不充足的问题,NAT技术是当前解决IP地址不够用的重要手段,是路由器的一个重要功能,NAT能够将LAN口IP转为WAN口IP。

很多学校,家庭,公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置公网IP,公网IP要求唯一,但是私网IP不需要,在不同的局域网中出现相同的私有IP是完全不影响的。例如:如下图所示

路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;路由器收到外部的数据时,又会把目标IP从202.244.174.37替换回10.0.0.10;在路由器内部,有一张自动生成的,用于地址转换的表,当10.0.0.10第一次向163.221.120.9发送数据时就会生成表中的映射关系。

8.2、NAPT

如果局域网内,有多个主机都访问同一个公网服务器,那么对于服务器返回的数据中,目的IP都是相同的。那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?这时候NAPT来解决这个问题了,使用IP+port来建立这个映射关系。

注:在进行替换时,不仅仅会替换IP地址,连端口号也会替换掉。

这种关联关系也是由NAT路由器自动维护的,例如:在TCP的情况下,建立连接时,就会生成这个表项;在断开连接后,就会删除这个表项。

由于依赖这个转换表,所以有很多的限制:

1、无法先从外部设备向内部设备建立连接(只能由内部设备先向外部设备建立连接后,之后两者才可以通信)。

2、转换表生成和销毁都需要额外开销。

8.3、内网穿透

内网穿透是为了让一个内网中的设备A访问另一个内网中的设备B;实现的原理就是先让设备B和一个公网服务器建立连接,然后设备A再访问公网服务器,公网服务器将设备A发送的信息转发给设备B,从而实现内网穿透,如下图所示:

内网穿透是有对应的工具的,比如:fry这个工具,该工具分为两部分,一个是frys用于服务端,另一个是fryc用于客户端。

8.4、代理服务器

代理服务器看起来和NAT设备有一点像,客户端向代理服务器发送请求,代理服务器将请求转发给真正要请求的服务器,服务器返回结果给代理服务器,然后代理服务器又把结果回传给客户端。

那么NAT和代理服务器的区别有哪些呢?

1、从应用上讲,NAT设备是网络基础设备之一,解决的是IP不足的问题,代理服务器则是更贴近具体应用,比如:通过代理服务器访问外网,再比如像一些游戏加速器,也是使用代理服务器。

2、从底层实现上讲,NAT是工作在网络层,直接对IP地址进行替换,代理服务器往往工作在应用层(现在的路由器都可以工作在应用层了,不再局限于网络层了)。

3、从使用范围上讲,NAT一般在局域网的出口部署,代理服务器可以在局域网做,也可以在广域网做,也可以跨网。

4、从部署位置上讲,NAT一般集成在防火墙,路由器等硬件设备上,代理服务器则是一个软件程序,需要部署在服务器上。

代理服务器是一种应用比较广的技术,代理服务器又可分为正向代理和反向代理,正向代理替客户端转发请求、隐藏客户端,反向代理替服务端接收请求、隐藏服务端,核心是代理的服务对象不同,例如:

1、访问外网:属于正向代理。简单来说就是找一台特殊地区的服务器,这个服务器可以被国内进行访问,并且这个服务器可以访问外网,此时就可以通过这个服务器来间接访问外网。

2、负载均衡:属于反向代理。负载均衡就是把大量的网络请求,均匀分配到后端多台服务器上处理,核心目的是避免单台服务器过载出问题、提升服务处理能力和稳定性,同时还能实现故障自动切换,一台服务器出问题,流量会自动转到其他正常服务器,保证服务不中断。

赞(0)
未经允许不得转载:网硕互联帮助中心 » 第五部分:网络层
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!