Linux网络——数据链路层

这一层可以说是网络的最后一层了,因为在TCP/IP四层模型里,物理层和数据链路成合称为网络接口层。所以Linux网络的学习将要将要告一段落了

目录

以太网

以太网协议

mac地址

MTU

ARP协议

结束——局域网


  • 以太网

以太网在在我们计算机上很常见了,例如

Linux网络——数据链路层_第1张图片

以太网即使并不是前面我们所见的具体的网络结构,它是一种技术标准,是目前应用最普遍的局域网技术,取代了其他局域网标准如令牌环,ARPANET(认识网络阶段的主角)。

令牌环网:就是说在一个局域网类,有一个令牌,哪个主机拿到了这个令牌,谁就可以发送消息。这个环内,令牌以一个时间来轮询,就像班级回答问题,从第一个同学开始,要是不说话,就轮到下一个,你要再说话就要等下一次轮到你

  • 以太网协议

在数据链路层我们知道数据名字叫数据帧。下面来说一下以太网协议

Linux网络——数据链路层_第2张图片

这里的6字节的的目的地址和源地址是mac地址,即就是物理地址

类型分别对应IP,ARP、RARP

中间的数据是最少是46对应ARP、RARP(PAD为填充位),1500字节则对应IP数据报

最后跟上CRC校验

  • mac地址

mac地址就是Media Access Control的简称,中文名介质访问控制。这个地址在网卡出场的时候就已经确定了,全球唯一,不能更改(现在好像能改了)。

mac地址是6个字节,也就是48位,通常是12个六进制数,两两组成,中间用 : 隔开。如一下操作你就可以看见一个物理地址就是mac地址。

Linux网络——数据链路层_第3张图片

当IP数据报到路由器后,路由器会往外发,这个时候,路由器则会把这个源mac地址换成自己的。

注意与IP的区别,源IP地址在路由器上也会进行转换,只是为了数据返回时能找发送端所以进行转换,它记录在路由器上的转换表上的,所以源IP地址可以理解为没有变化的,目标IP地址是一直没有变化的。而mac地址是因为要发送数据帧要转换。会把目的mac变换到下一个要去的节点的mac,源mac变换为自己的mac。所以可以理解为下面的例子,唐僧每次都会从一个国家到下一个国家,比如祭塞国文唐僧上一个国家是谁,他会说上一个国家是西梁女国。但是他从东土大唐而来去往西天拜佛求经是不变的。

  • MTU

MTU英文名全称Maximum Transmission Unit,中文名最大传输单元。以太网帧中的数据⻓度规定最⼩46字节,最⼤值1500称为以太网的最⼤传输单元(MTU),不同的网络类型有不同的MTU。

  • MTU对TCP的影响

数据从上层传到数据链路层的时候,是不能超过1500字节的,所以数据会在IP层进行分片,那么如果IP层分片了,对于TCP的影响则是:如果某一个分片丢失,则要重新传这个被分片的报文段,这就降低了传输效率。所以在TCP有一个MSS(英文名:Maximum Segment Size,中文名最大报文段),这个报文端的长度是多少呢?由于TCP在传输之前有一个三次握手的阶段,所以子啊这个阶段就会交换双方链路层的MSS大小,取两者的最小值,然后MSS = MTU - IP报头 - TCP报头长度,这样的MSS就是TCP能传输的最大数据大小了。这样的话,即使加上IP的报头,最后的数据报长度也不会超过MSS,于是就不会分片。

  • MTU对UDP的影响

⼀旦UDP携带的数据超过1472(1500 - 20(IP⾸部) - 8(UDP⾸部)),那么就会在网络层分成多个IP数据报。这多个IP数据报有任意⼀个丢失, 都会引起接收端网络重组失败. 那么这就意味着, 如果UDP数据报在网络被分⽚。整个数据被丢失的概率就⼤⼤增加了。

  • ARP协议

前面说到了ARP,这里就解释一下什么是ARP。

ARP,英文名Address Resolution Protocol,中文名:地址解析协议

首先在数据的传输过程中,数据最先到达的一定是网卡,所以可以在数据到达时,会对比目的mac地址,如果是当前的mac,则再交给上层,如果不是则直接丢弃,所以有必要知道对方的mac地址。在前面数据在传输过程中,我们知道mac地址是一直在变换,所以就是这个道理。于是ARP就是解决怎么知道当前网络的所有设备的mac地址。

Linux网络——数据链路层_第4张图片

对比帧类型,在以太网协议格式中的数字。

主机会发送一条消息,ip地址为XXX.XXX.XXX.XXX,mac是多少的请求,在当前局域网中进行广播,如果IP地址符合的主机会给发送方回应IP为XXX.XXX.XXX.XXX的mac是XX.XX.XX.XX,不符合的主机会丢掉该消息,不予理会。

Linux网络——数据链路层_第5张图片

对于这种广播的模式存在一个安全问题,有兴趣的道友可以去了解ARP攻击

  • 结束——局域网

在前面提到了很多的局域网,在学习中,局域网其实就是在同一个网段下的网络,也就是一个路由器一个端口下的网络。在课本上把局域网当作区域来定义,也就是一个宿舍的网络可以当作局域网这样。其实对于局域网,按照网段来说,城域网也是局域网,因为它上面是广域网,广域网也可以是局域网,广域网上面还有互联网等。把整个互联网也可以是一个局域网。所以网络皆可以当成局域网。

到这儿,整个网络的概念就结束了。下一篇将是结局篇。

你可能感兴趣的:(Linux网络编程系列)