网络层的主要任务是为分组交换网上的不同主机提供通信,交换的方式是分组交换,交换时的路径选择成为路由,
网络层往下是提供物理传输介质的数据链路层,往上则是传输控制的传输层。网络层则是他们两者的中间过渡层。当传输层控制着一次传输任务的开始,网络层就开始为其发送任务选择合适的发送路径。他将数据链路层提供的传输途径整合成为一个整体,像一张大网一样盖在地球上,网络上无数的分组数据包通过合适的线路跑向目的地。
因此,网络层必须具有以下功能:
分组与分组交换:把从传输层接收到的数据报文封装成分组(Packet,也称为“包”)再向下传送到数据链路层。
路由:通过路由选择算法为分组通过通信子网选择最适当的路径。
网络连接复用:为分组在通信子网中节点之间的传输创建逻辑链路,在一条数据链路上复用多条网络连接(多采取时分复用技术)。
差错检测与恢复:一般用分组中的头部校验和进行差错校验,使用确认和重传机制来进行差错恢复。
流量控制:通过流量整形技术来实现流量控制,以防止通信量过大造成通信子网的性能下降。
拥塞控制:当网络的数据流量超过额定容量时,将会引发网络拥塞,致使网络的吞吐能力急剧下降。因此需要采用适当的控制措施来进行疏导。
网络互连:把一个网络与另一个网络互相连接起来,在用户之间实现跨网络的通信。
网络层常见的协议有四个:ARP协议,IP协议,ICMP协议,IGMP协议。
让我们先从最出名的IP协议开始学习起吧
IP协议
IP是Internet Protocol(网际互连协议)的缩写,它是网络之间信息传送的协议,可将IP信息包从源设备(例如用户的计算机)传送到目的设备(例如某部门的www服务器)。为了达到这样的目的,IP必须依赖IP地址与IP路由器两种机制来实现。
IP地址
P规定网络上所有的设备都必须有一个独一无二的IP地址,就好比是邮件上都必须注明收件人地址,邮递员才能将邮件送到。同理,每个IP信息包都必须包含有目的设备的IP地址,信息包才可以正确地送到目的地。同一设备不可以拥有多个IP地址,所有使用IP的网络设备至少有一个唯一的IP地址。
IP地址有ipv4和ipv6两种版本。ipv4是32位的二进制代码,一般每隔8位插入一个空格。为了便于书写,常将其用等效的十进制数字表示,并在每个数字之间加上一个小数点,这就是点分十进制记法。
IP地址由两个字段组成,网络号和主机号。一个网络号在整个互联网范围内是唯一的。一个主机号代表一个网络内的一台主机。由此可以为每台主机定义一个独一无二的IP地址。
分类地址
早期的ip地址划分:
最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。
IP地址是一个32位的二进制字符,为了方便人类的记忆,所以,通常人们会将二进制的IP地址表示成十进制的格式,没每八位分割一下,即分成四段。(后来数字也不太容易记忆,所以,人们就用字符(域名,例如:www.jd.com)来表示IP地址,每次上网的时候,通过DNS服务器,将字符(域名)解析成IP地址,然后才能上网,这个暂且不提。)
网络ID:用来标识计算机所处的网段,网络ID相同的计算机不需要通过路由器连接就能够直接通信,我们把网络ID相同的计算机组成一个网络称之为本地网络(网段);网络ID不相同的计算机之间通信必须通过路由器连接,我们把网络ID不相同的计算机称之为远程计算机。网络ID是IP地址与子网掩码进行与运算获得,即将IP地址中表示主机ID的部份全部变为0,表示网络ID的部份保持不变。
主机ID:用来标识计该台主机在网段中的位置。
IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。
A类:
A类IP地址:一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”, 地址范围从1.0.0.0 到126.0.0.0。可用的A类网络有126个,每个网络能容纳1亿多个主机。
0 000 0000 - 0 111 1111: 0-127
网络数: 2^7(1~126)(0:用于表示未知地址,127表示回环地址,两个都不能用)
每个网络中的主机数: 2^24-2
注意:主机位全0,表示网络ID,防止发生混淆;
注意:主机位全1表示本网段内的广播地址。所以每个网段中的第一个与最后一个都不能使用。
默认子网掩码: 255.0.0.0
私网地址:10.0.0.0
B类:
B类IP地址:一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机 。
10 00 0000 - 10 11 1111: 128-191
网络数: 2^14(128~191)
每个网络中的主机数: 2^16-2
默认子网掩码: 255.255.0.0
私网地址: 172.16.0.0-172.31.0.0
C类:
C类IP地址:一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。
110 0 0000 - 110 1 1111: 192-223
网络数: 2^21(192~223)
每个网络中的主机数: 2^8-2
默认子网掩码: 255.255.255.0
私网地址: 192.168.0.0-192.168.255.0
D类:
D类地址用于多点广播(Multicast):D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。224.0.0.0到239.255.255.255用于多点广播 。
1110 0000 - 1110 1111: 224-239
E类:240-255:ping十进制的ip地址也可以ping通。
特殊地址:
(0.0.0.0)地址对应于未知地址。指在本机的路由表里没有特定条目指明如何到达。一般用户主机为了获得一个可用的IP地址,就给DHCP服务器发送IP分组,并用这样的地址作为源地址,目的地址为255.255.255.255(因为主机此时并没有自己的确定的IP地址,防止自己随便定的IP地址与别的主机发生冲突。)。
(255.255.255.255)是当前子网的广播地址。这个地址指本网段内(同一个广播域)的所有主机,该地址用于主机配置过程中IP数据包的目的地址(例如通过DHCP服务器获取本机的IP地址的时候,由于不知道DHCP服务器的IP地址,便会通知数据链路层,发送广播包,来寻找DHCP),这时主机可能还不知道它所在网络的网络掩码,甚至连它的IP地址也还不知道。在任何情况下,路由器都会禁止转发目的地址为受限的广播地址的数据包,这样的数据包仅会出现在本地网络中。
(127...*)是一个A类地址,但是它已被保留作闭环(look back ),一般用作测试之用而不能分配给一个网络。127中的所有地址都代表发送方自己。
(169.254..)仅限于windows使用,如果你的主机是使用DHCP功能,来自动获得一个IP地址的。那么当你的DHCP服务器发生故障或响应时间太长而超出系统规定的一个时间,Windows系统会为你分配这样一个地址。如果你发现你的 主机IP地址是个诸如此类的地址,很不幸,十有八九是你的网络不能正常运行了,linux没有这种现象。
(私有地址)在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下:
A类地址:10.0.0.0~10.255.255.255
B类地址:172.16.0.0~172.31.255.255 (16个B类)
C类地址:192.168.0.0~192.168.255.255
私有地址,这些地址被大量用于企业内部网络中。一些宽带路由器,也往往使用192.168.1.1作为缺省地址。私有网络由于不与外部互连,因而可能使用随意的IP地址。保留这样的地址供其使用是为了避免以后接入公网时引起地址混乱。使用私有地址的私有网络在接入Internet时,要使用地址翻译 (nat),将私有地址翻译成公用合法地址。在Internet上,这类地址是不能出现的。
(直接广播地址)主机位全为1,网段中的最后一个地址为直接广播地址。主机使用这种地址把一个IP数据报发送到本地网段的所有设备上,路由器会转发这种数据报到特定网络上的所有主机。注意:这个地址在IP数据报中只能作为目的地址。另外,直接广播地址使一个网段中可分配给设备的地址数减少了1个。
(子网中的第一个IP)主机位全为0的地址,用作标识网络ID,一个网段中可分配给设备的地址数会减少1个。
(网络位为0的IP地址)当某个主机向同一网段上的其他主机发送报文时就可以使用这样的地址,分组也不会被路由器转发。比如12.12.12.0/24这个网络中的一台主机12.12.12.2/24在与同一网络中的另一台主12.12.12.8/24通信时,目的地址可以是0.0.0.8。
无类别CIDR编址
分类的IP地址划分,由于互联网的日益发展,需求的日渐增加,不可避免的会造成许多浪费。于是人们提出了CIDR:无类域间路由
头秃,别人的博客是怎么写得那么好的
开摆
https://www.cnblogs.com/rayku...
https://www.luyouqi.com/shezh...
IP路由
互联网是一个庞大而繁杂的网络,其一个个中间节点是靠路由器的转发功能实现的。路由器的路径选择也就成为了解IP协议不可或缺的一环。它关系到数据包能不能通过正确的路径,以更小的代价更安全的抵达目的地址。
常见的路由协议有:RIP,OSPF,BGP
按应用范围的不同,路由协议可分为两类:在一个AS(Autonomous System,自治系统,指一个互连网络,就是把整个Internet划分为许多较小的网络单位,这些小的网络有权自主地决定在本系统中应采用何种路由协议)内的路由协议称为内部网关协议,AS之间的路由协议称为外部网关协议。这里网关是路由器的旧称。
路由信息协议RIP(Routing Information Protocol)是基于距离矢量算法的路由协议,利用跳数来作为计量标准。此协议通常用在网络架构较为简单的小型网络环境。RIP的收敛速度较慢。https://zhuanlan.zhihu.com/p/...
OSPF简单地说就是两个相邻的路由器通过发报文的形式成为邻居关系,邻居再相互发送链路状态信息形成邻接关系,之后各自根据最短路径算法算出路由,放在OSPF路由表,OSPF路由与其他路由比较后优的加入全局路由表。整个过程使用了五种报文、三个阶段、四张表。https://baike.baidu.com/item/...
https://cloud.tencent.com/dev...
BGP用于在不同的自治系统(AS)之间交换路由信息。当两个AS需要交换路由信息时,每个AS都必须指定一个运行BGP的节点,来代表AS与其他的AS交换路由信息。这个节点可以是一个主机。但通常是路由器来执行BGP。两个AS中利用BGP交换信息的路由器也被称为边界网关(Border Gateway)或边界路由器(Border Router)
三者的比较
RIP
基于距离矢量路由选择的协议。
最大的好处是简单
设计思路:对于每个路由器拥有的两个向量的维护、交换、更新
交换全部路由表信息
只对相邻路由器交换
固定时间段就交换
多使用不可靠的UDP协议,为周期性的交换节约开销
OSPF
基于分布式的链路状态协议。自治区域内协议。负责建立链路状态数据库表
收敛快、支持在大型网络中使用
发送与本路由器相邻的所有路由器的链路状态
向本自治系统中所有路由器以泛洪法发送信息
用代价衡量线路质量
仅链路状态发生变化时才发送消息
多使用灵活好、开销少的IP协议
BGP
基于路径向量路由选择协议。自治区域间协议。
交换“可达性”信息
对不同自治系统的路由器之间发生交换
寻找比较好而非最佳路径
自治系统之间的路由选择必须考虑有关策略性 (自治系统能否用AS替代?)
仅路由发生变化时才更新有变化部分
多使用可靠的TCP协议,保证次数较少的交换必达以节约开销
非连接
IP地址与IP路由是IP信息包传送的基础。此外,IP信息包传送时还有一项很重要的特性,即使用非连接式的传送方式。非连接式的传送方式是指IP信息包传送时,源设备与目的设备双方不必事先连接,即可将IP信息包送达。即源设备完全不用理会目的设备,而只是单纯地将IP信息包逐一送出。至于目的设备是否收到每个信息包、是否收到正确的信息包等,则由上层的协议(例如TCP)来负责检查。
ARP协议
IP地址是基于数据链路层的。在数据链路层中,每个网络硬件都会被分配一个唯一代码,称为mac地址。
在网络层看来,源主机与目标主机是通过IP地址进行识别的,而所有的数据传输又依赖网卡底层硬件,即链路层,那么就需要将这些IP地址转换为链路层可以识别的东西,在所有的链路中都有着自己的一套寻址机制,如在以太网中使用MAC地址进行寻址,以标识不同的主机,那么就需要有一个协议将IP地址转换为MAC地址,由此就出现了ARP协议,所有ARP协议在网络层被应用,它是网络层与链路层连接的重要枢纽
https://zhuanlan.zhihu.com/p/...
ICMP协议
https://zhuanlan.zhihu.com/p/...
https://zhuanlan.zhihu.com/p/...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。