计算机网络(完结)
写在前面
本文主要是记录博主学习计网的心路历程。小标题前带**的是重点内容。
第一章 概述
1.1 计算机网络在信息时代的作用
1.2 初始计算机网络
互联网的发展阶段
1.3 互联网的组成
-
边缘部分:连接在互联网上的主机组成
-
核心部分:大量网络和路由器组成
-
主机间通信方式:
- C/S(Client/Server):客户程序主动发起请求,服务端始终运行
- P2P(Peer to Peer):仅在初始阶段依赖服务器,是C/S的变种
-
我国的ISP:
-
三种交换技术:
-
电路交换
- 典型:电话网络
- 电路交换机接通电话线的方式
- 按某种方式动态分配传输资源
- 三个阶段
- 建立连接(分配资源)
- 通信(占用资源)
- 释放连接(归还资源)
- 效率极低
-
分组交换
- 发送方:构造分组、发送分组
- 路由器:缓存分组、转发分组
- 接收方:接受分组、还原报文
Q:为什么添加首部?A:保证路由器能转发到正确的接收方。
-
报文交换
- 对报文大小无限制
- 要求路由器有较大的缓存空间
-
1.4 计算机网络的分类
-
根据覆盖范围
- 广域网WAN:互联网的核心部分
- 城域网MAN:5-50km
- 局域网LAN:校园网、企业网、1km
- 个人局域网PAN:10m之内
-
根据使用者
- 公用网:面向大众服务的网络
- 专用网:军队、铁路、银行等
-
根据拓扑结构
- 总线型
- 星型
- 环型
- 网状型
1.5 计算机网络的性能
- 速率
- 常用单位:bps,Mbps
注意Mbps和MB的区别:1Mbps=bps 1MB=B
- 带宽
- 单位时间内从网络中一个点到另一个点的最高数据率
- 常用单位:bps,Mbps
- 吞吐量
- 单位时间内通过某个网络的数据量
- 常用单位:bps,Mbps
- 时延
- 发送时间:
- 传播时延:
- 处理时延:节点处理分组的时间
- 排队时延:分组在路由器中等待的时间
1.6 计算机网络的体系结构
0.1 OSI体系结构(7层)【法律上的国际标准】:
- 物理层
- 数据链路层
- 网络层
- 运输层
- 会话层
- 表示层
- 应用层
0.2 TCP/IP(4层)【事实上的国际标准】:
- 网络接口层
- 网际层
- 运输层
- 应用层
但是,为了方便教学,通常采用5层结构:
- 物理层
- 数据链路层
- 网络层
- 运输层
- 应用层
物理层
Q:用什么连接?A:双绞线、光纤、无线。
Q:用什么接口?A:RJ45网口。
Q:用什么信号传输?A:电信号、光信号。
数据链路层
Q:物理地址的位数和进制?A:16进制48位,用横杠连接。eg:F0-20-FF-71-4A-EE
Q:如何从比特流中分离出地址
Q:如何协调主机争用总线?A:共享网络采用CSMA/CD协议,交换网络无需使用协议。
网络层
Q:如何标识不同的网络及网络中的主机?A:IP地址(网络号+主机号)。eg:192.168.6.5
Q:路由器如何转发分组?如何进行路由选择?A:路由协议。
运输层
Q:如何解决进程之间基于网络的通信?A:端口号。eg:127.0.0.1:8080
五层PDU
-
物理层:比特*(不参与封装)***
-
数据链路层:帧
-
网络层:IP包
-
运输层:报文段
-
应用层:报文
-
举例:
-
专业术语:
- 实体:
- 对等实体:
- 协议:两个对等实体之间的通信规则。
- 服务:在协议的控制下,本层向上一层提供服务,本层使用下一层提供的服务。
第二章 物理层
2.1 物理层的基本概念
物理层任务:
- 怎样在各种传输媒介上传输比特流
- 为链路层屏蔽各种传输媒介的差异
2.2 传输媒体
-
导引型
- 双绞线(4对8根)
- 屏蔽双绞线STP
- 非屏蔽型双绞线UTP
- T568A:绿白、绿、橙白、蓝、蓝白、橙、棕白、棕
- T568B:橙白、橙、绿白、蓝、蓝白、绿、棕白、棕
- 直通双绞线:不同设备、两端都是T568A/B
- 交叉双绞线:相同设备、一端是T568A,另一端是T568B
- 家庭多选Ⅵ类和ⅥA类网线
- 同轴电缆
- 光纤
- 包层:125mm,折射率低
- 纤芯:8-100mm,折射率高
- 多模光纤与单模光纤
- 多模光纤:远距离,光多次反射,光源为发光二极管,接受器为光电二极管
- 单模光纤:近距离,光不反射,光源为激光发射器,接收器为激光检测器
- 电力线
- 双绞线(4对8根)
-
非导引型
2.3 数据通信基础
2.3.1 传输方式
-
串、并行
- 串行:远距离,时间慢,成本低
- 并行:近距离,时间快,成本高
-
同、异步
- 同步:数据以连续bit流传输,字节之间无时间间隔
- 异步:数据以字节传输,
-
单工、半双工、全双工
2.3.2 编码与调制
-
数字基带信号
- →数字信道(编码):
- →模拟信道(调制):
-
模拟基带信号
- →数字信道(编码):
- →模拟信道(调制):
-
码元
- 构成信号的一段波形
-
常见编码
- 不归零制(时钟累计误差)
- 归零制(浪费带宽)
- 曼彻斯特编码:相同边界跳变,上下为1,下上为0(以太网)
- 差分曼彻斯特编码:不同边界跳变
-
基本调制方法
- 调频
- 调幅
- 调相
-
信道的极限容量
- 失真率与速率、距离、噪声、媒体质量有关
-
信道的极限传输速率
-
任何信道中,码元的传输速率是有上限的,否则会出现码间串扰。
-
理想情况:奈氏准则:
(低信道)
(高信道)
-
实际情况:香农公式:
信噪比:
-
2.4 信道复用技术
2.4.1 频分复用FDM
- 频率划为等宽FDM帧
2.4.2 时分复用TDM
- 时间划为等长TDM帧
- 特点:周期性出现
- 缺点:信道浪费
2.4.3 统计时分复用STDM
- 特点:按需动态分配时隙
2.4.4 波分复用WDM
光的频分复用
2.4.5 码分复用CDM
CDMA
-
广泛应用与2G、3G、WIFI、BlueTooth。
-
CMDA通常把自身划分为多个码片,例如64位或128位:
- 会先将自身编码进行转换:0–>-1,1–>+1。
- 若发送比特0,则发送二进制反码;若发送比特1,则原样输出。
【例:】S站的8bit的码片序列为10010001。表示比特1时,发送10010001;表示比特0时,发送01101110。
S站的码片序列为(+1 -1 -1 +1 -1 -1 -1 +1)。
-
令向量 S 表示站 S的码片向量,令 T 表示其他任何站的码片向量。
-
两个不同站的码片序列正交,就是向量 S 和T 的规格化内积(inner product)都是 0:
-
任何一个码片向量和该码片自己的规格化内积都是1。
-
任何一个码片向量和该码片反码的规格化内积都是-1。
2.5 宽带接入技术
接入网络的带宽?共享还是独占?
- ADSL(家庭网络)
- 模拟电话网络(电话线改造)
- 频分复用
- 低频上行,高频下行,上下行带宽不对称
- ISP:中国电信(China Telecom)
- HFC(家庭网络)
- 有线电视网络
- 频分复用
- 数据和电视节目用不同频率传输
- ISP:国家广播电视总局
- FTTx(企业、公司)
- 光纤入户(光猫 )
- LAN
- 家庭不需要猫,直接连接上网
第三章 数据链路层
3.1 链路层概述
链路:从一个节点到相邻节点的一段物理线路。
数据链路:物理链路+通信协议
-
常见的帧
- Wifi:802.11帧
- EthernetMAC帧(以太网)
-
三个基本问题
- 封装成帧
- 根据网卡地址寻址
- 差错检测
- 可靠传输
- 帧尾有检测码
- 有线链路误码率低,无线链路误码率高
- 有线向上层提供不可靠传输,无线必须提供可靠传输
- 封装成帧
-
两种信道类型
- 点对点信道:PPP帧 (交换式局域网)
- 广播信道:
- 交换式局域网:交换机,EthernetMAC帧
- 共享式局域网
- 总线型有线局域网:EthernetMAC帧(CSMA/CD协议)
- 无限局域网:802.11帧
-
帧定界
- PPP帧:定界符01111110
- MAC帧:前导码(7B前同步码+1B帧开始符),空隙表示结束
-
透明传输
- 字节填充法(异步)
- ASCII(<0x20)→7D+0x20
- 零比特填充法(同步)
- 发送端:每11111就添加0
- 接收端:每11111后删除0
- 字节填充法(异步)
-
MTU(最大传输单元)
- PPP和MAC帧:MTU=1500
- Wifi:MTU=2316
3.2 差错检测
- CRC循环校验
- 双方事先约定好一个生成多项式
- 发送方基于待发送数据和生成多项式计算冗余码
- 接收方基于收到的数据和生成多项式计算是否产生误码
- 常用的生成多项式
- CRC-16=
- CRC-CCITT=
- CRC-32=
3.3 点对点PPP
点对点信道的数据链路层使用PPP协议。
PPP三部分:封装成帧、NCP、LCP。
- PPP帧格式
- F:0x7E,帧界定符
- A、C:预留
- FSC(CRC冗余码):帧校验序列
- 协议
- 0x0021→IP数据报
- 0xC021→LCP
- 0x8021→NCP
- 透明传输
- 字节填充法(异步)
- ASCII(<0x20)→7D+0x20
- 零比特填充法(同步)
- 发送端:每11111就添加0
- 接收端:每11111后删除0
- 字节填充法(异步)
3.4 载波监听多点接入/碰撞检测CSMA/CD
-
载波监听CS
- 发送数据前先检测是否空闲
- 有>96比特空闲:发送
- 无:停止
- 发送数据前先检测是否空闲
-
多点接入MA
- 多主机连接在同一根总线上,竞争使用总线
-
碰撞检测CD
-
争用期
- 以太网的端到端内往返时间2
- 10Mb/s以太网的争用期2=51.2s
- 最先发送数据的主机在争用期内未检测到碰撞,则这次发送肯定不会发生碰撞
-
截断二进制指数退避算法
退避时间=r倍争用期=r*2
3.5 MAC地址
PPP帧:使用点对点信道的链路层,不使用地址
MAC帧:使用广播信道的链路层,必须使用地址
- MAC地址格式(48位)
- 组织标识符24+网络接口标识符24
- 组织标识符由IEEE统一分配
- 网络接口标识符由厂家自行分配
MAC地址表示网络接口,而不是网络设备。
- MAC地址的类型(每类个)
- 首字节末两位00:全球单播地址→固化在网卡中
- 首字节末两位01:全球多播地址
- 首字节末两位10:本地单播地址→网络管理员配置
- 首字节末两位11:本地多播地址
3.6 集线器与交换机的区别
- 使用集线器的以太网
- 拓扑结构
- 物理:星型
- 逻辑:总线型
- 各主机共享总线,使用CSMA/CD协议
- HUB只工作在物理层、不检测碰撞
- 碰撞域(冲突域):指网络中一个节点发出的单播帧会与其他节点发出的单播帧产生碰撞的范围。
- 任何一个时刻在一个碰撞域中只能有一个主机发送数据。
- 拓扑结构
- 以太网交换机
- 能同时连通多对接口,无碰撞,不使用 CSMA/CD
- 工作在链路层,根据帧的地址查交换表再转发到相应出接口
- 即插即用(自学习)
- 以太网交换机转发帧的方式
- 存储转发方式
- 把整个帧先缓存后再进行处理。
- 直通转发方式
- 接收帧的目的地址后,立即按目的地址决定该帧的转发接口。
- 无碎片直通转发方式
- 接收帧的前64字节后,再转发。
- 存储转发方式
- 集线器与交换器的比较
3.7 交换机的自学习功能
-
MAC地址与交换机接口的对应关系不是永久性的:
- 在交换机的接口更换主机
- 主机更换网卡
-
交换机工作在数据链路层,处理对象:帧
-
初始时交换表是空的,通过自学习逐渐建立交换表 。
-
交换机收到帧后的处理流程:
- 学习:记录帧的源地址和入接口
- 转发:根据帧的目的地址查找交换表
- 已知单播帧:向相应接口转发
- 未知单播帧/广播帧:向所有接口(入接口除外)转发
- 丢弃:无效帧
交换表中每条记录关联有效时间,到期自动删除。
3.8 生成树协议STP
- 运行在交换机内
- 目的:提高以太网的可靠性
- 在存在冗余链路的网络中消除网络环路
- 不改变网络的物理拓扑,在逻辑上切断某些链路,消除回路
- 网络物理拓扑变化时(人为或故障)重新计算生成树
3.9 虚拟局域网VLAN
-
以太网规模与广播域
-
VLAN的实现机制
- 802.1Q帧
- 交换机端口类型
- ACCESS:连接主机,接收帧时打标签,若帧的VLAN ID=端口的VLAN ID则去标签转发否则不转发
- TRUNK:连接交换机和路由器,默认属于所有VLAN
-
基于端口划分VLAN
VLAN技术对于主机是透明的。
*3.10 高速以太网
第四章 网络层
4.1 网络层概述
-
主要任务
- 实现网络互连
- 实现数据包在不同网络之间的传输
-
需要解决的主要问题
- 网络层寻址(IP地址)
- 路由选择(路由表)
- 向运输层提供可靠/不可靠服务
-
提供的两种服务
- 可靠的虚电路服务
4.2 IPv4地址
- 点分十进制
- 32比特
Q:哪些设备需要配IP?A:主机、路由
Q:怎样为接口分配IP地址? A:同网同号,异网异号
- IPv4地址结构
- 网络号
- 主机号
eg:120.0.0.0/8→网络号为120,其余为主机号
-
IP地址的分类
-
A类:0.0.0.0–127.255.255.255
- 8+24
- 二进制以0开头
-
B类:128.0.0.0–191.255.255.255
- 16+16
- 二进制以10开头
-
C类:192.0.0.0–223.255.255.255
- 24+8
- 二进制以110开头
-
D类:224.0.0.0–239.255.255.255
- 多播地址
- 二进制以1110开头
-
E类:240.0.0.0–255.255.255.255
- 保留地址
- 二进制以1111开头
-
注意
- 仅A、B、C三类可分配给主机或路由器接口
- 主机号全0或全1不能分配给主机或路由器接口
- 网络号非0,主机号全0→网络地址
- 网络号非0,主机号全1→直接广播地址(特定网络中所有主机)
- 网络号、主机号全1→有限广播地址(本网络中所有主机)
- 网络号、主机号全0→未获取IP的主机或路由表的默认路由
- 网络号127、主机号全0或全1除外的任何数→环回地址
- 169.254开头→不能通过DHCP正常获取IP时,Windows自动分配
-
4.3 划分子网与CIDR
- 划分子网(防止地址浪费)
- IP子网(subnet)
- 网络地址=网络号+子网号
- 默认网关:最大段 eg:xxx.xxx.xxx.254
- IP子网(subnet)
Q:已知某主机的IP地址是145.13.5.10,其所在网络的网络地址是145.13.0.0吗?
A:可能是。
-
子网掩码
- 形如IP地址
- 32位
- 点分十进制
- Net ID、Sub ID全为1
- Host ID全为0
- 形如IP地址
-
*网络地址计算方法
- IP地址and子网掩码
-
**子网判断
- 网络地址=IP地址&子网掩码
- 广播地址=网络地址|(~子网掩码)
-
**无分类编址
-
路由聚合
-
前提:
-
公共前缀:提取相同部分,其余全0
-
-
最长前缀匹配
- 当目的地址与转发表中多个表项匹配,选择最长前缀匹配的表项
4.4 地址解析协议ARP
-
ARP工作原理(同一LAN)
- ARP请求:广播本机IP地址和MAC地址
- ARP响应:单播本机IP地址和MAC地址
-
ARP工作原理(跨越LAN)
- 已知
-
ARP表项的类型
- 动态:自动获取,2分钟有效
- 静态:手动设置,永久有效
Q:ARP可以跨网使用吗? A:不行。
4.5 IP数据报的发送与接收
- 发送IP数据报的过程
- 直接交付:同网主机,用目标主机的MAC地址
- 间接交付:异网主机,用路由器的MAC地址
Q:如何判断是否同网? A:子网判断。
Q:源主机A如何知道路由器R的存在?A:给每个主机配置默认网关。
Q:路由器R收到IP数据报后如何转发?A:查表。
-
路由类型
-
直连路由C
- 配置完IP和子网掩码后自动进入路由表
-
静态路由S
- 用ip route 目标网络地址 目标网络子网掩码 下一跳命令人工配置后进入路由表
-
动态路由O
- 采用OSPF协议
-
动态路由R
- 采用RIP协议
-
4.6 静态路由
优先级:直连>特定主机路由>静态>动态O>动态R>默认
- 默认路由
- 作用:直接连接Internet
- 特点:0.0.0.0/0
- 特定主机路由
- 作用:测试时延
- 特点:/32
4.7 路由选择概述
-
自治系统AS(域)
- 属于一个组织机构的内部网络
-
路由协议
- 域内路由协议RIP
- 域间路由协议BGP
- 域内路由关协议OSPF
-
静态路由和动态路由
- 静态路由
- 管理员手工配置
- 需要人工维护
- 适合拓扑简单、稳定的网络
- 路由器开销小
- 动态路由
- 管理员配置动态路由协议
- 无需人工维护
- 适合拓扑复杂、变化的网络
- 路由器开销大
- 静态路由
4.8 路由信息协议RIP 优先级120
-
距离向量法
- 到直连网络=0
- 经过一个路由器+1
- 最大值为15
- >15表示网络不可达
- 数字最小为最优
-
RIP三要点
- 和谁交换信息?
- 仅与相邻路由交换
- 交换什么信息?
- 自己的路由表
- 何时交换信息?
- 周期性,默认30秒
- 和谁交换信息?
-
距离向量算法
- 路由器R收到邻居路由器X的路由表后:
- 将收到的路由表(即邻居X的路由表)中所有项目的“下一跳”改为X,所有“距离”值加1;
- 对修改后的每个项目*<N,d,X>*:
- 若N不在R的路由表中,则添加该项目。
- 若N在R的路由表中,且“下一跳”也是X,则更新该项目。
- 若N在R的路由表中,但“下一跳”不是X,如果距离d值较小,则用该项目替换原项目。
- 路由器R收到邻居路由器X的路由表后:
-
如何防止路由环路?
- 触发更新:自己路由表改变立即发送
- 水平分割:对方已有的内容无需再次发送
1个RIP报文最多可包括25个路由
4.9 开放最短路径优先OSPF 优先级110
-
基于Dijkstra的最短路径算法
-
基于链路状态
- 本路由的各个接口IP和状态
- 相邻路口IP
- 链路开销(费用、距离、带宽、时延)
-
洪泛法
- 按时间顺序与每个邻居、邻居的邻居、邻居的邻居的邻居…交换路由表,最后收敛
当路由器的链路状态发生变化时,用洪泛法发送链路状态更新报文
-
存在问题
- 链路状态数据库大
- Dijkstra算法频繁调用
- 路由表规模大
-
划分区域
- 主干区域
- 普通区域
Q:划分区域的好处?A:每个区域仅知道本区域的拓扑结构,洪泛区域局限于每个区域。
4.10 边界网关协议BGP
-
自治协议和路由协议
- 内部网关协议:在AS内部寻找最优路由
- 外部网关协议:在AS之间寻找较好路由
-
BGP的路由选择原则
- 热土豆原则:将分组发送给距离最近的边界路由器(尽快离开)
- 选择本地偏好LOCAL-PREF值最高的路由
- 经过AS数量最少的路由
-
三类AS
- 穿越:有偿转发
- 对等:相互免费转发
- 末梢:不转发
-
选择通告
4.11 IP数据报的格式
- 首部=固定部分20+可选字段0~40
- 首部长度4:单位4字节,取值范围5~15
- 区分服务8:一般情况不启用
- 总长度16:单位1字节,最大值65535,不可超过MTU
- 标识16:标识同一个IP数据报。
- 标志3*(0DM)*:
- DF=1:禁止分片
- DF=0:允许分片
- MF=1:还有分片
- MF=0:最后一个分片
- 片偏移13:原分片在IP数据报中的相对位置
- 生存时间8:数据报在网络中可通过发路由器数的最大值
- 协议8:
- 6:TCP
- 17:UDP
- 1:ICMP
- 41:IPv6
- 首部检验和16:只检验首部,不检验数据部分。
Q:如何求检验和?A:先设置首部检验和字段为0,再将首部每两字节当作一个数,接着对所有数相加(进位累加),最后求反。
Q:如何检验?A:先将首部每两字节当作一个数,接着对所有数相加(进位累加),最后求反。
-
源地址4、目的地址4:源地址只能是单播IP。
-
IP分片
- 大IP分组向较小MTU链路转发时,可以被分片。
- 到达目的主机后重组。
- 根据相关字段:总长度、标识等判断。
4.12 网际控制报文协议ICMP
-
差错报文
- 终点不可达
- 主机或路由器不能交付
- 超时
- 路由因TTL=0而丢弃数据
- 目标主机无法收到所有分片
- 参数问题
- 主机或路由首部校验和有误
- 改变路由
- 路由回送,主机更新路由表
- 终点不可达
-
ICMP报文格式
-
ICMP差错报告报文
- 终点不可达3
- 改变路由5
- 时间超过11
- 参数问题12
-
ICMP询问报文
-
回送请求8
-
回送应答0
-
时间戳请求13
-
时间戳应答14
-
连通性测试
- ping命令:请求类型=8,应答类型=0
-
时钟同步、测量时间
-
-
ICMP应用
-
ping测试连通性
-
TRACERT/TRACEROUTE跟踪路由
-
原理:
-
-
4.13 IPv6数据报格式
-
基本首部
-
表示方法
- 冒号十六进制:各段之间用冒号连接 eg:2001:0db8:85a3:0000:0000:8a2e:0370:7334
- 零压缩表示法:连续的0可用双冒号表示(只能用一次) eg:2001:db8:85a3::8a2e:370:7334
- CIDR表示法
- URLs
-
地址类型
- 单播(除FF00::/8)
- 全球单播地址:由IANA分配 eg:2001::/16
- 本地单播:FE80::/10
- 未指明:::/128
- 环回地址:::1/128
- 多播(FF00::/8)
- 任播(除FF00::/8)
- 单播(除FF00::/8)
-
配置方法
- 手工配置
- DHCPv6
- 无状态地址自动配置
-
*静态路由配置
- RIP版本:RIPng
- OSPF版本:OSPFv3
-
IPv4向*IPv6/过渡
-
双协议栈:把IPv6换成IPv4,后序换回
-
隧道技术:IPv6打包封装放在IPv4中
-
-
ICMPv6
- IPv6:提供不可靠数据传输服务
- ICMPv6:报告差错、网络探询、管理多播
4.14 IP多播
-
多播的特点
- 服务器只需发送一次到多播组。
- 路由器复制分组。
- 局域网具有硬件多播功能,不需要复制分组。
-
多播IP地址=D类IP地址
-
**多播IP地址与以太网多播MAC地址的映射
-
局域网硬件多播
-
IP多播的两个协议
- 国际组管理协议IGMP
- 一阶段:主机加入多播组
- 二阶段:探询组成员变化情况
- 多播路由选择协议PIM-SM(稀疏)/DM(密集)
- 找出以源主机位为根节点的多播转发树
- 若发送数据报的路由器位于到源点的最短路径上就转发,否则丢弃
- 国际组管理协议IGMP
4.15 VPN与NAT
-
VPN
-
分布在不同地理位置的专用网利用公用的互联网实现互连
-
用隧道技术实现
- 互联网路由器不转发私有IP地址的IP数据报
-
三种VPNs
- 内联网VPN:同一机构不同部门的内部网络之间建立的VPN
- 外联网VPN:一个机构和某些外部机构(合作伙伴)同建立的VPN
- 远程接入VPN:外地出差的工作人员PC与公司网络之间建立的VPN
-
-
NAT
-
内网主机可以和互联网中主机通信
-
更改IP数据报中的源IP或目的IP
-
NAPT
- 利用运输层端口号和IP地址相互转化
-
NAT穿越
- 使得内网主机充当服务器
- 方法
- 配置静态NAT表
- UPnP协议、IGD协议,使得内网主机可以主动获得NAT的外网地址,自动实现端口映射
-
4.16 多协议标记交换MPLS
基于标记值转发数据报(不检查IP地址),转发速度快。
- MPLS路由和IP路由
- IP路由: 到目的地的路径仅依据目的IP地址决定
- MPLS路由: 到目的地的路径可以由源地址和目的地址共同决定
4.17 软件定义网络SDN
-
传统路由器分为控制层面和数据层面。
-
利用SDN后,路由器中没有路由协议,路由器之间不交换信息。
-
原路由协议的功能由远程控制器实现。路由器仅根据转发表转发分组,称为OpenFlow交换机和流表。
远程控制器的作用:掌握整个网络状态,生成转发表下发。
OpenFlow协议:控制层面与数据层面之间的通信接口。
-
SDN数据层面的转发分组的步骤:
- 匹配:链路层、网络层、运输层首部中的字段
- 动作:
- 从相应出接口转发
- 负载均衡
- 重写首部(NAT)
- 丢弃分组(防火墙)
-
流表
- 每个交换机至少有1个流表
-
SDN的四个特征
- 控制层面与数据层面分离
- 基于流的转发
- 可编程的网络
- 网络虚拟化
第五章 运输层
5.1 运输层概述
- 在网络层的基础上通过端口进行进程和线程的通信
- 两类端口
- 服务器端口号
- 熟知端口(IANA分配)0-1023
- 等级端口(IANA登记)1024-49151
- 客户端
- 临时端口49152-65535
- 常用端口号
- 80: HTTP(超文本传输协议)的默认端口号,用于网页浏览。
- 443: HTTPS(安全的超文本传输协议)的默认端口号,用于安全的网页浏览。
- 53: DNS(域名系统)的默认端口号,用于域名解析。
- 67/68: DHCP(动态主机配置协议)的端口号,其中67用于服务器,68用于客户端。
- 20/21: FTP(文件传输协议)的默认端口号,其中20用于数据传输,21用于控制信息。
- 25: SMTP(简单邮件传输协议)的默认端口号,用于发送电子邮件。
- 110: POP3(邮局协议版本3)的默认端口号,用于接收电子邮件。
- 143: IMAP4(互联网消息存取协议版本4)的默认端口号,用于存取和管理电子邮件。
- 服务器端口号
5.2 比较UDP和TCP及首部格式
- UDP
- 无连接,支持单播多播广播,面向报文,不可靠
- 首部8字节
- 源端口2
- 目的端口2
- 长度2
- 检验和2
- TCP
- 面向连接,仅支持单播,面向字节流,可靠
- 首部可变长20-60字节
- 源端口2
- 目的端口2
- 序号4:本报文段首字节在整个字节流中的序号,用来判断是否乱序
- 确认号4:期望下一报文序号
- 数据偏移0.5:TCP首部长度
- 窗口2:接收方允许的字节数,动态变化
- ACK0.125:回应报文
- URG0.125:确定紧急指针有效
- PSH0.125:催促尽快交付接受应用进程,保证缓存容量
- *时间戳(位于选项):保证序号不同,不会丢包
- UDP检验和
- 伪首部
5.3 TCP可靠传输原理
可靠传输:无差错、无丢失、无重复、无乱序。
- 停止等待协议(信道利用率低)
- 发送–>停止发送等待–>接受回应–>再发送
- 提高效率的方法:累积确认(指明确认报文段号)、捎带确认(发送数据同时确认)、选择确认。
- 前一个seq是下一个ack。
- 可能存在哪些差错
- 分组误码(接收方丢弃=超时重传)
- 发送丢失(超时重传)
- 分组丢失(超时重传)
- 确认丢失(接收方如何判断=序号)
- 确认迟到(确认最新报文=确认之前的报文已经收到)
- 解决方案
- 超时重传(计时器时间)
- 信道利用率
- :分组发送时间
- :往返时间
- :分组接收时间
- 流水线传输(前提:误码率、丢失率低)
- 发送方连续发出多个分组–>累积确认
- 回退N:累积确认时,发送端等待超时,回退到最早未确认帧,重传
- 选择重传:单个确认时,发送端等待时,继续发送,直到超时,重发超时帧,接收方先乱序接受
5.4 TCP可靠传输的实现
- 过程:发送方–>发送缓存–>TCP连接–>接收缓存–>接收方
- 发送缓存
- 存放准备发送的数据和已发送未确认的数据
- 可以删除已发送已确认的数据
- 已发送未确认+准备发送<min{MSS,窗口}
- 接受缓存
- 存放已收到但尚未提交和失序的数据
暂存失序
- 滑动窗口机制
- 窗口:允许发送/接收的数据
- 确认号:希望接下来接受的序号,并确认该序号之前的字节流已收到
- 窗口走走停停
- 总是向前滑动
- TCP事件及动作
- 超时重传时间的选择:略大于RTT
- 应对情况:分组误码、分组丢失、确认丢失、确认迟到
- 超时重传时间(未发生重传)或(发生重传),其中S表示平均往返时间,D表示平均误差
- 典型值:
- 典型值:
5.5 TCP流量控制
目的:接收方控制发送方的发送速率,使接收方来得及接收。
- 死锁现象及持续计时器
- 死锁现象:发送方等待接收方通知窗口大小,接收方等待发送方发送数据。
- 当发送方收到接收方的零窗口通知,启动持续计时(1.5s,3s,…,60s)。若持续计时器到期,就发送一个零窗口探测报文段。
- 接收方发送的确认报文段中:
- 若窗口仍是零,则重置持续计时器。
- 若窗口不是零,则死锁打开。
5.6 TCP拥塞控制
- 慢开始
- 发送方的MSS从1开始指数增长()
- 拥塞避免
- 发送方的MSS从1开始线性增长()
- 快重传:接收方在收到失序报文段后立即发确认,发送方收到3-ACK后,重传数据
- 慢开始门限:当MSS达到一定数字时(通常是2~4MSS),由慢开始转为拥塞避免。若超时/3-ACK,则将门限值调整为超时时的一半,再执行慢开始
5.7 TCP连接管理
-
套接字SOCKET
- TCP={(IP1:端口号1),(IP2:端口号2)}
-
三次握手
-
四次挥手
第六章 应用层
6.1 域名系统DNS
-
作用:根据域名查找IP地址
-
步骤:
- 1.本地DNS缓存
- 2.DNS服务器
-
域名结构
- 多级域名结构 eg:xxxy.fafu.edu.cn
- xxxy:四级域名
- fafu:三级域名
- edu:二级域名
- cn:顶级域名
- 多级域名结构 eg:xxxy.fafu.edu.cn
-
互联网的域名空间
-
域名服务器
-
域名解析
-
迭代
-
递归
-
-
雪人计划
- 雪人计划(Yeti DNS Project)是一个全球性的下一代互联网(IPv6)根服务器测试和运营实验项目。这个项目旨在解决现有互联网根服务器数量一直被限定为13个的问题,并为下一代互联网提供更多的根服务器解决方案。该项目由我国下一代互联网工程中心(BII)领衔发起,联合了WIDE机构、互联网域名工程中心(ZDNS)等全球组织和个人共同创立。
雪人计划于2015年6月23日在国际互联网名称与数字地址分配机构(ICANN)第53届会议上正式对外发布。截至2016年,该项目在全球16个国家完成了25台IPv6根服务器的架设,其中1台主根和3台辅根部署在中国。这标志着中国在网络基础设施方面取得了重要进展,打破了过去中国没有根服务器的困境。
这个项目的实施,不仅增强了全球互联网的多边共治,还有助于建立更民主、透明的国际互联网治理体系。IPv6根服务器负责互联网最顶级的域名解析,被称为互联网的中枢神经。在过去的IPv4体系中,全球共有13台根服务器,其中唯一的主根部署在美国,其余12台辅根中有9台在美国,2台在欧洲,1台在日本。这种布局造成了全球互联网关键资源管理和分配的不均衡,同时,缺乏根服务器也使得各国抵御大规模分布式拒绝服务攻击的能力不足,为各国互联网安全带来隐患。
雪人计划的推进,标志着中国在全球互联网治理中发挥越来越重要的作用,也为全球IPv6网络部署和用户发展提供了重要支持。截至2017年8月,这25台IPv6根服务器在全球范围内已累计收到2391个递归服务器的查询,主要分布在欧洲、北美和亚太地区。
- 雪人计划(Yeti DNS Project)是一个全球性的下一代互联网(IPv6)根服务器测试和运营实验项目。这个项目旨在解决现有互联网根服务器数量一直被限定为13个的问题,并为下一代互联网提供更多的根服务器解决方案。该项目由我国下一代互联网工程中心(BII)领衔发起,联合了WIDE机构、互联网域名工程中心(ZDNS)等全球组织和个人共同创立。
6.2 万维网
- URL
- 一般形式:<协议>://<主机>:<端口>/<路径> eg:https://www.imgurl.org/vip/manage/upload
- 网页文档
- HTML:网页结构和内容
- CSS:网页样式
- JavaScript:网页行为
- 三类WEB文档
- 静态文档
- 动态文档
- 活动文档
- HTTP连接
- 非持久连接(HTTP1.0)
- 每个TCP连接只传输一个对象
- 所需时间=文档发送时间+2RTT
- 资源消耗大
- 持久连接(HTTP1.1)
- 每个TCP可传输多个对象
- 有流水(遇到一个引用发一个请求)所有对象耗时1RTT
- 无流水(收到前一个响应才发送新请求)每个对象耗时1RTT
- 非持久连接(HTTP1.0)
- HTTP报文
- 请求
- GET:请求服务器的web文档
- POST:在请求报文的Entity Body中上传客户端的输入
- 响应
- 请求
- HTTP状态码
- 200 OK
- 301 Moved Permanently
- 400 Bad Request
- 404 Not Found
- 505 HTTP Version Not Supported
- Cookie
- HTTP服务是无状态的,服务器不会存储客户的状态信息。服务器利用Cookie识别用户、跟踪用户的访问行为。
- Cookie的组件:
- HTTP请求报文中的cookie首部行
- HTTP响应报文中的set-cookie首部行
- 在用户端保存一个cookie文件,由浏览器管理
- 在服务器端有一个cookie数据库
- HTTPS与443(*参考https://blog.csdn.net/weixin_75172965/article/details/142700937*)
- HTTPS通过使用安全套接字层(SSL,Secure Sockets Layer)或传输层安全(TLS,Transport Layer Security)协议对HTTP进行加密,从而在数据传输过程中提供加密和认证保护。
- HTTPS的工作流程
- 客户端发起连接请求:客户端(通常是浏览器)向服务器发送一个安全连接请求,使用HTTPS的URL或点击HTTPS链接触发。
- 服务器证书发送:服务器收到请求后,将自己的数字证书发送给客户端。证书中包含了服务器的公钥、数字签名和其他相关信息
- 客户端验证证书:浏览器接收到服务器证书后,会进行一系列的验证步骤,包括验证证书是否由受信任的证书颁发机构签发,以及证书中的域名是否与目标服务器的域名相匹配。如果验证通过,客户端可以确定所连接的服务器是可信的。
- 密钥协商:一旦服务器证书被验证通过,客户端会生成一个随机的对称密钥,用于后续的数据加密和解密。该对称密钥通过服务器证书中的公钥进行加密,并发送给服务器。
- 通信加密:服务器使用其私钥解密客户端发送的对称密钥,并与客户端之间建立起一个加密的安全通道。从此之后,客户端和服务器之间的数据传输都会在此加密通道中进行,保证数据的机密性。
- 安全数据传输:在建立了安全通道后,客户端和服务器可以安全地传输数据了。数据在发送前,会使用对称密钥对数据进行加密,然后在接收端使用相同的对称密钥解密。
- 完整性检查:为了确保数据在传输过程中没有被篡改,HTTPS使用消息摘要函数进行完整性检查。接收方会对接收到的数据进行校验,并比对校验结果与发送方计算的结果是否相同。
6.3 文件传输协议FTP
-
用途:互联网中主机之间传送批量文件
-
基于TCP,采用C/S方式
-
匿名FTP
- 要下载公共资源,账号为anonymous,密码通常为空
- 只允许下载,不允许上传
-
工作原理
-
控制连接:传输控制信息,会话期间保持,客户端向服务端的21号端口发起
-
数据连接:传输数据,每次传输文件时建立,服务端的20号端口向客户端发起
-
主动模式
-
客户端 传输方向 服务端 临时端口 发起 → 21 临时端口 ← 发起 20 -
被动模式
-
客户端 传输方向 服务端 临时端口 发起 → 21 临时端口 发起 → 临时端口
-
6.4 电子邮件系统
- 组成:客户端+服务端+邮件传输协议
- 电子邮件格式
- SMTP(TCP25):只能传输ASCII文本数据
- MIME:解决SMTP不能传输非ASCII的问题(后续声明文件编码和类型)
- 邮件读取协议
- POP3(TCP110):从服务器上下载整个邮件并删除缓存(只有一份)
- IMAP(TCP143):允许在多个设备上访问邮件、管理邮件
- 万维网电子邮件
- 发送方和接收方都是用HTTP协议完成,通过SMTP协议传输
6.5 P2P应用
- 纯P2P架构特点:
- 没有服务器
- 任意端系统之间直接通信
- 节点间歇性接入Internet
- 节点可能更换IP地址
- 文件分发BitTorrent
- 文件块chunk
- 交换同一个文件的文件块的节点组torrent
- 跟踪参与torrent的节点tracker
- 新加入的torrent需要向tracker申请chunk,再在下载某些邻居的同时上传自己的chunk
- 获取Trunk原则:
- 节点(Alice)定期查询每个邻居所持有的Chunk列表
- 节点(Alice)向邻居请求获取缺失的Chunk(稀缺优先)
- 发送Trunk原则: Tit-for-Tat (一报还一报)
- 节点(Alice)向4个邻居(Top4)发送Chunk:
- 正在向Alice发送Chunk且速率最快的4个邻居
- 每10秒重新评估Top4
- 每30秒随机选择一个其他节点, 向其发送Chunk
- 新节点可能成为Alice的Top4
- 节点(Alice)向4个邻居(Top4)发送Chunk:
6.6 动态主机配置协议DHCP
-
DHCP客户 TCP68:在启动时或需要时发送广播报文,寻找DHCP服务器。
-
DHCP服务器 TCP67:从IP地址池中选取一个IP地址分配给客户。
-
主机自动配置:IP 地址,子网掩码,默认网关 IP,默认 DNS 服务器 IP
-
IP租用期:1秒~136年
-
DHCP工作流程
- 1.DHCP服务器在UDP 67端口监听,等待客户端的请求。
- 2.DHCP 客户从 UDP 68 端口发送 DHCP DISCOVER 报文。
- 3.DHCP服务器发出DHCP OFFER报文,DHCP客户可能收到多个DHCP OFFER报文。
- 4.DHCP客户从几个DHCP OFFER报文中选择其中一个,并向所选择的DHCP服务器发送DHCP REQUEST报文。
- 5.被选择的DHCP服务器发送DHCPACK报文,进入已绑定状态,开始使用得到的临时IP地址。
- 6.租用期到达50%时,DHCP 客户发送 DHCP REQUEST报文,要求更新租用期。
- 若DHCP服务器不响应,则在租用期到达87.5%时,DHCP客户必须重新发送DHCP REQUEST报文。
- 7.DHCP 服务器若同意,则发回 DHCP ACK 报文。
- 8.DHCP 服务器若不同意,则发回 DHCP NACK 报文。客户须重新申请 IP 地址。
- 9.DHCP 客户可随时发送 DHCP RELEASE 报文提前释放 IP 地址。
-
DHCP中继代理
- 一般是路由器
- 主机在局域网中向路由器发送DHCP请求报文,路由器向DHCP服务器单播转发,DHCP服务器分配后单播回送路由器,路由器再回送主机
第七章 网络安全
- 数据加密模型
- 对称加密体制:双方使用相同密钥
- 非对称加密体制:双方各拥有公钥和私钥
- 混合加密体制:数字签名
- 对称密钥的分配
- 密钥分配中心KDC储存着用户专用的主密钥
- 密钥分配中心KDC给需要秘密通信的用户临时分配一个密钥(仅使用一次)
- 协议:看门狗协议
- 公钥的分配
- 区块链
- 目的:去中心化
第八章 无线网络
-
两类无线局域网
- 有固定基础设施的WLAN eg:Wifi
- 无固定基础设施的WLAN eg:adhoc
-
移动自组织网络
-
IEEE 802.11:有固定基础设施的无线局域网的国际标准
- 拓扑结构:星型
- 载波监听多点接入/预约信道 CSMA/CA:
- DIFS(分布式协调IFS):最长的IFS,优先级最低,用于异步帧竞争访问的时延。
- PIFS(点协调IFS):中等长度的IFS,优先级居中,在PCF操作中使用。
- SIFS(短 IFS):最短的IFS,优先级最高,用于需要立即响应的操作。
- 其中DIFS用在CSMA/CA协议中,只要MAC层有数据要发送,就监听信道是否空闲。如果信道空闲,等待DIFS时段后开始发送;如果信道忙,就继续监听,直到可以发送为止。
-
预约信道
-
802.11帧格式
写在后面
感谢读者很有耐心的读完这篇冗长乏味的万字长文,同时也感谢各位同仁的博客对我的思考和启发!