计算机网络复习——第4章 4.2.3 4.2.4 4.3

news2024/9/22 11:34:42

4.2.3  IP 地址与 MAC 地址

IP地址:虚拟地址、软件地址、逻辑地址。 网络层和以上各层使用。 放在 IP 数据报的首部。

MAC地址:固化在网卡上的 ROM 中。硬件地址、物理地址。数据链路层使用。放在 MAC 帧的首部。IP 地址放在 IP 数据报的首部, MAC 地址则放在 MAC 帧的首部。

 在 IP 层抽象的互联网上只能看到 IP 数据报,在局域网的链路层,只能看见 MAC 帧。在上图的通信途径中可以得到下图的表格。

 4.2.4  地址解析协议 ARP

实现 IP 通信时使用了两个地址: IP 地址(网络层地址) MAC 地址(数据链路层地址)

那么我们知道IP地址该怎样去找到MAC地址呢?利用ARP协议来进行解析即可。

要点 1:ARP 高速缓存 (ARP cache)

存放 IP 地址到 MAC 地址的映射表。 映射表动态更新(新增或超时删除)。

< IP 地址;MAC 地址;生存时间 (Age);类型等 >

超过生存时间的项目都从高速缓存中删除,以适应网络适配器变化。

利用ARP协议进行查找IP地址对应的MAC地址。

本局域网上广播发送 ARP 请求(路由器不转发 ARP 请求)。

ARP 请求分组:包含发送方硬件地址 / 发送方 IP 地址 / 目标方硬件地址(未知时填 0) / 目标方 IP 地址。

单播 ARP 响应分组:包含发送方硬件地址 / 发送方 IP地址 / 目标方硬件地址 / 目标方 IP 地址。 ARP 分组封装在以太网帧中传输。

具体流程如图所示:

ARP 高速缓存的作用:存放最近获得的 IP 地址到 MAC 地址的绑定。 减少 ARP 广播的通信量。 为进一步减少 ARP 通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到 MAC 地址的映射写入 ARP 请求分组。 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的 IP 地址及其对应的 MAC 地址映射写入主机 B 自己的 ARP 高速缓存中。不必在发送 ARP 请求。 

2台主机不在同一个局域网中怎么办:

通信的路径:A → 经过 R1 转发 → B。 因此主机 A 必须知道路由器 R1 的 IP 地址,解析出其 MAC 地址。然后把 IP 数据报传送到路由器 R1。

使用 ARP 的四种典型情况:

1.发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。

2.发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。

3.发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。

4.发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。

4.2.5  IP 数据报的格式

IP 数据报由首部和数据两部分组成

首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。可选字段,其长度是可变的现在一般不用。

IP 数据报首部的固定部分中的各字段:

版本:占4位,指 IP 协议的版本。 目前的 IP 协议版本号为 4 (即 IPv4)。

首部长度:占 4 位,可表示的最大数值 是 15 个单位(一个单位为 4 字节), 因此 IP 的首部长度的最大值是 60 字节。

区分服务:占 8 位,用来获得更好的服务。 只有在使用区分服务(DiffServ)时,这个字段才起作用。 在一般的情况下都不使用这个字段。

总长度:占 16 位,指首部和数据之和的长度, 单位为字节,因此数据报的最大长度为 65535 字节。 总长度必须不超过最大传送单元 MTU。 

标识 (identification) :占 16 位, 它是一个计数器,用来产生 IP 数据报的标识。每产生一个数据报,计数器就加1,并将此值赋值给标识字段。

标志(flag) :占 3 位,目前只有前两位有意义。 标志字段的最低位是 MF (More Fragment)。 MF=1 表示后面还有分片,MF=0 表示最后一个分片。 标志字段中间的一位是 DF (Don't Fragment) 。 只有当 DF=0 时才允许分片。

片偏移:占 13 位,指出:较长的分组在分片后 某片在原分组中的相对位置。 片偏移以 8 个字节为偏移单位。

生存时间:占 8 位,记为 TTL (Time To Live), 指示数据报在网络中可通过的路由器数的最大值。每经过一个路由器时,就把TTL减去在该路由器所消耗的时间。当TTL减为0时就丢弃这个数据报。

协议:占 8 位,指出此数据报携带的数据使用何种协议, 以便目的主机的 IP 层将数据部分上交给哪个处理过程。IP 协议支持多种协议,IP 数据报可以封装多种协议 PDU。

首部检验和:占 16 位,只检验数据报的首部, 不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。

源地址:占 32 位发送主机的IP地址。

目的地址:占 32 位接受主机的IP地址。

 4.3 IP 层转发分组的过程

1)基于终点的转发

分组在互联网中是逐跳转发的。 基于终点的转发:基于分组首部中的目的地址传送和转发。

为了压缩转发表的大小, 转发表中最主要的路由是(目的网络地址,下一跳地址) , 而不是(目的地址,下一跳地址)。 查找转发表的过程就是逐行寻找前缀匹配。 

2)最长前缀匹配

使用 CIDR 时,在查找转发表时可能会得到不止一个匹配结果。 最长前缀匹配原则:选择前缀最长的一个作为匹配的前缀。 网络前缀越长,其地址块就越小,因而路由就越具体。 可以把前缀最长的排在转发表的第 1 行。

最长前缀匹配: 选择前缀最长的一个作为匹配的前缀

网络前缀越长,其地址块就越小,路由就越具体。可以把前缀最长的排在转发表的第 1 行,以加快查表。

转发表中的 2 种特殊的路由

主机路由 (host route) 又叫做特定主机路由。 是对特定目的主机的 IP 地址专门指明的一个路由。 网络前缀就是 a.b.c.d/32 放在转发表的最前面。

默认路由 (default route) 不管分组的最终目的网络在哪里,都由指定的路由器 R 来处理 用特殊前缀 0.0.0.0/0 表示。只要进行匹配的时候无法查找到相匹配的就转到默认路由当中,再让默认路由转发到下一个路由当中。

路由分组转发算法流程图:

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows命令提示符之常见命令--动态更新

序言&#xff1a; 在大家接触Windows电脑的过程中&#xff0c;一般是直接通过鼠标来进行操作&#xff0c;很少甚至没有用到过命令来执行操作&#xff0c;而想必大家都看过电影里面的黑客大神都是通过密密麻麻的指令来操作的&#xff0c;并且执行的速度也会比我们用鼠标块&…

【严重】Artifex Software Ghostscript 任意命令执行漏洞(POC已公开)(CVE-2023-28879)

漏洞描述 Artifex Software Ghostscript是美国Artifex Software公司的一款开源的PostScript解析器。 Artifex Ghostscript 10.01.0及之前版本中&#xff0c;如果写入缓冲区的数据比总长度少一个字节&#xff0c;则尝试写入转义字符&#xff0c;导致两个字节被写入。攻击者可通…

WPF入门(三)--事件Event调用

1、WPF应用程序的关闭 WPF应用程序的关闭只有在应用程序的 Shutdown 方法被调用时&#xff0c;应用程序才停止运行。 ShutDown 是隐式或显式发生&#xff0c;可以通过指定 ShutdownMode 的属性值来进行设置。 对ShutdownMode选项的更改&#xff0c;可以直接在App.xaml中更改&a…

酒店管理系统(Servlet+JSP)

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Java案例分…

【网络小知识】TCP协议介绍/三次握手,四次挥手的作用

前端开发人员需要了解三次握手和四次挥手的原因是&#xff0c;这些概念是在客户端和服务器端之间进行网络通信时所涉及到的 TCP 协议的基本知识。而对于前端来讲&#xff0c;如果页面中请求服务端数据时出现连接失败、延迟等问题&#xff0c;就需要对TCP协议中三次握手、四次挥…

VS——Visual Studio 2022 社区版——安装

VS——Visual Studio 2022 社区版——安装 下载安装官网下载&#xff1a;点击【免费Visual Studio 】即可下载安装界面&#xff1a;选择社区版 Community 安装先修改【安装位置】&#xff0c;选择【全部下载后安装】【工作负荷】选择 【使用C桌面开发】【语言包】点击【安装】&…

排序算法(二)

三、桶排序 先看定义&#xff1a; 桶排序会进行两次排序&#xff0c;一次将所有元素分配到不同的桶中&#xff0c;一次针对每个桶排序或再次排序所有元素。 练习题&#xff1a; 1&#xff09; 力扣https://leetcode.cn/problems/top-k-frequent-elements/这道题就是非常典型…

NFS能使使用者访问网络上别处的文件就像在使用自己的计算机一样

先关闭selinux跟防火墙 安装NFS yum install nfs-utils -y 配置共享目录 mkdir /webdata 赋权 chmod 755 /webdata 修改配置文件 vim /etc/exports 换顺序启动 systemctl start rpc-bind systemct start nfs 测试 showmount -e 客户端挂载 创建共享目录 mkdir /we…

BUUCTF-rip

https://www.cnblogs.com/refrain-again/p/15001283.html 看了这个文章 我起码能理解我们栈溢出的目的 在做题之前 我们需要先理解 栈的存储方法 从上往下看 就能理解入栈 说回这道题目 为什么这道题目是栈溢出 1.查看基本信息 checksec file 是kali下的elf文件 相当于w…

ASEMI代理ADI亚德诺AD8061ARTZ-REEL7车规级芯片

编辑-Z AD8061ARTZ-REEL7芯片参数&#xff1a; 型号&#xff1a;AD8061ARTZ-REEL7 −3dB小信号带宽&#xff1a;320MHz −3dB大信号带宽&#xff1a;280MHz 0.1 dB平坦度的带宽&#xff1a;30MHz 斜率&#xff1a;650V/μs 总谐波失真&#xff1a;-77dBc 输入电压噪声&…

Kotlin | 这些隐藏的内存陷阱,你应该熟记于心

作者&#xff1a;Petterp 引言 Kotlin 是一个非常 yes 的语言&#xff0c;从 null安全 &#xff0c;支持 方法扩展 与 属性扩展&#xff0c;到 内联方法、内联类 等&#xff0c;使用Kotlin变得越来越简单舒服。但编程从来不是一件简单的工作&#xff0c;所有简洁都是建立在复杂…

电子招标采购系统:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展

营造全面规范安全的电子招投标环境&#xff0c;促进招投标市场健康可持续发展 传统采购模式面临的挑战 一、立项管理 1、招标立项申请 功能点&#xff1a;招标类项目立项申请入口&#xff0c;用户可以保存为草稿&#xff0c;提交。 2、非招标立项申请 功能点&#xff1a;非招标…

使用SpringAOP的方式修改controller接口返回的数据

1为什么需要修改返回接口的数据&#xff1f; 先看一个关于返回接口数据中包含时间的接口&#xff0c;如下接口中的birth属性&#xff0c;是日期&#xff0c;假设我们不做任何处理&#xff0c;那么在页面&#xff0c;我们看到的将是如下的时间显示效果&#xff0c;这明显不是我…

NVM-无缝切换Node版本

NVM-无缝切换Node版本 如果未使用nvm之前已经下载了node&#xff0c;并且配置了环境变量,那么此时删除这些配置(Node的环境以及Node软件),使用nvm是为了在某些项目中使用低版本的node NVM下载 进入github的nvm readme&#xff1a; https://github.com/coreybutler/nvm-windows…

企业如何利用数据打造新的人才战略?

由于利率上升、能源价格上涨、政治不确定性、全球供应限制以及寻找和资助昂贵人才的问题&#xff0c;企业的优先事项&#xff0c;也就是人们的优先事项&#xff0c;正在以前所未有的速度发生转变。在数据的基础之上迅速做出正确决策&#xff0c;并灵活精准地向他人传达意义。 …

必要的项目管理软件因素

什么样的项目管理软件好&#xff1f;对于一个项目团队来说&#xff0c;从项目开始到项目结束&#xff0c;需要多个部门的配合。每个成员可能会参与一个以上的项目&#xff0c;这通常需要并行的多个项目。据介绍&#xff0c;国外90%以上的项目是用软件管理的&#xff0c;而中国只…

dump 定位分析

在缺少pdb的时候如何分析dump&#xff1f; windbgidaWindbg定位崩溃位置 通过windbg打开dump&#xff0c;并且分析dump !analyze -v 分析&#xff1a; 分析dump&#xff1a; !analyze -v错误原因&#xff1a;读取空指针错误线程&#xff1a;00001e04&#xff0c;可通过命令…

【Linux进阶篇】磁盘及分区

目录 &#x1f341;文件系统 &#x1f342;虚拟机添加磁盘 &#x1f342;磁盘分区方式 &#x1f342;分区格式化 &#x1f342;挂载磁盘 &#x1f341;磁盘高级管理 &#x1f342;LVM&#xff1a;逻辑卷 &#x1f343;创建PV 物理卷 &#x1f343;创建VG 卷组 &#x1f343;创建…

说说你对 Webpack 的理解?解决了什么问题?

1、对webpack的理解 简单来说&#xff0c;webpack 是一个用于现代JavaScript应用程序的静态模块打包工具。 当 webpack处理应用程序时&#xff0c;它会在内部构建一个依赖图&#xff0c;此依赖图对应映射到项目所需的每个模块&#xff08;不再局限js文件&#xff09;&#xf…

【数据结构与算法】 - 双向链表 - 详细实现思路及代码

目录 一、概述 二、双向链表 三、双向链表实现步骤  &#x1f4cc;3.1 C语言定义双向链表结点  &#x1f4cc;3.2 双向链表初始化  &#x1f4cc;3.3 双向链表插入数据  &#x1f4cc;3.4 双向链表删除数据  &#x1f4cc;3.5 双向链表查找数据  &#x1f4cc;3.6 双向链…