文章目录
- NAT 技术
- 1. 因特网的接入方式
- 2. 公网和私网
- 3. NAT 技术
- 链路层
- 1. 数据链路层概述
- 2. 数据链路层的三个问题
- 2.1 封装成帧
- 2.2 透明传输
- 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。