计算机网络-数据链路层:以太网协议、ARP协议、MAC、MTU

news2024/11/27 0:32:54

目录

一、以太网协议

1. 认识以太网

2. 协议格式

二、 MAC地址

1. 认识MAC地址

2. 对比MAC地址与IP地址

三、ARP协议

1. 认识ARP协议

2.  ARP协议的作用

3. ARP协议的工作流程

4. ARP欺骗攻击

四、MTU

1. 认识MTU

2. MTU对IP协议的影响(了解)

3. MTU对TCP协议的影响

4. MTU对UDP协议的影响


一、以太网协议

1. 认识以太网

        (1)以太网不是一种具体的网络,而是一种技术标准。其中既包含了数据链路层的内容,也包含了一些物理层的内容。比如:规定了网络拓扑结构、访问控制方式,传输速率等。

        (2)以太网中的网线必须使用双绞线,传输速率有10M、100M,1000M等。

        (3)以太网是当前应用最为广泛的局域网技术,和以太网并列的还有令牌环网,无线LAN等。

2. 协议格式

48位对端MAC地址,48位源端MAC地址,16位上层协议,数据,32位数据帧尾。

48位对端&源端MAC地址:

        描述了相邻的两个指定物理硬件设备。

16位上层协议类型:

        描述的是以太网帧中数据所使用的协议,用于数据分用时协议选择。

32位数据帧尾:

        包含了校验和(CRC校验码)。

二、 MAC地址

1. 认识MAC地址

MAC地址:物理硬件地址

(1)MAC地址是每一块网卡在出厂时设定的地址,固定且不可修改(早期)。(虚拟机中的MAC地址不是真实的MAC地址,可能会产生冲突)

(2)MAC地址用来识别数据链路层中相邻的节点。

(3)MAC地址长度为48位,及6个字节。一般用16进制数字加上冒号的形式来表示。

2. 对比MAC地址与IP地址

IP地址:描述的是路途总体的起点和终点。

MAC地址:描述的是路途上的每一个区间的起点和终点。

三、ARP协议

1. 认识ARP协议

        ARP协议是介于数据链路层和网络层之间的一个协议,作用就是通过IP地址获取指定设备的MAC地址。

2.  ARP协议的作用

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

(1)在网络通讯时,源端主机的应用程序知道对端主机的IP地址和端口号,但是不知道对端主机的硬件地址。

(2)数据包是先被网卡接收到,再去处理上层协议,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。

(3)所以在通讯前,必须先获得目的主机的硬件地址。

3. ARP协议的工作流程

(1)广播ARP请求,将目的端MAC地址设置为全1(广播地址),其中包含了自己的IP地址和MAC地址,以及指定设备的IP地址。

(2)收到ARP请求的主机,会验证目标IP地址与自己是否一致:一致,则组织ARP响应,填充自己的MAC地址进行回复;不一致,则丢弃。

(3)主机获取到指定主机的MAC地址后,会在arp缓存表中临时存储起来(默认保存30分钟)。

4. ARP欺骗攻击

        在局域网中有个恶意主机,不断的给局域网每个主机大量的进行发送ARP响应,覆盖主机上的ARP映射表,告诉主机自己是网关,然后给网关发送ARP响应,告诉自己是主机。

解决方法:设置防火墙,添加局域网的MAC白名单等方式。

四、MTU

1. 认识MTU

MTU:链路层限制的最大传输单元,以太网默认是1500字节。

(1)以太网帧中的数据长度规定,最小为46字节,最大为1500字节。若ARP数据包的长度不足46字节,需要在后面补填充位。

(2)最大值1500字节称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU

(3)若一个数据包从以太网路由到拨号链路上,数据包长度大于了拨号链路的MTU,则需要对数据包进行分片。

(4)不同的数据链路层标准的MTU不同。

2. MTU对IP协议的影响(了解)

由于数据链路层MTU的限制,对较大的IP数据包需要进行分包:

(1)将较大的IP包分成多个小包,并给每个小包打上标签。

(2)每个小包IP协议头的16位标识(id)都是相同的。

(3)每个小包的IP协议头的3位标志字段中,第2位置0,标识允许分片,第3位来表示结束标记(当前是最后一个小包,则置1,否则置0)。

(4)到达对端时,再将这些小包按序重组,拼接到一起后再交付给传输层。

(5)一旦这些小包中任意一个包丢失,接收端就会重组失效,但是IP层不会负责进行数据重传。

3. MTU对TCP协议的影响

回顾一下TCP协议:

(1)TCP的一个数据报不能无限大,也是受限于MTU。TCP的单个数据报的最大信息长度,称为MSS。

(2)TCP在建立连接的过程中,通信双方就会协商MSS。

(3)最理想的情况下,MSS的值正好是IP不会被分片处理的最大长度(这个长度,仍然是受限于数据链路层的MTU)。

(4)双方在发送SYN的时候会在TCP头部写入自己所能支持的MSS值。

(5)双方得知对方的MSS值后,会选择较小的值作为最终的MSS。

TCP通信时,程序员通常不用过多考虑:

        因为MSS就是根据MTU计数得到的。tcp在传输层发送数据时,就是从缓冲区中取出不大于MSS大小的数据进行封装报头,然后进行传输。(在网络层不会出现数据分片)

        MSS = MTU - 最小IP报头大小 - 最小TCP报头大小

4. MTU对UDP协议的影响

回顾一下UDP协议:

(1)一旦UDP携带的数据超过1472字节(1500 - 20(IP首部) - 8(UDP首部)),那么就会在网络层分成多个IP数据报。

(2)这多个IP数据报一旦有任意一个丢失,都会引起接收端网络层重组失败。也就意味着,如果UDP数据报在网络层被分片,整个数据被丢失的概率就会大大增加。

        UDP通信时,不存在MSS协商过程,只要数据报整体大小小于64k就可以进行传输,但是在网络层会因为大于MTU而导致数据分片,分片后的数据到达对端主机后就需要进行分片重组,而一旦有一个分片有问题,整个数据报文就会被丢弃。

        所以程序员需要最好在应用层就考虑到更多的要素,如果数据过大,就要最好在应用层分包,分包大小需要考虑MTU,尽可能的减少分片可能。

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

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

相关文章

在线教育系统源码讲解与代码分析

目前,许多行业已经开始向直播领域靠拢,例如直播带货、教育直播、娱乐直播等领域,想要在此分一杯羹,以在线教育系统来说,在2020年以后便进入了“白热化”,更多的直播、教育展现在大众视野中。在粉丝经济的时…

Linux的进程空间管理

用户态和内核态的划分 进程的虚拟地址空间,其实就是站在项目组的角度来看内存,所以我们就从task_struct出发来看。这里面有一个struct mm_struct结构来管理内存。 struct mm_struct *mm; 在struct mm_struct里面,有这样一个成员变量&#…

如何利用ArcGIS实现电子地图可视化表达?分析空间数据?提升SCI论文的层次?探究环境与生态因子对水体、土壤、大气污染物等影响?

查看原文>>>如何利用ArcGIS探究环境与生态因子对水体、土壤、大气污染物等影响 如何利用ArcGIS实现电子地图可视化表达?如何利用ArcGIS分析空间数据?如何利用ArcGIS提升SCI论文的层次?制图是地理数据展现的直观形式,也是…

ARM存储模型(数据存储、指令存储)

目录 1、ARM数据存储 (1) ARM数据类型 (2) ARM数据存储的方式 2、ARM的指令存储 (1) 指令集的分类 (2) 为什么ARM指令集的PC值与低2位无关? 1、ARM数据存储 (1) ARM数据类型 ARM采用32位架构,即ARM一次可以处理32bit的数据,基本的数据…

Linux--进程间通信(2)--共享内存--1126

1.共享内存的原理 进程A先申请一段内存空间,其页表映射到物理空间,进程B通过A的页表映射,将B的页表也同样映射到同一块物理空间。 释放共享内存 各自修改各自的页表指向并释放共享内存 2.共享内存的建立过程 头文件 comm.hpp #pragma o…

Windows系统dos命令之cmd

目录1. 使用cd命令快速切换到指定的盘符中1.1 参数说明1.2 cd 切换盘符2. 使用cd命令切换到指定的目录中2.1 切换指定目录3. 使用cd命令退回到上一层目录3.1 使用命令 ”cd ..“4. 使用cd命令直接退回到当前根目录下4.1 使用命令cd \1. 使用cd命令快速切换到指定的盘符中 cd 是…

JUC并发编程第十一篇,Java对象的内存布局

JUC并发编程第十一篇,Java对象的内存布局一、对象在堆内存中的存储布局1、对象头对象标记Mark Word类元信息(类型指针)2、实例数据3、对齐填充二、对象标记(MarkWord)布局与验证代码验证(JOL)一…

重点| 系统集成项目管理工程师考前50个知识点(4)

本文章总结了系统集成项目管理工程师考试背记50个知识点!!! 帮助大家更好的复习,希望能对大家有所帮助 比较长,放了部分,需要可私信!! 26、编制范围管理计划的输出: 范…

Flink Window Function

窗口函数定义了要对窗口中收集的数据做的计算操作,根据处理的方式可以分为两类:增量聚合函数和全窗口函数。 文章目录1.增量聚合函数1.1 ReduceFunction1.2 AggregateFunction2.全窗口函数2.1 WindowFunction2.2 ProcessWindowFunction3.增量聚合和全窗口…

【MySQL】用户管理

文章目录用户管理用户信息创建用户删除用户修改用户密码用户权限用户赋权回收权限用户管理 如果我们只能使用root用户,这样存在安全隐患,因为root可以访问所有的数据库和表,这时,就需要使用MySQL的用户管理,从而限制某个特定的用户只能访问特定的数据库和表,并且对其权限作出一…

【51-订单模块-资源整合-整合SpringSession-订单中心核心逻辑-认证拦截-订单提交-订单生成逻辑-接口幂等性处理-接口幂等性解决方案】

一.知识回顾 【0.三高商城系统的专题专栏都帮你整理好了,请点击这里!】 【1-系统架构演进过程】 【2-微服务系统架构需求】 【3-高性能、高并发、高可用的三高商城系统项目介绍】 【4-Linux云服务器上安装Docker】 【5-Docker安装部署MySQL和Redis服务】…

若依上面添加layui组件

1.因为若依本身有layui&#xff0c;所以不需要在引layui的css与js 2.下面是需要添加的 <div className"layui-btn-container" style"margin-top: 30px;"><button data-method"setTop" οnclick"sjhdekjshd()">多窗口模式…

基于vite搭建的vue3项目中如何引用环境变量

目录 回顾一下vue-cli2/cli3中环境变量使用方法 环境变量定义&#xff1a; 环境变量使用&#xff1a; vite中环境变量使用方法 环境变量定义&#xff1a; 环境变量使用&#xff1a; 回顾一下vue-cli2/cli3中环境变量使用方法 在vue-cli2/cli3中使用环境变量时 环境变量定…

Python Flask 路由配置

有关更多的Python 开发内容,可访问:《 Python Flask开发指南》 Flask中通过使用route装饰器实现路由访问功能,其路由匹配URL规则基于Werkzeug的路由模块。该模块基于Apache及更早的HTTP服务器主张,希望保证优雅且唯一的URL。其使用格式如下: from flask import Flask app …

突然 Java 倒下了......

TIOBE 公布了 2022 年 12 月的编程语言排行榜。 Java 首次跌出前 3 名。除此之外&#xff0c;Kotlin 和 Julia 也越来越接近 Top 20。 TIOBE 将于下个月揭晓其 2022 年度编程语言&#xff0c;目前共有 3 个候选者&#xff1a;Python、C 和 C。TIOBE CEO Paul Jansen指出&#…

如何实现工具无关化?——关于自动化测试脚本的设计

问题的提出 最近几年来&#xff0c;我的自动化测试工具之旅大致是这样的&#xff0c;最早用的是QTP&#xff0c;然后是RFT&#xff08;IBM的功能测试自动化产品&#xff09;&#xff0c;之后也经历了Selenium&#xff0c;Watir等。再后来还是一些商业工具&#xff0c;主要是偏…

KubeClipper 1.3.1 正式发布

2022 年 12 月 12 日&#xff0c;KubeClipper 1.3.1 版本正式发布&#xff01; 开源大事记 2022 年 08 月&#xff0c; KubeClipper 项目正式开源到 https://github.com/KubeClipper 项目。 2022 年 08 月&#xff0c;在由 OpenInfra 基金会举办的 2022 OpenInfra Days China…

nacos--基础--4.1--集成--SpringBoot--配置管理、服务发现、服务注册

nacos–基础–4.1–集成–SpringBoot–配置管理、服务发现、服务注册 代码位置 https://gitee.com/DanShenGuiZu/learnDemo/tree/master/nacos-learn/nacos-spring-boot1、介绍 主要面向 SpringBoot 的使用者通过2个实例&#xff0c;来介绍nacos和SpringBoot的集成 配置管理服…

【案例教程】Python气象海洋数据可视化到常见数据分析方法(折线图、柱状图、errorbar图、流场矢量、散点图、风玫瑰图、流场矢量、填色及等值线+地图)

【查看原文】Python在气象与海洋中的实践技术应用 Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;能够在不同操作系统和平台使用&#xff0c;简洁的语法和解释性语言使其成为理想的脚本语言。除了标准库&#xff0c;还有丰富的第三方库&#xf…

点线面数据处理(wkt,geojson互转)

点线面数据点&#xff1a;[103.8810, 31.0896] 线&#xff1a;[[103.7767, 30.8424],[104.2546, 30.8150],[104.3068, 30.4552]] 面&#xff1a;[[[103.8810, 31.0896],[104.0129, 30.8891],[103.7520, 30.8809],[103.8810, 31.0896]]] wkt数据点&#xff1a;POINT(103.365926 …