打开抖音互联网会发生什么?(一)- 计网基础(上) | 青训营笔记

104 阅读14分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

01 重点内容

  • 计算机网络概述

    • 层次结构
    • 网络拓扑
    • 性能指标
  • 物理层

  • 数据链路层

    • 概述
    • 差错检测方法
    • 最大传输单元MTU
    • 以太网协议
  • 网络层

    • 网络层IP协议相关
      • IP协议
      • 子网划分
      • 简单路由过程
    • 网络层其他协议
      • ARP和RARP(结合数据链路层一起使用)
      • ICMP协议
    • IP的路由算法
      • 路由概述
      • 内部网关路由协议
      • 外部网关路由协议

02 详细知识点介绍

2.1 计算机网络概述

  • 什么是计算机网络

    • 计算机网络主要由些通用的、可编程的硬件互连而成,通过这些硬件,可以传送不同类型的数据

      • 计算机网络的不是软件概念,还包含硬件设备
      • 计算机网络不仅仅是信息通信,还可以支持广泛的应用.
  • 分类

    • 广域网(WAN)
    • 城域网(MAN)
    • 局域网(LAN):1KM以内,地区内、公司内
    • 按照网络使用者分类:公用网 & 专用网
  • 层次结构

    • 功能繁多复杂,需要分层实现不同功能

      • 保证数据通路顺畅
      • 识别目的计算机
      • 目的计算机状态
      • 数据是否错误
    • 设计的基本原则

      • 各层是相互独立的

        • 某一层不知道上下层如何实现
        • 只需要知道如何通过上下层提供的接口实现本层的功能
      • 各层之间完全解耦

        • 每一层的上一层或者下一层的变化不影响本层的稳定、
        • 使得每一层易于实现和维护
      • 每一层要有足够的灵活性

    • OSI七层模型image.png

    • TCP/IP四层模型image.png

      • 进行通信时不同设备使用协议的转变image.png
      • 包含协议(沙漏状)image.png
  • 网络拓朴image.png

    • 边缘部分(用户可以直接连接的部分)
      • 家庭image.png
      • 企业image.png
    • 核心部分(涉及海底地缆等)image.png
    • 站在用户的角度
      • C/S模式 image.png
      • P2P模型 image.png
  • 性能指标

    • 存储信息的大小image.png
    • bps=bit/sbps = bit / s
      • 为什么电信拉的100M光纤,测试峰值速度只有12M每秒?image.png
    • 时延 = 发送时延 + 传播时延 + 排队时延 + 处理时延
      • 发送时延 = 数据长度(bit) / 发送速率(bps)
        • 发送速率由计算机网卡决定
      • 排队时延:数据包在网络设备中等待被处理的时间
      • 处理时延:数据包到达设备或者目的机器被处理所需要的时间(与服务器、路由器性能有关系)
    • 往返时间RTT(Route-Trip Time)
      • 数据报文在端到端通信中的来回一次的时间
      • 评估网络质量的重要指标
      • ping命令

2.2 物理层

image.png

  • 物理层的作用
    • 连接不同的物理设备(e.g.海底地缆、网线)
    • 传输比特流(0101的高低电平/数字信号)image.png
    • 介质
      • 双绞线image.png
      • 同轴电缆image.png
      • 光纤image.png
      • 红外线(遥控)
      • 无线(WiFi信号)
      • 激光
  • 信道
    • 往一个方向传送信息的媒体
    • 通信电路:一个接收信道 + 发送信道image.png
    • 发送与接收引发怎么办
      • 单工通信信道
        • 只能一个方向通信,没有反方向反馈的信道
        • e.g.有线电视、无线电收音机等等只能接收信号
      • 半双工通信信道
        • 双方都可以发送和接收信息
        • 不能双方同时发送,也不能同时接收
      • 全双工通信信道
        • 双方都可以同时发送和接收信息
        • e.g.网线、网络......现在主流
  • 分用-复用技术
    • 提升信道利用率image.png
    • 分类
      • 频分复用
      • 时分复用
      • 波分复用
      • 码分复用

2.3 数据链路层

image.png

2.3.1 基本功能

  • 封装成帧

    • "帧”是数据链路层数据的基本单位
      • bit是物理层的基本单位
    • 发送端在网络层的一段数据前后添加特定标记形成“帧”
    • 接收端根据前后特定标记识别出“帧”
    • 物理层才不管你“帧” 不“帧” ,无脑bit流传输
      • 相互独立相互解耦
    • 结构image.png
      • 帧首部和尾部是特定的控制字符(特定比特流) image.png
  • 透明传输

    • “透明”在计算机领域是非常重要的一个术语
      • "一种实际存在的事物却又看起来不存在一样"
      • “即是控制字符在帧数据中,但是要当做不存在的去处理”
    • 解决比特流中含有特殊比特流的问题
      • 转义字符image.png
      • 数据中也出现转义字符怎么办
        • 还是加一个转义字符image.png
      • 与编程中解决转义字符思路一样
  • 差错检测

    • 物理层只管传输比特流,无法控制是否出错
      • 比如打雷闪电引起的错误
    • 循环冗余校验码(CRC)
      • 根据传输or保存数据而产生固定位数校验码的方法
      • 检测数据传输或者保存后可能出现的错误
      • 生成的数字计算出来并且附加到数据后面
      • 检错能力与位串的阶数r有关
        • 若r==1,则退化为奇偶校验
      • 数据链路层只进行数据的检测,不进行纠正——丢弃

image.png

image.png

image.png

image.png

image.png

2.3.2 最大传输单元MTU

  • MTU
    • 数据链路层的数据帧不是无限大的
      • 用于描述数据帧的最大长度
    • 数据帧过大过小都会影响传输效率
      • 太大会增加总时延
      • 太小会重复发送太多
    • 以太网MTU一般为1500Byte
  • 路径MTU
    • 计算机A通过若干小型网络到达计算机B,其中的MTU各不同
    • 路径MTU由链路中MTU的最小值决定

image.png

2.3.3 以太网协议

  • 假设有以下网络拓朴通过路由器连接,路由器如何知道A要发送给谁 image.png
  • MAC地址
    • 物理地址、硬件地址
    • 每一个设备都拥有唯一的MAC地址
    • 共48位,用十六进制表示
      • 六对数字/字母
    • 使用ipconfig /all显示所有物理设备的MAC地址
  • 以太网协议
    • 广泛使用的局域网技术
    • 应用于数据链路层的协议
    • 使用以太网可以完成相邻设备的数据帧传输
    • 协议格式 = 目的MAC地址 + 源MAC地址 + 类型 + 帧数据 + CRC校验码image.png
    • MAC地址表image.png
      • A通过网卡发送数据帧
      • 数据帧到达路由器,路由器取出前6 Byte
      • 路由器匹配MAC地址表,找到对应的网络接口
      • 路由器往该网络接口发送数据帧
    • 若MAC地址表有未知项
      • 路由器E检查MAC地址表,发现没有C的信息
      • E将广播A的数据包到除A以外的端口
      • E将接受B、C的回应,并将地址记录
    • 因为以太网只能进行相邻物理节点的传输(MAC地址表功能有限),所以想要进行跨设备传输数据,需要网络层image.png

2.4 网络层

image.png

image.png

image.png

2.4.1 网络层IP协议相关

  • 虚拟互联网络

    • 实际的物理网络是十分复杂的
    • 物理设备通过使用IP协议,屏蔽了物理网络之间的差异
    • 当网络中的主机使用IP协议连接时,则无需关注网络细节,只需要关注端到端的连接image.png
      • IP协议使得复杂的实际网络变为一个虚拟互连的网络
      • IP协议使得网络层可以屏蔽底层细节而专注网络层的数据转发
      • IP协议解决了在虚拟网络中数据报传输路径的问题
  • IP协议

    • IP地址image.png
      • 长度32位,常分为4个8位
      • 常用点分十进制表示(0-255.0-255.0-255.0-255.0)
      • 随着网络环境的改变而改变,并非和MAC地址一样伴随物理设备终身
    • IP数据报image.png
    • IP协议首部image.png
      • 版本:主流版本是IPV4和IPV6,不同版本不可通信
      • 首部位长度:占4位,最大数值为15,表示的是IP首部长度,单位是"32位字”(4个Byte),也即是IP首部最大长度为60 Byte
      • 总长度:占16位,最大数值为65535,表示的是IP数据报总长度(IP首部+IP数据)——类比MTU,可能会涉及IP数据包分片
      • 标志是否可以分片——片偏移记录
      • TTL:表明IP数据报文在网络中的寿命,经过一一个设备,TTL减1,当TTL=0时,网络设备必须丢弃该报文,防止找不到目标设备无限消耗带宽
      • 协议:表明IP数据所携带的具体数据是什么协议的(如: TCP、UDP等)image.png
  • IP协议的转发流程

    • 逐跳(hop-by-hop)
    • 路由表简介image.png
    • 转发流程(利用路由表 + IP协议)image.png
      • A发出目的地为C的IP数据报,查询路由表发现下一跳为E
      • A将IP数据报交给数据链路层,并告知目的MAC地址是E
      • 数据链路层填充源MAC地址A和目的MAC地址E
      • 数据链路层通过物理层将数据发送给E
      • E的数据链路层接收到数据帧,把帧数据交给网络层
      • E查询路由表,发现下一跳为F
    • 区别
      • 数据帧每一跳的MAC 地址都在变化
      • IP数据报每一的IP地址始终不变
  • 子网划分

    • 分类的IP地址image.png
      • 网络号 + 主机号 = 32位image.png
        • A类地址:0起头,8
        • B类地址:10起头,16
        • C类地址:110起头,24
        • D、E类常特殊用途
      • 特殊的主机号
        • 主机段全0:当前网络段,不可分配为特定主机
        • 主机段全1:广播地址
      • 特殊的网络号
        • A类地址网络段全0(00000000):特殊网络
        • A类地址网络段后7位全1(127):回环地址image.png
        • B类地址网络段128.0不可用
        • C类地址网络段192.0.0不可用
    • 划分子网
      • C类最节约IP地址,最大主机号为255-1image.png
      • 为了避免浪费提出子网划分的概念image.png
      • 思想:将主机号变为子网号+主机号image.png
      • 子网掩码(子网号太多想办法快速判断某个IP的网络号)image.png
        • 和IP地址一样,都是32位
        • 由连续的1和连续的0组成
        • 判断过程(与运算)image.png
    • 无分类编制CIDR
      • CIDR没有A、B、C网络号、和子网划分的概念
      • 网络前缀相同的IP地址称为一个CIDR地址块image.png
      • 斜线记法image.pngimage.png
      • 子网、超网image.png
  • NAT技术(Network Address Translation

    • IP地址不够用了
      • 早期IP地址不合理规划导致了IP号浪费
    • 内网地址
      • 内部机构使用
      • 避免与外网地址重复
    • 外网地址
      • 全球范围使用
      • 全球公网唯一
    • 三类内网地址
      • 千万级:10.0.0.0 - 10.255.255.255
      • 百万级:172.16.0.0 - 172.31.255.255
      • 万级:192.168.0.0 - 192.168.255.255
    • 网络地址转换技术image.png
      • NAT技术用于多个主机通过一个公有IP访问互联网的私有网络中image.png
      • 减缓了IP地址的消耗,但是增加了网络通信的复杂度

2.4.2 网络层其他协议

  • ARP协议

    • ARP(Address Resolution Protocol)地址解析协议image.png
      • ARP缓存表image.png
        • ARP缓存表缓存有IP地址和MAC地址的映射关系image.png
        • ARP缓存表没有缓存IP地址和MAC地址的映射关系image.png
      • ARP缓存表是ARP协议和RARP协议运行的关键
      • ARP缓存表缓存了IP地址到硬件地址之间的映射关系
      • ARP缓存表中的记录并不是永久有效的,有一定的期限
      • 可以通过arp -a查询ARP的缓存表
    • 是直接封装到数据帧之中的image.png
      • PAD:padding,填充
      • 因为使用到了IP地址,所以属于网络层,尽管是封装在数据链路层的数据帧中
  • RARP协议

    • RARP(Reverse Address Resolution Protocol)逆地址解析协议image.png
  • (R)ARP协议是TCP/IP协议栈里面基础的协议

  • ARP和RARP的操作对程序员是透明的

    • 理解(R)ARP协议有助于理解网络分层的细节(这里是网络层 + 数据链路层的配合)
  • ICMP(Internet Control Message Protocol)

    • 报告错误信息或者异常情况
    • ICMP报文image.png
    • ICMP报文首部image.png
      • 类型:ICMP报文的种类
      • 代码:种类具体的错误
      • 差错报告报文image.png
        • 网络不可达:IP地址主机号全为0表示该网络,整个网络不可达
        • 主机不可达:计算机关机等
        • 重定向:通过各种方法将各种网络请求重新定个方向转到其它位置
      • 询问报文image.png
        • 回送请求应答:验证网络是否流通
        • 时间戳请求应答:同步时间
    • 应用
      • Ping应用
        • 回环地址127.0.0.1
        • 网关地址(路由器地址)
          • 如果不通,则网线 or WiFi等有问题,不能到达路由器
        • 远端地址
      • Traceroute应用
        • 探测IP数据报在网络中走过的路径
        • 当TTL=0时,ICMP终点不可达差错报文
        • 分别封装TTL为range(1,n)的报文,直到接收到回应报文
        • 命令行tracert + 目标IP地址

2.4.3 IP的路由算法

  • 路由算法实际上是图论的算法,但因为网络环境复杂,比图论算法更加复杂

    • 算法是正确的,完整的
    • 可以适应网络的变化
    • 计算上应该尽可能的简单
    • 是稳定和公平的
  • 自治系统(AS:Autonomous System)image.png

    • 解决庞大环境复杂互联网的划分问题
    • 一个AS是处于一个管理机构下的网络设备群
    • AS内部网络自行管理,AS对外提供一个或者多个出(入)口
    • 内部路由的协议称为:内部网关协议(RIP、OSPF)
    • 自治系统外部路由的协议称为:外部网关协议(BGP)
  • RIP协议

    • 距离矢量(DV)算法

      • 每个节点使用两个向量DiDiSiSi
        • DiDi:当前节点到别的节点的距离
        • SiSi:当前节点到别的节点的下一个节点
      • 每一个节点与相邻的节点交换向量DiDiSiSi的信息,每一个节点根据交换的信息更新自己的节点信息image.png
      • image.png
    • RIP协议

      • RIP协议把网络的跳数(hop)作为DV算法的距离
      • RIP协议每隔30s交换一次路由信息
      • RIP协议认为跳数> 15的路由则为不可达路由
        • RIP适用于小型网络
      • 认为好路由就是“距离短”的路由
      • 当到达同一目的网络有多条“距离相等”的路由时,可以进行等价负载均衡
    • RIP协议过程

      • 路由器初始化路由信息(两个向量DiDiSiSi)
      • 对相邻路由器X发过来的信息,对信息的内容进行修改(下一跳地址设置为X,所有距离加1)
        • 到达目的网络,相同下一跳,最新消息,更新
        • 发现了新的网络,添加
        • 到达目的网络,不同下一跳,新路由优势,更新
      • 如果3分钟没有收到相邻的路由信息,则把相邻路由设置为不可达(16跳)
  • OSPF协议

    • 基于Dijkstra
    • 链路状态协议
  • BGP协议

    • Border Gateway Protocol:边际网关协议
    • 运行在AS之间的一种协议
    • 原因
      • 互联网的规模很大
      • AS内部使用不同的路由协议,需要协调
      • AS之间需要考虑除网络特性以外的一些因素(政治、 安全...)
        • e.g. AS1不想把数据传递给AS2,所以通过AS3将最终数据传递给AS4
    • BGP发言人(speaker)
      • 被选中的边界路由器image.png
      • AS之间通过BGP发言人交流信息
      • BGP Speaker可以人为配置策略
        • e.g. 中美

image.png

03 引用参考 & 文章收藏