计算机网络之数据链路层协议总结

article/2025/11/1 14:32:13

数据链路层

  • 1.数据链路层介绍
  • 2.ARP协议
    • 2.1 ARP的工作流程
    • 2.2 ARP数据报格式
  • 3.NAT技术
    • 3.1 NAT转换过程
    • 3.2 NAPT技术(动态NAT重载)
  • 4.DNS技术
    • 4.1 域名层级关系
    • 4.2 域名解析流程
  • 5. ICMP协议
    • 5.1 ICMP功能
    • 5.2 ICMP类型

1.数据链路层介绍

  1. 数据链路层主要负责相邻设备之间的传输,决定传输的因素是MAC地址

MAC地址:6字节的整数,uint_8 addr[6];
MAC地址可以唯一标识一台设备和网卡设备绑定的

  1. 以太网协议:目的MAC地址(6字节) + 源MAC地址(6字节) + 类型(2字节)+数据(来源于网络层)+ CRC校验
    在这里插入图片描述

类型:标识网络层使用什么协议
数据:有效载荷,受MTU的限制
CRC校验:检验数据链路层的数据帧是否出错

2.ARP协议

  • ARP不是一个单纯的数据链路层协议,而是一个介于数据链路层和网络层的协议

2.1 ARP的工作流程

  • ARP协议建立了主机IP地址和MAC地址的映射关系,获取相邻设备的MAC地址,目的IP—>对应的MAC地址
  • ARP是广播发送,子网当中的所有机器都会收到ARP请求,分析ARP请求当中的目的IP地址是否是自己机器所持有的IP地址,如果是则回复ARP应答,在应答当中包含自己主机的MAC地址;如果不是,则不处理
    在这里插入图片描述

主机会通过广播发送ARP请求,这个包中包含了想要知道的MAC地址的主机IP地址


当同个链路中的所有设备收到ARP请求时,会去拆开ARP请求包里的内容,如果ARP请求包中的目标IP与自己一样,那么这个设备就将自己的MAC地址塞入ARP响应包返回给主机


每台主机会维护一个ARP缓存表,缓存表中的表项有过期时间(每隔20分钟进行更新一次),如果20分钟内没有再次使用某个表项,该表项就会失效,下次还要发ARP请求来获得目的主机的硬件地址

2.2 ARP数据报格式

在这里插入图片描述
目的MAC地址:ARP请求当中,目的MAC地址全部填充为1,表示在当前子网中广播


源MAC地址:ARP请求主机的MAC地址


帧类型:以太网数据帧类型,表示上层在使用什么协议(0x0800:IP协议,0x0806:ARP请求或者应答)


2字节的硬件类型:定义运行ARP网络的类型,一般都是以太网


2字节的协议类型:表示使用什么协议,标识当前是IP地址转换MAC地址


1字节的硬件地址长度:表示MAC地址的长度(6字节)


1字节的协议地址长度:表示IP地址的长度(4字节)


op:表示当前是ARP请求还是ARP应答,1表示请求,2表示应答


发送端MAC地址:发送ARP请求主机还是ARP应答主机的MAC地址


发送端IP地址:发送ARP请求主机还是ARP应答主机的IP地址


目的MAC地址:当如果是ARP请求,填充0x000000000000;如果是ARP应答,填充ARP请求主机的MAC地址


目的IP地址:目标主机的IP地址

3.NAT技术

3.1 NAT转换过程

  • ipv4中,地址不充足,所以NAT技术解决IP地址不够用的主要手段,是路由器的一个重要功能
  • NAT可以将私有IP对外通信时转换为公网IP
  • 公网IP要求唯一,但是私有IP不需要
  • 简单的来说 NAT 就是同个公司、家庭、教室内的主机对外部通信时,把私有 IP 地址转换成公有 IP 地址
    在这里插入图片描述
  • NAT服务对于通信双方是无感知的
  • 网络被划分为私网和公网,NAT网关通常架设在私网到公网路由出口的位置,双方的数据包都需要经过NAT网关
  • 网络的访问只能从私网一端发起,公网是无法访问到私网的主机的
  • NAT网关对于请求而言,替换源IP地址;对于应答而言,替换目的IP地址
    在这里插入图片描述
  • NAT网关实现了双向翻译的功能,所以需要在NAT网关中维护一张映射表,把替换的信息记下来

3.2 NAPT技术(动态NAT重载)

1.N个私有IP地址,难道必须要有N个公有IP地址?这如何缓解地址紧缺的问题呢?
2.绝大多数的网络应用都是使用TCP/UDP来传输数据的,所以可以把IP地址 + 端口号 一起转换,这样一个公有IP地址就够了
3.这种转换技术就叫做NAPT
在这里插入图片描述

  • NAPT理论上可以:一个公网IP可以替换2^16个私网IP(取决于端口号uint16_8)
  • 私网IP地址和公网IP地址变成了多对一的关系
  • NAPT也是动态NAT,也可以在NAT网关当中维护多个公网IP
  • NAPT很好的解决了IP地址不够用的问题,NAPT的好搭档是DHCP协议(动态主机分配协议)

4.DNS技术

  • 我们在上网的时候,通常使用的是方式是域名,而不是IP地址,因为域名方便人类记忆
  • 实现这一技术的就是DNS域名解析,DNS可以将域名网址自动转换为具体的IP地址

4.1 域名层级关系

  • 域名其实就是由" . " 分割的字符串的集合,分割出来的字符串表示公司的名称或者性质对额字符串
  • com:商业公司 cn:中国 gov:政府 edu:教育
  • 域名中越靠右的位置表示层级越高,层级关系类似一个树形结构
    在这里插入图片描述

4.2 域名解析流程

  • 浏览器的缓存当中缓存域名和IP地址对应关系
  • 本地的hosts文件当中也会缓存域名和ip地址对应关系

浏览器首先查看一下自己的缓存里有没有,如果没有就向操作系统的缓存要,还没有就检查本机域名解析文件hosts,如果还是没有,就回DNS服务器进行查询,有两种查询方式:一种是递归查询;一种是迭代查询
在这里插入图片描述

5. ICMP协议

  • ICMP叫做互联网控制报文协议

5.1 ICMP功能

  • 主要功能包括:确认 IP 包是否成功送达⽬标地址报告发送过程中 IP 包被废弃的原因改善⽹络设置
  • 在IP通信中如果某个IP包因为某种原因未能达到目的地址,那么这个具体的原因将由ICMP负责通知
    在这里插入图片描述

5.2 ICMP类型

  • 第一种是用于诊断的查询消息,是查询报文类型
  • 第二种是通知出错原因的错误消息,是差错报文类型
    在这里插入图片描述

http://chatgpt.dhexx.cn/article/gKWCx07s.shtml

相关文章

(SQL)修改表结构[字段类型]、表字段长度,

①:更改字段类型长度 ALTER TABLE 表名 ALTER COLUMN 字段名 类型的长度–varchar(50) 例:把城市表的城市字段原来长度为20改为30 ALTER TABLE city ALTER COLUMN cname varchar(30) ALTER TABLE #temp ALTER COLUMN bmmc NVARCHAR(30)②&#xff1…

表字段长度的修改

设置后,即可完成sqlserver数据库表字段长度的修改 超时修改:

用命令语句修改mysql某字段长度

在MySQL中修改某个字段的长度,需要使用ALTER TABLE语句,具体操作如下: 假设要修改表A中的字段col1的长度为50。 ALTER TABLE A MODIFY col1 VARCHAR(50); 以上语句中,MODIFY关键字用于修改表结构,VARCHAR(50)用于指定…

开发人员各种鄙视链

最近几年经常在网络上看到各种程序员鄙视链,其实真实情况是我们都很忙,每天 Bug 都调不玩,哪里有空鄙视这,鄙视那。所以很多的的鄙视链大家自己看看,笑一笑就过了,不要太过认真。 1、穿衣服也是有讲究的 2、…

趣图《程序员鄙视链》

小编推荐:Fundebug提供JS错误监控、微信小程序错误监控、微信小游戏错误监控,Node.j错误监控和Java错误监控。真的是一个很好用的错误监控费服务,众多大佬公司都在使用。 最近几年经常在网络上看到各种程序员鄙视链,其实真实情况是…

程序员鄙视链至今还存在,你咋想不通呢?看完给你理清思绪

前天本来想去githup上交流一下技术问题,顺便薅点源码玩玩。结果不小心打开了一个阿里朋友的博客。在他的文档下有特别多奇葩的留言: 什么PHP是世界上最好的语言~ Python是能上天的语言~ java最无敌~ C藐视一切 Gonang牛皮~ 这样的观点至今在互联网上…

从程序员鄙视链看IT圈职场晋升密码,你修炼到了第几层?

作为一名IT程序员工程师,在2020年疫情后严峻的就业环境下,对于求职择业和职场晋升可谓体会颇深了。 亲眼目睹身边的好友因企业业务收缩而被辞退的痛楚,汇智妹猛然发现:“优胜劣汰”的生存法则,不光存在于自然界的食物链…

无代码开发,站到了程序员鄙视链顶端

文章目录 无代码开发,站到了程序员鄙视链顶端1.只花 72 小时完成一个危机管理软件项目2.巨头们已经开始激战3.无代码给 IT 技术人带来的挑战后记 无代码开发,站到了程序员鄙视链顶端 “无代码”不是在"淘汰”开发者,而是给予开发者更大挑…

程序员鄙视链python_程序员的鄙视链,请勿对号入座

原标题:程序员的鄙视链,请勿对号入座 在软件工程师(中国叫做「程序员」或「码农」)的圈子里,文人相轻的现象可是非常严重的,在程序设计的各个领域里都有着错综复杂的「鄙视链」。 最近这几年在世界各地突然吹起了一股全民写程序的…

图解程序员鄙视链(这回称得上是真的链表了吧)

简评:自古文人相轻,程序员的世界也存在着错综复杂的「鄙视链」。从程序语言、编辑器、平台到{ 是写在 if 的同一行还是下一行,不同阵营的人都习惯鄙视来鄙视去。而「你用什么程序语言?」更是大家最热衷的一条鄙视链。本文就为大家…

程序员鄙视链至今还存在,你为什么还想不通?

前天本来想去github上交流一下技术问题,顺便薅点源码玩玩。结果不小心打开了一个阿里朋友的博客。在他的文档下有特别多奇葩的留言: 什么PHP是世界上最好的语言~ Python是能上天的语言~ java最无敌~ C藐视一切 Gonang牛皮~ 这样的观点至今在互联网上还能…

站在程序员鄙视链的最顶端,真香!!

作为程序员你被鄙视过吗? 程序员群体中有一条无形的鄙视链。在现实中最直观的表现就是薪资差异。 据最新调查报告显示,全国范围内,程序员年薪达到50万以上的,仅占1.9%。 △数据来源: 《2018年中国程序员薪资生活调查报告》 如果你…

关于程序员鄙视链,哽咽~

点击上方“芋道源码”,选择“设为星标” 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2019 超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数…

程序员之间的各种鄙视链

听说 有品位的程序员 都关注了 程序员的幽默(ID:humor1024)整编 素材参考自:网络 朋友圈有鄙视链, 相亲有鄙视链, 程序员圈也有鄙视链 看完下面的鄙视链, 你是那一层? ↓↓↓↓ 【0】…

程序员鄙视链, 所有工程师都鄙视php工程师, 为什么

有人的地方就有江湖。 有江湖的地方就有厮杀。 程序员之间的厮杀,从未停止过! 最近程序员鄙视链,刷屏了~ 我相信程序员的内心是这样的: 不是说好了的吗?PHP是世界上最好的语言! 翻翻知乎上的讨论&#xff1…

程序员鄙视链最全图解,好有道理

最近几年经常在网络上看到各种程序员鄙视链,其实真实情况是我们都很忙,每天 Bug 都调不完,哪里有空鄙视这,鄙视那。所以很多的的鄙视链大家自己看看,笑一笑就过了,不要太过认真。 这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫…

程序员鄙视链

前言 本文首发公众号【一名打字员】 程序员鄙视链相信大家都有所耳闻,今天我们就来好好说一说程序猿间的鄙视链,文中配图均来自互联网。 鄙视链 最近程序员间的鄙视链特别火,因在某节目《xxx大会》上,某段子手程序员讲了一个咱打字…

关于程序员鄙视链

大家一定听说,程序员之间存在着极其丧心病狂的鄙视链。写汇编语言的工程师都鄙视写C语言的工程师 写C语言的工程师都鄙视C工程师 Java工程师和C#工程师则相互鄙视 然而,所有的工程师都鄙视PHP工程师。 为什么几乎所有程序员都会鄙视PHP为什么几乎所有程序…

程序员之间的鄙视链,太真实了!

最近几年经常在网络上看到各种程序员鄙视链,其实真实情况是我们都很忙,每天 Bug 都调不完,哪里有空鄙视这,鄙视那。 所以很多的的鄙视链大家自己看看,笑一笑就过了,不要太过认真。 下面就看看几个常见的鄙视…

程序员之间的鄙视链

鄙视像条食物链, 是个绕不开的怪圈。 在这个怪圈中,每一个人, 都在链条的最末端。 朋友圈有鄙视链, 相亲有鄙视链, 程序员圈也有鄙视链 看完下面的鄙视链, 你是那一层? ↓↓↓↓ 【1】努…