IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络——第四章 网络层(Part Ⅰ) -> 正文阅读

[网络协议]计算机网络——第四章 网络层(Part Ⅰ)

网络层的功能

  • 主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。
    功能一:路由选择与分组转发最佳路径
    功能二:异构网络互联
    功能三:拥塞控制

异构网络互联

  • 网络互联使之将两个以上的计算机网络,通过一定的方法,用一些中间设备(又称中继系统)相互连接起来,以构成更大的网络系统。根据所在的层次,中继系统分为以下4种:
    ①物理层中继系统:转发器,集线器
    ②数据链路层中继系统:网桥或交换机
    ③网络层中继系统:路由器
    ④网络层以上的中继系统:网关
  • 使用网络层或数据链路层的中继系统时,只是把一个网络扩大了,而从网络层的角度看,它仍然是同一个网络,一般并不称之为网络互联。因此网络互联通常是指用路由器进行网络互联和路由选择。路由器是一台专用计算机,用于在互联网中进行路由选择。
  • 虚拟互联网络也就是逻辑互连网络,其意思是互联起来的各种物理网络的异构性本来是客观存在的,但是通过使用IP协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。这种使用IP协议的虚拟互联网络可简称为IP网络
  • 使用虚拟互联网络(IP网络)的好处是:当互联网上的主机进行通信时,就好像在一个单个网络上的通信一样,而看不见互联的具体的具体异构细节(如具体的编址方案、路由选择协议等)。

路由与转发

  • 路由器主要完成两个功能:一是路由选择(确定哪一条路径),另一个是分组转发(当一个分组到达时所采取的动作)。前者是根据特定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断的更新和维护路由表。后者处理通过路由器的数据流,关键操作是转发表查询、转发以及相关的队列管理和任务调度等。
    (1) 路由选择:指按照复杂的分布式算法,根据从各相邻路由器所得到的关于整个网络拓扑的变化情况,动态的改变所选择的路由。
    (2)分组转发:指路由器根据转发表将用户的IP数据报从合适的端口转发出去。
  • 路由表是根据路由转发算法得出的,而转发表是从路由表得出的。转发表的结构应当使查找过程最优化,路由表则需要对网络拓扑变化的计算最优化。

拥塞控制

  • 流量控制和拥塞控制的区别:流量控制往往是指在发送端和接收端之间的点对点通信量的控制。流量控制所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收。而拥塞控制必须确保通信子网能够传送待传送的数据,是一个全局性的问题,涉及网络中所有的主机、路由器以及导致网络传输能力下降的所有因素。
  • 拥塞控制的方法有两种:
    (1)开环控制:在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。它是一种静态预防方法 。
    (2)闭环控制:事先不考虑有关发生拥塞的各种因素,采用监测网络系统去监视,及时检测到哪里发生拥塞,然后将拥塞信息传到合适的地方,以便调整网络系统的运行,并解决出现的问题。 闭环控制是基于反馈环路的概念,它是一种动态的方法。

IPv4

IPv4分组

  • IPv4即现在普遍使用的IP协议(版本4)。IP协议定义数据传送的基本单元——IP分组及其确切的数据格式。IP协议也包括一套规则,指明分组如何处理、错误怎样控制。特别是IP协议还包含非可靠投递的思想,以及与此关联的分组路由选择的思想。
  • TCP/IP协议栈:

IPv4分组的格式

  • 一个IP分组由首部和数据部分组成。首部前一部分的长度固定,共20B,是所有IP分组必须具有的。在首部固定部分的后面是一些可选字段,其长度可变,用来提供错误检测及安全等机制。
  • IP首部的部分重要字段含义如下:
    ①版本:指IP协议的版本,目前广泛使用的版本号为4
    ②首部长度【单位是4B】:占4位,可以表示的最大十进制数是15。以32位为单位,最大值为60B。最常用的首部长度是20B,此时不使用任何选项(即可选字段)。
    ③总长度【单位是1B】:占16位。指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 2 16 ? 1 = 65536 B 2^{16}-1=65536B 216?1=65536B。以太网帧的最大传送单元(MTU)为1500B,因此当一个IP数据报封装成帧时,数据报的总长度(首部+数据)一定不能超过下面的数据链路层的MTU值。
    ④标识:占16位。它是一个计数器,每产生一个数据报就加1,并赋值给标识字段。但它并不是"序号"(因为IP是无连接服务)。当一个数据报的长度超过网络的MTU时,必须分片,此时每个数据报片都复制一次标识号,以便能正确重装成原来的数据报。
    ⑤标志:占3位。标志字段的最低位为MF,MF=1表示后面还有分片,MF=0表示最后一个分片。标志字段中间的一位是DF,只有当DF=0时才允许分片。
    ⑥片偏移【单位是8B】:占13位。它指出较长的分组在分片后,某片在原分组中的相对位置。片偏移以8个字节为偏移单位。除最后一个分片外,每个分片的长度一定是8B的整数倍。
    ⑦生存时间(TTL):占8位。数据报在网络中可通过的路由器数的最大值,标识分组在网络中的寿命,以确保分组不会永远在网络中循环。路由器在转发分组前,先把TTL减1.若TTL被减为0,则该分组必须丢弃。
    ⑧协议:占8位。指出此分组携带的数据使用何种协议,即分组的数据部分应上交给哪个协议进行处理。

| 协议名 | ICMP | IGMP | TCP | EGP | IGP | UDP | IPv6 | ESP | OSPF |
|–|–|–|–|–|–|–|–|–|–|–|–|
| 字段值 | 1 | 2 | 6 | 8 | 9 | 17 | 41 | 50 | 89 |
⑨首部校验和:占16位。首部校验和只校验分组的首部,而不校验数据部分。
⑩源地址字段 & 首地址字段:各占4B,标识发送方/接收方的IP地址

IP数据报分片

  • 标志位:3比特
    x _ _:
    中间位DF(Don’t Fragment):
    DF=1,禁止分片;DF=0,允许分片
    最低位MF(More Fragment)
    MF=1,后面"还有分片";MF=0,代表最后一片/没分片

IPv4地址与NAT

IPv4地址

  • IP地址:全世界唯一的32位/4字节标识符,标识路由器主机的接口
  • IP地址::={<网络号>,<主机号>}
网络类别最大可用网络数第一个可用的网络号最后一个可用的网络号每个网络中的最大主机数
A 2 7 ? 2 2^7-2 27?21126 2 24 ? 2 2^{24}-2 224?2
B 2 14 ? 1 2^{14}-1 214?1128.1191.255 2 16 ? 2 2^{16}-2 216?2
C 2 21 ? 1 2^{21}-1 221?1192.0.1223.255.255 2 8 ? 2 2^8-2 28?2

特殊IP地址:

NetlD(网络号)HostID(主机号)作为IP分组源地址作为IP分组目的地址用途
全0全0可以不可以本网范围内表示主机,路由表中用于表示默认路由(表示整个Internet网络)
全0特定值可以不可以表示本网内某个特定主机
全1全1不可以可以本网广播地址(路由器不转发)
特定值全0不可以不可以网络地址,表示一个网络
特定值全1不可以可以直接广播地址,对特定网络上的所有主机进行广播
127任何数(非全0/1)可以可以用于本地软件环回测试,称为环回地址

私有IP地址:

地址类别地址范围网段个数
A类10.0.0.0~10.255.255.2551
B类172.16.0.0~172.31.255.25516
C类192.168.0.0~192.168.255.255256

网络地址转换(NAT)

  • 网络地址转换(NAT)是指通过将专用网络地址转换为公用地址,从而对外隐藏了内部管理的IP地址。它使得整个专用网只需要一个全球IP地址就可以与因特网连通,由于专用网络本地IP地址是可重用的,所以NAT大大节省了IP地址的消耗。同时,它隐藏了内部网络结构,从而降低了内部网络收到攻击的风险。
  • 使用NAT时需要在专用网连接到因特网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球IP地址。使用本地地址的主机在和外界通信时,NAT路由器使用NAT转换表进行本地IP地址和全球IP地址的转换。NAT转换表中存放着{本地IP地址:端口}到{全球IP地址:端口}的映射。

子网划分与子网掩码、CIDR

子网划分

  • 两级IP地址的缺点:IP地址空间的利用率有时很低;给每个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏;两级的IP地址不够灵活
  • 从1985年起,在IP地址中又增加了一个"子网号字段",使两级IP地址变成了三级IP地址。这种做法称为子网划分。

    子网划分的基本思路如下:
  • 子网划分纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
  • 从主机号借用若干个位作为子网号,此时主机号也就相应减少了相同的比特。三级IP地址的结构如下:IP地址={<网络号>,<子网号>,<主机号>}
  • 凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号,先找到连接到本单位网络上的路由器。 然后该路由器在收到IP数据报后,按目的网络号和子网号找到目的子网。最后把IP数据报直接交付给目的主机。

子网掩码

  • 子网掩码是一个与IP地址相对应的、长32bit的二进制串,它由一串1和跟随的一串0组成。其中,1对应于IP地址中的网络号及子网号,而0对应于主机号。计算机只需将IP地址和其对应的子网掩码逐位"与",就可得出相应子网的网络地址。
  • 现在的因特网标准规定:所有的网络都必须使用子网掩码。如果一个网络未划分子网。那么就采用默认子网掩码。

无分类编址CIDR

  • 无分类域间路由选择(Classless Inter-Domain Routing,CIDR)是在变长子网掩码的基础上提出的一种消除传统A、B、C类网络划分,并且可以在软件的支持下实现超网构造的一种IP地址的划分方法
  • CIDR使用"网络前缀"的概念代替子网络的概念,与传统分类IP地址最大的区别就是,网络前缀的位数不是固定的,可以任意选取
  • CIDR的记法是:IP::={<网络前缀>,<主机号>};CIDR还使用"斜线记法",即IP地址/网络前缀所占比特数。其中,网络前缀所占比特数对应于网络号的部分,等效于子网掩码中连续1的部分
  • 将网络前缀都相同的连续IP地址组成"CIDR地址块"。一个CIDR地址块可以表示很多地址,这种地址的聚合称为路由聚合,或称构成超网。路由聚合使得路由表中的一个项目可以表示多个原来传统分类地址的路由,有利于减少路由器之间的信息的交换,从而提高网络性能 【划分子网:少→多 构成超网:多→少】
  • CIDR的优点在于网络前缀长度的灵活性。由于上层网络的前缀长度较短,因此相应的路由表的项目较少。而内部又可采用延长网络前缀的方法来灵活地划分子网。
  • 最长前缀匹配:使用CIDR时,路由表中的每个项目由"网络前缀"和"下一跳地址"组成。在查找路由表时可能会得到不止一个匹配结果。此时,应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,因而路由就越具体。
  • CIDR查找路由表的方法:为了更加有效地查找最长前缀匹配,通常将无分类编址的路由表存放在一种层次式数据结构中,然后自上而下地按层次进行查找。这里最常用的数据结构就是二叉线索

ARP、DHCP与ICMP

ARP-地址解析协议

  • 地址解析协议(Address Resolution Protocol,ARP),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
  • 功能:根据IP地址查询物理地址
  • ARP协议使用过程:
    检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存(10-20min更新一次)。
  • ARP协议4种典型情况:
    1.主机A发给本网络上的主机B:用ARP找到主机B的硬件地址
    2.主机A发给另一网络上的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址
    3.路由器发给本网络的主机A:用ARP找到主机A的硬件地址
    4.路由器发给另一网络的主机B:用ARP找到本网络上的一个路由器(网关)的硬件地址

DHCP-动态主机配置协议

  • 动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)常用于给主机动态地分配IP地址(如果采用静态IP地址的分配方法将增加网络管理员的负担),它提供了即插即用的联网机制,这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与
  • 动态主机配置协议DHCP是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP
  • DHCP具备五项主要功能:支持动态地址分配、支持静态地址分配、租用地址、支持永久租用地址、恢复中止的租用地址

1.主机广播DHCP发现报文
2.DHCP服务器广播DHCP提供报文
3.主机广播DHCP请求报文
4.DHCP服务器广播DHCP确认报文

ICMP-网络控制报文协议

  • 为了提高IP数据报交付成功的机会,在网络层使用了网际控制报文协议(Internet Control Message Protocol,ICMP)来让主机或路由器报告差错和异常情况。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。ICMP是IP层协议。
  • ICMP报文的种类有两种,即ICMP差错报告报文ICMP询问报文
  • ICMP差错报告报文用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况。共有以下5种类型:
  1. 终点不可达:当路由器或主机不能交付数据报时,就向源点发送终点不可达报文【无法交付】
  2. 源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢【拥塞丢数据】
  3. 时间超过:当路由器收到生存时间TTL=0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。【TTL=0】
  4. 参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文【首部字段有问题】
  5. 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)【值得更好的路由】
  • ICMP差错报告报文数据字段:
  • 不应发送ICMP差错报告报文的几种情况如下:
  1. 对ICMP差错报告报文不再发送ICMP差错报告报文
  2. 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
  3. 对具有组播地址的数据报都不发送ICMP差错报告报文
  4. 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文
  • ICMP询问报文有4种类型:回送请求和回答报文、时间戳请求和回答报文、地址掩码请求和回答报文、路由器询问和通告报文,最常用的是前两类
  • ICMP的两个常见应用是分组网间探测PING(用来测试两台主机之间的连通性)和Traceroute/Tracert(用来跟踪分组经过的路由)。其中PING使用了ICMP回送请求和回答报文,Traceroute使用了ICMP时间超过报文
    【PING工作在应用层,它直接使用网络层的ICMP,而未使用传输层的TCP或UDP。Traceroute/Tracert工作在网络层。】

移动IP

移动IP的概念

  • 移动IP技术是指移动结点以固定的网络IP地址实现跨越不同网段的漫游功能,并保证基于网络IP的网络权限在漫游过程中不发生任何改变。 移动IP的目标是把分组自动地投递给移动结点。
    移动结点:具有永久IP地址的移动设备
    归属代理(本地代理):一个移动结点的永久"居所"称为归属网络,在归属网络中代表移动节点执行移动管理功能的实体叫做归属代理
    永久地址(归属地址/主地址):移动站点在归属网络中的原始地址
    外部代理(外地代理):在外部网络中帮助移动节点完成移动管理功能的实体称为外部代理
    转交地址(辅地址):可以是外部代理的地址或动态配置的一个地址

移动IP通信过程

  • 刚进入外部网络:
    1.获得外部代理的转交地址(外部代理广播报文)
    2.移动节点通过外部代理发送注册报文给归属代理(包含永久地址&转交地址)
    3.归属代理接收请求,并将移动节点的永久地址和转交地址绑定(以后到达该归属代理的数据报且要发往移动节点的数据报将被封装并以隧道方式发给转交地址),并返回一注册响应报文
    4.外部代理接收注册响应,并转发给移动节点
  • 移动到下一个网络:
    1.在新外部代理登记注册一个转交地址
    2.新外部代理给本地代理发送新的转交地址(覆盖旧的)
    3.通信
  • 回归到归属网络:
    1.A向本地代理注销转交地址
    2.按原始方式通信
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 16:25:55  更:2022-04-06 16:28:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:51:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码