计算机网络笔记七(数据链路层:帧、MTU、ARP协议)

本文详细介绍了数据链路层的功能,重点讲解了以太网的标准、MAC地址的作用和特性,以及MTU(最大传输单元)在网络层和传输层的影响。此外,还深入探讨了ARP协议的工作原理,阐述了IP地址与MAC地址在通信中的角色。
摘要由CSDN通过智能技术生成

1.数据链路层

1.1主要功能

用于两个设备(同一种数据链路节点)之间进行信息传递。
网络层和数据链路层对比: 网络层是进行地址管理和路由选择的,它是为数据报的转发找出一条路来,而数据链路层解决的是两个结点直接的数据交换,接近于物理层的概念

1.2了解以太网

首先,以太网是当前应用广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN(WiFi、蓝牙)等
其次,以太网不是一种具体的网络, 而是一种技术标准; 它既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等
最后,以太网中的网线必须使用双绞线,传输速率有10M, 100M, 1000M等

1.3关于MAC地址

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

②为什么存在MAC地址还需要IP地址去标识互联网中的一台主机呢?
由于全世界存在着各式各样的网络,他们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转化工作,因此由用户或用户主机来完成这项工作几乎是不可能的的事。但IP编址就把这个复杂的问题解决了。
那有了IP地址为什么又要MAC地址?因为有一个IP给多个主机使用的情况,比如,手机开热点,大家共用你的热点进行数据传输,这时候对外的IP是一致的。那么就可以使用MAC地址区分。

③MAC地址和IP地址的对比
一个数据报中的源IP地址和目的IP地址是为了标识这个数据的起点和终点
源MAC地址和目的MAC地址是为了标识上一站的地址和下一站的地址
在一个数据报的传输过程中,IP一直不变,而MAC地址是一直在变的

1.4以太网MAC帧格式

在这里插入图片描述
由上图可以看出帧协议类型字段有三种值,分别对应IP、ARP、RARP(现在已经弃用)
源地址和目的地址是指网卡的硬件地址(也叫MAC地址), 长度是48位,是在网卡出厂时固化的。

2.关于MTU(最大传输单元)

2.1MTU基础概念

MTU相当于在发寄快递的时候对包裹的限制,这个限制是不同的链路层对应的物理层的限制

MAC帧中的数据长度规定为46-1500字节,ARP(地址解析协议)数据包的长度不够46字节要在后面补填充位,如果大于1500字节,必须要求网络层进行分片。
最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU
如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU,则需要对数据包进行分片。

2.2MTU对IP协议的影响

由于链路层存在MTU的限制,导致网络层的报文如果超过1500字节,就必须要对齐进行分片发送。

将较大的IP包分成多个小包, 并给每个小包打上标签,每个小包IP协议头的 16位标识(id) 都是相同的,这样在重组的时候就知道这个小包来自于哪个报文。
每个小包的IP协议头的3位标志字段中, 标志字段的最低位是MF(More Fragment),MF=1表示后面“还有分片”;MF=0表示最后一个分片。标志字段中间一位是DF(Don`t Fragment),只有当DF=0时才允许分片。
到达对端时再将这些小包按顺序重组, 拼装到一起返回给传输层。一旦这些小包中任意一个小包丢失,接收端的重组就会失败,但是IP层不会负责重新传输数据。

2.3MTU对UDP协议的影响:

只要UDP报文中携带的数据超过过1472(1500 - 20(IP首部) - 8(UDP首部)),那么就会在网络层分成多个IP数据报。
这些IP数据报有任意一个丢失,都会引起接收端网络层重组失败。那么这就意味着,如果UDP数据报在网络层被分片,整个数据被丢失的概率就大大增加

2.4MTU对TCP协议的影响:

TCP报文的长度不能无限大,依然要受制于MTU, TCP的单个数据报的大消息长度称为MSS(Max Segment Size)。
TCP在建立连接时,首先会和对方协商MSS的大小。理想的情况下,MSS的值正好是在IP不会被分片处理的大长度(这个长度仍然是受制于数据链路层的·MTU)
双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值。然后双方得知对方的MSS值之后选择较小的作为最终的MSS。MSS的值就是在TCP首部的40字节变长选项中(kind=2)。
MSS = MTU - TCP首部 - IP首部,既TCP报文的数据长度

在Linux系统中可以使用ifconfig命令查看MAC、IP和MTU:

3.ARP协议

3.1基础概念

地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代。

3.2ARP协议工作过程

假设主机A和B在同一个网段,主机A要向主机B发送信息,具体的地址解析过程如下:
(1) 主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。

(2) 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。

(3) 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。

(4) 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。

总结:不同主机的进程间通信依赖IP加端口号来标识进程,之前还打过比方:IP相当于住址,端口号相当于某个人,但是有时会出现一个IP地址有多个主机(共享热点),那么这里就要注意了,并不是一个IP有多个主机,而是每一个手机都有主机的IP只不过是私有IP,它们想与Internet通信依靠的是公有IP,也就是说,每个手机都有一个IP(私有),但是与外界通信用的是公有IP,私有IP外界不可见。所以,这里有个结论:一个IP地址对应一个MAC地址,一个MAC地址可以对应多个IP地址。我们通常说的IP地址一般都是指公有IP,公有IP当然不可重复,但是私有IP在不同的局域网中可以重复!所以,可以这样说,IP只负责网络与网络间的通信(当然前面网络层笔记中也这样说了)。那么,显然又有问题了,既然私有IP不可见,全部依靠公有IP通信,那么究竟是怎么知道是哪个私有IP的主机在通信呢?这里就涉及到NAT(Network Address Translator)网络地址转换,它实现内网的IP地址与公网的地址之间的相互转换,将大量的内网IP地址转换为一个或少量的公网IP地址,减少对公网IP地址的占用。所以,网络与网络间依靠IP协议(好比机场与机场间,客运站与客运站间),数据链路节点间通信就要数据链路层的MAC地址要MAC帧(机场与机场间的飞机),那么也就需要ARP协议了,要找到IP地址与MAC地址,有了这两个才能正常通信。

注意:是路由与ARP都需要,路由考虑的是武汉到北京是通过飞机走还是火车走,选择的路线是什么。ARP只是说当不知道MAC地址时可以通过ARP协议找到MAC地址,MAC地址显然在通信时也是必不可少的,数据链路层考虑的是既然路由选择飞机,那么我该怎么飞。至于前面说的私有IP公有IP之类,暂时先放放,一律按公有IP看,因为我们已经知道了有个叫NAT的东西可以实现公有与私有的转换。或者说先把那局域网中的那些私有IP全部用布盖起来,看成一个拥有公有IP的主机,当消息传到这个主机后,究竟再传给哪个就看NAT之类的了。

通信时不仅仅要知道IP地址,也要知道MAC地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值