OSI数据链路层上的协议有Ethernet/IEEE802.3/IEEE802.4/IEEE802.5、 ARP、RARP等。

1、Ethernet(以太网)

链路层支持很多协议,比如Ethernet、IEEE802.3、IEEE802.4、IEEE802.5等,使用哪种协议取决于网络所使用的硬件。

TCP/IP使用Ethernet以太网来作为LAN局域网上的技术,它采用一种称作CSMA/CD(带冲突检测的载波侦听多路接入)的媒体接入方法,标准以太网的传输速率为10Mbps,以太网帧格式如下:

IEEE802.3:以“以太网”为技术原形,本质特点是采用CSMA/CD 的介质访问控制技术的网络.IEEE802.3与Ethernet略有区别,但在忽略网络协议细节时,人们习惯将IEEE 802.3称为Ethernet。IEEE802.4针对令牌总线网络,IEEE802.5针对令牌环网络。

2、MAC地址

MAC地址就是物理地址,它由二层数据链路层负责,以太网帧头的源地址和目的地址就是指MAC地址。一块网卡对应一个MAC地址,MAC地址使用6个字节来表示,它是由IEEE管理的,每个MAC地址都是全球唯一的。两台主机通信,最终是通过网卡将数据发送给对方的,所以知道目的主机的MAC地址很重要。

3、ARP、RARP

ARP是地址解析协议,它可以根据主机内网IP地址获取其MAC地址,在IPV6中使用NDP来代替ARP。ARP工作在局域网内,当数据从WAN发送到路由器、局域网内两台同网段的主机收发数据、局域网内两台不同网段的主机收发数据 等情况都会使用ARP协议。

①:局域网内两台同网段的主机收发数据:每台主机(包括路由器)都会维护一个ARP缓存表,上面保存了IP地址和MAC地址的映射关系。当源主机向目的主机发送数据的时候会在ARP缓存表里根据目的主机IP地址查询其MAC地址,如果查到的话就将数据中MAC地址填充,然后发给目的主机。如果在ARP缓存表中没有找到目的主机的MAC地址则会向本地网段发起一个ARP请求的广播数据包,收到广播包的目的主机同样会将源主机MAC地址写入自己的ARP缓存表中,然后发回一个ARP应答包,里面包含了目的主机的MAC地址,其他非目的主机会忽略该ARP广播。这样源主机就得到了目的主机的MAC地址,然后将它写入ARP缓存表中,这样就可以向目的主机发送数据了。

②:局域网内两台不同网段的主机收发数据:比如源主机位于192.168.0网段,目的主机位于192.168.1网段。源主机向目的主机发送数据时需要通过ARP获得目的主机MAC地址,而这时发现目的主机不在同一网段内,需要使用默认网关(路由器),源主机同样通过发送ARP广播获得默认网关的MAC地址,然后源主机将默认网关MAC地址填充到数据报并发送给网关,网关收到数据后通过检查目的IP地址发现不是给自己的,所以要对数据进行路由,根据它的路由表继续做转发,通过ARP协议获得另一个路由器的MAC地址,然后将目标路由器MAC地址写入数据报发给目标路由器,目标路由器收到数据后通过检查IP地址发现目标主机位于本网段中,然后它同样通过ARP协议获得目标主机的MAC地址,将目标主机MAC地址写入数据报并发送给目标主机。

③:当数据从WAN发送到路由器:路由器通过NAT获得目标主机的内网IP,然后通过ARP协议获得目标主机的MAC地址,将MAC地址填入数据报后发往目标主机。

ARP欺骗:A发送广播请求C的MAC地址,而B收到广播后冒充C进行回应(ARP应答数据中目的IP地址为C而MAC地址为B),A收到回应后会认为B就是C。

RARP是反向地址转换协议使只知道自己硬件地址的主机能够知道其IP地址,这种主机往往是无盘工作站,因此RARP协议目前已很少使用。

4、MTU

MTU(Maximum Transmission Unit)称为最大传输单元,它跟链路层协议有着密切的关系,对于以太网传输来说,由于其电气方面的限制,每个以太网帧的大小都有最大1518bytes和最小64bytes的限制,对于小于或者大于这个限制的以太网帧我们都可以视之为错误的数据帧,一般的以太网转发设备会丢弃这些数据帧。由于以太网最大的数据帧是1518Bytes,刨去其帧头14Bytes和帧尾CRC校验部分4Bytes,那么剩下承载上层协议的地方也就是Data域最大就只能有1500Bytes,这个值我们就把它称之为MTU。

因为有MTU这个限制,所以网络层的IP协议负责检查每个从上层协议下来的数据包的大小,并根据本机MTU的大小决定是否作“分片”处理,这就是所谓的“IP分片”,分片最大的坏处就是降低了传输性能。

如果应用使用的是TCP协议的话,那么分片的工作就由TCP协议处理了,因为TCP协议中有MSS(最大分段大小)来进行类似IP协议中这种检查,这就是“TCP分段”。下面这张图解释了MTU和MSS的关系,可以看出来MSS最大为MTU(1500)-IP头长度(20)-TCP头长度(20) = 1460:

为什么有了“IP分片”还会有“TCP分段”?这是因为如果IP层分的某一片数据丢失了,由于TCP不知道也不关心IP层分片的细节,所以保证可靠性的TCP协议会对整个数据包进行重传,所以TCP会加入MSS来避免IP层的分片,而UDP协议不保证可靠性,所以它可以直接使用IP层的分片。

转载自 一点一滴成长,原文链接:https://www.cnblogs.com/milanleon/p/6897317.html

转载于:https://www.cnblogs.com/zyh0430/p/11168024.html

TCP/IP协议(3):数据链路层相关推荐

  1. 1.2 TCP/IP协议(数据链路层)

    数据链路层将不可靠的物理层转变为一条无差错的链路,传输的是帧(frame),高层的协议数据被封装在以太网帧的数据字段发送. 1.数据链路层解决三个问题 1.1封装成帧 (1)解释 网络层的IP数据报传 ...

  2. 网际互联及TCP/IP 协议OSI七层模型: 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

    网际互联及TCP/IP 协议OSI七层模型: 物理层.数据链路层.网络层.传输层.会话层.表示层.应用层 物理层 作用:定义一些电器,机械,过程和规范,如集线器: PDU(协议数据单元):bit/比特 ...

  3. 《TCP/IP协议族》:数据链路层三

    1.引言 从图1-4可以看出,在TCP/IP协议族中,链路层主要有三个目的: (1)为IP模块发送和接收IP数据报: (2)为ARP模块发送ARP请求和接收ARP应答. (3)为RARP发送RARP请 ...

  4. HTTP 协议入门 — (TCP/IP协议族、通信传输流、URI 与 URL 的区别、Cookie 状态管理、HTTP 支持的方法、状态码类别、HTTP 首部字段)

    TCP/IP协议族 在介绍 HTTP 协议之前,我们先对 TCP/IP 协议族有个大概的了解,TCP/IP 协议从上到下主要分为应用层.传输层.网络层和数据链路层,各层的主要功能如下表所示: 协议层 ...

  5. 网络协议OSI、TCP/IP协议、Socket套接字和第三方AsyncSock的使用等解析

    一.网络协议定义 1.OSI参考模型:全称(Open System Interconnection), 开放式系统互联参考模型.是一个逻辑上的定义,一个规范,它把网络协议从逻辑上分为七层,只要目的是为 ...

  6. TCP/IP协议分析

    一;前言 学习过TCP/IP协议的人多有一种感觉,这东西太抽象了,没有什么数据实例,看完不久就忘了.本文将介绍一种直观的学习方法,利用协议分析工具学习TCP/IP,在学习的过程中能直观的看到数据的具体 ...

  7. 深入TCP/IP协议1---图解OSI参考模型

    首先我们看一下OIS参考模型各个层的作用 更具体一些图下图 字符集:一个国家或一个民族用到的全部字符的集合,美国用ASCII字符集,UTF8 传输层的功能:可靠传输 .流量控制 .拥塞避免,如果出现丢 ...

  8. 网络攻城狮怎么看待TCP/IP协议与UDP协议?

    在互联网中,存在着各种不同层次的协议,它们分别的功能也是不同的.但做为网络攻城狮,对这些协议的使用以及区分是工作的必备技能.那今天以网络攻城狮的角度来告诉大家攻城狮是怎么看待TCP/IP协议与UDP协 ...

  9. OSI参考模型与TCP/IP协议的比较研究

     OSI参考模型与TCP/IP协议的比较研究  OSI参考模型与TCP/IP协议的比较研究 摘要:OSI参考模型与TCP/IP协议是网际互联中的两个重要协议体系.本文从首先分别介绍了两个协议体系的产生 ...

  10. TCP/IP协议 网络层

    IP协议介绍 1.IP协议是TCP/IP协议族中最为核心的协议.IP协议将多个包交换网络连接起来,它在源地址和目的地址之间传送一种称为数据包的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包 ...

最新文章

  1. vue-quill-editor + element-ui upload实现富文本图片上传
  2. shell编程1到10求和_重磅|郑州市第四届中小学创意编程暨智能设计大赛初中组真题解析(下)...
  3. IE下实现全屏两方法
  4. TCP 的连接建立:采用三报文握手
  5. 手机HTML编辑浏览器,HTML编辑浏览器
  6. 数据的中心化和标准化
  7. mongo 唯一约束索引_快速掌握mongoDB(三)——mongoDB的索引详解
  8. 2021年世界科技进展100项
  9. 拿到串口的数据如何解析_详解如何用binlog2sql解析工具来实现mysql数据表异地恢复...
  10. 扩展linux swap分区大小,扩展Linux系统swap分区的大小
  11. AIX下内存泄漏的监控
  12. python 宏定义_Flask干货:Jinja2模板中的宏定义和使用
  13. visio 教程-绘图技巧、快捷键大全
  14. 【tensorflow 训练验证数据处理】制制作trian和val TXT的文件
  15. opencv 图片边缘渐变_opencv滤镜-PS羽化特效
  16. 简单版的约瑟夫环问题编程:清除隔壁编号的
  17. 使用粒子效果动画组成模型[自定义shader实现]
  18. 成都物韵电子商务有限公司电商代运营公司如何打造爆款?
  19. 产品思维训练 | 以网易云和微信为例,产品迭代的依据是什么?
  20. 【电脑问题】win10系统

热门文章

  1. Item 36. Class-Specific Memory Management
  2. python3菜鸟教程-Python3 快速入门教程
  3. python是什么编程教程-python教程看完了,还是不会编程?
  4. python怎么用excel-用Python控制Excel实现自动化办公,手把手教你
  5. python爬虫框架排行榜-常用python爬虫框架整理
  6. 学python好不好-学历低可以学python吗?好不好就业?
  7. python怎么安装matplotlib-python 安装matplotlib
  8. python篮球-用Python让蔡徐坤在我的命令行里打篮球!|附完整代码
  9. python画代码-一行Python代码画心型
  10. python基础知识面试题-python的一些基本概念知识和面试题