玩命加载中 . . .

4-网络层


网络层

主要任务是实现网络互联,进而实现数据包在各网络间的传输

需要解决的问题:

  1. 网络层向运输层提供怎样的服务
  2. 网络层寻址问题
  3. 路由选择问题

TCP/IP体系的网际层提供的是无连接、不可靠的数据报服务

ATM、帧中继、X.25的网络层提供的是面向连接的、可靠的虚电路服务

💡 分组交换包括数据报和虚电路两种

编址方法

IPv4地址的编址方法经历了3个阶段

1、分类编址

  • A类地址:网络号8位,最高位为0,主机号24位
  • B类地址:网络号16位,最高两位为10,主机号16位
  • C类地址:网络号24位,最高三位为110,主机号8位
  • D类地址:多播地址,最高四位为1110
  • E类地址:保留地址,最高四位为1111

💡 只有A类、B类和C类地址可分配给网络中的主机或路由器各接口 主机号全0的地址是网络地址,不能分配给网络中的主机或路由器各接口 主机号全1的地址是广播地址,不能分配给网络中的主机或路由器各接口

  • A类地址理论上最小网络号为0000 0000,最大网络号为0111 1111,但是最小网络号『0』不能指派,只能作为源地址使用,表示“在本网络的本主机”,最大网络号『127』作为本地环回测试地址,也不能指派,所以可指派的A类地址网络号为0000 0001~0111 1110,也就是1~126,总共126个,即$2^{8-1}-2$。每个网络中可分配的IP地址数量为$2^{24}-2=16777214$,要去掉全0的网络地址和全1的广播地址
  • B类地址最小网络号为『128.0』,最大网络号为『191.255』,网络号共16位,最高两位固定10,所以可指派的网络数量为$2^{16-2}=16384$,每个网络中可分配的IP地址数量为$2^{16}-2=65534$
  • C类地址最小网络号为『192.0.0』,最大网络号为『223.255.255』,网络号共24位,最高三位固定110,所以可指派的网络数量为$2^{24−3}=2097152$,每个网络中可分配的IP地址数量为$2^8-2=154$

💡 根据第一个十进制数判断网络类别:小于127为A类,128~191为B类,192~223为C类 地址255.255.255.255是一个特殊的IPv4地址,只能作为目的地址使用,表示只在本网络上进行广播,各路由器均不转发

2、划分子网

从主机号借用一些位来作为子网号,子网掩码用1表示来网络号+子网号,用0表示主机号

3、无分类编址(CIDR)

用斜线后面的数字表示网络号的位数

可以进行路由聚合,将几个网络的最长前缀提取出来,只要存储这个最长前缀的网络就行

35.230.32.0/21 → 35.230.00100000.0

35.230.32.0/21 → 35.230.00101000.0

35.230.32.0/21 → 35.230.00110000.0

35.230.32.0/21 → 35.230.00111000.0

聚合后的网络为35.230.32.0/19

路由选择协议

  • 静态路由选择:由人工配置的网络路由、默认路由、特定主机路由、黑洞路由等,一般只在小规模网络中使用
  • 动态路由选择:路由器通过路由选择协议自动获取路由信息,适用于大规模网络

因特网采用分层次的路由选择协议,将多个网络划分为一个自治系统。

  • 自治系统之间的路由选择称为域间路由选择,使用『外部网关协议EGP』这个类别的路由选择协议,例如BGP

  • 自治系统内部的路由选择称为域内路由选择,使用『内部网关协议IGP』这个类别的路由选择协议,例如RIP、OSPF

内部网关协议

  • 路由信息协议RIP,基于距离向量,适用于小型网络,使用UDP协议封装报文

    RIP存在“坏消息传播得慢”的问题,又称为路由环路或距离无穷计数问题,可以采取以下措施

    • 限制最大路径距离为15(16就表示不可达)
    • 当路由表发生变化时就立即发送更新报文,而不是周期性发送
    • 让路由表记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送(即『水平分割』)
  • 内部网关路由协议IGRP,基于距离向量,现已被EIGRP取代

  • 增强型内部网关协议EIGRP,结合距离向量和链路状态

  • 开放式最短路径优先OSPF(Open Shortest Path First),基于链路状态,使用IP协议封装报文

    • 使用Dijkstra提出的最短路径算法,保证了不会出现路由环路
    • 链路状态是指本路由器和哪些路由器相邻,以及相应链路的代价
    • 不限制网络规模,更新效率高,收敛速度快
  • 中间系统到中间系统IS-IS,基于链路状态

外部网关协议

  • 边界网关协议BGP

    在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的“发言人”。不同自治系统的BGP发言人要交换路由信息,首先需要建立TCP连接,端口号为179

IPv4数据报的首部格式

固定部分20字节,可变部分40字节

  • 版本:4Bit,比如4

  • 首部长度:4Bit,以4字节为单位,最小为5,表示只有固定部分的20字节

  • 区分服务:8Bit

  • 总长度:16Bit,表示IP数据报的总长度,首部+数据载荷,以字节为单位,以太网帧的最大传送单元(MTU)为1500字节,因此IP数据报总长度不能超过MTU

  • 标识:16Bit,属于同一数据报的各分片应该具有同样的标识

  • 标志:3Bit

    • DF(Don’t Fragment):1表示不允许分片,0表示允许分片
    • MF(More Fragment):1表示后面还有分片,0表示这是最后一个分片
    • 保留位,设置为0
  • 片偏移:13Bit,指出分片数据报的数据载荷部分偏移其在原数据报的位置多少字节,以8字节为单位,即每个分片的长度一定是是8字节的整数倍

  • 生存时间TTL:8Bit,以跳数为单位,路由器转发IP数据报时,将IP数据报的生存时间减1,不为0就转发,否则丢弃

  • 协议:8Bit,指明IP数据报的数据部分是何种协议数据单元,1表示ICMP报文,2表示TGMP报文,6表示TCP报文,17表示UDP报文

  • 首部检验和:16Bit,用来检测首部在传输过程中是否出现差错

  • 源IP地址:32Bit

  • 目的IP地址:32Bit

  • 可选字段:最大40字节

  • 填充字段:确保首部长度为4字节的整数倍

网际控制报文协议ICMP

Internet Control Message Protocal

主机或路由器使用ICMP来发送『差错报告报文』『询问报文』

💡 ICMP报文被封装在IP数据报中发送

  • ICMP差错报告报文共有5种
    • 终点不可达:主机或路由器不能交付数据报
    • 源点抑制:由于拥塞而丢弃数据报
    • 时间超过:IP数据报的TTL字段被减为0
    • 参数问题:IP数据报在传输过程中出现误码
    • 改变路由:路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由
  • ICMP询问报文有2种
    • 回送请求和应答:由主机或路由器向一个特定的目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送应答报文。用来测试目的站是否可达
    • 时间戳请求和回答:请某个主机或路由器回答当前的日期和时间。用来时钟同步和测量时间

ICMP应用举例

  • 分组网间探测PING:Packet Internet Groper,用来测试主机之间的联通性,应用层直接使用网际层的ICMP协议,使用ICMP回送请求和应答报文
  • 跟踪路由:Unix中是traceroute,Windows中是tracert,用来测试IP数据报从源主机到目的主机要经过哪些路由器,在Unix版本中,在运输层使用UDP协议,网络层使用ICMP协议的差错报告报文

虚拟专用网VPN

虚拟专用网(VPN,Virtual Private Network):利用公用的因特网作为本机构各专用网之间的通信载体,也称为IP隧道技术

网络地址转换NAT

网络地址转换(NAT,Network Address Translation):通过将专用网络地址转换为公用地址,从而对外隐藏内部管理的IP地址

💡 路由器对目的地址是私有地址的IP数据报一律不转发

私有IP地址又称为可重用地址

专用网内部的主机不能直接充当服务器使用

使用NAT时需要再专用用连接到因特网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球抵制。使用本地地址的主机和外界通信时,NAT路由器使用NAT转换表将本地地址转换成全球地址,或将全球地址转换成本地地址。NAT转换表中存放着{本地地址:端口}到{全球地址:端口}的映射关系,使用端口号的NAT也称为网络地址与端口号转换NAPT(Network Address and Port Translation)

💡 NAT协议工作在传输层

动态主机配置协议DHCP

动态主机配置协议(DHCP,Dynamic Host Configuration Protocol):用于给主机动态地分配IP地址,提供了即插即用联网的机制

💡 DHCP是应用层协议,基于UDP

使用客户端/服务器方式,需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文,这是该主机就成为DHCP客户,DHCP服务器先在其数据库中查找该计算机的配置信息,若找到,则返回找到的信息,若找不到,则从服务器的IP地址池中取一个地址分配给该计算机

DHCP服务器的回答报文称为提供报文


文章作者: kunpeng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kunpeng !
  目录