赞
踩
数据链路层作为四层协议中的最后一层,IP协议最大的意义在于路径的选择,是由路由查询决定的。而如何将数据包进行发送则是由数据链路层决定的。
报文在不同的层的称呼不同:
应用层:请求与响应
传输层:数据报
网络层:数据包
数据链路层:数据帧
两个结论:
1.凡是能够跳转到下一跳:一定是两个相连的节点。
2.直接相连的节点一定在同一个网段里(可以理解成在同一个局域网中)。因此我们需要明确,数据链路层实际上是在局域网中起主要作用的。
1.以太网不是一个具体的网络,而是一种技术标准,既包含了数据链路层的内容,也包含了一些物理层的内容,例如:规定了网络拓扑结构,访问控制方式,传输速率等。
2.以太网中的网线必须使用双绞线:传输速率有10M,100M,1000M。
3.以太网是当前应用最广泛的网络技术,和以太网并列的有令牌环网,无限LAN等。
每一层都会添加自己的报头的:
以太网在发送数据的时候也会为网络层下来的有效载荷添加报头等信息。只不过它不像传输层等添加固定格式的报头,而是根据要提交的上层协议来添加报头格式。
注意,在数据链路层和网络层中间也可能有一些协议,来完成不同的工作。因此数据链路层向上提交的协议不同,添加的报头就不同。
它的总体格式可以分为三种,分别是提交给IP,ARP,RARP。
注意这里是以字节为单位的,而不是比特位。
源地址和目的地址是指网卡的硬件地址(也叫mac地址),长度是48位,是网卡出厂时固化的。
1.MAC地址用来识别数据链路层中相连的节点。
2.长度为48位,及6个字节,一般用16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)
3.在网卡出厂的时候就确定了,不能修改,mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址,可能发生冲突,也有些网卡支持用户配置mac地址)。
IP是整个路途的终点和起点。
MAC地址描述的是路途上的每一个区间的起点和终点。
在IP中讲过,由于数据链路层有最大的数据承载量(即IP报文不能超过1500字节),该最大承载量称为MTU,因此需要对IP报文进行分片处理。同时也有最小的大小规定,即如果小于46字节要在后面添加补充位。
UDP是面向数据报的,它是没有缓冲区的:
一旦UDP携带超过1472(1500-20(IP首部)-8(UDP首部)),那么就会在网络层分为多个数据包。这样多个IP数据包有任意一个丢失,都会引起接收端网络层重组失败,那么意味着,如果UDP数据报在网络层被分片,整个数据被丢失的概率就大大增加了。
TCP是面向字节流的,它是有缓冲区的:
这样就可以通过TCP来控制向网络层发送的数据量的多少了,但是其实TCP的数据长度也不能无限长,它也有一个限制,称为MSS。
TCP在建立链接的过程中,通信双方会进行MSS协商。
最理想的情况下,MSS的值正好是在IP不会分片处理的最长长度(这个长度仍然是受限于数据链路层)。
双方在发送SYN的时候会在TCP头部添加自己能支持的MSS值。
然后双反得知对方的MSS的值之后,选择最小的作为最终MSS。
MSS的值就是在TCP首部的40字节变长选项中(kind=2)。
可以通过ifconfig来查看大部分硬件的数据:
当报文到达局域网的时候,需要通过MAC地址来找到目标主机,但是我们只有一个目标主机的IP地址,该如何找到目标主机的MAC地址呢?
此时就需要引入ARP协议来完成这一工作,当报文进入局域网中的入口主机的时候,会通过广播的形式先查找到目标主机,找到后目标主机再向其发送他的MAC地址。
其中ARP请求报文中包含目的IP,在局域网中的每一台主机都会接收到该报文,并将其进行解包,拿到其中的目的IP和自己的IP进行对比,如果相等则说明是发送给自己的报文,如果不相等则丢弃。
当B主机收到A主机发送来的ARP报文之后,会构建一个ARP的响应报文,该报文就含有B主机的MAC地址信息,A主机收到该报文之后就可以拿到B主机的MAC地址来与其进行通信了。
注意,是以字节为单位的。
注意但目的MAC地址,源MAC地址在以太网的首部与ARP的请求中各出现一次,对于以太网是数据链路层的情况是多余的,但是对于其他 的数据链路层也许是必要的。
硬件类型指的是数据链路层网络类型,1表示以太网。
协议类型指要转换的地址类型,0x800为IP的协议类型。
硬件地址长度对于以太网地址时6字节。
协议地址长度对于IP地址是4字节。
op字段为1表示ARP请求,op为2表示ARP应答。
ARP协议是属于数据链路层的协议。
当MAC协议层通过对有效载荷的解析发现是ARP的请求或者应答的时候,会将报文直接交给ARP协议,ARP协议对报文进行处理之后再返回给MAC协议,此时就不会经过网络层,如果MAC协议通过解析发现是一个IP协议的话,就会将数据发送给网络层,并一层一层向上处理。
假设主机A向主机B发消息,其中MACA和MACB分代表两者的MAC地址,IPA和IPB分别代表两者的IP地址。
由于在请求的时候,还并不知道MACB的值,因此将目的MAC地址填为全F。同时数据链路层有要求,发送的数据不能小于46个字节,不能大于1500个字节,因此需要后面的PAD来补位18位。
在发送请求报文的时候,是以广播的形式发送的,这就意味着所有的主机都需要对该报文进行解包,解包之后会先看op(因为代表的是请求还是响应),然后再看IP地址。这是因为局域网中任何一台主机既可以向别人发起ARP,也可以被别人发起ARP。
由于每次都进行ARP的效率太低了(每次有传输报文的时候都要发送一次广播一次ARP),因此系统中会将ARP做一些缓存,一定时间后再清理缓存。
使用arp -a的指令可以查看arp缓存:
RARP协议就是将ARP协议反过来,根据MAC地址找到IP地址,也是通过先广播后单向传输的方式。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。