第四章【网络层数据平面】

网络层数据平面

  • 概述
    • 1、网络层是个啥?
    • 2、网络层的功能?
      • (1)转发
      • (2)选路
      • (3)连接建立
    • 3、网络服务模型?
  • 路由器工作原理
    • 1、路由器结构
    • 2、路由器两个主要功能
      • (1)运行路由算法/协议(RIP、OSPF、BGP)
      • (2)将分组从输入链路转发到适当的输出链路
        • i、 输入端口功能
        • ii、转发
            • (1)交换结构
        • 3、输出端口
  • 网际协议
    • 1、数据报格式
    • 2、IPv4编址
      • I、IP寻址
        • (1)、子网
        • (2)、IP地址编址方式
        • (3)、怎么获取IP地址
            • a 获取一块IP地址
            • b DHCP:动态主机配置协议
            • c NAT :网络地址转换
    • 3、ICMP协议
      • ICMP报文
      • Ping
      • Traceroute
    • 4、IPv6

概述

1、网络层是个啥?

网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向传输层提供最基本的端到端的数据传送服务。(百度百科)

第四章【网络层数据平面】_第1张图片

图片源自链接https://github.com/wolverinn/Waking-Up/blob/master/_v_images/20191129195451183_16713.png]

划重点
网络层协议存在于:主机和路由器
网络层提供的服务:两台主机(host)之间
网络层:分组(发送方将数据段封装成分组)从发送主机传送到接收方主机(接收方将分组解封装后将数据段递交给传输层)
疑问
啥意思啊??

2、网络层的功能?

(1)转发

转发:路由器将收到的分组移动到适当的输出链路

分组在单一的路由器从一条链路到一条链路的路径

术语:
routing:决定分组从源端口到目的端口所经过路径的过程
forwarding:经过分组从一个输入链路接口转移到适当输出链路接口的过程

(2)选路

选路:决定分组从源端到目的端所经过的路径

涉及一个网络所有路由器
分组从发送方向接收方时,网络层巨鼎这些分组所采用的路由或路径(路由选路算法)

每台路由器具有一张转发表,选路算法决定转发表中的值第四章【网络层数据平面】_第2张图片

(3)连接建立

在网络数据开始流动之前,在源和目的端(包括中间经过的路由器)需要建立虚连接路径
???一整个大问号

某些网络体系结构上:ATM,帧中继,x.25

3、网络服务模型?

第四章【网络层数据平面】_第3张图片

第四章【网络层数据平面】_第4张图片

路由器工作原理

1、路由器结构

路由器主要由以下几个部分组成:输入/输出接口部分、包转发或交换结构部分(switching fabric)、路由计算或处理部分。
路由器的软件系统主要有五个组成部分:
1、进程:由执行特定任务的独立线程和相关的数据组成,如系统配置维护的telnet守护进程、客户端进程,FTP进程、TFTP进程,SNMP进程,各种协议进程:IP、TCP、UDP、RIP、OSPF、BGP、ARP、ICMP、IGMP,其它有加解密进程、报文过滤进程、NAT进程等。
2、内核:为系统的其它部分提供基本的系统服务,如存储器管理、进程调度、定时器和时钟管理。它为进程提供了硬件(CPU和存储器)资源的管理。
3、报文缓冲:用来存放将要被交换的报文。
4、设备驱动程序:控制网络接口硬件设备及其它外围设备(如Flash)。设备驱动程序接口位于进程、内核、硬件之间,同时与交换控制软件有接口。
5、交换控制软件:根据转发方式控制报文的交换,在高端线速路由器中该部分功能由硬件实现。https://blog.csdn.net/zqixiao_09/article/details/51064175

2、路由器两个主要功能

(1)运行路由算法/协议(RIP、OSPF、BGP)

(2)将分组从输入链路转发到适当的输出链路

i、 输入端口功能

第四章【网络层数据平面】_第5张图片

ii、转发

分组使用目的主机地址进行转发

第四章【网络层数据平面】_第6张图片
转发表
第四章【网络层数据平面】_第7张图片

(1)交换结构

将分组从输入缓冲区交换到适当的输出缓冲区的速度叫做交换速度,交换结构有三种

  1. memory:经内存交换第四章【网络层数据平面】_第8张图片

  2. bus:经总线交换第四章【网络层数据平面】_第9张图片

  3. crossbar:经一个互联网络交换
    第四章【网络层数据平面】_第10张图片

3、输出端口

当分组从交换结构到达的速率快于输出链路速率时,需要缓存。这时候输出端口排队造成延迟,输出端口缓冲区溢出时引起分组丢失
同理,当交换速度比所有输入端口综合速度慢时候,输入端口产生排队,排队产生延迟,缓存溢出将引起分组丢失。而排在队列前面的分组阻止队列中其他的分组向前移动的现象叫做线头拥塞Head-of-the-Line(HOL)blocking
怎么选择???不理解
在这里插入图片描述

网际协议

第四章【网络层数据平面】_第11张图片

1、数据报格式

第四章【网络层数据平面】_第12张图片

图片来源https://camo.githubusercontent.com/e458e8998827725dfdd45430ff7ea4e3dcc4f261a6ba7fb934deb7be102527d8/68747470733a2f2f63732d6e6f7465732d313235363130393739362e636f732e61702d6775616e677a686f752e6d7971636c6f75642e636f6d2f38356330356662312d353534362d346335302d393232312d3231663233316364633863352e6a7067
图片内容补充
版本 : 有 4(IPv4)和 6(IPv6)两个值;

首部长度 : 占 4 位,因此最大值为 15。值为 1 表示的是 1 个 32 位字的长度,也就是 4 字节。因为固定部分长度为 20 字节,因此该值最小为 5。如果可选字段的长度不是 4 字节的整数倍,就用尾部的填充部分来填充。

区分服务 : 用来获得更好的服务,一般情况下不使用。

总长度 : 包括首部长度和数据部分长度。

生存时间 :TTL,它的存在是为了防止无法交付的数据报在互联网中不断兜圈子。以路由器跳数为单位,当 TTL 为 0 时就丢弃数据报。

协议 :指出携带的数据应该上交给哪个协议进行处理,例如 ICMP、TCP、UDP 等。

首部检验和 :因为数据报每经过一个路由器,都要重新计算检验和,因此检验和不包含数据部分可以减少计算的工作量。

标识 : 在数据报长度过长从而发生分片的情况下,相同数据报的不同分片具有相同的标识符。

片偏移 : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。

  1. 首部长度(head len):用这4bit来确定IP数据报中数据部分实际从哪里开始(因为一个IPv4数据报可包含一些可变数量的选项(包含在IPv4数据报首部中))。 大多数IP数据财报不包含选项,所以一般的IP数据报具有20字节的首部
  2. 数据报长度(length):IP数据报的总长度,即:首部+数据,该字段长16bit
    ** IP分片&重组**
    第四章【网络层数据平面】_第13张图片
    第四章【网络层数据平面】_第14张图片

2、IPv4编址

I、IP寻址

  1. IP地址: 分配给主机或路由器接口的32-bit 标识符
  2. 接口:主机/路由器与物理链路之间的边界
  3. 路由器和主机可以有多个接口,每个接口有一个IP地址

(1)、子网

  1. 什么是子网:
    (1)IP地址角度:设备接口的IP地址具有同样的网络部分;没有路由器的介入,物理上能够相互到达
    (2)定义:分开主机和路由器的每个接口,从而产生了几个分离的网络岛,这些独立网络中的每一个叫做一个子网(subnet)
  2. IP地址:子网部分(高位bits)+主机部分(低位bits)
  3. 子网掩码:
    第四章【网络层数据平面】_第15张图片

子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。 子网掩码不能单独存在,它必须结合IP地址一起使用。https://baike.baidu.com/item/%E5%AD%90%E7%BD%91%E6%8E%A9%E7%A0%81/100207

(2)、IP地址编址方式

链接:https://github.com/CyC2018/CS-Notes/blob/master/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%20-%20%E7%BD%91%E7%BB%9C%E5%B1%82.md#ip-%E6%95%B0%E6%8D%AE%E6%8A%A5%E6%A0%BC%E5%BC%8F

IP 地址的编址方式经历了三个历史阶段:

  1. 分类
    由两部分组成,网络号和主机号,其中不同分类具有不同的网络号长度,并且是固定的。

IP 地址 ::= {< 网络号 >, < 主机号 >}
第四章【网络层数据平面】_第16张图片
第四章【网络层数据平面】_第17张图片
第四章【网络层数据平面】_第18张图片

2.子网划分

老师没讲这部分

通过在主机号字段中拿一部分作为子网号,把两级 IP 地址划分为三级 IP 地址。

IP 地址 ::= {< 网络号 >, < 子网号 >, < 主机号 >}

要使用子网,必须配置子网掩码。一个 B 类地址的默认子网掩码为 255.255.0.0,如果 B 类地址的子网占两个比特,那么子网掩码为 11111111 11111111 11000000 00000000,也就是 255.255.192.0。

注意,外部网络看不到子网的存在。
3.CIDR

  1. CIDR—无类别域际路由选择
  2. 无分类编址 CIDR 消除了传统 A 类、B 类和 C 类地址以及划分子网的概念,使用网络前缀和主机号来对 IP 地址进行编码,网络前缀的长度可以根据需要变化。
  3. 地址格式:a.b.c.d/x,这里x是地址网络部分的bit数
  4. CIDR地址块第四章【网络层数据平面】_第19张图片

(3)、怎么获取IP地址

怎样获取IP地址中的网络号部分?
从ISP的地址空间划分一块给申请者

a 获取一块IP地址

层次寻址
ISP如何得到一块地址?
ICNN:分配地址;管理DNS;分配域名,解决域名纷争

b DHCP:动态主机配置协议

DHCP具有能将主机连接进一个网络的网络相关方面的自动能力,故它又常称被称为即插即用协议
每当一台主机加入时,DHCP服务器从其当前可用的地址池中分配一个任意的地址给它;每当一台主机离开时,其地址便被收回这个池中

c NAT :网络地址转换

https://zh.wikipedia.org/wiki/%E7%BD%91%E7%BB%9C%E5%9C%B0%E5%9D%80%E8%BD%AC%E6%8D%A2看一下维基百科吧,,

用于解决内网中的主机要和因特网上的主机通信。由NAT路由器将主机的本地IP地址转换为全球IP地址,分为静态转换(转换得到的全球IP地址固定不变)和动态NAT转换。
专用网内部的主机使用本地 IP 地址又想和互联网上的主机通信时,可以使用 NAT 来将本地 IP 转换为全球 IP。

在以前,NAT 将本地 IP 和全球 IP 一一对应,这种方式下拥有 n 个全球 IP 地址的专用网内最多只可以同时有 n 台主机接入互联网。为了更有效地利用全球 IP 地址,现在常用的 NAT 转换表把传输层的端口号也用上了,使得多个专用网内部的主机共用一个全球 IP 地址。使用端口号的 NAT 也叫做网络地址与端口转换 NAPT。

3、ICMP协议

ICMP: Internet Control Messae Protocol 因特网控制报文协议
用于主机路由器之间彼此交流网络层信息
差错报告: 不可到达的主机, 网络,端口,协议
请求/应答 (用于ping,traceroute)
ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会。它封装在 IP 数据报中,但是不属于高层协议第四章【网络层数据平面】_第20张图片

https://camo.githubusercontent.com/598b24c2dbb1cd72db45501ace7efcc7754b40267a96c78299ad2e56b70045bf/68747470733a2f2f63732d6e6f7465732d313235363130393739362e636f732e61702d6775616e677a686f752e6d7971636c6f75642e636f6d2f65333132343736332d663735652d343663332d626138322d3334316536633938643836322e6a7067

ICMP报文

ICMP 报文结构: 类型字段, 编码字段 以及引起该ICMP报文的IP分组的前8字节
ICMP 报文分为差错报告报文和询问报文。
第四章【网络层数据平面】_第21张图片

https://camo.githubusercontent.com/e32adca8dddfd5414550c58747a21d8ca2bdd6ae0e785258f9cbbcff6c85cefc/68747470733a2f2f63732d6e6f7465732d313235363130393739362e636f732e61702d6775616e677a686f752e6d7971636c6f75642e636f6d2f61613239636338382d373235362d343339392d386337662d3363663461363438393535392e706e67

Ping

Ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。

Ping 的原理是通过向目的主机发送 ICMP Echo 请求报文,目的主机收到之后会发送 Echo 回答报文。Ping 会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。

Traceroute

Traceroute 是 ICMP 的另一个应用,用来跟踪一个分组从源点到终点的路径。

Traceroute 发送的 IP 数据报封装的是无法交付的 UDP 用户数据报,并由目的主机发送终点不可达差错报告报文。

  1. 源主机向目的主机发送一连串的 IP 数据报。第一个数据报 P1 的生存时间 TTL 设置为 1,当 P1 到达路径上的第一个路由器 R1 时,R1 收下它并把 TTL 减 1,此时 TTL 等于 0,R1 就把 P1 丢弃,并向源主机发送一个 ICMP 时间超过差错报告报文;
  2. 源主机接着发送第二个数据报 P2,并把 TTL 设置为 2。P2 先到达 R1,R1 收下后把 TTL 减 1 再转发给 R2,R2 收下后也把 TTL 减 1,由于此时 TTL 等于 0,R2 就丢弃 P2,并向源主机发送一个 ICMP 时间超过差错报文。
  3. 不断执行这样的步骤,直到最后一个数据报刚刚到达目的主机,主机不转发数据报,也不把 TTL 值减 1。但是因为数据报封装的是无法交付的 UDP,因此目的主机要向源主机发送 ICMP 终点不可达差错报告报文。
  4. 之后源主机知道了到达目的主机所经过的路由器 IP 地址以及到达每个路由器的往返时间。

https://github.com/CyC2018/CS-Notes/blob/master/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%20-%20%E7%BD%91%E7%BB%9C%E5%B1%82.md#2-traceroute

第四章【网络层数据平面】_第22张图片

4、IPv6

第四章【网络层数据平面】_第23张图片
从IPv4到IPv6过渡:

双栈:一些路由器具有双重栈 (v6, v4) 能够在两种格式中转换
隧道: 在穿过IPv4路由器时,IPv6分组作为 IPv4分组的负载

你可能感兴趣的:(计网,后端)