计算机网络(9) --- 数据链路层与MAC帧

news2024/12/23 9:45:26

计算机网络(8) --- IP与IP协议_哈里沃克的博客-CSDN博客IP与IP协议https://blog.csdn.net/m0_63488627/article/details/132155460?spm=1001.2014.3001.5502

目录

1.MAC帧

1.MAC地址

2.MAC帧报头

3.资源碰撞

4.MTU

1.对IP协议的影响

2.对UDP协议的影响

3.对TCP协议的影响

2.ARP协议

1.网络传输的本质

2.ARP协议

3.APR和MAC帧的关系

3.其他协议或技术

1.DNS

4.ICMP协议

3.ping命令

4.NAT技术

NAT

NAPT


1.MAC帧

1.MAC地址

1.在局域网内的主机可以直接通信

2.而标识每一个不同的主机是通过MAC地址所确定的

3.IP是表示去向最终地址的,而MAC地址是用与传输直接的下一个连接的节点

2.MAC帧报头

MAC帧是用于封装MAC地址的报文协议

在局域网中,所有的主机都收到了数据,但是由于mac地址而都在数据链路层中断了,只有mac地址一致的才被确定是需要传输的。

3.资源碰撞

1.那么在局域网中,发送的数据所有的主机都能看见,其实把整个网络看成操作系统,那么传输的数据就是临界资源。这种之间连接的主机,可以直接进行数据传输的区域被称之为临界区

2.数据发送之时,并不是只有两台主机进行交互,而是多台主机进行交互。而不同的主机在同时发送的时候,会出现数据碰撞问题。碰撞的数据就是无效的数据。

3.为了减少数据碰撞的问题,在局域网中出现了一种设备:交换机,它用于缩小碰撞的概率。这样就可以划分出碰撞域。

4.我们在看待网络设备时,应该更加宏观,所谓的网线传输数据其实速度极快,毕竟是光速的,那么数据碰撞的概率其实比较低的。要知道发送数据是有长有短的,我们不能将数据设置的太长,因为一旦过长,所谓的发送中的时间就会加长,碰撞的概率增大,所以MAC帧向上的网络层中IP协议的数据不可以超过1500字节。

5.当然为了减少出现数据碰撞的问题,我们有一些决策来进行减低概率。如:令牌环和以太网

4.MTU

MTU: 以太网的最大传输单元

1.对IP协议的影响

1.将较大的IP包分成多个小包, 并给每个小包打上标签;
2.每个小包IP协议头的 16位标识(id) 都是相同的;
3.每个小包的IP协议头的3位标志字段中, 第2位置为0, 表示允许分片, 第3位来表示结束标记
4.到达对端时再将这些小包, 会按顺序重组, 拼装到一起返回给传输层;
5.一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是IP层不会负责重新传输数据

2.UDP协议的影响

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

3.TCP协议的影响

1.TCP的一个数据报也不能无限大, 还是受制于MTU。TCP的单个数据报的最大消息长度, 称为MSS。也就是说,滑动窗口的大小其实是受:MSS,网络拥塞,接收方窗口大小
2.TCP在建立连接的过程中, 通信双方会进行MSS协商.
3.最理想的情况下, MSS的值正好是在IP不会被分片处理的最大长度
3.双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值. 然后双方得知对方的MSS值之后, 选择较小的作为最终MSS. MSS的值就是在TCP首部的40字节变长选项中

2.ARP协议

1.网络传输的本质

1.所谓的网络传输,就是在一个一个的局域网中传输。而中间的桥梁就是路由器,它分开了两个局域网,却联通了两个局域网。那么在局域网之间传输就需要依靠mac地址。

2.当前的MAC帧协议没有包含mac地址的任何数据,只知道IP地址,那么此时就需要引入ARP协议

2.ARP协议

1.以太网目的IP和源IP提供在局域网内部判断是否为自己要接收的依据,帧类型表示MAC帧的类型。这些字段作为以太网的首部。
2.硬件类型指链路层网络类型,1为以太网;协议类型指要转换的地址类型,0x0800为IP地址。硬件地址长度对于以太网地址为6字节;;协议地址长度对于和IP地址为4字节。这些数据基本上是固定不变的
3.op字段为1表示ARP请求,op字段为2表示ARP应答
4.发送端发送时,不知道目的以太网的mac地址,所以全部位设计为F;而发送mac地址是知道的
5.接收应答方返回自己对应的mac地址和对方的目的mac地址

3.APR和MAC帧的关系

可以用这图表示

也就是说,如果想要传输数据,需要先封装ARP协议再对MAC帧进行封装 

3.其他协议或技术

1.DNS

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

有两种方法:

1.通过互连网信息中心来管理这个hosts文件的,即自己的本地存放hosts映射

2.DNS系统:一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系;

如果新计算机接入网络, 将这个信息注册到数据库中;用户输入域名的时候, 会自动查询DNS服务器, 由DNS服务器检索数据库, 得到对应的IP地址

4.ICMP协议

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

3.ping命令

1.ping 的是域名, 而不是url,一个域名可以通过DNS解析成IP地址
2.ping命令不光能验证网络的连通性, 同时也会统计响应时间和TTL(IP包中的Time To Live, 生存周期).
3. ping 命令基于 ICMP, 是在网络层 . 而端口号 , 是传输层的内容 . ICMP 中根本就不关注端口号这样的信息

4.NAT技术

NAT

NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;
NAT路由器收到外部的数据时, 又会把目标IP从202.244.174.37替换回10.0.0.10;
在NAT路由器内部, 有一张自动生成的, 用于地址转换的表;
当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系
具体原理之前解释过~

NAPT

那么 NAT 路由器如何判定将这个数据包转发给哪个局域网的主机

1. 为了找到之前的地址返回消息,NAT路由器中存储四元组。针对内网:四元组包含内网IP和内网PORT 以及 路由器的LAN口IP和LAN口PORT;针对公网:四元组包含公网IP和公网PORT 以及 路由器的WAN口IP和WAN口PORT

2.那么当访问特定服务器,NAT路由器会得出转换表,该表存储两份四元组为key值,这样双方都能找到彼此

3.同一个子网下的不同客户端访问相同的服务器,那么该NAT转换表对应的服务器四元组不同的点就在于路由器的WAN口IP地址的PORT不同

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

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

相关文章

【docker】基于dockerfile编写LNMP

目录 一、基础环境准备 二、部署nginx(容器IP为172.18.0.10) 1、整个Dockerfile文件内容 2、配置nginx.conf文件 3、构建镜像 ​编辑 三、部署mysql 1、整个Docker文件内容 2、准备my.conf文件 3、生成镜像 4、启动镜像容器 5、验证mysql 四、PH…

视频局部区域移动检测, 删除相似帧

视频局部区域移动检测, 删除相似帧 完整方案在本文最后, 不想听故事的直接跳转到完整方案即可 起因 老板的一个东西找不到了, 让查监控 场景 东西放在一个架子上, 由一个海康威视全天候录像的摄像头监控, 但是巧就巧在这个要找的东西被放在了摄像头的死角里, 正好被柜子的隔…

nginx crlf+xss漏洞组合拳

1.crlf漏洞概述 CRLF是指回车和换行符的组合,它们的十六进制编码分别为0x0d和0x0a。在HTTP协议中,HTTP头和HTTP正文之间使用两个CRLF来进行分隔。如果攻击者能够注入恶意的换行符,就能够向HTTP消息中插入恶意的代码或会话Cookie。CRLF漏洞通常…

Redis是如何保证高可用的?

Redis这种基于内存的关系型数据库我们在选用的时候就是考虑到它的快。而且可以很方便的实现诸如分布式锁、消息队列等功能。 笔者在前一段秋招面试的时候就被提问,“Redis是怎么保证高可用的?” 后续的子问题包含,集群模式是怎么实现的&…

HTTP连接管理

基础知识:非持久连接 HTTP初始时1.0版本在浏览器每一次向服务器请求完资源都会立即断开TCP连接,如果想要请求多个资源,就必须建立多个连接,这就导致了服务端和客户端维护连接的开销。 例如:一个网页中包含文字资源也包…

1、攻防世界第一天

1、网站目录下会有一个robots.txt文件,规定爬虫可以/不可以爬取的网站。 2、URL编码细则:URL栏中字符若出现非ASCII字符,则对其进行URL编码,浏览器将该请求发给服务端;服务端会可能会先对收到的url进行解码&#xff0…

完全二叉树O(1)插入

919. 完全二叉树插入器 - 力扣(LeetCode) 完全二叉树 是每一层(除最后一层外)都是完全填充(即,节点数达到最大)的,并且所有的节点都尽可能地集中在左侧。 设计一种算法&#xff0c…

日志系统——日志落地模块设计

一,大致框架 首先我们需要明确模块的功能,将格式化后的日志信息字符串,输出到对应的位置。同时由于用户输出信息的方式是多样的,因此我们日志落地模块也支持拓展的功能,也就是用户自定义落地方式。 日志信息落地的方式…

vite打包遇到的错误

1.js emit is not supported 2.将package.json中的bulid后面写成“vue-tsc --noEmit --skipLibCheck && vite build” 3.再次打包成功

设计模式——接口隔离原则

文章目录 基本介绍应用实例应传统方法的问题和使用接口隔离原则改进 基本介绍 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上先看一张图: 类 A 通过接口 Interface1 依赖类 B,类 C 通过接口 Interface1 依赖类 D&…

四、性能监控工具nmon,severAgent

简单的性能监控工具 一、 性能监控概括二、 常用的性能监控工具1、nmon概况nmon有三种运行模式:nmon的使用 2、SeverAgent安装步骤集成jmeter注意点特点 一、 性能监控概括 性能测试工具: 用什么工具来做性能测试性能测试场景设计: 用什么方法…

VisualVM(All-in-One Java Troubleshooting Tool)多合-故障处理工具

VisualVM:多合-故障处理工具 VisualVM(All-in-One Java Troubleshooting Tool)是功能最强大的 运行监视 和 故障处理 程序之一,曾经在很长一段时间内是Oracle官方主力发展的虚拟机故障处理工具。Oracle曾在VisualVM的软件说明中写…

基于opencv的手势控制音量和ai换脸

基于opencv的手势控制音量和ai换脸 HandTrackingModule.py import cv2 import mediapipe as mp import timeclass handDetector():def __init__(self, mode False, maxHands 2, model_complexity 1, detectionCon 0.5, trackCon 0.5):self.mode modeself.maxHands max…

dockerfile编写LNMP

目录 1. 项目环境 2. 服务器环境 二、部署nginx(容器IP为192.168.158.26) 1、整个Dockerfile文件内容 ​编辑 2、配置nginx.conf文件 3、构建镜像 三、部署mysql 1、整个Docker文件内容 3、生成镜像 4、启动镜像容器 5、验证mysql 四、PHP部署 1…

初始web

华子目录 前后端与全栈BS架构网页开发原则前端三剑客初始htmlhtml的基本框架如何使用vscode创建网页网页基本框架html基本标签 前后端与全栈 前端:给用户看的内容 – 荧幕前(负责显示) 后端:在后台处理数据 – 荧幕后(负责处理) …

HTB-Gofer

HTB-Gofer 信息收集立足jhudson -> tbuckleyroot 信息收集 探索一阵子没有什么收获,去看看smb服务。 mail提到有一个proxy。 扫描子域找到proxy。 我们没有任何账号密码,试了常见的弱口令也没有任何效果。 要是我用POST会发生什么。 似乎不会发生什…

idea 新建servlet 访问提示404 WebServlet注解找不到包 报错

检查访问路径是否设置正确 如果设置为name “/testServlet”,则会404 WebServlet注解报错找不到包 检查是否引入了tomcat依赖包

游戏msvcr120.dll丢失怎样修复?msvcr120.dll丢失常见原因

在尝试运行某些游戏时,我遇到了“msvcr120.dll丢失”的错误提示。经过一番调查和尝试,我成功地解决了这个问题。msvcr120.dll是Visual C Redistributable Package的一部分,它包含了许多运行Windows应用程序所需的库和函数。当游戏或其他应用程…

5.8.webrtc事件处理基础知识

在之前的课程中呢,我向你介绍了大量web rtc线程相关内容,今天呢,我们来看一下线程事件处理的基本知识。首先,我们要清楚啊,不同的平台处理事件的API是不一样的,这就如同我们当时创建线程是类似的&#xff0…

【算法刷题之链表篇(2)】

目录 1.leetcode-23. 合并 K 个升序链表(较难)(1)题目描述(2)方法一:顺序合并(3)方法二:分治合并(4)方法三:使用优先队列合…