TCP/IP协议家中的老二——数据链路层

大家好,我是小杰。

在这个系列里,我们将详细学习计算机网络相关的知识。 这次要讲的是数据链路层

老规矩,先上这个系列的镇宝图——TCP/IP协议五层模型

在这里插入图片描述

为什么要有数据链路层

所谓存在即合理,经过了这么多年实践的考验,那这一层也定有它不可或缺的原因:

  1. 为IP模块发送和 接收IP数据报
  2. 为ARP模块发送ARP请求和接收ARP应答
  3. 为RARP发送RARP请求和接收RARP应答

ARP和RARP分别为地址解析协议和逆地址解析协议

什么是RFC

Request For Comments(RFC)是一系列以编号排定的文件,Internet的所有标准都是以请求评论文档(RFC)的形发布的,TCP/IP协议也不例外。

喏,就是下面这些,是一系列的文件。

在这里插入图片描述

为什么要提RFC协议

RFC要求每台接入Internet的主机

  1. 必须能发送和接收采用RFC 894(以太网)封装格式的分组
  2. 应该能接收与RFC 894混合的RFC 1042(IEEE 802)封装格式的分组
  3. 也许能够发送采用RFC 1042格式封装的分组。如果主机能同时发送两种类型的分组数据,那么发送的分组必须是可以设置的,而且默认条件下必须是 RFC 894分组。

以太网IP数据报的封装是在RFC 894中定义的,IEEE 802则是在RFC 1024中定义的。

可见以太网协议是局域网最常用的

两种封装格式

数据链路层主要有两种帧格式:以太网封装格式IEEE802封装格式

在这里插入图片描述

两种帧格式都采用6字节的目的地址和源地址(IEEE的802.3可采用两字节),最后都包含一个CRC循环冗余校验部分,用来检查错误。其他的区别就不细探讨了,主要研究以太网封装格式。

RFC 893中还描述了尾部封装的封装格式,不过目前已遭到反对,有兴趣的同学可以自行查阅和了解。

IP数据报封装协议

上节中间部分就是IP数据报,然而对IP数据报的封装也是有讲究的!

目前主要有两种 SLIP 和 PPP(点对点协议)

SLIP

在RFC 1055中定义了SLIP(Serial Line IP)

SLIP协议格式

  1. IP数据报以一个称作 END(0 x c0)的特殊字符结束。同时,为了防止数据报到来之前 的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个 END字符。
  2. 如果IP报文中某个字符为 END,那么就要连续传输两个字节 0xdb和0xdc来取代它。0xdb这个特殊字符被称作SLIP的ESC字符,但是它的值与ASCII码的ESC字符(0 x 1b)不同。
  3. 如果IP报文中某个字符为SLIP的ESC字符,那么就要连续传输两个字节0xdb和0xdd来 取代它。
缺陷:
  1. 每一端必须知道对方的IP地址。没有办法把本端的IP地址通知给另一端。
  2. 数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于 SLIP, 那么它不能同时使用其他协议。
  3. SLIP没有在数据帧中加上检验和(类似于以太网中的 CRC字段)。

CSLIP(压缩的SLIP)

之所以出现CSLIP的原因,就是因为SLIP大,所以需要优化,那么它大在什么地方呢。

我特意去RFC 1144(CSLIP的RFC定义文档)去查了一下,因为TCP/UDP协议很大,每次传输的时候将近一半的固定信息是不会变动的,每次就算用TCP协议传输1字节的数据都需要40字节的固定位信息的发送,因此这就是可以优化的地方。

CSLIP的做法是,接收端拷贝一份上次发送的固定字段,发送者每次只需要传递变动的位数就好了,这样通常可以把原来40字节压缩至3~5字节,可见效率真的很高!

PPP:点对点协议

设计目的主要是用来通过拨号专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。

点对点协议是针对SLIP的缺陷进行修改的:

  1. 在串行链路上封装 IP数据报的方法。PPP既支持异步链路(无奇偶检验的8比特数据),也支持面向比特的同步链路。IP数据报在PPP帧中就是其信息部分,这个信息部分的长度受最大传送单元MTU的限制。
  2. 建立、配置及测试数据链路的链路控制协议( LCP:Link Control Protocol)。它允许通信双方进行协商,以确定不同的选项。
  3. 针对不同网络层协议的网络控制协议(NCP:Network Control Protocol)体系。当前 RFC定义的网络层有I P、OSI网络层、DECnet以及AppleTalk。例如,IP NCP允许双方商定是 否对报文首部进行压缩,类似于 CSLIP(缩写词NCP也可用在TCP的前面)。

在这里插入图片描述

优点
  1. PPP支持在单根串行线路上运行多种协议, 不只是IP协议;
  2. 每一帧都有循环冗余检验;
  3. 通信双方可以进行 I P地址的动态协商(使用IP网络控制协议);
  4. 与CSLIP类似,对TCP和IP报文首部进行压缩;
  5. 链路控制协议可以 对多个数据链路选项进行设置。为这些优点付出的代价是在每一帧的首部增加 3个字节,当建立链路时要发送几帧协商数据,以及更为复杂的实现。

随着产品越来越多,产家也开始逐渐支持PPP,因此最终PPP应该取代SLIP。

HDLC协议

高级数据链路控制(High-Level Data Link Control)简称HDLC,是一个在同步网上传输数据、面向比特的数据链路层协议,它是由国际标准化组织(ISO)根据IBM公司的SDLC协议扩展开发而成的。

在这里插入图片描述

PPP和HDLC协议对比

相同点

协议名全双工链路透明传输差错检测
PPP协议
HDLC协议

不同点

协议名面向方式协议字段有无序号和确认机制是否可靠
HDLC协议面向比特可靠
PPP协议面向字节不可靠

环回接口

大多数的产品都支持环回接口,以允许运行在同一台主机上的客户程序和服务器程序通过 TCP/IP进行通信。A类网络号127就是为环回接口预留的。根据惯例,大多数系统把IP地址127.0.0.1分配给这个接口,并命名为 localhost。一个传给环回接口的IP数据报不能在任何网络上出现

环回接口处理过程

可见127.0.0.1访问的IP数据包并不经过以太网卡

关键点
  1. 传给环回地址(一般是127.0.0.1)的任何数据均作为IP输入。
  2. 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。
  3. 任何传给该主机IP地址的数据均送到环回接口。

最大传输单元MTU

以太网和802.3对数据帧的长度都有一个限制,其最大值分别是 1500和1492字节。链路层的这个特性称作MTU最大传输单元。不同类型的网络大多数都有一个上限。

如果IP层有一个数据报要传,而且数据的长度比链路层的 MTU还大,那么IP层 就需要进行分片,把数据报分成若干片,这样每一片都小于MTU。

小结

  1. 局域网主要是以太网协议,广域网主要是PPP协议
  2. 回环接口使得本地回环地址不必经过以太网卡,但是对其他上层协议透明
  3. 最大传输单元会导致IP数据报分片
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星光 不服赶路人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值