计算机网络⑦ —— 网络层协议

1. ARP协议

  • 在传输⼀个 IP 数据报的时候,确定了源 IP 地址和⽬标 IP 地址后,就会通过主机路由表确定 IP 数据包下⼀跳。然⽽,⽹络层的下⼀层是数据链路层,所以我们还要知道下⼀跳的 MAC 地址。由于主机的路由表中可以找到下⼀跳的 IP 地址,所以可以通过 ARP 协议(Address Resolution Protocol,地址解析协议),求得下⼀跳的 MAC 地址。
  • ARP 是借助 ARP 请求与 ARP 响应两种类型的包确定 MAC 地址的
    • 主机会通过⼴播发送 ARP 请求,这个包中包含了想要知道的 MAC 地址的主机 IP 地址
    • 当同个链路中的所有设备收到 ARP 请求时,会去拆开 ARP 请求包⾥的内容,如果 ARP 请求包中的⽬标 IP 地址与⾃⼰的 IP 地址⼀致,那么这个设备就将⾃⼰的 MAC 地址塞⼊ ARP 响应包返回给主机
    • 操作系统通常会把第⼀次通过 ARP 获取的 MAC 地址缓存起来,以便下次直接从缓存中找到对应 IP 地址的 MAC 地址。 不过,MAC 地址的缓存是有⼀定期限的,超过这个期限,缓存的内容将被清除

2. RARP协议

  • ARP 协议是已知 IP 地址求 MAC 地址,而 RARP 协议正好相反,它是已知 MAC 地址求 IP 地址。

3. DHCP协议

  • 动态主机配置协议,我们的电脑通常都是通过 DHCP 动态获取 IP 地址,⼤⼤省去了配 IP 信息繁琐的过程

  • 电脑动态获取IP的步骤:
    在这里插入图片描述

  • DHCP 客户端进程监听的是 68 端⼝号,DHCP 服务端进程监听的是 67 端⼝号

  • 如果租约的 DHCP IP 地址快期后,客户端会向服务器发送 DHCP 请求报⽂:

    • 服务器如果同意继续租⽤:则⽤ DHCP ACK 报⽂进⾏应答,客户端就会延⻓租期。
    • 服务器如果不同意继续租⽤:则⽤ DHCP NACK 报⽂,客户端就要停⽌使⽤租约的 IP 地址。
  • 在DHCP 交互中,全程都是使⽤ UDP ⼴播通信,如果 DHCP 服务器和客户端不是在同⼀个局域⽹内,路由器⼜不会转发⼴播包,那是不是每个⽹络都要配⼀个 DHCP 服务器?

    • 为了解决这一问题,出现了 DHCP 中继代理,对不同⽹段的 IP 地址分配也可以由⼀个 DHCP 服务器统⼀进⾏管理在这里插入图片描述
      • DHCP 客户端会向 DHCP 中继代理发送 DHCP 请求包,⽽ DHCP 中继代理在收到这个⼴播包以后,再以单播的形式发给 DHCP 服务器。
      • 服务器端收到该包以后再向 DHCP 中继代理返回应答,并由 DHCP 中继代理将此包⼴播给 DHCP 客户端

4. NAT

  • 网络地址转换,为了缓解了 IPv4 地址耗尽的问题,简单的来说 NAT 就是同个公司、家庭、教室内的主机对外部通信时,把私有 IP 地址转换成公有 IP 地址
  • NAPT:网络端口地址转换
  • 缺点:
    • 外部⽆法主动与 NAT 内部服务器建⽴连接,因为 NAPT 转换表没有转换记录。
    • 转换表的⽣成与转换操作都会产⽣性能开销。
    • 通信过程中,如果 NAT 路由器重启了,所有的 TCP 连接都将被重置。
  • 解决:
    • 改用IPv6
    • NAT 穿透技术
      • NAT 穿越技术能够让⽹络应⽤程序主动发现⾃⼰位于 NAT 设备之后,并且会主动获得 NAT 设备的公有 IP,并为⾃⼰建⽴端⼝映射条⽬

5. ICMP(互联⽹控制报⽂协议)

  • 主要功能:
    • 确认 IP 包是否成功送达⽬标地址、报告发送过程中 IP 包被废弃的原因和改善⽹络设置等
    • 在 IP 通信中如果某个 IP 包因为某种原因未能达到⽬标地址,那么这个具体的原因将由 ICMP 负责通知
  • 类型:
    • ⼀类是⽤于诊断的查询消息,也就是「查询报⽂类型」
    • ⼀类是通知出错原因的错误消息,也就是「差错报⽂类型」

6. IGMP(因特⽹组管理协议)

  • IGMP 报⽂向路由器申请加⼊和退出组播组,默认情况下路由器是不会转发组播包到连接中的主机,除⾮主机通过 IGMP 加⼊到组播组,主机申请加⼊到组播组时,路由器就会记录 IGMP 路由器表,路由器后续就会转发组播包到对应的主机了
  • IGMP 报⽂采⽤ IP 封装,IP 头部的协议号为 2,⽽且 TTL 字段值通常为 1,因为 IGMP 是⼯作在主机与连接的路由器之间

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

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

相关文章

手撕算法-接雨水

描述 分析 i位置能积累的雨水量,等于其左右两边最大高度的最小值。为了能获取i位置左右两边的最大高度。使用动态规划。两个dp数组: leftMaxrightMax 其中 leftMax[i] 代表i位置左边的最大高度rightMax[i] 代表i位置右边的最大高度 初始状态&#x…

npm 包管理工具:常用命令详解与使用指南

npm常用命令的更详细解释和使用场景: npm init 详细说明:此命令用于初始化一个新的Node.js项目。它会创建一个package.json文件,其中包含项目的基本信息,如名称、版本、描述、入口点(main file)、测试命令、…

Python Flask 自定义过滤器

{{ data.list | li2 }} li2就是自定义的 from flask import Flask, render_templateapp Flask(__name__)app.route("/index") def index():data {name: "张三","age": 18,list: [123123, 41, 123]}return render_template("index2.html…

[AIGC] 使用Spring Boot进行单元测试:一份指南

在现代软件开发过程中,确认你的应用正确运行是至关重要的一步。Spring Boot提供了一组实用工具和注解来辅助你在测试你的应用时,使得这个过程变得简单。下面就来分享一下如何在Spring Boot中进行单元测试。 文章目录 为什么需要单元测试Spring Boot单元测…

Redis中RDB中的文件写入

RDB文件的创建与载入。 有两个Redis命令可以用于生成RDB文件,一个是SAVE,另一个是BGSAVE. SAVE命令会阻塞Redis服务器进程,直到RDB文件创建完毕为止,在服务器进程阻塞期间,服务器 不能处理任何命令请求: 127.0.0.1:6…

枚举的详解

枚举的讲解 在C语言中,没有内置的枚举(enum)数据类型,但我们可以使用整数类型来模拟枚举的行为。C99标准之前,C语言使用#define指令来定义枚举,但这种方式并不安全,因为如果枚举值发生变化&…

Ubuntu Desktop Server - user 用户与 root 用户切换

Ubuntu Desktop Server - user 用户与 root 用户切换 1. user 用户与 root 用户切换2. root 用户与 user 用户切换References 1. user 用户与 root 用户切换 strongforeverstrong:~$ strongforeverstrong:~$ sudo su [sudo] password for strong: rootforeverstrong:/home/s…

【matlab程序】海洋资料的获取与分析--AO/NAO

海洋资料的获取与分析 相关数据代码等资料已上传入群中 海洋资料下载和介绍 AO和NAO指数均取自美国气候预测中心(Climate Prediction Center, CPC)发布的月平均指数,时间跨度为1950-2022年。由于AO和NAO在冬季最强,因此本文选取…

trt | torch2trt的使用方式

一、安装 1. 安装 tensorrt python 接口 下载 trt 包 .tar.gz https://developer.nvidia.com/nvidia-tensorrt-5x-download 解压 tar xvf TensorRT-6.0.1.5.Ubuntu-18.04.x86_64-gnu.cuda-10.1.cudnn7.6.tar.gz 安装 trt python 接口 cd pythonpip install tensorrt-6.0…

springboot结合mongodb使用(一)

配置连接 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId><version>${spring.boot.version}</version></dependency>#mongodb 这里是没有设置密码sprin…

406. 根据身高重建队列(力扣LeetCode)

文章目录 406. 根据身高重建队列题目描述贪心算法代码 406. 根据身高重建队列 题目描述 假设有打乱顺序的一群人站成一个队列&#xff0c;数组 people 表示队列中一些人的属性&#xff08;不一定按顺序&#xff09;。每个 people[i] [hi, ki] 表示第 i 个人的身高为 hi &…

阿里云倚天云服务器怎么样?如何收费?

阿里云倚天云服务器CPU采用倚天710处理器&#xff0c;租用倚天服务器c8y、g8y和r8y可以享受优惠价格&#xff0c;阿里云服务器网aliyunfuwuqi.com整理倚天云服务器详细介绍、倚天710处理器性能测评、CIPU架构优势、倚天服务器使用场景及生态支持&#xff1a; 阿里云倚天云服务…

2024.3.22FunPlus客户端开发工程师笔试记录

仅做笔试记录之用。 FunPlus客户端开发工程师笔试分为以下题型&#xff1a; 15道单选、5道多选、5道填空、2道编程 相比起上次考多益的时候&#xff0c;确实是感觉轻松多了。可能是选择题难度比起上次更简单的原因。这次的考题出的相对更加全面&#xff0c;但是同时显现出的就…

macOS访问samba文件夹的正确姿势,在哪里更改“macOS的连接身份“?还真不好找!

环境&#xff1a;路由器上需要身份认证的Mini NAS macOS Sonoma 14 这是一个非常简单的问题&#xff0c;但解决方法却藏得比较深&#xff0c;不够直观&#xff0c;GPT也没有给出明确的解决提示&#xff0c;特意记录一下。 macOS很多地方都很自动&#xff0c;有时候让人找不到设…

基于单片机的语音识别智能窗帘控制器的设计

摘要 系统以单片机STC89C52 芯片作为主控模块,可以对窗帘实现光照度检测、语音识别、 按键手动等智能控制功能。光照度模块采集室外光照度数据上传至单片机,单片机发送控制指令 驱动步进电动机驱动模块,控制步进电动机转动实现窗帘的自动开合,LCD 显示屏显示实时的温 度和时…

3.20日哈啰面试纪要

1.介绍自己&#xff0c;巴拉巴拉 2.面试官谈到了redis 问&#xff1a;redis在项目中你们主要用来干什么的&#xff1f; 答&#xff1a;分布式锁、存储图标信息 问&#xff1a;你们hash类型主要用来做什么&#xff1f; 答&#xff1a;主要用来存储token 问&#xff1a;token不应…

高中信息技术教资刷题笔记_大题篇

1.选择排序 2. SMTP属于TCP/IP协议体系结构中的哪一层&#xff1f;请列出其通信的三个阶段。 3.高中信息技术课程的基本理念/意义 4.视频作品制作和发布的主要环节 5.信息社会责任内涵及学生表现 6.教学活动意图 ①突出学生的主体地位。材料中&#xff0c;王老师设计的“扮演谍…

mac安装openresty

官方地址&#xff1a;https://openresty.org/cn/download.html brew update brew install pcre openssl下载源码 https://openresty.org/download/openresty-1.25.3.1.tar.gz解压源码 tar -zxvf openresty-1.25.3.1.tar.gz进入解压后的目录 ./configure --prefix/opt/openr…

johnson最短路模板(未完成,自用)

johnson最短路 https://www.starrycoding.com/problem/100 关键就在于&#xff0c;解决dijkstra不能处理负权值的问题&#xff0c;先用spfa或者bellman-ford得到所有点到虚点的最短距离&#xff0c;可以称之为势能。然后通过势能对所有边进行处理&#xff0c;处理过后保证了所…

代码随想录算法训练营Day56 ||leetCode 583. 两个字符串的删除操作 || 72. 编辑距离

647. 回文子串 dp[i][j]表示第i位开始&#xff0c;第j位结束的字符串是否为回文串 class Solution { public:int countSubstrings(string s) {vector<vector<bool>> dp(s.size(), vector<bool>(s.size(), false));int result 0;for (int i s.size() - 1…