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

Posted _BitterSweet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络之数据链路层协议总结相关的知识,希望对你有一定的参考价值。

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类型

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

以上是关于计算机网络之数据链路层协议总结的主要内容,如果未能解决你的问题,请参考以下文章

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

《计算机网络(第7版)谢希仁 著》第三章 数据链路层 要点及习题总结

计算机网络—— 数据链路层(23):封装成帧差错检测

Java面试知识点之计算机网络篇

网络七层协议之部分协议详解

计算机网络总结与思考