【王道计算机网络笔记】网络层-网络层协议

news2024/11/26 17:41:17

文章目录

    • 地址解析协议ARP
    • 动态主机配置协议DHCP
    • 国际控制报文协议ICMP
      • ICMP差错报文
      • ICMP询问报文
      • ICMP的应用

地址解析协议ARP

由于在实际网络的链路上传送数据帧时,最终必须使用MAC地址
ARP协议:完成主机或路由器IP地址到MAC地址的映射。解决下一跳走哪的问题

ARP协议使用过程:
检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存(10-20min更新一次)。

![[附件/Pasted image 20221213183502.png|500]]

ARP高速缓存:每台主机都有一个ARP高速缓存,用来存放本局域网上各主机/路由器的IP地址到MAC地址的映射表,称为ARP表

这时1想要向3发一个数据报据,1先在ARP高速缓存中查看有无主机3的IP地址,如果有,就可以得到3的MAC地址,直接写入MAC帧,然后发送即可;如果没有,那么就通过使用目的MAC地址为FF-FF-FF-FF-FF-FF的帧来封装并广播ARP请求分组,使同一个局域网的所有主机收到ARP请求,但因为上面带有3的IP地址,因此2会丢弃,3会返回一个响应ARP分组,分组中包含主机3的IP与MAC地址的映射关系(单播的),主机1在收到后将此映射写入ARP缓存,然后按查询到的硬件地址发送MAC帧
![[附件/Pasted image 20221213184916.png|300]]

![[附件/Pasted image 20221213183940.png|400]]

在网络层封装IP地址,在链路层封装MAC地址

ARP请求分组的含义:我的IP地址是xxx,MAC地址是xxx,我要找IP地址为xxx的MAC地址

ARP用于解决同一个局城网上的主机或路由器的IP地址和硬件地址的映射问题,如果所要找的主机和源主机不在同一个局城网上,那么就要通过ARP找到一个位于本局城网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做

![[附件/Pasted image 20221213185150.png|500]]

1向5发送一个数据报,显然1的ARP表中没有5的信息(1会将IP地址与本网络的子网掩码进行与的操作,发现5和自己不再同一个网段),因此1会去查找默认网关的MAC地址(网关就是该网络连入外部网络的一个关口,只要通过默认网关才能把数据发到外面的网络,每个主机都清楚自己的默认网关是谁),如果没有默认网关的MAC地址,方法同上
![[附件/Pasted image 20221213185857.png|300]]

然后把默认网关的MAC地址写到MAC帧中,并发送分组
![[附件/Pasted image 20221213185958.png|400]]

![[附件/Pasted image 20221213190256.png|500]]

![[附件/Pasted image 20221213190318.png|500]]

交换机检查数据帧的MAC地址然后转发

ARP协议4种典型情况:

  • 主机A发给本网络上的主机B:用ARP找到主机B的硬件地址
  • 主机A发给另一网络上的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址
  • 路由器发给本网络的主机A:用ARP找到主机A的硬件地址
  • 路由器发给另一网络的主机B:用ARP找到本网络上的一个路由器(网关)的硬件地址

动态主机配置协议DHCP

动态主机配置协议DHCP是应用层协议,使用客户/服务器方式(即客户端和服务端交互),客户端和服务端通过广播方式进行交互,基于UDP

DHCP提供即插即用联网机制(只要设备进入DHCP服务器管辖范围内),主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许地址重用(每一个DHCP服务器有自己的IP地址池,当一个设备进入服务器范围内,就给一个IP,做了以后就收回来,可以给其他设备用),支持移动用户加入网络,支持在用地址续租

DHCP服务器聚合DHCP客户端的交换过程如下

  1. 主机广播DHCP发现报文。一个主机连入局域网,广播给这个网络里所有设备,试图找到网络中的服务器
  2. DHCP服务器广播DHCP提供报文。如果网络内有DHCP服务器,且存在有空余IP地址的DHCP服务器,此时这些DHCP服务器就会拟分配给主机一个IP地址及相关配置,这个拟分配的信息主机会收到,但是还不能用。可能有多个DHCP服务器发来提供报文,但是主机只选择最先到的
  3. 主机广播DHCP请求报文。主机向第一个发来提供报文DHCP服务器请求提供IP地址(这里还是用广播,告诉其他DHCP服务器已经有选中的服务器了)
  4. DHCP服务器广播DHCP确认报文。服务器正式将IP地址分配给主机

国际控制报文协议ICMP

为了提高IP数据报交付成功的机会,在网络层使用国际控制报文协议

![[附件/Pasted image 20221213195528.png|500]]

首部有首部检验和,这里的检验和是数据部分的检验和

ICMP报文的类型:ICMP差错报文,ICMP询问报文

ICMP差错报文

ICMP差错报告报文,是IP数据报(网络层传输单位)的数据部分

  • 终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文(无法交付)
  • 源点抑制(现在基本用不到了):当路由器或主机由于拥塞而丢弃数据报时,就向源点抑制报文,使源点知道应当把数据报的发送速率放慢(拥塞丢数据)
  • 时间超过:当路由器收到生存时间TTL=0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收得到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文(TTL=0)
  • 参数问题:当路由器或目的主机收到的数据报首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文(首部字段有问题)
  • 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)

![[附件/Pasted image 20221213200440.png|500]]

不应发送ICMP差错报文

  • 对ICMP差错报告报文不再发送ICMP差错报告报文
  • 对第一个分片的数据报片的后续数据包片都不发送ICMP差错报告报文(只对第一个分片的数据报片发送ICMP差错报告报文)
  • 对具有组播(一点到多点,相比于广播,有选择性)地址的数据报都不发送ICMP差错报告报文
  • 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文

ICMP询问报文

  • 回送请求和回答报文:主机或路由器向特定目的的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。测试目的站是否可达以及了解其相关状态,例如PING
  • 时间戳请求和回答报文:请某个主机或路由器回答当前的日期和时间。用来进行时钟同步和测量时间
  • 掩码地址请求和回答报文(不再使用了)
  • 路由器询问和通报报文(不再使用了)

ICMP的应用

PING:测试两个主机之间的连通性,使用了ICMP回送请求和回答报文
Traceroute:跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文

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

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

相关文章

Metal每日分享,海报画滤镜效果

本案例的目的是理解如何用Metal实现海报画效果滤镜,主要就是改变颜色级别数量从而获取到新的像素颜色; Demo HarbethDemo地址 实操代码 // 海报画滤镜 let filter C7Posterize.init(colorLevels: 2.3)// 方案1: ImageView.image try? BoxxIO(eleme…

不用虚拟机也能在Windows下使用Linux

想学习热门的Linux系统,可是一开始就需要安装虚拟机软件,这样很容易消耗Linux初学者的热情。比如常用的VMWare虚拟机,虽然步骤并不复杂,但是一开始的搭建和配置过程, 容易劝退一部分新手。我认为学习新的操作系统&…

看了这篇文章后,面试官再也不敢问你非结构化存储的原理了

那么你可能会说,是不是我无限制地增加从库的数量就可以抵抗大量的并发呢? 实际上并不是的。因为随着从库数量增加,从库连接上来的 IO 线程比较多,主库也需要创建同样多的 log dump 线程来处理复制的请求,对于主库资源消…

[附源码]Python计算机毕业设计飞羽羽毛球馆管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等…

人工智能课后作业_python实现深度优先遍历搜索(DFS算法)(附源码)

1 深度优先遍历搜索(DFS) 1.1算法介绍1.2实验代码1.3实验结果1.4实验总结 1.1算法介绍 深度优先搜索算法(Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点…

知识图谱-KGE-第三方库:OpenKE库【清华开源】

GitHub - thunlp/OpenKE: An Open-Source Package for Knowledge Embedding (KE) OpenKE是THUNLP基于TensorFlow、PyTorch开发的用于将知识图谱嵌入到低维连续向量空间进行表示的开源框架。在OpenKE中,我们提供了快速且稳定的各类接口,也实现了诸多经典…

生态流量智能终端机介绍 功能 特点

平升电子生态流量智能终端机是一款集人机交互、视频叠加、4G路由、数据采集、逻辑运算与远程传输功能于一体的多媒体智能终端设备。 此款产品为水电站生态流量监测项目的专用产品,便于监管单位及时掌握水电站的流量下泄情况,以保障河湖生态用水&#xf…

Java序列化_unknown object tag -126

项目场景: 第一次进入获取员工信息的方法时,会先通过序列化数据库的对应员工信息并保存到 Redis 中。 第二次进入获取员工信息的方法时,直接取出 Redis 里序列化后员工信息,进行反序列化后返回。 问题描述 这里是第一次保存成功…

重温经典,推箱子游戏,你能闯到第几关?可自行添加关卡

🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! &…

WebDAV之葫芦儿·派盘+厚墨

厚墨 支持WebDAV方式连接葫芦儿派盘。 如果你喜欢看电子书又时常书荒,搜索不到想要的电子书,那就快来试试厚墨阅读APP吧。与你一同搜索极简阅读中的最佳体验。 厚墨是目前网络上非常方便的一款电子阅读软件,采用独家数据采集分析技术,汇合了移动互联网各种资源网站大数据…

【JavaSE成神之路】可变参数

哈喽,我是兔哥呀,今天就让我们继续这个JavaSE成神之路! 这一节啊,咱们要学习的内容是Java的可变参数。 1.什么是可变参数 首先来看下概念。 Java的可变参数指的是在方法中设置不定数量的参数。可变参数使得代码更加简洁&#x…

用cocos creator实现《我的世界》

摘要 《我的世界》是一款非常流行的游戏,不过网上大多都是用unity还原实现的。那么用cocos实现一版,会是怎样的开发体验呢? 使用版本 使用最新的cocos creator 3.6.2版本 目前主要功能 生成地形方块创建与销毁角色移动、碰撞、重力和简单…

Java-MySQL-SQL函数

SQL函数 函数介绍 函数是 SQL 的一个非常强有力的特性,函数能够用于下面的目的: ● 执行数据计算 ● 修改单个数据项 ● 操纵输出进行行分组 ● 格式化显示的日期和数字 ● 转换列数据类型 SQL 函数有输入参数,并且总有一个返回值。 …

【云原生系列CKA备考】Kubernetes架构

目录前言一、Kubernetes架构1.1Master节点1.2 Node节点1.3 Add-ons1.3 Kubeadm二、相关命令2.1 查看组件运行状态2.2 kubeadm容器化组件三、总结前言 ​ OpenStack是管理虚拟机的,底层依靠虚拟化技术;kubernetes是管理容器的,底层也是依靠虚…

juery笔记

文章目录Jquery一、什么是 jQuery二、如何使用 jQuery三、如何选择 jQuery 版本四、jQuery 的运行原理实例方法1、一般通过一个字符串来标识匹配的元素2、支持多个选择器任意组合使用3、jQuery 特有的选择器,当然也可以和其他选择器任意组合使用4、元素筛选&#xf…

基于OpenGL的地形建模技术的研究与实现

毕业论文 基于OpenGL的地形建模技术的研究与实现 诚信声明 本人郑重声明:本设计(论文)及其研究工作是本人在指导教师的指导下独立完成的,在完成设计(论文)时所利用的一切资料均已在参考文献中列出。 本人…

代码随想录训练营第50天|LeetCode 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV

参考 代码随想录 题目一:LeetCode 123.买卖股票的最佳时机III 确定dp数组下标及其含义 某一天最多存在5个状态: j 0:没有操作j 1:第一次买入j 2:第一次卖出j 3:第二次买入j 4:第二次卖出…

[附源码]Python计算机毕业设计SSM基于JAVA线上订餐系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

安卓电子名片管理器的设计与实现

毕业设计 安卓电子名片管理器的设计与实现 诚信申明 本人郑重声明:本设计(论文)及其研究工作是本人在指导教师的指导下独立完成的,在完成设计(论文)时所利用的一切资料均已在参考文献中列出。 本人签名&…