计网Lesson8 - NAT技术与链路层概述

文章目录

  • [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. 因特网的接入方式

光猫将电信号转换为数字信号发送给路由器

  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 帧发送的是连续字节流,必须前后都添加定界符以区分不同的帧。在同一个广播域中只能有两个节点,无法加入第三个节点,所以也并不需要物理地址。

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" 删除,从而还原出原来的数据。

2.3 差错检测

  • 奇偶校验
    • 对数据每次取一位进行异或,最终得到答案 1 1 1 或 0 0 0,代表数据中 1 1 1 的数量是奇数还是偶数,然后接收方按这个进行验证。
    • 奇偶校验只能应用于产生一个误码的情况,如果产生了多个误码,那么这种情况就不适用了。
  • 循环冗余校验(CRC):一般计算的链路层采用循环冗余校验CRC。
    • F C S FCS FCS 是根据帧的数据部分 + 数据链路层首部算出(也就是根据所有要发送的数据算出)。

    • F C S FCS FCS (帧检验序列)通常放在数据的尾部,而不是首部,主要有以下几个原因:

      1. 数据传输的顺序:在数据通信中,数据一般是按照从头到尾的顺序进行发送的。如果将FCS放在数据的首部,那么在数据发送之前就需要计算出FCS,这就意味着在发送数据之前需要先处理完整个数据帧,这可能会增加数据传输的延迟。

      2. 实时性:将FCS放在数据的尾部可以实现数据的实时处理。也就是说,在发送数据的同时,可以边发送边计算FCS,当数据发送完毕时,FCS也计算完毕,然后将FCS添加到数据的尾部并发送出去。

      3. 错误检测:在接收端,数据也是按照从头到尾的顺序进行接收的。如果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,说明数据有误,扔包。
相关推荐
nanjoh21 分钟前
lvgl学习笔记--基础对象1
笔记·学习
CrazyZ12626 分钟前
矩阵分析第三章矩阵的标准型笔记手稿
笔记·线性代数·矩阵
丶重明30 分钟前
【2024】前端学习笔记9-内部样式表-外部导入样式表-类选择器
前端·笔记·学习
lsnm2 小时前
<刷题笔记> 二叉搜索树与双向链表注意事项
数据结构·笔记·链表
zhaoyushi002 小时前
python自学笔记
windows·笔记·python
清流君3 小时前
【自动驾驶】控制算法(九)深度解析车辆纵向控制 | 从算法基础到 Carsim 仿真实践
人工智能·笔记·算法·自动驾驶·控制算法
凭栏落花侧3 小时前
现代前端框架实战指南:React、Vue.js、Angular核心概念与应用
前端·vue.js·经验分享·笔记·学习·react.js·前端框架
睡不着还睡不醒3 小时前
【操作系统强化】王道强化一轮笔记
笔记
笑鸿的学习笔记4 小时前
qt-C++笔记之作用等同的宏和关键字
c++·笔记·qt
freexyn4 小时前
Matlab自学笔记36:日期时间型的概念、分类和创建方法
数据结构·笔记·算法·matlab