数据链路层典型协议–以太网协议
文章目录
前言
名词 | 内容 |
---|---|
数据链路层 | 负责数据之间数据帧的传送和识别 |
数据链路层协议 | 负责相邻设备之间的数据传输 |
以太网协议 | 内部描述了相邻设备的mac地址 |
链路层典型设备 | 交换机 |
1 以太网协议
以太网协议并不是一个具体的网络,而是一种技术标准,既包含数据链路层的内容,也包含了物理层的内容,如,规定了网络的拓扑结构,访问控制方式,传输速率等。
以太网中的网线就必须得使用双绞线,传输速率不同,有10M,100M,1000M等。
以太网是目前使用最广泛的局域网技术,并列的有令牌环网,无线LAN等。
1.1 协议格式
[dev@localhost ~]$ vi /usr/include/linux/if_ether.h
48位源端IP地址 & 48位对端IP地址
:描述相邻两个硬件设备,及mac地址16位协议类型
:所封装的报文数据所使用的协议类型,及上一层封装数据所用的协议
有三种值,分别对应IP,ARP,RARP。32位差错校验和(CRC)
:进行差错校验
那如何知道指定相邻设备的mac地址呢?实际上是依赖于arp协议。
2 ARP协议
介于数据链路层和网络层之间的协议,既包含了mac地址又包含了IP地址。
是通过IP地址,获取指定设备的mac地址,建立了IP地址和mac地址之间的映射关系。
获取指定设备硬件地址流程:
- 当前主机封装一个arp请求,在请求中填充源端mac及IP地址信息,且将以太网帧头中的目标mac地址填充为:0XFFFFFFFFFFFF – 广播地址
- 将arp请求广播给所有相邻设备,即局域网广播
- 收到arp请求的主机,对数据帧进行解析,若目标IP地址匹配则填充自己的mac地址和IP地址进行响应,若不匹配则直接丢弃
- 当前主机收到响应之后,就知道了目标主机的mac地址
- 当前主机将 mac-ip 映射关系缓存起来,并保存一段时间
ARP欺骗攻击(局域网攻击):
恶意主机伪造IP地址不断给网关设备发送arp响应,告诉网关自己这就是子网中的XX主机;给子网中的其它主机不断发送arp响应,告诉其它主机自己是网关设备。
承担这两种角色的设备就会被不断得到的arp响应覆盖自己的arp映射表,普通主机认为恶意主机是网关,将数据发送给恶意主机,网关认为恶意主机就是指定的设备,也会将响应发送给恶意主机。
3 MTU认识
最大传输单元,链路层限制的最大数据帧大小。
3.1 MTU对传输层的影响
mtu对tcp协议的影响:
tcp在进行三次握手阶段会协商mss的大小,而mss是根据mtu计算得到的一个值(mss=mtu-40)
,在之后的传输数据中,每次则从缓冲区中取出合适大小的数据进行头部封装传输,tcp在传输层会自动进行数据分段,因此不会在网络层出现数据分片的情况。
mtu对udp协议的影响:
udp并没有mss协商这一步骤,只要数据大小最大小于 64k-8-20
就可以传输,但是可能会在网络层因为数据大于mtu而导致出现分片情况。其中,所有的分片需要在对端主机上进行重组,重组失败就会丢弃数据,所以分片越多,数据丢失的风险就会越大,故程序员在设计udp数据传输的时候,尽量在应用层考虑mss,也就是尽量在数据传输的时候提前将报文分割好,减少在网络层的数据分片。
4 MAC地址
1 mac地址用来识别数据链路层中相连的节点
2 长度6字节,48位,一般用16进制数加上冒号来进行表示,如08:00:27:03:fb:19
3 mac地址在网卡出厂时就已经确定,不可修改
5 其它典型协议
5.1 icmp协议
网络层协议,用于进行网络探测,工作在网络层,不涉及到对端口的处理。
ping工具就是基于该协议来进行实现的。
ping流程如下:
- 给指定的主机发送icmp请求,要求对方进行icm响应
- 若对方路由器得不到指定主机的响应,就会组织对应的目标主机不可达的响应进行返回
5.2 dns协议
dns,域名系统。
在网络中,各个服务器非常多,然而请求服务器需要用到IP地址,但是IP地址并不容易记忆,所以就出现了域名。
域名,服务器的别名,一个便于记忆的字符串,不区分大小写。
其中,为解决压力分摊问题和容灾,又对域名服务器进行了层级上的划分,即根域名服务器,一级域名服务器,二级域名服务器。
同时针对不同等级域名也进行了划分,即顶级域名,二级域名,三级域名等来便于域名的管理,让不同的域名服务器去管理不同的域名。
顶级域名服务器种类:
- 根据使用性质来进行划分
.com
.org
.gov
.net
.edn
等- 根据地域划分
.cn
.us
等
域名服务器对域名的管理:
.com
域名服务器管理商业性质域名:
eg:.baidu.com
/.qq.com
.baidu.com
服务器管理:
eg:.zhidao.baidu.com
/.image.baidu.com
域名解析流程:
查看浏览器缓存,查看host文件,请求本地域名服务器,如果本地没有缓存的该域名,就会请求根域名服务器,再层层往下进行请求。
- 查看缓存中是否存在映射关系
- 查看主机hosts文件中是否存在映射关系
- 请求本地dns服务器
- 本地dns服务器–>请求根域名服务器–>请求一级域名服务器–>请求二级域名服务器
- 本地dns服务器,请求指定的一级域名服务器
- 本地dns服务器,请求指定的二级域名服务器
浏览器中输入url回车之后的过程:
- 首先进行域名解析,得到服务器IP地址
- 搭建tcp客户端,连接服务器
- 组织http请求发送给服务器
- 等待服务器响应,得到响应后,进行响应内容解析,处理正文数据
5.3 NAT技术 & NAPT技术
NAT:
网络地址转换技术和网络地址端口转换技术。
都用于组建私网,对流经网关设备的数据进行源端和目的端地址替换。
NATIP转换过程:
- NAT路由器将源端地址从 10.0.0.10 转换为对外的公网地址 202.244.174.37
- NAT路由器在收到外部的数据时,又将目标IP地址从 202.244.174.37 转换为 10.0.0.10
- 在nat路由器内部维护了一张用于地址转换的表
- 当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成该表中的映射关系
若局域网内,有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,目的端IP都是一致的,那么NAT路由器怎么知道要将该数据包转发给哪个局域网的主机呢?
这就得用到NAPT来解决该问题,使用 ip-port 来建立关联关系。
NAPT:
NAT路由器自动维护,在tcp情况下,建立连接时就会生成该表,在断开连接的时候就会被删除。
5.4 代理服务器
将中间的请求转发给服务器,工作在应用层,可部署在任意主机上。
工作过程:
客户端向代理服务器发送请求,代理服务器将请求转发给真正要请求的服务器,服务器返回结果后,代理服务器又把结果回传给客户端。NAT和代理服务器的区别:
- 从应用上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题. 代理服务器则是更贴近具体应用, 比如通过代理服务器进行翻墙, 另外像迅游这样的加速器, 也是使用代理服务器.
- 从底层实现上讲, NAT是工作在网络层,直接对IP地址进行替换. 代理服务器往往工作在应用层.
- 从使用范围上讲, NAT一般在局域网的出口部署, 代理服务器可以在局域网做,也可以在广域网做,
- 从部署位置上看, NAT一般集成在防火墙, 路由器等硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上
代理服务器是一种应用比较广的技术:
- 翻墙:广域网中的代理.
- 负载均衡:局域网中的代理.