小言_互联网的博客

Linux:数据链路层——以太网协议、NAT协议、ARP协议和DNS协议

438人阅读  评论(0)

以太网协议

数据链路层:数据链路层是OSI参考模型中的第二层,介乎于物理层和网络层之间。数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自物理层来的数据可靠地传输到相邻节点的目标机网络层。他的作用就是负责相邻设备的转发。
以太网:以太网不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容。以太网是当前应用最广泛的局域网技术,和以太网并列的还有令牌环网(已淘汰)和无线LAN等。

以太网帧格式

源地址和目的地址:指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出场是固化的
帧协议类型字段:有三种值,分别对应IP、ARP、RARP
帧末尾是CRC校验码
类型:指上层协议的类型。0800表示IP协议、0806表示ARP请求、0835表示ARP应答
数据:有效载荷,46~1500(MTU);1500:ipheader + tcpheader + 数据;46:如果从网络协议栈传递下来的数据没有达到46字节,会在数据前面默认补上0,以达到数据链路层对数据的限制

MTU以及MTU对IP协议的影响

MTU:就相当于发快递时对包裹尺寸的限制,这个限制是不同的数据链路对应的物理层产生的限制,以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位;最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片,不同的数据链路层标准的MTU是不同的;
IP:

将较大的IP包分成多个小包, 并给每个小包打上标签,每个小包IP协议头的 16位标识(id) 都是相同的,每个小包的IP协议头的3位标志字段中, 第2位置为0, 表示允许分片, 第3位来表示结束标记(当前是否是最后一个小包, 是的话置为1, 否则置为0),到达对端时再将这些小包, 会按顺序重组, 拼装到一起返回给传输层;一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是IP层不会负责重新传输数据



UDP:

对于UDP来说,有可能UDP数据递交给IP协议的时候,数据长度是大于数据链路层MTU的限制的,所以,有可能在IP协议进行分片传输,UDP协议本身是不负责数据的可靠传输的,IP协议也是不负责可靠传输的,所以,如果UDP数据再IP协议当中还进行了分片传输,万一有一个分片丢失.会导致整个UDP数据报丢失.

TCP:

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

ARP协议

ARP协议:是一个介于数据链路层和网络层之间的协议,它的作用是建立了主机IP地址和MAC地址的映射关系,说简单点就是获取相邻设备的MAC地址,在网络通讯时.源主机的应用程序知道目的IP地址和端口号,却不知道目的主机的硬件地址,数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃,因此在通讯前必须获得目的主机的硬件地址.
ARP数据报格式:

注意到源MAC地址\目的MAC地址在以太网首部和APR请求中各出现一次,对于链路层为以太网的情况是多余的,但是如果链路层是其它类型的网络则有可能是必要的
硬件类型:指链路层网络类型,1为以太网
协议类型:指要转换的地址类型0X0800为IP地址
硬件地址长度:对于以太网地址为6字节
协议地址长度和IP地址长度为4字节
op字段为1表示ARP请求,op字段为2表示为ARP应答

工作流程:

(1)源主机发出ARP请求,询问"IP地址是172.168.0.1的主机的硬件地址是多少",并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播)
(2)目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中
(3)每台主机都维护一个ARP缓存表,可以用arp-a命令查看.缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失败,下次还要发送ARP请求来获得目的主机的硬件地址

NAT协议

我们前面了解到,私有IP是不能访问互联网的,但是

NAT IP转换过程

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

静态NAT

静态NAT指的是私网主机的私网IP和公网IP进行1对1绑定,这种方式没有缓解IP地址枯竭的问题,因为还是一个1对1的关系,它的作用是隐藏主机IP地址

动态NAT

不局限于1对1 的映射关系了,当私网的主机想要访问互联网的时候,经过NAT网关,NAT网关分配一个空闲的公网IP进行使用,一旦私网IP和公网IP建立了映射关系之后,也是1对1的关系,也没有对IP地址枯竭的问题起到多大作用

动态NAT重载(NAPT)

静态NAT和动态NAT都只是转换了IP地址,而NAPT不仅转换了IP地址,还将数据当中的端口也转换了,在NAPT当中,一个公网IP可以对应多个私网IP,前提是对数据包当中的端口也进行了转换,一个公网IP最多可以转换2^16个私网IP

NAT技术的缺陷

(1)无法从NAT外部向内部服务器建立连接;
(1)装换表的生成和销毁都需要额外开销;
(3)通信过程中一旦NAT设备异常, 即使存在热备, 所有的TCP连接也都会断开

DNS协议

背景

TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序. 但是IP地址不方便记忆.于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系

一开始的时候,通过互联网信息中心来管理这个hosts文件,但是这样做以后如果一个新计算机要接入网络,或者某个计算机IP变更,倒要到信息中心申请变更hosts文件,其它计算机也需要定期下载更新版本的hosts文件才能正确上网,这样无疑是非常麻烦的,这就产生了DNS系统.
DNS协议:即域名解析协议,将浏览器当中输入的域名转化成为IP地址

常见的域名

1级域名:一级域名服务器
.com .gov .cn .net .us .edu
2级域名
Baidu.com
3域名
Baike.baidu.com

域名服务器

根域名服务器:用做授权使用,授权当前域名服务器是否能够提供域名解析服务
一级域名服务器 将用户提供的域名转化为IP地址返回请求者域名服务器当中一定保存了一个映射关系域名和IP的映射关系
二级域名服务器
三级域名服务器

使用 dig 工具分析 DNS 过程

使用 dig 指令查看域名解析过程:
使用dig 地址就可以看到了
结果解释:

1.开头位置是 dig 指令的版本号
2. 第二部分是服务器返回的详情, 重要的是 status 参数, NOERROR 表示查询成功
3. QUESTION SECTION 表示要查询的域名是什么
4. ANSWER SECTION 表示查询结果是什么. 这个结果先将 www.baidu.com 查询成了www.a.shifen.com, 再将www.a.shifen.com 查询成了两个 ip 地址.
5. 最下面是一些结果统计, 包含查询时间和 DNS 服务器的地址等


转载:https://blog.csdn.net/qq_43825377/article/details/115630126
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场