Linux:带你理解数据链路层


链路层

负责相邻设备之间的数据传输

相邻设备:连接起来的两个设备就是相邻设备。

认识MAC地址

一个路由器有可能连接了很多设备,也就是说一个设备有很多的相邻设备,那么问题来了,如何识别指定的相邻设备

相邻设备的识别通过物理网卡的硬件地址进行识别

物理地址 - MAC地址(uint8_t mac[6] — 无符号6个字节的整数)

  • MAC地址用来识别数据链路层中相连的节点;
  • 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
  • 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址).

认识以太网

  • “以太网” 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;

  • 例如以太网中的网线必须使用双绞线; 传输速率有10M, 100M, 1000M等; 以太网是当前应用最广泛的局域网技术;

  • 和以太网并列的还有令牌环网, 无线LAN等;

以太网帧协议格式

一块网卡封装了以太网帧之后(包含源mac和目的mac以及上层协议),将数据帧广播给与自己相连的设备,收到数据的网卡,查看mac地址是否是字节的,若是,则接受上来,若不是,则直接丢弃

我怎么知道对方的mac地址是多少?

ARP协议

介于网络层与链路层之间的协议;协议中即包含IP地址、MAC地址(通过IP地址获取MAC地址)

ARP协议的作用

ARP协议建立了主机 IP地址MAC地址 的映射关系.

  • 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;

  • 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;

  • 因此在通讯前必须获得目的主机的硬件地址;

ARP协议的工作流程

在这里插入图片描述

  • 源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”, 并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播);

  • 目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中;

  • 每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址

ARP局域网欺骗攻击:

恶意主机收到arp请求之后,直接回复arp应答,伪装自己就是指定主机

ARP数据报的格式

在这里插入图片描述

  • 注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。

  • 硬件类型指链路层网络类型,1为以太网;

  • 协议类型指要转换的地址类型,0x0800为IP地址;

  • 硬件地址长度对于以太网地址为6字节;

  • 协议地址长度对于和IP地址为4字节;

  • op字段为1表示ARP请求,op字段为2表示ARP应答。

认识MTU

在这里插入图片描述

  • MTU:最大传输单元 — 限制链路层数据帧大小(主要限制网络层IP报文的长度)
  • MSS:最大数据端大小 — 应用层交付给传输层的数据大小

假设mtu = 1500, 请问mss是多少?

mss = mtu - 40 ; 1460

  • mss是tcp协议中特指的信息
  • 最大数据段大小都是以最小头部大小进行计算的,而tcp和ip协议报头都是最小20字节
MTU对于传输层协议的影响
  • mtu对tcp协议的影响:

tcp传输,在三次握手的时候,就会通过mtu计算自身的mss(mss = mtu - ip - tcp),并且进行双方协商,每次都只能从发送缓冲区中取出不超过mss大小的数据进行传输,因此我们通常会说:tcp在传输层会自动进行数据分端,因此在网络层不会进行数据分片

  • mtu对udp协议的影响:

因为udp的传输层并不会计算mss,只要udp报文小于64K-28,就能发送,但是受限于mtu,有可能会在网络层进行数据分片,将一个完整的大报文分片成为一个个小的数据片发送,到达对端之后再进行分片重组。

因为udp并不保证可靠传输,意味着一个完整报文中若有一个分片出问题,则整个报文都会被丢弃,也就意味着udp传输的时候,分片越多,传输出问题的几率就越大。

因此程序员编写udp传输程序在应用层的时候,就要考虑mss的问题(sendto给与的数据大小最好就不要超过mss大小),尽量减少分片概率

其他典型协议及技术:

DNS / ICMP / NAT / NAPT / 代理

DNS

DNS(domain name system)域名系统 — 用于域名解析(通过域名获取IP地址的系统)

在这里插入图片描述

  • DNS是应用层协议
  • DNS底层使用UDP进行解析
  • 浏览器会缓存DNS结果

域名:www.baidu.com — 服务器的名称

域名服务器的层级划分
根域名服务器(向权威机构授权)-》顶级域名服务器 -》二级域名服务器 -》三级域名服务器

域名的层级划分
顶级域名(.com/.org/.gov/.edu…/.cn/.jp…)-》二级域名(.baidu.com / qq.com)-》三级域名(docs.qq.com)

在这里插入图片描述

icmp

这是一个网络层协议,用于进行网络探测(通过发送icmp请求要求对方进行回复)

NAT / NAPT

  • NAT:网络地址转换技术

NAT服务会将流经网关设备的数据的源IP地址修改为自己的IP地址然后转发出去

在这里插入图片描述

  • NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;
  • NAT路由器收到外部的数据时, 又会把目标IP从202.244.174.37替换回10.0.0.10;
  • 在NAT路由器内部, 有一张自动生成的, 用于地址转换的表;
  • 当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;

NAT IP转换过程

  • 实现大量私网主机使用同一个对外IP地址进行上网(若不修改源IP地址,则源IP地址是一个私网地址,对方收到之后无法进行回复)

公网的设备只能找到公网地址,是找不到私网地址的。

因此进行源IP地址替换,目的是为了让对方回复的时候,回复到自己的网关设备上,然后网关设备再转发给自己

  • NAPT:进行地址映射

但是同一个私网中,有可能同时有很多主机都访问同一个服务器,回复过来后,网关设备如何选择给谁转发(这是谁的回复)

在这里插入图片描述

NAPT对流经的数据进行修改源地址并转发的时候会记录对应地址关系

代理服务

在这里插入图片描述

工作在应用层,部署在任意设备上,作为数据请求的代理商存在,主机向代理服务器发送请求,要求代理服务器响应,代理服务器向指定的服务器进行请求,得到相应之后,再转发给主机

代理和NAT的区别:

  • NAT服务通常部署在网关设备上,运行在网络层,进行源地址替换,目的主机一直是指定服务器
  • 代理服务是一种应用,可以部署在任意设备上,运行在网络层,目的主机首先请求代理服务器,是为了让代理服务器替自己请求

CDN

什么是个CDN?CDN是干什么的?

  • CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘",使用户可以就近取得所需的内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。(从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因所造成的用户访问网站响应速度慢的问题。 也就是一个服务器的内容,平均分部到多个服务器上,服务器智能识别,让用户获取离用户最近的服务器,提高速度。)
  • 提高网页读取速度,提升用户体验的一个东西。

在数据链路层扩展局域网

在数据链路层扩展局域网是使用网桥。
网桥工作在数据链路层,它根据 MAC 帧的目的地址对收到的帧进行转发。

网桥是一个聪明的集线器
网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的 MAC 地址,然后再确定将该帧转发到哪一个接口。

  • 网桥具有多个接口
  • 每个接口连接一个网段

使用网桥带来的好处

  • 过滤通信量,增大吞吐率。
  • 扩大了物理范围。主机数量
  • 提高了可靠性。只影响个别网段
  • 可互连不同物理层、不同 MAC 子层和不同速率(如10 Mb/s 和 100 Mb/s 以太网)的局域网。
  • 网桥使各网段成为隔离开的碰撞域

使用网桥带来的缺点

  • 存储转发增加了时延。存储、查表、碰撞检测
  • 在MAC 子层并没有流量控制功能。 网桥的缓存可能溢出,帧丢失。
  • 网桥只适合于用户数不太多(不超过几百个)和通信量不太大的局域网,否则有时还会因传播过多的广播信息而产生网络拥塞。这就是所谓的广播风暴。
  • 路由器可以阻断网络风暴

网桥和集线器(或转发器)不同

  • 集线器在转发帧时,不对传输媒体进行检测。
  • 网桥在转发帧之前必须执行 CSMA/CD 算法。
  • 若在发送过程中出现碰撞,就必须停止发送和进行退避。
透明网桥

目前使用得最多的网桥是透明网桥(transparent bridge)。
“透明”是指局域网上的站点并不知道所发送的帧将经过哪几个网桥,因为网桥对各站来说是看不见的。

透明网桥是一种即插即用设备,其标准是 IEEE 802.1D。

知识点习题:

  • 浏览器中输入url回车之后发生了什么?
  1. 域名解析,得到服务器IP地址
  2. 根据http协议格式组织http请求数据
  3. 搭建tcp客户端,与服务器建立tcp连接,发送http请求数据
  4. 等待服务器响应,按照http响应格式进行解析,解析后将正文数据展示在浏览器上
  • ssh使用22号端口 / talnet使用23端口 / ping使用多少端口

ping 这个工具通过icmp协议实现,而icmp是网络层协议,不涉及端口

  1. 上网的时候发现网页不能访问,QQ使用正常,出现此问题最可能的原因是

A. 网线问题
B. DNS问题
C. IP地址冲突
D. 网关错误

正确答案: B

答案解析:

QQ和网页访问使用的都是传输层的UDP协议,因此QQ正常可以排除传输层以下的所有原因。因此,A,C,D不对,选B项。 所有网页均打不开的可能原因是DNS服务器配错了,或者是指定DNS服务器故障等原因。若是特定网页打不开,可能是要访问的域名被DNS劫持、DNS污染等。

  1. 若主机A需要知道主机B的MAC地址,则属于ARP的工作流程为( )。

A. 主机A在网络中广播ARP请求报文
B. 主机A接收到请求报文后将自己的IP地址到MAC地址的映射发送给主机B
C. 主机B收到请求报文后将主机A的IP地址和MAC地址映射存储到自己的CACHE中
D. 主机A缓存主机B的IP地址到MAC地址的映射

正确答案:A,C,D

答案解析:

主机A会先检查其ARP缓存内是否有主机B的MAC地址。如果没有,主机A会发送一个ARP请求广播包,此包内包含着其欲与之通信的主机的IP地址,也就是主机B的IP地址。

当主机B收到此广播后,会将自己的MAC地址利用ARP协议响应包传给主机A,并更新自己的ARP缓存,也就是同时将主机A的IP地址/MAC地址对保存起来,以供后面使用。主机A在得到主机B的MAC地址后,就可以与主机B通信了。同时,主机A也将主机B的IP地址/MAC地址对保存在自己的ARP协议缓存内。

  1. 下面那些命令可以用来查看Linux主机的默认路由()

A. route
B. ifconfig
C. ping
D. netstat

正确答案:A,D

答案解析

A,route命令用来显示目前本机路由表的内容,并且还可以针对路由表中的记录来进行相应的添加、删除或修改等操作。
B,ifconfig命令用来来检测和设置本机的网络接口。
C,ping命令用来检测两部主机之间的传输信道是否畅通,或远程主机是否正常
D,netstat命令用来查看主机的连接状态(netstat -route)

  1. 下列关于网桥的描述中,正确的是( )。

A.网桥无法实现地址过滤与帧转发
B.网桥互联的网络在网络层都采用不同协议
C.网桥是在数据链路层实现网络互联的设备
D.透明网桥由源结点实现帧的路由选择功能

正确答案:C

答案解析:

网桥可以实现地址过滤和转发功能,网桥工作在数据链路层,所以数据链路层与物理层协议可以不同,以上层次的协议必须相同。网桥分为源路选网桥和透明网桥,源路选网桥由源结点实现帧的路由选择功能。

  1. 下面选项中哪些是数据链路层的主要功能:()?

A. 决定传输报文的最佳路由
B. 流量控制
C. MAC 寻址
D. 差错控制

正确答案: B、C

答案解析:

最佳路由应该是网络层中路由器的任务。虽然链路层也有寻址 但是只是MAC寻址 不是IP寻址。

数据链路层的主要功能包括:

  • 链路管理、帧同步、流量控制、差错控制、将数据和控制信息区分开、透明传输、(MAC)寻址
  • 数据链路层主要是向网络层提供服务,必定需要使用物理层提供的服务。(所以个人觉得并不是控制物理层)
  • 物理层以比特流进行传输,并不能保证数据传输的准确性,可能出现差错。因此 数据链路层采用了帧格式进行传输。(涉及到 差错控制和流量控制)
  1. 局域网交换机的交互方式分为()。

A. 直接交换
B. 存储转发
C. 无碎片直接交换
D. 无差错直接交换

正确答案: A、B、C

  1. 在对千兆以太网和快速以太网的共同特点的描述中,以下哪种说法是错误的

A.相同的数据帧格式
B.相同的物理层实现技术
C.相同的组网方法
D.相同的介质访问控制方法

正确答案: B

答案解析:

千兆以太网的传输速率比快速以太网快10倍,数据传输速率达到 1000Mbps。千兆以太网和快速以太网都保留着传统10Mbps速率以太网的所有特征(相同的数据帧格式、相同的介质访问控制方法、相同的组网技术),只是千兆以太网将传统以太网每个比特的发送时间由100ns降低到1ns,快速以太网降低到10ns。以太网、快速以太网和千兆以太网之间速率是10倍递乘,而发送时间是10递除,考生可以一同记忆。快速以太网标准IEEE 802.3u在LLC子层使用IEEE 802.2标准,在MAC子层使用CSMA/ CD方法,只是定义了新的物理层标准100BASE-T。100BASE-T标准采用介质独立接口MII,它将MAC子层与物理层分隔开来,使得物理层在实现100Mbps速率时所使用的传输介质和信号编码方式的变化不会影响MAC子层。

  1. 在邮件服务器之间实现邮件投递的协议是

A.IMAP
B.TFTP
C.SMTP
D.RARP

正确答案: C

答案解析

  • TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。
  • IMAP是由美国华盛顿大学所研发的一种邮件获取协议;
  • SMTP是一种提供可靠且有效电子邮件传输的协议。SMTP是建模在FTP文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。
  • RARP一般指反向地址转换协议。(RARP)允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。
  1. 下列关于交换机的叙述中,正确的是 () 。

A. 以太网交换机本质上是一种多端口网桥
B. 通过交换机互连的一组工作站构成一个冲突域
C. 交换机每个端口所连网络构成一个独立的广播域
D. 以太网交换机可实现采用不同网络层协议的网络互联

正确答案: A

答案解析:

  • 1990年问世的交换式集线器,可以明显地提高以太网的性能。交换式交换器常被称为以太网交换机或第二层交换机,说明交换机工作在数据链路层。在数据链路层扩展以太网的时候就要使用网桥,它是根据MAC帧的目的地址对收到的帧进行转发和过滤。从技术上讲,网桥的接口数一般很少,2~4个,而以太网交换机通常有十几个接口。因此,以太网本质上是一种多接口的网桥。
  • 交换机是数据链路层设备,能隔离冲突域,不能隔离广播域,其实质是一个多端口网桥。两个交换机间的子网构成一个冲突域。交换机位于数据链路,不能实现各种网络层协议的使用,因为其最高的层次只在数据链路层实现。
  • 实现不同网络层协议的网络互联是路由器的功能。

如果本篇博文有帮助到您,请动动小手,留个赞激励博主呐~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值