详解MAC帧、ARP、DNS、ICMP协议

news2024/11/18 3:22:56

局域网通信原理

比如新建了一个内网,如果一台机器A找机器B,封FRAME时(OSI的第二层用的数据格式),要封装对方的MAC,开始时A不知道B的MAC,只知道IP,它就发一个ARP包,源IP是自己的,目的IP是B的,源MAC是自己的,目的MAC是广播的。然后这个请求包在内网内被广播,当其他机器接到这个包时,用目的IP和自己的IP比较,不是的话就丢弃。B接到时,发现IP与自己的一样,就答应这个包的请求,把自己的MAC送给A。如果B是其他子网的机器,那么路由器会判断出B是其他子网,然后路由器把自己的MAC返回给A,A以后再给B发包时,目的MAC封装的是路由器的。

局域网中任意时刻只能有一个主机发送消息,如果有多个消息被同时发送,会导致局域网的数据发生碰撞,发送无效,所以就有了以太网、令牌环网标准

令牌环网:局域网中持有令牌的人才可以放松消息

以太网:检测到发生碰撞,数据链路层协议就触发策略,暂时先不发送数据,等待一段时间,然后继续检测,这种策略称为:碰撞检测和碰撞避免算法

认识以太网

  • “以太网” 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;
  • 例如以太网中的网线必须使用双绞线; 传输速率有10M, 100M, 1000M等;
  • 以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN等;

局域网通信的协议通常使用以太网协议

局域网不能太大,因为碰撞基数太大,发送碰撞的概率就增加了,那如果局域网就是很大该怎么办?我们可以使用交换机,

交换机:可以识别局部性碰撞,对碰撞数据不进行转发,划分碰撞域

以太网帧格式

在这里插入图片描述

目的地址和源地址是指网卡的硬件地址,也叫MAC地址,长度是48位,是在网卡出厂时固定的;
帧协议类型字段有三种值,分别对应IP、ARP、RARP;
帧末尾是CRC校验码

1.如何分离

由于以太网帧的首部与末尾的字段都是定长的,可以直接拿到以太网帧中的数据。

2.如何分用

根据报头中 类型 字段,将有效载荷交付给上层对应的协议。

在局域网当中,在任何时刻,只能有一个主机发送消息,如果多个消息被同时发送,会导致局域网中的数据发生碰撞,我们把一个局域网称为一个碰撞域

3.因为有碰撞域,一台主机发送数据的时候,是长了好还是短了好?

仔细看上图,规定为46-1500字节(MTU),如果小于46字节时,他会进行填充

MTU

MTU相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层, 产生的限制.

以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位;
最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;
如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation);
不同的数据链路层标准的MTU是不同的;

1.分片是只会在发送端分片吗?

并不是,在途中的路由器也可能会分片,不同的数据链路层标准的MTU是不同的

分片既然是不好的行为,那么我们该如何尽力避免分片呢?不知道大家还记不记得TCP的滑动窗口,滑动窗口为什么不一下把一大串数据全部发出去,而是分成很多段在发送出去,原因就在这里,一个数据包的最大长度称为MSS

MTU对于TCP/UDP协议的影响

UDP协议:

一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就会在网络层分成多个IP数据报.
这多个IP数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果UDP数据报在网络层被分片, 整个数据被丢失的概率就大大增加了.

TCP协议:

TCP的一个数据报也不能无限大, 还是受制于MTU. TCP的单个数据报的最大消息长度, 称为MSS(MaxSegment Size);
TCP在建立连接的过程中, 通信双方会进行MSS协商.
最理想的情况下, MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU).
双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值.
然后双方得知对方的MSS值之后, 选择较小的作为最终MSS.
MSS的值就是在TCP首部的40字节变长选项中(kind=2)

ARP协议

虽然我们在这里介绍ARP协议, 但是需要强调, ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议;

ARP协议的作用

ARP协议建立了主机 IP地址 和 MAC地址 的映射关系.

  • 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址
  • 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;
  • 因此在通讯前必须获得目的主机的硬件地址;

ARP数据报格式

在这里插入图片描述

  • 注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。
  • 帧类型是0806(ARP协议下)
  • 硬件类型指链路层网络类型,1为以太网;
  • 协议类型指要转换的地址类型,0x0800为IP地址;
  • 硬件地址长度对于以太网地址为6字节;
  • 协议地址长度对于和IP地址为4字节;
  • op字段为1表示ARP请求,op字段为2表示ARP应答。

下面这张图,展现了为什么说ARP协议是工作在网络层和数据链路层之间的协议

在这里插入图片描述

如果帧类型是IP类型则会直接向上分用,但如果是ARP请求,则不会继续向上了

ARP欺诈

在这里插入图片描述

这样的话很容易被中间人窃取,但是有了CA证书等,中间人拿到了以后也无法解密

DNS

DNS:域名解析系统

DNS是一整套从域名映射到IP的系统,TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序. 但是IP地址不方便记忆.于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系

DNS使用的是UDP协议

递归查询和迭代查询

这个视频讲解的很好https://www.bilibili.com/video/BV1JZ4y1f7tU/?spm_id_from=333.337.search-card.all.click&vd_source=21f3027af56b85726fe87ebf679e81d1

ICMP协议

ICMP协议是一个 网络层协议
一个新搭建好的网络, 往往需要先进行一个简单的测试, 来验证网络是否畅通; 但是IP协议并不提供可靠传输. 如果丢包了, IP协议并不能通知传输层是否丢包以及丢包的原因

ICMP功能

ICMP正是提供这种功能的协议; ICMP主要功能包括:

确认IP包是否成功到达目标地址.
通知在发送过程中IP包被丢弃的原因.
ICMP也是基于IP协议工作的. 但是它并不是传输层的功能, 因此人们仍然把它归结为网络层协议;
ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6;

在这里插入图片描述

ICMP报文格式

在这里插入图片描述

ICMP大概分为两类报文:

一类是通知出错原因
一类是用于诊断查询

1.有些面试官可能会问: telnet是23端口, ssh是22端口, 那么ping是什么端口?

ping命令基于ICMP, 是在网络层. 而端口号, 是传输层的内容. 在ICMP中根本就不关注端口号这样的信息.

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

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

相关文章

信息安全法规和合规指南: 解析不同地区的信息安全法规要求,提供合规实践建议和资源推荐

第一章:引言 随着数字化时代的到来,信息安全已经成为企业不可忽视的重要议题。各个地区纷纷制定了信息安全法规,以确保个人隐私和敏感数据的保护。本文将深入探讨不同地区的信息安全法规要求,并提供合规实践建议和资源推荐&#…

一百六十九、Hadoop——Hadoop退出NameNode安全模式与查看磁盘空间详情(踩坑,附截图)

一、目的 在海豚跑定时跑kettle的从Kafka到HDFS的任务时,由于Linux服务器的某个文件磁盘空间满了,导致Hadoop的NodeName进入安全模式,此时光执行hdfs dfsadmin -safemode leave命令语句没有效果(虽然显示Safe mode is OFF&#x…

JVM的故事——虚拟机字节码执行引擎

虚拟机字节码执行引擎 文章目录 虚拟机字节码执行引擎一、概述二、运行时栈帧结构三、方法调用 一、概述 执行引擎Java虚拟机的核心组成之一,它是由软件自行实现的,能够执行那些不被硬件直接支持的指令集格式。 对于不同的虚拟机实现,执行引…

css强制显示一行

要强制将文本内容显示在一行中,可以使用CSS的white-space属性和overflow属性来实现。 首先,将white-space属性设置为nowrap,这样文本内容就不会换行。然后,将overflow属性设置为hidden,这样超出一行的内容就会被隐藏起…

从零开始探索C语言(五)----函数和作用域

文章目录 1. 函数1.1 函数定义1.2 函数声明1.3 函数调用1.3.1 传值调用1.3.2 引用调用 2. 作用域2.1 局部变量2.2 全局变量2.3 形式参数 1. 函数 函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以…

直接插入排序与希尔排序

目录 一,排序的概念 二,插入排序 2.1直接插入排序 2.2 希尔排序 一,排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些或某些关键字的大小,递增或递减的排列 稳定性&#xff…

flutter自定义按钮-文本按钮

目录 前言 需求 实现 前言 最近闲着无聊学习了flutter的一下知识,发现flutter和安卓之间,页面开发的方式还是有较大的差异的,众所周知,android的页面开发都是写在xml文件中的,而flutter直接写在代码里(da…

无重叠区间【贪心算法】

无重叠区间 给定一个区间的集合 intervals ,其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。 class Solution {public int eraseOverlapIntervals(int[][] intervals) {//先排序,按照左边界升序,注…

Vue3 select循环多个,选项option不能重复被选

Vue3 select循环多个,选项option不能重复被选 环境:vue3tsviteelement plus 实现目标:Vue3 select循环多个,当其中一个option值被选后,其他select里面不能再重复选择该option值。第二种,当其中一个option值…

雅思写作 三小时浓缩学习顾家北 笔记总结(二)

目录 饥饿网一百句翻译 Using government funds for pollution cleanup work can create a comfortable environment. "Allocating government funds to pollution cleanup work can contribute to the creation of a comfortable environment." Some advertise…

Linux的基本使用和Web程序部署(JavaEE初阶系列18)

目录 前言: 1.Linux 1.1Linux是什么 1.2Linux发行版 1.3Linux环境搭建 1.3.1环境搭建方式 1.3.2使用云服务器 1.4使用终端软件连接到Linux 1.4.1什么是终端软件 1.4.2使用Xshell登录主机 1.5Linux常用的命令 1.5.1ls 1.5.2cd 1.5.3pwd 1.5.4touch 1.…

vscode html使用less和快速获取标签less结构

扩展插件里面搜索 css tree 插件 下载 使用方法 选择你要生成的标签结构然后按CTRLshiftp 第一次需要在输入框输入 get 然后选择 Generate CSS tree less结构就出现在这个里面直接复制到自己的less文件里面就可以使用了 在html里面使用less 下载 Easy LESS 插件 自己创建…

Python爬虫-某网酒店数据

前言 本文是该专栏的第5篇,后面会持续分享python爬虫案例干货,记得关注。 本文以某网的酒店数据为例,实现根据目标城市获取酒店数据。具体思路和方法跟着笔者直接往下看正文详细内容。(附带完整代码) 正文 地址:aHR0cHM6Ly93d3cuYnRoaG90ZWxzLmNvbS9saXN0L3NoYW5naGFp …

ceph源码阅读 erasure-code

1、ceph纠删码 纠删码(Erasure Code)是比较流行的数据冗余的存储方法,将原始数据分成k个数据块(data chunk),通过k个数据块计算出m个校验块(coding chunk)。把nkm个数据块保存在不同的节点,通过n中的任意k个块还原出原始数据。EC包含编码和解…

Navicat使用HTTP通道服务器进行连接mysql数据库(超简单三分钟完成),centos安装nginx和php,docker安装nginx+php合并版

序言 因为数据库服务器在外网是不能直接连接访问的,但是可以访问网站,网站后台就能访问数据库,所以在此之前,访问数据库的数据是一件非常麻烦的事情,在平时和运维的交流中发现,他们会使用ssh通道进行连接访…

【LeetCode算法系列题解】第36~40题

CONTENTS LeetCode 36. 有效的数独(中等)LeetCode 37. 解数独(困难)LeetCode 38. 外观数列(中等)LeetCode 39. 组合总和(中等) LeetCode 36. 有效的数独(中等&#xff09…

钡铼R40边缘计算网关与华为云合作,促进物联网传感器数据共享与应用

场景说明 微型气象是不可预测的,基本上不能通过人工手段来分析其变化,因此必须运用新技术,对气象进行实时监测,以便采取相应的措施来避免或解决事故的发生。而常规气象环境数据采集容易造成数据损失、人力成本高、数据安全性差、…

【数据分享】2023年7月道路数据(全国/分省/分城市/无需转发)

道路数据是我们在各项研究中经常使用的数据!道路数据虽然很常用,但是却基本没有能下载最近年份道路数据的网站,所以很多人不知道如何获到道路数据。 本次我们为大家推荐的下载道路数据的网站是Open Street Map!我们先来了解下Ope…

查漏补缺 - JS三 WebAPI

目录 BOMhistory DOM操作DOM1,dom.children 和 dom.childNodes 区别2,dom.remove()3,其他常用 API DOM 属性1,标准属性2,自定义属性 DOM 内容DOM样式DOM事件 JavaScript 包括 EcmaScript 和 WebAPI EcmaScript 包括 语…

03Linux

物联201白悦颖 学号:2008070101 青岛科技大学 目录 ⼀、进程与线程 1. 进程 2. 线程 3. 进程和线程的使用情况 ⼆、linux下的sudo命令 1. sudo 功能? sudo提供的临时权限什么时候被取消? 为什么要取消 sudo 权限…