【从零开始学习计算机科学与技术】计算机网络(五)网络层

【从零开始学习计算机科学与技术】计算机网络(五)网络层

    • 网络层
      • 无连接服务的实现:数据报子网
      • 面向连接服务的实现:虚电路子网
      • IP协议
      • 子网及子网划分
        • 子网掩码
        • 子网规划
        • 可变长子网掩码 (VLSM)
        • 无类别域间路由—CIDR
      • IP路由转发过程
      • ARP与RARP
        • ARP的工作过程:
        • RARP的工作过程如下:
      • DHCP
      • IP数据报格式
      • 路由算法
      • 路由选择的相关概念
      • 内部路由协议
        • 静态路由选择算法
          • Dijkstra
          • flooding
        • 动态路由选择算法
          • 距离矢量路由(D-V)
          • RIP协议
          • 链路状态路由(LS)
          • OSPF开放的路径优先(Open shortest path first)
        • 什么时候使用静态/动态路由?
      • 外部路由协议
        • BGP
      • 数据报的分片
      • IGMP
      • ICMP
        • Ping请求
        • 时间戳请求
      • 拥塞控制与流量控制
      • 拥塞量度
      • 解决拥塞问题的方法
      • 拥塞控制算法
      • 网络质量(Quality of Service(QOS))保证
      • 抖动控制
        • 优先级策略
        • 分组调度
        • 流量整形
        • 漏桶算法
        • 令牌桶算法
      • 资源预留
      • 虚拟专用网(VPN)
      • NAT/PAT
      • IPv6地址

网络层

主要功能就是:将源端数据包一路送到接收方,即主机到主机的服务。
网络层有两种服务,分别是面向连接和面向无连接的服务。

无连接服务的实现:数据报子网

对于无连接服务来说每个数据包都独立地被注入到网络中,并且每个数据包独立路由,不需要建立任何设置(比如IP协议)。

面向连接服务的实现:虚电路子网

面向连接的服务,需要一个虚电路网络,虚电路的目的是避免为每个数据包选择一条新路径,当建立一个连接时,从源机器到目标机器之间的一条路径就被当做这个连接的一部分被确定下来。(比如ATM协议)

IP协议

由于网络协议是连接不同异构局域网络的,因此需要对不同网络的不同主机进行唯一标识,即IP地址。
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
IPv4地址格式为网络号和主机号,其是唯一的,并且每个主机至少有一个。表示方法是点分十进制表示。

在这里插入图片描述

图1:IPv4地址格式

旧有的IP地址划分是将IP地址划分为A,B,C,D,E四类,其中D类地址用于多播,E类地址保留待用。

在这里插入图片描述

图2:分类IPv4地址

IPv4的保留地址空间

IPv4地址中有两类特殊的地址,不能作为主机地址。其分别是网络地址:主机部分全为“0”的 IP 地址,广播地址:主机部分全为“1”的 IP 地址。

子网及子网划分

局域网不断增长,越来越难于管理,必须将它分割成子网。
一个网络被分隔成几个部分(子网),但是在外界看来,该网络仍被看成一个整体 (体现在路由表例上,就是外部的路由器只对应一条路由)。这也允许不同的子网在一个组织内部连接起来。

子网掩码

路由器使用子网掩码决定分组往哪个子网转发。
子网掩码可用点分十进制表示( 1表示网络位, 0表示主机位),也可用“ /网络位数+子网位数”表示,比如255.255.255.224、202.10.23.102/27。路由器采用“ AND ”操作(目的IP和子网掩码),得到目的网络地址。使用这种机制,路由器不必记录全部主机的IP地址,缩减了路由器的规模。

子网规划

将大网络分割成小网络。划分子网实际上建立了一个由网络、子网和主机构成的三级层次结构,从而降低了路由器的表空间。构建子网是通过从网络地址的主机部分借位来进行。但是,子网规划将导致IP地址空间的损失。
确定可用主机数量的公式 2 n − 2 2^n-2 2n2,减2是因为主机地址不能全为0,也不能全为1,并且子网号也不能全为0或全为1。
借位规则:从主机域的高位开始借位;主机域至少保留2位。

可变长子网掩码 (VLSM)

VLSM允许将网络空间分为大小不等的部分。子网掩码将依据为特定子网所借用的位数而变化。先对网络划分子网,然后再将子网进一步划分子网。根据需要重复此过程,以创建不同大小的子网。

无类别域间路由—CIDR

无类别域间路由是基于可变长子网掩码(VLSM)来进行任意长度的前缀的分配的。在RFC 950(1985)中有关于可变长子网掩码的说明。CIDR包括:指定任意长度的前缀的可变长子网掩码技术。遵从CIDR规则的地址有一个后缀说明前缀的位数,例如 192.168.0.0/16。CIDR用可变长子网掩码(VLSM),根据各人需要来分配IP地址,而不是按network-wide rule。所以,网络/主机的划分可以在地址内的任意位置进行。这个划分可以是递归进行的,即通过增加掩码位数,来使一部分地址被继续分为更小的部分。
其缓解了地址枯竭的趋势;控制甚至缩减了路由表的开销。其分配IP地址的时候不再以类别来分,而是按照可变长的地址块来分配。

使用CIDR时,主机地址不能全为0,也不能全为1,但是子网号可以全为0或全为 1,但是,路由表必须扩展,增加一个 32-bit 的子网掩码。即每个路由表有一个三元组 (IP address, subnet mask, outgoing line),当一个分组到来到的时候,分组中的目标IP地址(Destination IP)被检查:目标IP和子网掩码进行与操作,获得目标网络地址,以查找路由表,如果路由表中有多个表项匹配 (这些表项有不同的子网掩码) ,使用子网掩码最长的那个表项。

IP路由转发过程

  1. 提取目的站的IP地址D,得出其网络号N。
  2. 若路由表中有目的地址为D的指明主机路由,则将数据报送给所指明的下一站路由器;否则转3。
  3. 若N是此路由器直接相连的一个网络号,则直接通过该网络将数据报交付给目的站D;否则转4。
  4. 若路由表中有到达网络N的路由,则将数据报送给所指明的下一站路由器;否则转5。
  5. 若路由表中有默认路由,则将数据报送给所指明的默认路由器;否则转6。
  6. 报告分组转发出错。

在上述过程中,网络层IP数据包的实际交互需要通过链路层提供的服务,而链路层的交互需要MAC地址,因此,这需要IP地址与MAC地址之间的转换。因此,需要用到ARP和RARP协议。

在这里插入图片描述

图3:工作过程

ARP与RARP

ARP(地址解析协议):IP 地址转化为MAC 地址。
RARP(逆向地址解析协议):MAC 地址转化为IP 地址。

ARP的工作过程:

假设主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:

第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。
第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上(广播域内)的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

为了让ARP的工作更加高效,下面是几种优化措施:

  • 缓存 ARP 结果。在ARP请求中包括源机的 IP-to-MAC 地址的映射,每台机器在启动的时候,广播它的IP-MAC地址对。
  • 缺省网关(代理 ARP)。当源设备需要的目的地址与自己不在同一个网络时,如果源不知道目的MAC地址,它必须使用路由器的服务使它的数据达到目的,当路由器在这种方式下使用时,称为缺省网关。缺省网关是与源设备所处的网段相连的路由器接口上的IP地址。
  • ARP表。IP地址到MAC地址的映射表,储存在存储器(RAM)中,自动维护。(掉电消失)。为了减少ARP请求的次数,每个设备拥有自己的ARP表,包括路由器。
  • 自动维护ARP表。通过广播ARP请求中的源设备信息添加更新表;利用自己的ARP请求之应答信息来添加、更新表;删除超过一定时限的信息。
RARP的工作过程如下:
  1. 网络上的每台设备都会有一个独一的硬件地址,通常是由设备厂商分配的MAC地址。PC1从网卡上读取MAC地址,然后在网络上发送一个RARP请求的广播数据包,请求RARP服务器回复该PC的IP地址。
  2. RARP服务器收到了RARP请求数据包,为其分配IP地址,并将RARP回应发送给PC1。
  3. PC1收到RARP回应后,就使用得到的IP地址进行通讯。

RARP在功能上有点类似于DHCP协议,从功能上说,RARP只能实现简单的从MAC地址到IP地址的查询工作,RARP server上的MAC地址和IP地址是必须事先静态配置好的。但DHCP却可以实现除静态分配外的动态IP地址分配以及IP地址租期管理等等相对复杂的功能。

DHCP

DHCP:动态主机配置协议
通过DHCP可以灵活分配IP地址,节约IP地址的使用;使一台主机迅速并动态地获取一个IP地址;通过DHCP获取的 IP是租来的,可能会过期。

IP数据报格式

IP数据报报头的最小长度为20个字节。

在这里插入图片描述

图4:IP数据报格式

固定部分(前20字节):

  1. 版本。占4位,指IP协议的版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。关于IPv6,目前还处于草案阶段。
  2. 首部长度。占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。
  3. 区分服务。占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。
  4. 总长度。总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为 2 1 6 − 1 = 65535 2^16-1=65535 216

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36054.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML5扫雷游戏开发实战

HTML5扫雷游戏开发实战 这里写目录标题 HTML5扫雷游戏开发实战项目介绍技术栈项目架构1. 游戏界面设计2. 核心类设计 核心功能实现1. 游戏初始化2. 地雷布置算法3. 数字计算逻辑4. 扫雷功能实现 性能优化1. DOM操作优化2. 算法优化 项目亮点技术难点突破1. 首次点击保护2. 连锁…

docker安装node部分问题

sudo n latest sudo: n: command not found 如果运行 sudo n latest 时出现: sudo: n: command not found 说明 n 版本管理工具 未安装 或 未添加到 PATH 环境变量。 🛠 解决方案 1️⃣ 先检查 n 是否已安装 运行: which n或者&#xff1…

2025-03-17 NO.1 Quest3 开发环境配置教程

文章目录 准备条件1 Quest3 激活1.1 下载 Oculus 助手1.2 打开 quest 热点1.3 Quest3 连接 wifi1.4 参考教程 2 登录 Oculus(*)2.1 创建 Meta 账号(*)2.2 Oculus 软件下载与配置(*) 3 创建项目3.1 下载 Uni…

简单记一些Kalibr在20.04安装下踩的坑

赠品:官方Kalibr测试数据下载 包括双目,和IMU双目 通过网盘分享的文件:kalibr官方测试数据 链接: https://pan.baidu.com/s/1TgeXuTYLoTrlBbKy5Jf41A?pwdyha6 提取码: yha6 https://github.com/ethz-asl/kalibr/wiki/downloads 先说结论&a…

【C++】:C++11详解 —— 右值引用

目录 左值和右值 左值的概念 右值的概念 左值 vs 右值 左值引用 和 右值引用 左值引用 右值引用 左值引用 vs 右值引用 使用场景 左值引用的使用场景 左值引用的短板 右值引用的使用场景 1. 实现移动语义(资源高效转移) 2. 优化容器操作&a…

SpringMVC(四)Restful软件架构风格

目录 ​编辑 API接口设计的架构风格 一 Dao层实现(处理数据库) 二 Sercice层实现(处理业务逻辑) 三 Controller层(处理http请求) 四 补充知识点 1 PathVariable - 路径变量 2 CrossOrigin(Origins …

c++图论(二)之图的存储图解

在 C 中实现图的存储时,常用的方法包括 邻接矩阵(Adjacency Matrix)、邻接表(Adjacency List) 和 边列表(Edge List)。以下是具体实现方法、优缺点分析及代码示例: 1. 邻接矩阵&…

ABAP PDF预览

画个屏幕 PDF JPG TXT都可以参考预览,把二进制流传递给标准函数就行 *&---------------------------------------------------------------------* *& Report YDEMO2 *&---------------------------------------------------------------------* *&am…

Compose 的产生和原理

引言 compose 出现的目的: 重新定义android 上ui 的编写方式。为了提高android 原生ui开发效率。让android 的UI开发方式跟上时代。 正文 compose 是什么? 就是一套ui框架 和flutter 一样是一套ui框架 Flutter:跨平台开发趋势与企业应用的…

单口路由器多拨号ADSL实现方法

条件是多拨号场景,公司路由器接口不够用

H3C SecPath SysScan-AK 系列漏洞扫描系统

H3C SecPath SysScan-AK 系列是一款专业的漏洞扫描系统,旨在帮助组织和企业快速、准确地发现网络和系统中存在的安全漏洞。该系统具有以下特点: 1. 多样化的扫描能力:支持对各类网络设备、服务器、应用程序等进行漏洞扫描,能够全面…

[蓝桥杯 2023 省 B] 飞机降落

[蓝桥杯 2023 省 B] 飞机降落 题目描述 N N N 架飞机准备降落到某个只有一条跑道的机场。其中第 i i i 架飞机在 T i T_{i} Ti​ 时刻到达机场上空,到达时它的剩余油料还可以继续盘旋 D i D_{i} Di​ 个单位时间,即它最早可以于 T i T_{i} Ti​ 时刻…

Kafka详解——介绍与部署

1. 什么是 Kafka? Kafka 是一个分布式的消息队列系统,最初由 LinkedIn 开发,后来成为 Apache 开源项目。它的主要用途包括实时数据处理、日志收集、数据流管道构建等。Kafka 具备高吞吐量、可扩展性、持久性和容错性,广泛应用于大…

win10搭建opengl环境搭建并测试--输出立方体球体和碗型并在球体上贴图

参照本文档可以完成环境搭建和测试,如果想要快速完成环境的搭建可以获取本人的工程,包括所用到的工具链和测试工程源码获取(非免费介意务下载):链接: https://pan.baidu.com/s/1H2ejbT7kLM9ore5MqyomgA 提取码: 8s1b …

TCP、UDP协议的应用、ServerSocket和Socket、DatagramSocket和DatagramPacket

DAY13.1 Java核心基础 TCP协议 TCP 协议是面向连接的运算层协议,比较复杂,应用程序在使用TCP协议之前必须建立连接,才能传输数据,数据传输完毕之后需要释放连接 就好比现实生活中的打电话,首先确保电话打通了才能进…

如何在 GoLand 中设置默认项目文件夹

在使用 GoLand 进行开发时,设置一个默认的项目文件夹可以大大提高工作效率。默认项目文件夹会在你打开或新建项目时自动预选,避免每次都需要手动导航到目标目录。本文将详细介绍如何在 GoLand 中设置默认项目文件夹。 步骤一:打开系统设置 …

SvelteKit 最新中文文档教程(5)—— 页面选项

前言 Svelte,一个语法简洁、入门容易,面向未来的前端框架。 从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1: Svelte …

Mac下Ollama安装全攻略:开启本地大模型之旅

文章目录 Mac下Ollama安装全攻略:开启本地大模型之旅一、Ollama 是什么功能特点优势应用场景 二、安装前准备(一)系统要求(二)硬件要求 三、下载安装包(一)官网下载(二)其…

华为营销流程落地方案:MTC=MTL+LTC

目录 简介 MTC流程 作者简介 简介 只讲最本质的底层逻辑,交付可落地的方案。 作为一个主打实践的产品老炮,接下来我将结合自己的经验, 以华为系的这套流程为基准, 将涉及业务层次的流程全部重构一套本地化、落地化的方案。 …

vscode使用ssh同时连接主机CentOS:user和ubuntu20.04:docker

主机为CentOS docker为Ubuntu20.04 两者可以使用一个vscode远程链接 1.使用已拉取好的Ubuntu镜像建立docker容器 2.进入容器内,下载一些关于ssh的安装包 apt-get install vim apt-get install openssh-client apt-get install openssh-server apt-get install ssh passwd …