网络协议学习——以太网协议

目录

​编辑

一,以太网简介

二,以太网通信的过程

为什么不用IP地址?

过程

MAC帧

MAC帧的字段介绍

ARP协议

传输过程的一些问题

RARP协议

提高效率

三,其他问题

ARP诈骗问题

URL解析过程


 

一,以太网简介

以太网不是一个真正的网络,而是一个局域网标准。并且,以太网是局域网通信当中应用最广的协议,其次还有令牌环网和无线LAN。

二,以太网通信的过程

以太网协议是局域网通信的协议,局域网通信的过程使用MAC地址来找到这台局域网内唯一的主机然后再进行两台主机的通信。

为什么不用IP地址?

在局域网内,主机的IP地址也是唯一的。但是,为什么还要用MAC地址来标识唯一的一台主机呢?因为IP地址是用于网络层的,而MAC地址则是在数据链路层使用的。

过程

 当我们的主机发起请求后,这个请求便会穿过应用层,传输层,网络层,然后到达数据链路层。然后在数据链路层便会封装两份报头ARP请求报头,MAC帧。封装完这两个报头以后,这个数据包才能被数据链路层发送到指定的主机上。

MAC帧

MAC帧是个啥?其实MAC帧是数据链路层的一个基本单位。MAC帧的图示如下:

通过这样一个MAC帧的封装我们便可以保证数据在共享的网络当中正确的进行传输。

MAC帧的字段介绍

  • 源地址和目的地址:这两个地址标识的是主机的硬件地址,也就是网卡地址,这是在计算机出厂时就被设定了的,并且是唯一的。

    •  类型字段:三种类型

      • 0800:IP协议

      • 0806:ARP协议

      • 8035:RARP协议

    • 数据:数据部分包含上层协议的报头+有效载荷(HTTP ,TCP,IP)

    • 协议末端校验码:CRC校验码

ARP协议

在数据链路层,ARP协议在MAC帧的上一层:

所以在封装MAC帧时,首先是要先封装一层ARP协议。ARP协议的协议字段如下:

字段详解

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

在知道ARP协议和MAC帧以后,便可以大致的知道数据链路层所做的事情。

1,首先,我们要先形成一个ARP应答报文,这个时候op的值是1表示一个请求报文。

2,构建报文时,我们知道目标主机的IP但是不知道MAC地址。所以这个在封装MAC帧时,以太网目的地址填的是FF:FF:FF:FF:FF:FF表示一个广播地址。

3,填入一个广播地址后,每一台主机便需要在链路层收到这个报文时先查看op的值。如果op的值是1,链路层便知道这是一个请求报文需要比对的是IP地址所以这个报文便会被向上交付。当我们的网络层收到这个报文时比对IP地址。如果是这台主机的那就留下向上交付,如果不是那就发往下一台主机。一直到找到目标主机为止。

--------------------------------------------------------------------------------------------------------------------------------

4,在接收端收到这个请求报文以后,接收端便会构建响应报文。这个时候op字段被设置为2。并且此时我是知道发送端的MAC地址的。所以也将接收端的MAC地址填入。

5,响应报文被发送后,其它主机收到后便会在链路层先查看报文的op值,在知道报文的op值是2时便会在数据链路层比对MAC地址。如果比对不上就会直接丢弃发送到下一个主机上继续比对。直到比对成功,向上交付报文。

传输过程的一些问题

1,吃瓜群众

网络是一个共享资源,在局域网中发送的报文其实是被很多主机收到的。只是其它的主机在接收到这个报文时丢弃了这段报文。只有目标主机才会向上交付这段报文。

2,抓包问题

在在网卡里面,有一个模式叫做混合模式。当一台主机的网卡被改为混合模式时,这台主机便可以将不属于自己的响应报文向上交付。这个便是抓包,这也是抓包软件的原理。

3,临界资源

在网络通信的过程中,如果多台主机同时通信便会造成数据碰撞的问题。造成网络的堵塞,所以当网络要通信时往往在一个时刻内只允许两台主机进行通信。所以,网络其实就是一个临界资源。如何实现这样的模式呢?

1,以太网:在以太网当中有一个碰撞检测算法,当发生数据碰撞时便会停止发送数据。

2,令牌环网:只有争夺到令牌的主机才有发送数据的权力。并且这个令牌是在局域网通信当中均匀的流动的。

RARP协议

  • RARP协议

    • 协议:反向转换协议

    • 作用:再某些情况下只知道MAC地址,便可以通过RARP协议来推导IP地址。

    • 使用过程:在不知道IP地址的情况下,我们可以发送一个RARP广播报文到网络当中请求对方告知。

    • 形势:这种方式请求IP报文有安全性问题,现在已经逐渐减少使用并被DHCP等协议逐渐替代。

提高效率

在网络通信时,要找到对方的MAC地址第一步首先是去查找ARP缓存表。只有在这个缓存表内没有对方的MAC地址时,才会在MAC地址处填上全F的字段。

ARP缓存表

查看:arp -a

有了这个缓存表便可以快速的找到目标主机的MAC地址,不必再一个一个主机的尝试比对。当然,这个ARP缓存表的有效时长一般是20分钟

三,其他问题

ARP诈骗问题

问题描述:利用局域网通信过程中的发送主机不知道接收端主机的MAC地址需要发送报文去获取目标主机的MAC地址的漏洞,在这个请求报文在网络当中发送的过程截取并修改,让发送主机的ARP缓存表内填入错误的MAC地址。从而在后续的发送消息的过程中让发送端主机的消息发送到我的这台主机上,从而实现监听和窃取数据。

URL解析过程

1,DNS解析

在网络通信的过程中,虽然是通过ip地址和端口号来找到全网唯一的一台主机上的唯一的一个进程来实现网络通信的。但是,在大部分情况下我们使用浏览器时我们使用的都是域名。比如:

www.baidu.com
www.jd.com

但是,我们本质还是在使用ip地址+端口号来实现网络通信的。所以,我们需要将域名解析变成对应的ip地址的形式。这个解析的过程便是使用DNS解析来实现的。

2,DNS解析过程

在浏览器上输入一个域名以后,便会开始域名解析的过程。

1,先查看本地的DNS缓存表,查看是否有对应域名的ip地址。

2,如果没有便会向DNS服务器发送一个递归的DNS查询请求,开始不断地查询直到查找到对应域名的IP地址并返回。

3,当然,这个查询的过程是有结束的,一直会查询到根DNS服务器。

3,URL解析过程

 在浏览器输入一个URL以后,首先会进行DNS解析。然后,便会开始构建http/https报文。然后这个报文会向下传输到传输层。在传输层选择TCP或者UDP协议,添加相应的报头。然后再往下传输进入到网络层添加ip报头,再经过数据链路层添加数据链路层的协议。然后这个报文才能够发送到对应的主机上。

 

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

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

相关文章

AI大模型基石:文字与数字的起源与演变

AI大模型基石:文字与数字的起源与演变 1、文字 1.1、起源 我们的祖先在还没有发明文字和语言之前就已经开始使用“咿咿呀呀”的声音来传播信息了,比如在野外活动遇到危险,然后发出“咿咿呀呀”的声音来提醒同伴小心,同伴在接收到…

GEE数据集——1986年—2022年加拿大全国烧毁面积综合数据 (NBAC)

简介 加拿大全国烧毁面积综合数据 (NBAC) 全国烧毁面积综合数据 (NBAC) 是一个地理信息系统数据库和系统,用于计算自 1986 年以来每年全国范围内烧毁的森林面积。这些数据用于帮助估算加拿大的碳排放量。烧毁面积是通过评估一系列可用数据源确定的,这些…

废品回收小程序推动回收行业的发展趋势

回收在全球都是一个重要行业,它为全球的环保作出了重要贡献。 随着科技的不断发展创新,废品回收的方式也逐渐多样,全新的线上回收小程序也逐渐出现在大众的生活中,在当下的手机时代,线上回收也为大众提供了更加便利的…

vs2022启动cmake项目(qt+c++)

1.本工程,如图,1个cmakelist.txt3个文件 2.启动vs 3.选择文件夹 4.进入这个页面,就说明配置没问题 5.启动 6.最后会自己生成其他文件

本地MinIO存储服务通过Java程序结合cpolar实现远程连接上传文件

文章目录 前言1. 创建Buckets和Access Keys2. Linux 安装Cpolar3. 创建连接MinIO服务公网地址4. 远程调用MinIO服务小结5. 固定连接TCP公网地址6. 固定地址连接测试 前言 MinIO是一款高性能、分布式的对象存储系统,它可以100%的运行在标准硬件上,即X86等…

idea 卡怎么办

设置内存大小 清缓存重启 idea显示内存全用情况 右下角

适配器模式类图与代码

某软件系统中,已设计并实现了用于显示地址信息的类Address,现要求提供基于Dutch语言的地址信息显示接口。为了实现该要求并考虑到以后可能还会出现新的语言的接口,决定采用适配器(Adapter)模式实现该要求,得到如图7.9所示的类图。 【Java代码…

Docker操作容器打包(commit),压缩(save),挂载(load)

文章目录 前言一、容器打包二、将镜像压缩成tar包三、将tar包挂载为镜像结束 前言 将容器打包成镜像时,你正在将应用程序及其所有依赖项、文件和配置文件捆绑到一个可移植的、独立的单元中。这样做可以确保您的应用程序在不同环境中具有一致的运行方式,…

ASUS华硕ROG幻16Air笔记本电脑GU605M原装出厂Win11系统工厂包下载,带有ASUSRecovery一键重置还原

适用型号:GU605MI、GU605MY、GU605MZ、GU605MV、GU605MU 链接:https://pan.baidu.com/s/1YBmZZbTKpIu883jYCS9KfA?pwd9jd4 提取码:9jd4 华硕原厂Windows11系统带有ASUS RECOVERY恢复功能、自带所有驱动、出厂主题壁纸、系统属性联机支持…

Linux磁盘空间问题排查记录

问题 pip install时总提示OSError(28, ‘No space left on device’)或者ERROR: Could not install packages due to an OSError: [Errno 28] No space left on device 分析 很明显,磁盘空间不足。尝试了以下方法,没有解决问题: 清理pip缓…

【论文阅读笔记】Attention Is All You Need

论文小结 这是17年的老论文了,Transformer的出处,刚发布时的应用场景是文字翻译。BLUE是机器翻译任务中常用的一个衡量标准。 在此论文之前,序列翻译的主导模型是RNN或者使用编解码器结构的CNN。本文提出的Transformer结构不需要使用循环和卷…

左总视角:千视以NDI 6重塑实时流媒体传输格局

欧洲当地时间4月3日下午1点,NDI 官方宣布了NDI 6.0版本的正式上线。凭借原生HDR和10比特/12比特色彩支持,NDI 6将NDI源的画质处理推向了一个新的巅峰,成为了高画质行业内容创作者的首选。此外,跨互联网现在也可以通过内嵌到SDK组件…

sysbench MySQL性能测试

目录 1. QPS&&TPS 1.1 数据库启动到现在的运行时间(秒) 1.2 查询量 1.3 status命令直接显示出QPS 1.4 每秒输出数据库状态(累加) 2. sysbench 测试工具 3. OLTP MySQL测试 3.1 普通参数 3.2 支持的lua脚本 3.3 脚本参数 3.4 测试数据准备 3.5 进行测试 3.…

蓝桥杯-数组切分

问题描述 已知一个长度为 N 的数组: A1,A2,A3,...AN 恰好是1~ N的一个排列。现 在要求你将 4 数组切分成若干个 (最少一个,最多 N 个)连续的子数组,并且 每个子数组中包含的整数恰好可以组成一段连续的自然数。 例如对于 4 1,3,2,4,一共有 5 种切分方法: 1324:每个单独的数显然…

Java 中文官方教程 2022 版(四十六)

原文&#xff1a;docs.oracle.com/javase/tutorial/reallybigindex.html 定义简单的通用类型 原文&#xff1a;docs.oracle.com/javase/tutorial/extra/generics/simple.html 这里是包java.util中接口List和Iterator的定义的一个小节选&#xff1a; public interface List <…

盲人独立购物新纪元:一款实时“障碍物识别”应用助力超市之行

作为一名资深记者&#xff0c;我始终热衷于探寻科技如何助力特殊群体跨越生活挑战的创新实践。近日&#xff0c;一款名为蝙蝠避障专为盲人设计的辅助应用走进了我的视野&#xff0c;它凭借实时障碍物识别功能&#xff0c;助力视障人士独立前往超市购物&#xff0c;悄然改变了他…

【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态

博主打算从0-1讲解下java基础教学&#xff0c;今天教学第五篇&#xff1a;Java面向对象编程&#xff1a;类、对象、继承、多态。 在Java中&#xff0c;面向对象编程是一种常用的编程范式&#xff0c;它以类和对象为核心&#xff0c;通过继承和多态等机制实现代码的复用和灵活…

十四款大型语言模型在《街头霸王III》中一决雌雄

上周在旧金山举办的Mistral AI黑客马拉松上&#xff0c;开发出了一款基于经典街机游戏《街头霸王III》的人工智能&#xff08;AI&#xff09;基准测试。这款名为“AI Street Fighter III”的开源基准测试由Stan Girard和Quivr Brain开发&#xff0c;游戏在模拟器中运行&#xf…

【C++】——list的介绍及使用 模拟实现

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 文章目录 前言 一、list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.…

数据结构基础 ——数组VS链表(二)

一、数组 数组对应的英文是array&#xff0c;是有限个相同类型的变量所组成的有序集合&#xff0c;数组中的每一个变量称为元素。数组是最简单、最常用的数据结构。 数组存储格式&#xff1a; 在Python语言中&#xff0c;并没有直接使用数组这个概念&#xff0c;而是使用列表(…