这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
01 重点内容
-
计算机网络概述
- 层次结构
- 网络拓扑
- 性能指标
-
物理层
-
数据链路层
- 概述
- 差错检测方法
- 最大传输单元MTU
- 以太网协议
-
网络层
- 网络层IP协议相关
- IP协议
- 子网划分
- 简单路由过程
- 网络层其他协议
- ARP和RARP(结合数据链路层一起使用)
- ICMP协议
- IP的路由算法
- 路由概述
- 内部网关路由协议
- 外部网关路由协议
- 网络层IP协议相关
02 详细知识点介绍
2.1 计算机网络概述
-
什么是计算机网络
-
计算机网络主要由些通用的、可编程的硬件互连而成,通过这些硬件,可以传送不同类型的数据
- 计算机网络的不是软件概念,还包含硬件设备
- 计算机网络不仅仅是信息通信,还可以支持广泛的应用.
-
-
分类
- 广域网(WAN)
- 城域网(MAN)
- 局域网(LAN):1KM以内,地区内、公司内
- 按照网络使用者分类:公用网 & 专用网
-
层次结构
-
功能繁多复杂,需要分层实现不同功能
- 保证数据通路顺畅
- 识别目的计算机
- 目的计算机状态
- 数据是否错误
-
设计的基本原则
-
各层是相互独立的
- 某一层不知道上下层如何实现
- 只需要知道如何通过上下层提供的接口实现本层的功能
-
各层之间完全解耦
- 每一层的上一层或者下一层的变化不影响本层的稳定、
- 使得每一层易于实现和维护
-
每一层要有足够的灵活性
-
-
OSI七层模型
-
TCP/IP四层模型
- 进行通信时不同设备使用协议的转变
- 包含协议(沙漏状)
- 进行通信时不同设备使用协议的转变
-
-
网络拓朴
- 边缘部分(用户可以直接连接的部分)
- 家庭
- 企业
- 家庭
- 核心部分(涉及海底地缆等)
- 站在用户的角度
- C/S模式
- P2P模型
- C/S模式
- 边缘部分(用户可以直接连接的部分)
-
性能指标
- 存储信息的大小
-
- 为什么电信拉的100M光纤,测试峰值速度只有12M每秒?
- 为什么电信拉的100M光纤,测试峰值速度只有12M每秒?
- 时延 = 发送时延 + 传播时延 + 排队时延 + 处理时延
- 发送时延 = 数据长度(bit) / 发送速率(bps)
- 发送速率由计算机网卡决定
- 排队时延:数据包在网络设备中等待被处理的时间
- 处理时延:数据包到达设备或者目的机器被处理所需要的时间(与服务器、路由器性能有关系)
- 发送时延 = 数据长度(bit) / 发送速率(bps)
- 往返时间RTT(Route-Trip Time)
- 数据报文在端到端通信中的来回一次的时间
- 评估网络质量的重要指标
ping命令
- 存储信息的大小
2.2 物理层
- 物理层的作用
- 连接不同的物理设备(e.g.海底地缆、网线)
- 传输比特流(0101的高低电平/数字信号)
- 介质
- 双绞线
- 同轴电缆
- 光纤
- 红外线(遥控)
- 无线(WiFi信号)
- 激光
- 双绞线
- 信道
- 往一个方向传送信息的媒体
- 通信电路:一个接收信道 + 发送信道
- 发送与接收引发怎么办
- 单工通信信道
- 只能一个方向通信,没有反方向反馈的信道
- e.g.有线电视、无线电收音机等等只能接收信号
- 半双工通信信道
- 双方都可以发送和接收信息
- 不能双方同时发送,也不能同时接收
- 全双工通信信道
- 双方都可以同时发送和接收信息
- e.g.网线、网络......现在主流
- 单工通信信道
- 分用-复用技术
- 提升信道利用率
- 分类
- 频分复用
- 时分复用
- 波分复用
- 码分复用
- 提升信道利用率
2.3 数据链路层
2.3.1 基本功能
-
封装成帧
- "帧”是数据链路层数据的基本单位
- bit是物理层的基本单位
- 发送端在网络层的一段数据前后添加特定标记形成“帧”
- 接收端根据前后特定标记识别出“帧”
- 物理层才不管你“帧” 不“帧” ,无脑bit流传输
- 相互独立相互解耦
- 结构
- 帧首部和尾部是特定的控制字符(特定比特流)
- 帧首部和尾部是特定的控制字符(特定比特流)
- "帧”是数据链路层数据的基本单位
-
透明传输
- “透明”在计算机领域是非常重要的一个术语
- "一种实际存在的事物却又看起来不存在一样"
- “即是控制字符在帧数据中,但是要当做不存在的去处理”
- 解决比特流中含有特殊比特流的问题
- 转义字符
- 数据中也出现转义字符怎么办
- 还是加一个转义字符
- 还是加一个转义字符
- 与编程中解决转义字符思路一样
- 转义字符
- “透明”在计算机领域是非常重要的一个术语
-
差错检测
- 物理层只管传输比特流,无法控制是否出错
- 比如打雷闪电引起的错误
- 循环冗余校验码(CRC)
- 根据传输or保存数据而产生固定位数校验码的方法
- 检测数据传输或者保存后可能出现的错误
- 生成的数字计算出来并且附加到数据后面
- 检错能力与位串的阶数r有关
- 若r==1,则退化为奇偶校验
- 数据链路层只进行数据的检测,不进行纠正——丢弃
- 物理层只管传输比特流,无法控制是否出错
2.3.2 最大传输单元MTU
- MTU
- 数据链路层的数据帧不是无限大的
- 用于描述数据帧的最大长度
- 数据帧过大过小都会影响传输效率
- 太大会增加总时延
- 太小会重复发送太多
- 以太网MTU一般为1500Byte
- 数据链路层的数据帧不是无限大的
- 路径MTU
- 计算机A通过若干小型网络到达计算机B,其中的MTU各不同
- 路径MTU由链路中MTU的最小值决定
2.3.3 以太网协议
- 假设有以下网络拓朴通过路由器连接,路由器如何知道A要发送给谁
- MAC地址
- 物理地址、硬件地址
- 每一个设备都拥有唯一的MAC地址
- 共48位,用十六进制表示
- 六对数字/字母
- 使用
ipconfig /all显示所有物理设备的MAC地址
- 以太网协议
- 广泛使用的局域网技术
- 应用于数据链路层的协议
- 使用以太网可以完成相邻设备的数据帧传输
- 协议格式 = 目的MAC地址 + 源MAC地址 + 类型 + 帧数据 + CRC校验码
- MAC地址表
- A通过网卡发送数据帧
- 数据帧到达路由器,路由器取出前6 Byte
- 路由器匹配MAC地址表,找到对应的网络接口
- 路由器往该网络接口发送数据帧
- 若MAC地址表有未知项
- 路由器E检查MAC地址表,发现没有C的信息
- E将广播A的数据包到除A以外的端口
- E将接受B、C的回应,并将地址记录
- 因为以太网只能进行相邻物理节点的传输(MAC地址表功能有限),所以想要进行跨设备传输数据,需要网络层
2.4 网络层
2.4.1 网络层IP协议相关
-
虚拟互联网络
- 实际的物理网络是十分复杂的
- 物理设备通过使用IP协议,屏蔽了物理网络之间的差异
- 当网络中的主机使用IP协议连接时,则无需关注网络细节,只需要关注端到端的连接
- IP协议使得复杂的实际网络变为一个虚拟互连的网络
- IP协议使得网络层可以屏蔽底层细节而专注网络层的数据转发
- IP协议解决了在虚拟网络中数据报传输路径的问题
-
IP协议
- IP地址
- 长度32位,常分为4个8位
- 常用点分十进制表示(0-255.0-255.0-255.0-255.0)
- 随着网络环境的改变而改变,并非和MAC地址一样伴随物理设备终身
- IP数据报
- IP协议首部
- 版本:主流版本是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等)
- IP地址
-
IP协议的转发流程
- 逐跳(hop-by-hop)
- 路由表简介
- 转发流程(利用路由表 + IP协议)
- A发出目的地为C的IP数据报,查询路由表发现下一跳为E
- A将IP数据报交给数据链路层,并告知目的MAC地址是E
- 数据链路层填充源MAC地址A和目的MAC地址E
- 数据链路层通过物理层将数据发送给E
- E的数据链路层接收到数据帧,把帧数据交给网络层
- E查询路由表,发现下一跳为F
- 区别
- 数据帧每一跳的MAC 地址都在变化
- IP数据报每一的IP地址始终不变
-
子网划分
- 分类的IP地址
- 网络号 + 主机号 = 32位
- A类地址:0起头,8
- B类地址:10起头,16
- C类地址:110起头,24
- D、E类常特殊用途
- 特殊的主机号
- 主机段全0:当前网络段,不可分配为特定主机
- 主机段全1:广播地址
- 特殊的网络号
- A类地址网络段全0(00000000):特殊网络
- A类地址网络段后7位全1(127):回环地址
- B类地址网络段128.0不可用
- C类地址网络段192.0.0不可用
- 网络号 + 主机号 = 32位
- 划分子网
- C类最节约IP地址,最大主机号为255-1
- 为了避免浪费提出子网划分的概念
- 思想:将主机号变为子网号+主机号
- 子网掩码(子网号太多想办法快速判断某个IP的网络号)
- 和IP地址一样,都是32位
- 由连续的1和连续的0组成
- 判断过程(与运算)
- C类最节约IP地址,最大主机号为255-1
- 无分类编制CIDR
- CIDR没有A、B、C网络号、和子网划分的概念
- 网络前缀相同的IP地址称为一个CIDR地址块
- 斜线记法
- 子网、超网
- 分类的IP地址
-
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
- 网络地址转换技术
- NAT技术用于多个主机通过一个公有IP访问互联网的私有网络中
- 减缓了IP地址的消耗,但是增加了网络通信的复杂度
- NAT技术用于多个主机通过一个公有IP访问互联网的私有网络中
- IP地址不够用了
2.4.2 网络层其他协议
-
ARP协议
- ARP(Address Resolution Protocol)地址解析协议
- ARP缓存表
- ARP缓存表缓存有IP地址和MAC地址的映射关系
- ARP缓存表没有缓存IP地址和MAC地址的映射关系
- ARP缓存表缓存有IP地址和MAC地址的映射关系
- ARP缓存表是ARP协议和RARP协议运行的关键
- ARP缓存表缓存了IP地址到硬件地址之间的映射关系
- ARP缓存表中的记录并不是永久有效的,有一定的期限
- 可以通过
arp -a查询ARP的缓存表
- ARP缓存表
- 是直接封装到数据帧之中的
- PAD:padding,填充
- 因为使用到了IP地址,所以属于网络层,尽管是封装在数据链路层的数据帧中
- ARP(Address Resolution Protocol)地址解析协议
-
RARP协议
- RARP(Reverse Address Resolution Protocol)逆地址解析协议
- RARP(Reverse Address Resolution Protocol)逆地址解析协议
-
(R)ARP协议是TCP/IP协议栈里面基础的协议
-
ARP和RARP的操作对程序员是透明的
- 理解(R)ARP协议有助于理解网络分层的细节(这里是网络层 + 数据链路层的配合)
-
ICMP(Internet Control Message Protocol)
- 报告错误信息或者异常情况
- ICMP报文
- ICMP报文首部
- 类型:ICMP报文的种类
- 代码:种类具体的错误
- 差错报告报文
- 网络不可达:IP地址主机号全为0表示该网络,整个网络不可达
- 主机不可达:计算机关机等
- 重定向:通过各种方法将各种网络请求重新定个方向转到其它位置
- 询问报文
- 回送请求应答:验证网络是否流通
- 时间戳请求应答:同步时间
- 应用
- Ping应用
- 回环地址127.0.0.1
- 网关地址(路由器地址)
- 如果不通,则网线 or WiFi等有问题,不能到达路由器
- 远端地址
- Traceroute应用
- 探测IP数据报在网络中走过的路径
- 当TTL=0时,ICMP终点不可达差错报文
- 分别封装TTL为
range(1,n)的报文,直到接收到回应报文 - 命令行:
tracert+ 目标IP地址
- Ping应用
2.4.3 IP的路由算法
-
路由算法实际上是图论的算法,但因为网络环境复杂,比图论算法更加复杂
- 算法是正确的,完整的
- 可以适应网络的变化
- 计算上应该尽可能的简单
- 是稳定和公平的
-
自治系统(AS:Autonomous System)
- 解决庞大环境复杂互联网的划分问题
- 一个AS是处于一个管理机构下的网络设备群
- AS内部网络自行管理,AS对外提供一个或者多个出(入)口
- 内部路由的协议称为:内部网关协议(RIP、OSPF)
- 自治系统外部路由的协议称为:外部网关协议(BGP)
-
RIP协议
-
距离矢量(DV)算法
- 每个节点使用两个向量和
- :当前节点到别的节点的距离
- :当前节点到别的节点的下一个节点
- 每一个节点与相邻的节点交换向量和的信息,每一个节点根据交换的信息更新自己的节点信息
- 每个节点使用两个向量和
-
RIP协议
- RIP协议把网络的跳数(hop)作为DV算法的距离
- RIP协议每隔30s交换一次路由信息
- RIP协议认为跳数> 15的路由则为不可达路由
- RIP适用于小型网络
- 认为好路由就是“距离短”的路由
- 当到达同一目的网络有多条“距离相等”的路由时,可以进行等价负载均衡
-
RIP协议过程
- 路由器初始化路由信息(两个向量和)
- 对相邻路由器X发过来的信息,对信息的内容进行修改(下一跳地址设置为X,所有距离加1)
- 到达目的网络,相同下一跳,最新消息,更新
- 发现了新的网络,添加
- 到达目的网络,不同下一跳,新路由优势,更新
- 如果3分钟没有收到相邻的路由信息,则把相邻路由设置为不可达(16跳)
-
-
OSPF协议
- 基于Dijkstra
- 链路状态协议
-
BGP协议
- Border Gateway Protocol:边际网关协议
- 运行在AS之间的一种协议
- 原因
- 互联网的规模很大
- AS内部使用不同的路由协议,需要协调
- AS之间需要考虑除网络特性以外的一些因素(政治、 安全...)
- e.g. AS1不想把数据传递给AS2,所以通过AS3将最终数据传递给AS4
- BGP发言人(speaker)
- 被选中的边界路由器
- AS之间通过BGP发言人交流信息
- BGP Speaker可以人为配置策略
- e.g. 中美
- 被选中的边界路由器