网络:链路层

引言

第一层就是物理层

  • 物理层有一个叫做集线器(Hub)的东西,可以将多台电脑连接起来(一般三台以及以上的电脑才需要用到集线器,两台的话一根网络就足以组成一个局域网)。
  • 但是,和交换机不同,集线器没有大脑,它完全在物理层工作,它会将自己收到的每一个字节,都复制到其他端口上去,这是第一层物理层联通的方案

从上面可以看出,Hub采用的是广播的模式,也就是每一条电脑发出的包,其他电脑都能收到,这就麻烦了。此时有如下几个问题:

  • 这个包是发给谁的?谁应该接收?
  • 大家都在发,会不会产生混乱?有没有谁先发、谁后发的规则?
  • 如果发送的时候出现了错误,该怎么办?

这几个问题,但是第二层,数据链路层,也即MAC层要解决的问题。MAC的全程是Meduim Access Control,即媒体访问控制。

(1)控制什么呢?其实就是控制在往媒体上发数据的时候,谁先发,谁后发的问题,防止发生混乱,是要解决的第二个问题,即多路访问规则。常用的方法有:

  • 分多个车道。每个车一个车道,你走你的,我走我的。这就是信道划分
  • 今天单号出行,明天双号出行,轮着来。即轮流协议
  • 不管三七二十一,有事儿先出门,发现特堵,就回去,错过高峰再出。这个叫做随机接入协议。以太网就是用这个方式

(2)接下来解决第一个问题:发给谁?谁接收?

  • 这里要用到一个物理地址,叫做链路层地址。也叫做MAC地址
  • 还要牵扯到第二层的网络包格式。对于以太网,第二层的最开始,就是目标MAC地址和源MAC地址。
  • 有了目标MAC地址,数据包就可以在链路上广播了,MAC的网卡才能发现。如果发现这个包是给它的,MAC的网卡把包收进来,然后打开IP包,发现IP地址也是地址的,再打开TCP包,发现端口是自己的。。。。层层转发直到最上层
    在这里插入图片描述
  • 关于类型,大部分的类型都是IP数据包,然后IP里面包含TCP、UPD以及HTTP等,层层封装

(3)这里隐含着一个问题,那就是怎么知道对方的MAC地址呢?

在这里插入图片描述

  • 需要用到ARP协议,也就是已知IP地址求MAC地址。
    在这里插入图片描述
  • ARP协议是一个广播协议,具体的询问和回答的报文如下:

在这里插入图片描述

  • 为了避免每次都用ARP请求,机器本地也会进行ARP缓存。当然机器会不断的上线下线,IP也可能会变,所以ARP的MACC地址缓存过一段时间就会过期。

ps:交换机是由MAC地址学习能力的,学会了它就知道谁在哪里了,不用广播了,所以现在基本上用交换机代替了集线器

(4)第三个问题怎么解决呢?

对于以太网,第二层后面是CRC,也就是循环冗余检验。通过XOR异或算法,来计算整个包是否在发送的过程中出现了错误,以解决第三个问题


在这里插入图片描述

从上图可以看出,在TCP/IP协议族中,链路层主要有三个目的:

  • 为IP模块发送和接收IP数据报
  • 为ARP模块发送ARP请求和接收ARP应答
  • 为RARP发送RARP请求和接收RARP应答

TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,比如以太网、令牌环网、I(光纤分布式数据接口)及 R S-2 3 2串行线路等。

  • 要传输数据,数据链路层需要将网络层传递过来的数据报封装进被称为帧的一个一个单元。
  • 除了需要传输的数据之外,每个帧都会包含一个头,如头中可能包含了目标地址和帧的大小。
  • 数据链路层在物理链接上传输帧并处理来自接受者的确认(不是所有的数据链路层都使用确认)。
  • 这一层可能会进行错误检测、重传以及流量控制,一些数据链路层还可能会将大的网络包分隔成多个帧并在接收端对这些帧进行重组

从应用编程的角度来讲可以忽略数据链路层,因为所有的通信细节都是由驱动和硬件来处理

对于有关IP的讨论来讲,数据链路层一个比较重要的特性是最大传输单元(MTU)。数据链路层的MTU是改成所能传输的帧大小的上限。不同的数据链路层的 MTU 是不同的

命令 netstat –i 会列出系统中的网络接口,包括其 MTU。

以太网和IEEE 802封装

以太网这个术语一般是指数字设备公司、英特尔公司和Xerox公司在1982年联合公布的一个标准。它是当今TCP/IP采用的主要的局域网技术。它采用一种称为CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入。它的速率为10 Mb/s,地址为48 bit。具体请参考这里
在这里插入图片描述

SLIP:串行线程IP

SLIP的全称是Serial Line IP。它是一种在串行线路上对IP数据报进行封装的简单形式。SLIP适用于家庭中每台计算机几乎都有的RS-232串行端口和高速调制解调器接入Internet

帧格式

下面的规则描述了SLIP协议定义的帧格式

  • IP数据报以一个称之为END(0xc0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个END字符(如果有线路噪声,那么END字符将结束这份错误的报文。这样当前的报文得以正确地传输,而前一个错误报文交给上层后,会发现其内容毫无意义而被丢弃)。
  • 如果IP报文中某个字符的END,那么就要连续传输两个字节0xdb和0xdc来取代它。0xdb被称为SLIP的ESC字符,但它的值与ASCII吗的ESC字符(0x1b)不同
  • 如果IP报文中某个字符为0xdb,那么就要连续传输两个字节0xdb和0xdd来取代它
    在这里插入图片描述

SLIP是一种简单的帧封装方法,缺陷如下:

  • 每一端都必须知道对方的IP地址。没有办法把本端的IP地址通知给另一端
  • 数据帧中没有类型字段。如果一条串行线路用于SLIP,那么它就不能同时使用其他协议
  • SLIP没有在数据帧上加上校验和。如果SLIP传输的报文被线路噪声影响而发生错误,只能通过上层协议来发现。(另一种方法是,新型的调制解调器可以检测并纠正错误报文)。这样,上层协议提供某种形式的 C R C就显得很重要。

压缩的SLIP

由于串行线路的速率都比较低,而且通信通常是交互式的(比如Telnet和Rlogin,二者都使用TCP),因此在SLIP线路上有很多小的TCP分组进行交换。为了传送一个字节的数据需要20个字节的IP首部和20个字节的TCP首部,总数超过40个字节。

因为存于这些缺陷,引入了CSLIP(即压缩SLIP)协议。SCLIP一般能把上面的40个字节压缩到3到5个字节。它能在CSLIP的每一端维持多达16个TCP链接,并且知道其中每个连接的首部中的某些字段一般不会发生变化。对于那些发生变化的字段,大多数只是一些小的数字和的改变,这些被压缩的首部大大的缩短了交互相应的时间

PPP:点对点协议

PPP,点对点协议改正了SLIP协议中的所有缺陷。PPP包括下面三个部分:

  • 在串行链路上封装IP数据报的方法。PPP即支持数据为8为和无奇偶校验的异步模式,还支持面向比特的同步链接
  • 建立、配置以及测试数据链路的链路控制协议(LCP:Link Control Protocal)。它允许通信双方进行协商,以确定不同的选项
  • 针对不同网络层协议的网络控制协议(NCP:Network Control Protocal)体系。当前RFC定义的网络层有IP、OSI网络层、DECnet和AppleTalk

数据帧

每一帧都以0x7e开始和结束。紧接着是一个地址字节,值始终是0xff,然后是一个值为0x03的控制字节
在这里插入图片描述
接下来是协议字段,类似于以太网中类型字段的功能。当它的值为0x0021时,表示信息字段是一个IP数据报;值为0xc021时,表示信息字段是链路控制数据;值为 0x8021时,表示信息字段是网络控制数据。

CRC字段(或者FSC,帧校验序列)是一个循环冗余检验码,以检测数据帧中的错误。

由于标志字符是0x7e,因此当该字符出现在信息字段中时,PPP需要对它进行转义。在同步链路上,该过程是通过一种称为比特填充的硬件技术来完成的。在异步链路中,特殊字符0x7d用作转义字符。当它出现在PPP数据帧中时,那么紧接着的字段的第6个字符要取其补码,具体过程如下:

  1. 当遇到字符0x7e时,需连续传送两个字符: 0x7d和0x5e,以实现标志字符的转义。
  2. 当遇到转义字符0x7d时,需连续传送两个字符: 0x7d和0x5d,以实现转义字符的转义。
  3. 默认情况下,如果字符的值小于 0x20(比如,一个ASCII控制字符),一般都要进行转
    义。例如,遇到字符0x01时需连续传送0x7d和0x21两个字符(这时,第6个比特取补码后变为1,而前面两种情况均把它变为 0)。

优缺点

总的来说,P P P比S L I P具有下面这些优点:
(1) PPP支持在单根串行线路上运行多种协议,不只是IP协议;
(2) 每一帧都有循环冗余检验;
(3) 通信双方可以进行IP地址的动态协商(使用I P网络控制协议);
(4) 与CSLIP类似,对TCP和IP报文首部进行压缩;
(5) 链路控制协议可以对多个数据链路选项进行设置。

为这些优点付出的代价是在每一帧的首部增加 3个字节,当建立链路时要发送几帧协商数据,以及更为复杂的实现。

环回接口

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

一旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输和使用网络层的逻辑操作。但是大多数的产品还是照样完成传输层和网络层的所有过程,只是当IP数据报离开网络层是把它返回给自己。

在这里插入图片描述

最大传输单元MTU

从以太网帧和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节。链路层的这个特性叫做MTU,最大传输单元。不同的网络大多数都有一个上限。
在这里插入图片描述
如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还要大,那么IP层就需要进行分片,把数据报分为若干片,这样每一片都小于MTU。

路径MTU

当在同一个网络上的两台主机互相进行通信时,该网络的MTU是非常重要的。但是如果两台主机之间的通信需要通过多个网络,那么每个网络的链路层就有可能有不同的MTU。重要的不是两台主机所在网络的MTU,而是两台主机路径中最小MTU。它被称为路径MTU

两台主机之间的路径MTU不一定是个常数,它取决于当时所选择的路由。而选路不一样是对称的(从A到B的路由可能与从B到A的路由不同),因此路径MTU在两个方向上不一定是一致的

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值