阿鲤在之前已经把应用层,传输层,网络层都总结分享了;但是还差链路层,今天补上
在说链路层之前,让我们先认识一下以太网
①:以太网不是一种具体的网络结构,而是一种技术标准;即包含了数据链路层的内容,也包含了一些物理层的内容;eg:网络拓扑结构,控制访问方式,传输速率等;
②:例如以太网中的网线必须使用双绞线;传输速率有10M,100M,1000M等
③:以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网,无线LAN等
介绍了这么多,那么以太网帧的格式是怎样的?
①:源地址/目的地址:指的MAC地址(网卡的硬件地址),长度是48位,在网卡出厂时就固定化了
②:类型:IP,ARP,RARP
③:CRC:校验和
ok,我们大致知道了以太网帧的格式,接下来让我们具体看看MAC地址;
①:mac地址是用来标识数据链路层中相连的节点的;
②:长度为48位,也就是6字节;一般使用16进制加上冒号的形式来表示;eg:08:00:27:03:fb:19
③:mac地址在网卡出厂的时候就确定了,不能修改。mac地址是唯一的,有的虚拟机中可以修改,但是虚拟机中的mac地址不是真实的,可能会产生冲突。
注意:在网络通信中,ip地址是用来标识起点和重点的;而mac地址使用来标识每一个区间的起点和终点的
ok,我们了解了MAC地址,再让我们看看以太网帧中的数据
MTU就相当于我们在发快递时对包裹尺寸的限制;
①:以太网帧中的数据长度规定,最小46字节,最大1500字节;ARP数据包的长度不够46字节,需要在后面填充
②:最大值1500称为以太网的最大传输单元MTU,不同的网络类型有不同的MTU
③:如果一个数据包的大小超过了MTU,就需要在链路层对数据进行分包
④:不同的数据链路层标准的MTU是不同的
我们了解了MTU,那么MTU对tcp,udp这些网络层的协议会有什么影响呢?对ip协议又有什么影响呢?
MTU对ip协议的影响:
由于MTU的限制,对于较大的ip包会进行分包
①:将较大的ip包分成多个小包,并且给每个小包打上标签(ip协议中的标识)
②:每个小包的ip协议头的3位标志字段,进行分片标志(第一位为0,第二位为1,第三位为结束标志)
③:接收端收到之后会对数据进行重组;如果重组失败,就会丢弃,而且ip不会负责数据重传
MTU对UDP协议的影响:
①:udp协议规定的数据不能超过1472(1500-20(ip首部)-8(udp首部));若已超过这个大小,就会进行分片;分片就会增加丢包的几率;所以要控制udp数据的大小,小于1472
MTU对TCP协议的影响:
①:tcp协议 单个数据报的长度是通过MSS来控制的;在连接建立的时候,双方会协商这个MSS的大小
②:mss的大小是不可能大于mtu的,因为mtu的大小=ip头部大小 + tcp头部大小 + MSS(数据)
ok,说了这么多,那么怎样在linux中查看硬件地址会MTU呢?
ifconfig
说了mac地址,MTU,以太网协议帧格式,都是为了看链路层数据的发送方式打铺垫的。
在网络传输中,ip地址使用来标识源端和目的端的,而mac地址是用来标识每一个节点的。
为了将ip地址和mac地址关联起来;在以太网中使用ARP协议对ip地址和mac地址进行映射;
ARP协议的作用
在网络通信的时候,源主机的应用程序知道目的主机的ip地址和端口号,却不知道目的主机的硬件地址;而数据报在被网卡收到之后,如果数据报的硬件地址和网卡地址不符,就会被丢弃。
因此在通讯前必须获得目的主机的硬件地址;ARP协议就是解决这个问题的。
ARP的工作流程
①:源主机发送ARP请求,询问对应ip地址的mac地址;并将这个请求广播到本地网段(mac地址的FF:FF:FF:FF:FF:FF标识广播)
②:目的主机接受到广播的ARP请求,发现其中的ip地址与本机相符,则发送一个ARP应答包给源主机,将自己的硬件地址填写在应答包中;
③:每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟)。这个的原因是因为ip地址是动态分配的,会改变。
APR数据报格式:
硬件类型:链路层网络类型,1为以太网
协议类型:指要转换的协议类型,0X800为ip协议
硬件地址长度:对于以太网,就是6字节
协议地址长度:对于ip协议就是4字节
op字段:1标识ARP请求,2表示ARP应答
好了,以上就是阿狸对链路层学习的总结了,希望可以帮助到大家;若有误,请慷慨指出。