文章目录
- [NAT 技术](#NAT 技术)
-
- [1. 因特网的接入方式](#1. 因特网的接入方式)
- [2. 公网和私网](#2. 公网和私网)
- [3. NAT 技术](#3. NAT 技术)
- 链路层
-
- [1. 数据链路层概述](#1. 数据链路层概述)
- [2. 数据链路层的三个问题](#2. 数据链路层的三个问题)
-
- [2.1 封装成帧](#2.1 封装成帧)
- [2.2 透明传输](#2.2 透明传输)
- [2.3 差错检测](#2.3 差错检测)
NAT 技术
1. 因特网的接入方式
光猫将电信号转换为数字信号发送给路由器
- 光纤入户
光纤传递的就是数字信号,不需要转换
2. 公网和私网
所以私网 IP 想进入公网,需要先将私网 IP 转换为公网 IP
3. NAT 技术
- NAT 转换
- 静态转换
- 每个私网 IP 有个固定与之对应的公网 IP
- 动态转换
- 每个私网IP 在需要发送数据时进行动态申请,路由器在 IP 池里选一个分配给私网 IP
- PAT
- NAT 将相同主机的不同端口对应到同一公网 IP 的不同端口上
- NAT 将不同主机也会对应到同一公网 IP 的不同端口上
- 内部网络的所有主机均可共享一个合法外部 IP 地址实现对 Internet 的访问,从而可以最大限度地节约 IP 地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自 internet 的攻击。
- 静态转换
链路层
1. 数据链路层概述
- 链路是指从一个节点到相邻节点的一段物理线路(不管有线无线),而且中间没有其他交换节点
- 集线器本身就只是一种线路连接设备,没有任何交换行为存在
- 交换机有交换行为,所以是一个节点
- 信道
- 广播信道用于局域网,也就是私网中。
- 点对点信道用于骨干网中路由器的接受与发送。
- 链路与数据链路的关系
- 链路包含数据链路
- 在数据传输的过程中,会经过多条链路,每条链路上的数据链路协议可能不同,这些协议可能包括以太网协议、局域网协议、无线协议等。这些协议都属于数据链路层的协议,它们的主要作用是在不可靠的物理链路上建立可靠的数据传输。
2. 数据链路层的三个问题
2.1 封装成帧
-
帧(Frame)的数据部分是从 IP 层传下来的数据包
-
最大传输单元 MTU(Maximum Transfer Unit)
- 每一种数据链路层协议都规定了所能传输的帧数据长度上限
- 以太网的 MTU 为 1500 1500 1500 字节
-
以太网V2的 MAC 帧
- 以太网多用于边缘网络上的主机与路由的互联。
- 所以帧中包含了 MAC 地址,标记目标
- 最小帧长为 64 64 64 字节 ,其中 MTU 最小为 46 46 46 字节。
- 当数据不足 46 B 46B 46B 时,协议会对数据包进行填充补 0 0 0
- 以太网帧的接收
- 以太网帧使用曼彻斯特编码,每一个码元的正中间都一定会有一次电压的跳变,当以太网把一个 MAC 帧发完过后就不在发送其他的码元了(MAC 帧之间都是有一定间隙的),所以这样就很容易找到帧的结束位置。
- 而 MAC 帧前含有前导码标记数据的开始
- 以太网多用于边缘网络上的主机与路由的互联。
-
PPP 帧
- PPP 帧的接收
- PPP是一种点对点协议,逻辑上相连的就一台设备,因此不需要寻址。PPP 在封装方式以以太网的封装方式不同,它没有以太网帧所要求的 MAC 地址,它通过自身的协商过程实现点到点的数据传输。PPP 帧发送的是连续字节流,必须前后都添加定界符以区分不同的帧。在同一个广播域中只能有两个节点,无法加入第三个节点,所以也并不需要物理地址。
- PPP 帧的接收
2.2 透明传输
-
透明传输是指数据链路层对上层交付的数据不做任何改变,使得上层感受不到有数据链路层的存在。
不做任何改变是指上层接收到的数据跟发送来的数据一致,而不是数据链路层不对数据做任何操作。
- 发送方数据链路层会对数据做出操作,然后在接收方的数据链路层将操作去除,让接收方的网络层拿到的数据跟发送时的一样,对于双方网络层来说是"透明的"。
-
面向字节的物理链路使用
字节填充法
实现透明传输。
- 数据链路层将网络层协议封装成帧时,会在首部和尾部分别添加SOH以及EOT这两个特殊字符,接收方是根据这两个字符来确定帧首和帧尾的。
- 如果上层协议发送过来的数据(即链路层的数据部分)包含EOT,那么接收方在解析这个帧的时候就会误以为数据已经结束1。所以,如果链路层对这种情况没有特殊处理,那么就可以理解链路层为非透明传输(因为无法传输EOT这个字符)。
- 但是数据链路层通过对这个字符添加转移符(如果网络层数据中还存在转移符,就再添加一个转移符)的办法来使数据部分可以传输EOT字符,就实现了透明传输。
-
面向比特的物理链路使用
零比特填充法
实现透明传输。- 在 PPP 协议和 HDLC 协议中,都使用了这种方法。
- 零比特填充法 :当数据中出现连续 5 5 5 个 " 1 " "1" "1" 时,在其后面插入一个 " 0 " "0" "0"。接收端在接收到数据时,如果发现连续 5 5 5 个 " 1 " "1" "1",就将其后面的 " 0 " "0" "0" 删除,从而还原出原来的数据。
- 在 PPP 协议和 HDLC 协议中,都使用了这种方法。
2.3 差错检测
- 奇偶校验
- 对数据每次取一位进行异或,最终得到答案 1 1 1 或 0 0 0,代表数据中 1 1 1 的数量是奇数还是偶数,然后接收方按这个进行验证。
- 奇偶校验只能应用于产生一个误码的情况,如果产生了多个误码,那么这种情况就不适用了。
- 循环冗余校验(CRC):一般计算的链路层采用循环冗余校验CRC。
-
F C S FCS FCS 是根据
帧的数据部分
+数据链路层首部
算出(也就是根据所有要发送的数据算出)。 -
F C S FCS FCS (帧检验序列)通常放在数据的尾部,而不是首部,主要有以下几个原因:
-
数据传输的顺序:在数据通信中,数据一般是按照从头到尾的顺序进行发送的。如果将FCS放在数据的首部,那么在数据发送之前就需要计算出FCS,这就意味着在发送数据之前需要先处理完整个数据帧,这可能会增加数据传输的延迟。
-
实时性:将FCS放在数据的尾部可以实现数据的实时处理。也就是说,在发送数据的同时,可以边发送边计算FCS,当数据发送完毕时,FCS也计算完毕,然后将FCS添加到数据的尾部并发送出去。
-
错误检测:在接收端,数据也是按照从头到尾的顺序进行接收的。如果FCS在数据的首部,那么在接收到FCS之后就需要等待接收完整个数据帧才能进行错误检测。而如果FCS在数据的尾部,那么在接收数据的同时,可以边接收边进行错误检测,当接收到FCS时,就可以立即完成错误检测。
因此,将FCS放在数据的尾部,既可以提高数据传输的效率,又可以实现数据的实时处理和错误检测,这是一种更为合理和高效的设计方式。
-
-
基本思想:
- 收发双方规定一个
生成多项式
。 - 发送方根据生成多项式计算出 F C S FCS FCS 放在数据尾部发送出去。
- 接收方根据数据算出 F C S FCS FCS 跟尾部校验数据正确性。
- G ( X ) = X 3 + X 2 + 1 G(X) = X^3 + X^2 + 1 G(X)=X3+X2+1:这就是生成多项式 。
意思就是: 1 1 1 后面 3 3 3 个 0 0 0, 2 2 2 个 0 0 0, 0 0 0 个 0 0 0。也就得到了我们的除数: " 1101 " "1101" "1101" - 构造被除数 (补 0 0 0):根据我们的生成多项式的最高次补,最高次是几就补几个 0 0 0。
- 二进制模 2 2 2 除法:就是异或运算,只要位数够了就进行异或。
- 补余数 :将余数补到被除数上,这样被除数就可以被除数整除了。
- 校验也是同理,如果最后运算答案为 0 0 0,说明整除,数据正确;如果非 0 0 0,说明数据有误,扔包。
- 收发双方规定一个
-