Linux - 第21节 - 网络基础(数据链路层)

news/2024/11/19 23:16:37/

1.数据链路层

数据链路层解决的问题:

• IP拥有将数据跨网络从一台主机送到另一台主机的能力,但IP并不能保证每次都能够将数据可靠的送到对端主机,因此IP需要上层TCP为其提供可靠性保证,比如数据丢包后TCP可以让IP重新发送数据,最终在TCP提供的可靠性机制下IP就能够保证将数据可靠的发送到对端主机。
• TCP除了对下层IP提供可靠性机制之外,TCP对上还提供进程到进程的服务,我们在进行socket编程时,本质就是在使用TCP或UDP为我们提供的进程到进程的服务。
• 但数据在网络传输时需要一跳一跳的从一台主机跳到另一台主机,最终才能将数据转发到目标主机,因此要将数据发送到目标主机的前提是,需要先将数据转发给与当前主机直接相连的下一跳主机,而两台主机直接相连也就意味着这两台主机属于同一网段,因此将数据转发到下一跳主机实际是属于局域网通信范畴的,而这实际就是链路层需要解决的问题。
• 也就是说,网络层IP提供的是跨网络发送数据的能力,传输层TCP是为数据发送提供可靠性保证的,而链路层解决的则是两台相连主机之间的通信问题。


2.以太网协议

2.1.局域网技术

局域网技术:

不同局域网所采用的通信技术可能是不同的,常见的局域网技术有以下三种:

• 以太网:以太网是一种计算机局域网技术,一种应用最普遍的局域网技术。
• 令牌环网:令牌环网常用于IBM系统中,在这种网络中有一种专门的帧称为“令牌”,在环路上持续地传输来确定一个节点何时可以发送包。
• 无线LAN/WAN:无线局域网是有线网络的补充和扩展,现在已经是计算机网络的一个重要组织部分。
虽然网络中各个局域网所采用的通信技术可能的不同的,但是IP屏蔽了底层网络的差异,对于网络通信双方的IP层及其往上的协议来说,它们并不需要关心底层具体使用的是哪种局域网技术。

• 数据在发送之前会先进行数据封装,此时链路层会给数据封装上对应的局域网的报头。
• 如果数据要进行跨网络传输,那么就需要经过路由器转发。
• 当数据在路由器进行向上交付时,会将该数据对应的局域网报头去掉。
• 而当路由器该数据转发给下一跳之前,又会给该数据封装上下一跳网络所对应的局域网报头。
也就是说,网络中的路由器会不断去掉数据旧的局域网报头,并添加上新的局域网报头,因此数据在进行跨网络传输时,就算所需跨越的网络采用的是不同的局域网技术,最终也能够正确实现跨越。

2.1.1.以太网

以太网通信原理:

• “以太网”不是一种具体的网络,而是一种技术标准,它既包含了数据链路层的内容,也包含了一些物理层的内容。例如,以太网规定了网络拓扑结构,访问控制方式,传输速率等。
• 以太网中的网线必须使用双绞线,传输速率有10M,100M,1000M等。
以太网中所有的主机共享一个通信信道,当局域网中的一台主机发出数据后,该局域网中的所有主机都能够收到该数据。

• 比如当局域网中的主机A想要发送数据给主机B时,其实局域网当中的每一台主机都能收到主机A发出去的数据,只不过最终只有主机B会将主机A发来的数据向上进行交付。
• 局域网当中的其他主机虽然也收到了主机A发出的数据,但经过识别后发现这个数据不是发送给自己的,于是就会直接将该数据丢弃而不会向上进行交付。
也就是说,在进行局域网通信的时候,局域网当中的所有主机都能够看到局域网中传输的任何数据,只不过每个主机都只关心发送给自己的数据罢了。

注:

1.网络抓包不仅能够抓到发送给自己的报文数据,也能抓取到发给别人的报文数据(抓包时软件会自动设置网卡为混杂模式),实际就是因为在进行网络抓包时,主机将从局域网中收到的所有报文数据都向上交付了而已。

2.网卡有一种模式叫做混杂模式,被设置为混杂模式的网卡能够接收所有经过它的数据流,而不论其目的地址是否是它。

碰撞避免算法:

由于以太网中的所有的主机共享一个通信信道,因此在同一时刻只允许有一台主机发送数据,否则各个主机发送的数据就会相互干扰。站在系统的角度来看,这里各个主机所共享的通信信道就是一种临界资源,这个临界资源同一时刻只允许一台主机使用。

• 对于这个问题,以太网的做法就是先不限制各个主机发送数据的能力,局域网中的每个主机想发数据的时候直接发就行了,但是只要发送出去的数据与其他主机发送的数据产生了碰撞,那就得执行碰撞避免算法。
• 所谓的碰撞避免算法就是,当主机发送出去的数据产生碰撞时,该主机需要等待一段时间后再进行数据重发,在主机等待的时候就能够就能够尽可能让局域网当中的数据消散。
• 以太网通信的原理就像现实生活中开会一样,在开会过程中同一时刻只允许一个人发言,如果两个人突然同时说话,那么双方都会有礼貌的等待别人先说。
也就是说,以太网中主机发送的数据产生碰撞后该主机会执行碰撞避免算法,所以我们说以太网是基于碰撞区和碰撞检测的局域网通信标准。

碰撞避免算法就是主机等待一段时间后重新发送数据,因此以太网底层也有重传机制,只不过以太网的重传机制只是为了保证将数据从局域网中的一台主机发送到另一台主机。

注:

1.如果没有交换机,那么一个局域网就是一个碰撞域。

2.当一个局域网内通信主机过多时就很容易产生碰撞,交换机可以缓解该问题。交换机是工作在数据链路层的,其可以将一个局域网划分为一个个区域,如果数据包在某个区域内部即可完成传输(数据的目的主机在区域内),交换机就不会转发到其他区域了,并且交换机可以将一个区域已经碰撞的数据包进行拦截(不发送给其他区域)。如果数据包需要跨区域传输(数据的目的主机在其他区域内),交换机再转发到对应区域。

交换机可以划分区域,而每个区域就是一个碰撞域,也就是说交换机可以划分碰撞域,进而减缓碰撞的概率。通常将经常通信的几个主机划分在一个碰撞域内。

2.1.2.令牌环网

令牌环网通信原理:

• 令牌环网(Token-ring network)的传输方法在物理上采用了星形拓扑结构,但逻辑上是环形拓扑结构。
• 令牌环网的通信传输介质可以是无屏蔽双绞线、屏蔽双绞线和光纤等。
• 令牌环网中各节点间采用多站访问部件(Multistation Access Unit,MAU)连接在一起,MAU是一种专业化集线器,用来围绕工作站计算机的环路进行传输。

在令牌环网中有一种专门的帧称为“令牌”,这个“令牌”会在环路上持续地传输,只有拿到“令牌”的主机才能发送数据,因此发送出去的数据不会发生碰撞。

• 令牌环网当中的“令牌”就像系统当中用于保护临界资源的互斥锁一样,“令牌”与互斥锁一样也有“忙”和“闲”两种状态,“忙”表示令牌已经被占用,而“闲”则表示令牌没有被占用。
• 想要发送数据的计算机必须首先检测到“闲”令牌,并将其置为“忙”状态,然后才可以发送数据,这就和申请互斥锁的过程很像。
• 此外,由于“令牌”在网环上是按顺序依次传递的,因此对于所有入网的计算机而言,它们获取令牌的机会都是相等的,因此不会造成某台主机发送数据的饥饿问题。

2.2.以太网帧格式

以太网帧格式如下:

• 源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。

• 帧协议类型字段有三种值,分别对应IP协议、ARP协议和RARP协议。

• 帧末尾是CRC校验码。

注:以太网帧可以分为帧头、有效载荷和帧尾。帧头由目的地址、源地址、类型组成,其中类型根据有效载荷类型不同对应不同值。有效载荷有三种可能,IP数据包、ARP请求应答+PAD、RARP请求应答+PAD。帧尾由CRC构成。

问题1:MAC帧如何将报头与有效载荷进行分离?

答:以太网MAC帧的帧头和帧尾都是固定长度的,因此当底层收到一个MAC帧后,直接提取出MAC帧当中固定长度的帧头和帧尾,此时剩下的就是有效载荷了。

问题2:MAC帧如何决定将有效载荷交付给上层的哪一个协议?

答:以太网MAC帧对应的上层协议不止一种,因此在将MAC帧的报头和有效载荷分离后,还需要确定应该将分离出来的有效载荷交付给上层的哪一个协议。

在MAC帧的帧头当中有2个字节的类型字段,因此在分离出报头和有效载荷后,根据该字段将有效载荷交付给对应的上层协议即可。

举例:

假设局域网当中的主机A想要将IP数据报发送给同一局域网当中的主机B,那么主机A封装MAC帧当中的目的地址就是主机B的MAC地址,源地址就是主机A的MAC地址,而帧协议的类型对应就是0800,紧接着就是要发送的IP数据报,帧尾部分对应就是CRC校验。

当主机A将该MAC帧发送到局域网当中后,局域网当中的所有主机都可以收到这个MAC帧,包括主机A自己。

• 主机A收到该MAC帧后,可以对收到的MAC帧进行CRC校验,如果校验失败则说明数据发送过程中产生了碰撞,此时主机A就会执行碰撞避免算法,后续进行MAC帧重发。
• 主机B收到该MAC帧后,提取出MAC帧当中的目的地址,发现该目的地址与自己的MAC地址相同,于是在CRC校验成功后就会将有效载荷交付给上层IP层进行进一步处理。
• 局域网中的其他主机收到该MAC帧后,也会提取出MAC帧当中的目的地址,但发现该目的地址与自己的MAC地址不匹配,于是就会直接将这个MAC帧丢弃掉。
也就是说,当底层收到一个MAC帧后,会根据MAC帧当中的目的地址来判断该MAC帧是否是发给自己的,如果是发送给自己的则会再对其进行CRC校验,如果校验成功则会根据该MAC帧的帧协议类型,将该MAC交付给对应的上层协议进行处理。

2.3.认识MAC地址

注:

1.每个MAC地址都是全球唯一的,但其实每个MAC地址在对应局域网内唯一即可。


http://www.ppmy.cn/news/162481.html

相关文章

台式计算机前面插耳机没声音,Win10台式机机箱前置耳机插孔没声音如何修复

一位朋友反映自己将耳机插到windows10系统机箱前面的耳机插孔时,总会遇到没有声音的情况,这该怎么办呢?要如何修复该问题呢?接下来,就随系统城小编一起看看该问题的具体修复方法吧! 方法如下: 1…

海尔微型台式计算机重装系统,海尔台式电脑bios设置u盘启动教程

海尔是全国知名品牌,相信用户朋友们多少都有点了解海尔这个老品牌,可是最近有用户想用u盘给海尔电脑重装系统,但是不知道海尔电脑bios设置u盘启动方法,其实海尔台式电脑bios设置启动项很简单,装机吧小编写了一份海尔台式机bios设置u盘启动的方…

海尔微型计算机U盘启动,海尔台式电脑如何bios设置u盘启动教程

许多用户打算使用u盘给海尔台式电脑装系统,但在操作过程中发现不会设置u盘启动,其实只要了解清楚,掌握海尔台式电脑bios设置u盘为第一启动项的方法很是简单,今天快启动小编就为大家分享下详细操作教程把。 海尔台式电脑从u盘启动有…

解决台式机前耳机插孔没有声音

以win10为例 一、打开控制面板,找到RealTek高清晰音频管理器 二、选择设置选项 三、按照如下选择 插入耳机后问题解决。但是我在插入耳机发现播放音乐时只有伴奏,没有人声,怀疑是左右声道问题,通过以下步骤解决 一、同样是控制…

台式计算机怎么开声音,台式机如何使用耳机说话

新给台式机买的耳机!想要用它来说话!该怎么办呢?下面由学习啦小编给你做出详细的台式机使用耳机说话方法介绍!希望对你有帮助! 台式机使用耳机说话方法一 右击右下角小喇叭,打开音量控制、把麦克风调大再把麦克风下高级项里的麦克风加强打上勾。如果音量控制里没有…

台式机耳机插上没声音_如何在台式机上使用移动耳机麦克风

台式机耳机插上没声音 You’ve invested a lot of money into a pair of quality headphones with a built-in mic for your phone. Wouldn’t it be great if you could use it for gaming or VOIP calls on your desktop PC? Good news: You can. 您已经花了很多钱买了一副带…

用在台式计算机上的无线耳机,台式电脑连接耳机全攻略

现在市面上有各种各样的耳机,有形式各样的普通耳机、有能听会说的耳麦、有便捷的蓝牙耳机,究竟怎样才能让耳机和我们的电脑融为一体,高效的为我们服务呢?下面是学习啦小编收集整理的台式电脑连接耳机全攻略,希望对大家有帮助~~ 台…

台式前置耳机没有声音解决办法之一

台式电脑前置插入耳机时没有声音,但是插入后置是有声音,检查机箱线路是插过的,说明接口没有问题,就是剩下设置,解决办法如下: 1.点击“开始”》“控制面板”》“Realtek高清晰音频管理器”(查看…