1.网络层功能概述
将分组从源端传输到目的端,传输单位是数据报
1.路由选择和分组转发(最佳路径)
2.异构网络互联
3.拥塞控制(开环控制:静态;闭环控制:动态)
2.路由算法
2.1.静态路由算法、动态路由算法和层次路由
1.静态路由算法:手动配置路由信息。适用于变化不大的小型网络。
缺点:不能及时适应网络状态的变化,不适用大型网络
2.动态路由算法:路由器间彼此交换信息,按照路由算法优化出路由信息。可以适应不断变化的网络,适用大型网络
3.层次路由:当网络规模扩大时,可以分成多个自治系统
自治系统内使用内部网关协议(IGP):RIP、OSPF
自治系统间使用外部网关协议(EGP):BGP
2.2.路由信息协议(Routing Information Protocol,RIP)
应用层协议,基于广播UDP,选择跳数最少
1.RIP基于距离向量,要求每个路由器都维护从自己到其他每个目的网络的唯一最佳距离记录(也称跳数,即到目的网络所经历的路由器的个数。特别的,从路由器到直接连接的网络距离为1;最多允许15个路由器,因此,距离16表示网络不可达)
2.仅和相邻路由器交换信息,每30秒交换一次(长时间未能进行交换,则说明不可达,距离更改为16),交换的信息是自己的路由表(完整的路由表,全部路由信息)
3.每个路由器刚开始的时候只知道和自己直接相邻的网络,经过若干轮交换路由表后,该路由器就能直到本自治网络内任一网络的最短距离和下一跳路由器的地址
4.交换过程:
每个路由表内含有三个数据:<目的网络><距离><下一跳的路由器地址>,设A的相邻路由器B给A发送了一个路由表:<C><3><B>
①修改该路由表,距离加1,下一跳路由器地址为B:<C><4><B>(每次必做)
②若A中的原路由表中没有关于C的路径,则直接添加该路径(弥补未知)
③若A中的原路由表中有关于C的路径,且下一跳地址为B,则直接进行更新(保持最新)
④若A中的原路由表中有关于C的路径,但下一跳地址不是B,则对原表中距离的和B发来的距离进行对比,将路由表中的路径信息更新为距离更短的那个(距离最短)
⑤超时未收到B的更新路由表,则把B设置为不可达,即距离16
5.特点:收敛慢。网络出现故障的时候,需要长时间才能将所有路由器中通往该网络的路径更新为不可达
2.3.最短路径算法OSPF
OSPF是网络层协议,使用IP数据报,选择代价最低
1.向谁发送:通过洪泛法(路由器向自己相邻的路由器发送信息,相邻的路由器收到信息后,又向自己相邻的路由器发送该信息。类似广播)向本自治系统内所有的路由器发送信息(RIP仅和自己相连的路由器交换信息)
2.发送什么:发送的是和自己相邻的所有路由器的链路状态,即和哪些路由器相连,还有通往那些路由器的链路的代价(RIP交换的是自己整个路由表)
3.多久交换一次:仅链路发生变化时(RIP是每30S)
4.规模大的时候,OSPF比RIP好(规模过大的时候,OSPF会将一个自治系统划分成若干个区域)
5.OSPF不存在收敛慢的问题
2.4.边界网关协议BGP(Border Gateway Protocol)
应用层协议,基于TCP
1.向谁发送:其他自治系统的BGP发言人(需要建立TCP连接)
2.发送什么:交换网络可达性信息(到达某一网络要经历的一系列自治系统,即路径)(据此选出到达各AS的较好路由)
3.多久交换:只有发生变化时候(类似OSPF),仅更新有变化的部分(刚开始时,交换整个BGP路由表)
4.支持CIDR
3.IPv4
3.1.IP数据报格式
1.版本:4bit,指明是IPv4还是IPv6
2.首部长度:4bit,单位为4B,表明整个首部的长度。因为首部最小为20B,因此,首部长度内数据为0101 - 1111。若首部的长度不为4的倍数,则填充为4的倍数(首部长度必为4的倍数)
3.总长度:16bit,单位为1B,表明整个IP数据报的长度
4.生存时间:8bit,IP分组的保质期。每经过一个路由器就-1,直到0就丢弃(防止数据包不断在网络中循环)
5.协议:8bit,指出此分组携带的数据使用何种协议。6为TCP,17为UDP
6.首部检验和:只检验首部
7.源地址和目的地址:32bit,分别表示发送方的IP地址和接收方的IP地址
8.标识:同一数据报的分片使用同一标识(接收端根据标识将相同标识的分片组成数据)
9.标志:中间位:DF(Dont Fragment) = 1,禁止分片; DF = 0,允许分片
最低位:MF(More Fragment)= 1,后面还有分片;MF = 0,最后一个分片 / 没分片
10.片偏移:指出该片在原分组的相对位置,以8B为单位(除了最后一个分片,每个分片的大小都是8的倍数)
11.记忆:一总八片的首四
3.2.IP数据包分片
1.分片的原因,数据链路层的MTU严格限制IP数据报的长度,若大于该长度,则无法传输,因此,需要分片(过长但是不同意分片的分组,则无法传递,返回ICMP差错报文)
2.分片在接收方的网络层进行组装,同一分组的标识相同,根据片偏移字段确定该分片属于原数据的哪一个部分(参考3.1中的8、9、10)
例如:原数据部分为3800B,设最长分片不超过1420B
A.首部为20B,因此,最长分片的最大数据部分为1420 - 20 = 1400B
B.3800 = 1400 + 1400 + 1000
C.0 - 1399为第一个分片:因为是第一个分片,片偏移量为0,总长度为数据部分1400B + 首部20B = 1420B,DF = 0(允许分片),MF = 1(不是最后一个分片),标识为12345
1400 - 2799为第二个分片:第一个字节为1400B,除以单位8B,片偏移量为175,总长度为数据部分1400B + 首部20B = 1420B,DF = 0(允许分片),MF = 1(不是最后一个分片),标识为12345
2800 - 3799为第三个分片:第一个字节为2800B,除以单位8B,片偏移量为350,总长度为数据部分1000B + 首部20B = 1020B,DF = 0(允许分片),MF = 0(是最后一个分片),标识为12345
3.3.IPv4地址
IP地址:标识路由器主机的接口,一个接口对应一个IP地址(<网络号><主机号>)
受限制使用的IP地址
1.0.0.0.0:可以作为源地址,不可以作为目的地址。本网范围内表示主机,该主机不清楚在发送数据的时候应该填什么源IP地址
2.网络号全0,主机号特定: 表示本网内某个特定主机,可以作为源地址,不能作为目的地址
3.网络号全1,主机号全1:不能作为源地址,但能作为目的地址,本网广播地址,路由器隔离广播域,因此,路由器不会转发(参考1中的255.255.255.255)(本网内广播,区别5)
4.网络号特定,主机号全0:不能作为源地址,也不能作为目的地址,表示某一整个网络
5.网络号特定,主机号全1:不能作为源地址,但能作为目的地址,直接广播地址(对其他网络的主机进行广播,区别3)
6.网络号127,主机号为非全0或者非全1:可以作为源地址,可以作为目的地址,本地环回地址
小结:网络号全0,表示本网,都不能作为目的地址,但能作为源地址
主机号全1为广播地址,能作为目的地址,但不能作为源地址
主机号全0不能作为目的地址和源地址
7.私有地址:内部网络,与外界通信使用NAT
A类:10.0.0.0 - 10.255.255.255,网段个数1
B类:172.16.0.0 - 172.31.255.255 网段个数16
C类:192.168.0.0 - 192.168.255.255 网段个数256
8.
网络类别 | 最大可用网络数 | 第一个可用网络号 | 最后一个可用网络号 | 每个网络中的最大主机数 |
A | 2 ^ 7 - 2 | 1 | 126 | 2 ^ 24 - 2 |
B | 2 ^ 14 - 1 | 128.1 | 191.255 | 2 ^ 16 - 2 |
C | 2 ^ 21 - 1 | 192.0.1 | 223.255.255 | 2 ^ 8 - 2 |
每类地址中都去除全0(0、128.0、192.0.0),A类地址多去除一个127(巡回地址)
每个网络中去除主机号全为0(表示本网络),全1(广播地址)
3.4.网络地址转换NAT
在专有网连接到因特网的路由器上安装NAT软件,使其成为NAT路由器;专有网与外界进行数据交换使用的IP地址为NAT路由器的IP地址
例如:A给B发送数据
1.A给NAT路由器发送数据报①:网络层:源IP地址为192.168.0.3(A的专有网内地址),目的地址为213.18.2.4(B的IP地址);传输层:端口号30000
2.NAT路由器给B发送数据报①:将C中原来的源IP地址192.168.0.3(A的专有网内地址)替换为172.38.1.5(NAT路由器IP地址),并且端口号也从30000替换为40001,但是,目的地址不变,这样B就能识别(根据NAT转换表)
例如:B给C发送数据,C为专有网内地址192.168.0.4
3.B给NAT路由器发送数据报②:网络层:源IP地址为213.18.2.4(B的IP地址),目的地址为172.38.1.5(NAT路由器IP地址);传输层:端口号40002
4.NAT路由器给A发送数据报②:将D中原来的目的地址172.38.1.5(NAT路由器IP地址)替换为192.168.0.4(C的专有网内地址),端口号40002替换为30001(根据NAT转换表),但是,源地址不变