1
0
mirror of https://github.com/OmegaZhou/408-notes.git synced 2026-02-03 10:43:17 +08:00

finish computer network

This commit is contained in:
Zhou
2020-07-19 20:57:11 +08:00
parent b977138da0
commit 2fcd6ec961
5 changed files with 1039 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

View File

@@ -0,0 +1,324 @@
# 传输层
## 功能
* 提供应用进程间逻辑通信
* 差错检测
* 提供无连接或面向连接的服务
* 复用和分用
* 面向连接的服务特有功能
* 连接管理
* 流量控制和拥塞控制
## 传输层寻址和端口号
* 使用端口号标识进程
### 端口号分类
#### 熟知端口
* 0~1023
* 常见熟知端口
| 应用名 | 端口号 |
| ------------------------ | ------------------------------ |
| FTP | 21控制端口20数据端口 |
| TELNET | 23 |
| SMTP | 25 |
| DNS | 53 |
| TFTP | 69 |
| HTTP | 80 |
| SNMP简单网络管理协议 | 161 |
| HTTPS | 403 |
### 登记端口
* 1024~49151
* 为没有熟知端口号的应用程序使用使用这类端口号需要在IANA登记避免重复
### 客户端端口或短暂端口
* 49152~65535
* 客户进程运行时动态运行时的临时端口
* 通信结束后,此端口自动空闲出来
## 套接字SOCKET
* 用于标识某一主机的某个进程
* Socket= ( IP地址 , 端口号 )
## 无连接和有连接服务
### 无连接服务UDP
* 传输数据无需建立连接
* 数据到达后无需确认
* 不可靠交付
* 报文头部段,传输开销小,时延较短
### 有连接服务TCP
* 面向连接
* 不提供短播,多播服务
* 报文头部长,传输开销大
## UDP用户数据报协议
### 优点
* 无需连接
* 无需维护连接状态表
* 首部只有8B
* 发送速率不受网络拥塞状态影响(无拥塞控制),适合实时性应用
* 支持一对一,一对多,多对一,多对多的交互通信
### 数据报组成
* 首部字段8B
* 数据字段
### 数据单元
* 数据报(传输上层交付的整块数据)
### 首部格式
* 源端口2B
* 目的端口2B
* 长度2B数据报长度最大为2^16^-1B但一般取512B以下
* 校验和2B校验伪首部首部和数据
### 伪首部
* 仅用于校验
* 可从IP数据报中提取
* 不向下传送,也不向上递交
* 长度12B
* 组成
* 源IP地址4B
* 目的IP地址4B
* 全0字段1B
* 协议字段1BUDP为17
* UDP长度字段2B
### UDP校验
#### 发送方步骤
1. 添加12B伪首部
2. 将全零字段填入校验和字段
3. 添加8B首部
4. 添加数据字段若数据字段为奇数再补一个全0字节该字节不发送仅用于计算校验和
5. 将这些数据以4B为一组使用二进制反码计算进行累加
6. 得到的结果的反码即为校验和,将其填入校验和字段
#### 接收方步骤
1. 添加12B伪首部
2. 添加8B首部
3. 添加数据字段若数据字段为奇数再补一个全0字节该字节不发送仅用于计算校验和
4. 将这些数据以4B为一组使用二进制反码计算进行累加
5. 若结果为**1111 1111 1111 1111**全1则数据无误
#### 差错处理
* 可丢弃,也可附上错误报告交付上层
#### 优点
* 简单
* 速度快
#### 缺点
* 检错能力差
## TCP传输控制协议
### 特点
* 面向连接
* 端到端
* 可靠交付服务
* 全双工通信
* 使用缓存
* 发送缓存
* 准备发送的数据
* 已发送未确认的数据
* 接收缓存
* 按序到达但未交付上层的数据
* 不按序到达的数据
* 面向字节流
### 数据单元
* 报文段(认为所有数据都是无结构字节流,不按结构切分数据)
### TCP报文段
#### 首部长度
* 最短为20B
* 可以4B为单位增加首部选项
* 最大长度为60B
#### 组成
* 源端口2B
* 目的端口2B
* 序号4B每一字节数据编上一个序号该字段为本次传输数据的第一个字节序号
* 确认号字段4B期待的下一个报文段的第一个序号确认号为N则证明前N-1个数据已收到
* 数据偏移4位数据字段距离报文段起始处的距离代表首部长度
* 保留字段6位全0
* 紧急位字段URG1位URG=1代表该数据有高优先级
* 确认位ACK1位连接建立后必须把ACK置1
* 推送位PSH1位置1代表应尽快交付数据无需等缓存填满
* 复位RST1位置1代表线路出现严重错误需要断开连接重连
* 同步位SYN1位SYN=1代表请求连接或连接接收报文
| SYN | ACK | 含义 |
| ---- | ---- | ------------ |
| 1 | 0 | 请求连接 |
| 1 | 1 | 同意建立连接 |
* 中止位FIN1位置1时代表此报文段发送方数据已发送完毕
* 窗口字段2B代表报文段发送者当前的接收窗口大小
* 校验和2B与UDP一样的计算方式协议字段改为6
* 紧急指针字段16位代表本报文段的紧急数据长度单位B紧急数据放于报文段数据开头与URG一同使用紧急数据不经过缓冲区直接发送
* 选项字段:长度可变
* MSS报文段数据最大长度
* 填充字段使首部长度为4B的整数倍
### 连接管理
#### 规定
* 当SYN=1时不携带数据但消耗一个序号
#### 建立连接
* 三次握手
* 主机A向主机B建立连接步骤
1. A发送SYN=1ACK=0seq=x
2. B发送SYN=1ACK=1seq=yack=x+1
3. A发送ACK=1ack=y+1该报文段可携带数据不携带数据时不消耗序号
#### 断开连接
* 四次挥手
* 主机A与主机B断开连接步骤
1. A发送FIN=1seq=u
2. B发送ACK=1seq=vack=u+1
3. A关闭发送数据通路
4. B继续发送数据
5. B发送FIN=1seq=wack=u+1
6. A发送ACK=1seq=u+1ack=w+1
7. A等待2MSL关闭连接
#### A等待2MSL的原因
* 保证网络中所有报文段消失
* 若A发送的ACK丢失B将重发FIN二者花费时间不会超过2MSL
* 若重传FIN丢失B将无法正常关闭
#### 四次挥手原因
* 一个FIN和一个ACK断开一端发送数据通道
#### 三次挥手原因
* 采用二次挥手
* 若ACK丢失A将不知道B是否准备好连接也不知道B起始序号
* B将认为A准备好数据通信
* A会认为连接未建立忽略B的所有数据产生死锁
### 可靠传输
#### 编号和确认
* 使用累计确认
* 支持可选选项**选择确认SACK**(携带已收到的数据段),兼容累计确认
#### 重传
* 重传时延计算,使用加权平均
* $平均RTT=(1-\alpha)*平均RTT+\alpha*(新时延) \ \ \alpha一般取0.125$
* $重传时间RTO=\beta*平均RTT \ \ 其中\beta>1$
* Karnn算法
* 发生重传后,就不采用其作为时延样本
* 令$RTO=\gamma*RTO \ \ 其中\gamma>1,一般取2$
* 不发生重传时再使用往返时延更新RTT
### 流量控制
* 采用滑动窗口
* TCP为每个连接建立持续计数器若一方接到**零窗口通知**则启动计数器到期时发送零窗口探测报文段若窗口大小仍为0重置计数器
* 发送时机控制
* TCP维持一个MSS变量当缓存区数据达MSS大小时发送
* 发送方使用PSH字段指名发送
* 计数器到期将缓存区不超过MSS的数据发送
### 拥塞控制
#### 变量定义
1. 各变量单位为MSS
1. 接收窗口rwnd接收方目前的接收窗口大小
2. 拥塞窗口cwnd发送方根据网络情况估计的窗口大小
3. $实际发送窗口=min(cwnd,rwnd)$
4. ssthresh慢开始门限
#### 算法
##### 慢开始算法
1. 初始时设cwnd=1
2. 每收到一个ACK报文cwnd+=1
3. 故在网络畅通且不断发送数据的情况下第i个RTT后cwnd=2^i^
##### 拥塞避免算法
* 每隔1个RTTcwnd+=1
##### 算法选择
* 当cwnd<ssthresh时使用慢开始算法
* 当cwnd>ssthresh时使用拥塞避免算法
* 当cwnd=ssthresh时任意选择一个一般使用拥塞避免
#### 拥塞处理
* 发送超时时ssthresh=cwnd/2
* cwnd=1
##### 快重传算法
* 接收方向发送方连续发送3个重复ACK
* 发送方收到后,立刻重传缺失的报文段
#### 快恢复算法
- 发送方收到连续3个重复确认后令ssthresh=cwnd/2
- cwnd=ssthresh
- 执行拥塞避免算法

View File

@@ -0,0 +1,249 @@
# 应用层
## 应用模型
### 客户/服务器模型C/S
#### 工作流程
1. 服务器等待请求
2. 客户机发出请求,等待接收结果
3. 服务器收到请求后进行处理,并返回客户机
#### 常见C/S模型应用
* Web
* FTP
* 远程登录
* 电子邮件
#### 特点
* 地位不平等
* 客户机间互相不直接通信
* 可扩展性不佳
### P2P模型
#### 特点
* 网络中任意一对计算机(对等方)都可直接通信
* 减轻了服务器的依赖
* 可扩展性好
* 网络健壮性强
#### 缺点
* 占用较多内存
* 损害硬盘
* 使网络拥塞
## DNS
### 组成
* 层次域名空间
* 域名服务器
* 解析器
### 层次域名空间
* 域名不区分大小写
* 除**连字符(-**外不允许使用其他标点
* 每个标号不允许超过63字符整个域名最长不能超过255字符
* 域名级别从左到右递增
* 顶级域名分类
* 国际顶级域名nTLD如cnus
* 通用顶级域名gTLD如comnet
* 基础结构域名只有一个arpa用于反向解析域名
### 域名服务器
#### 根域名服务器
* 13个冗余集群服务器
* 管理顶级域
#### 顶级域名服务器
* 管理该顶级域名下的所有二级域名
#### 授权域名服务器
- 将其管辖的主机域名转换为IP地址
#### 本地域名服务器
* 用于接收主机发出的DNS解析请求
* 在网络配置中填写的域名服务器地址
### 域名解析过程
#### 递归查询
1. 主机查询本地DNS
2. 本地DNS查询跟DNS
3. 根DNS再查询下一个DNS
4. 以此类推,得到结果后递归返回
#### 迭代查询
1. 主机查询本地DNS
2. 本地DNS查询根DNS
3. 根DNS告诉本地DNS下一个查询的DNS
4. 本地DNS继续查询以此类推
5. 得到结果后返回主机
### 缓存
* 当一个DNS得到某个域名解析结果后可对其进行缓存优化查询时间
## FTP
### 功能
* 提供不同种类主机间的文件传输能力
* 以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力
* 以匿名FTP的方式提供公用文件共享能力
### 工作步骤
1. 打开熟知端口21等待连接
2. 用户发送请求后,启动从属进程处理用户请求,处理结束后从属进程关闭
3. 回到等待状态
**注**
* FTP在整个会话期间保持用户信息以跟踪用户当前目录等
#### 控制连接
* 使用21端口
* 用于传输控制信息使用7为ASCII码
#### 数据连接
* 用于传输数据
* 一般使用20端口
* 修改文件时,先将文件副本传送到本地主机,再将修改后的文件副本传回服务器
#### 主动模式与被动模式
* 主动模式服务器使用20端口主动连接客户机传送数据
* 被动模式:客户机连接服务器的随机端口进行数据传输
## 电子邮件
### 构件
* 用户代理:用户与邮件系统的接口
* 邮件服务器
* 邮件协议
* SMTP简单邮件传输协议发送邮件
* POP3邮局协议版本3拉取邮件
* IMAP交互邮件访问协议拉取邮件
### 发送和接收过程
1. 发信人使用**用户代理**编写邮件,**用户代理**使用**SMTP**将邮件发送至发送端邮件服务器
2. 发送端邮件服务器将邮件放入缓存区中,等待发送
3. 发送端邮件服务器的SMTP客户进程发现有待发送邮件向接收端邮件服务器的SMTP服务器建立TCP连接传输邮件
4. 接收端邮件STMP服务器收到邮件后将其放入用户邮箱中
5. 收件人调用**用户代理****用户代理**使用**POP或IMAP**将邮件从邮件服务器的用户信箱取回
### 邮件格式
* 信封
* 内容
* 首部由RFC 822规定
* 主体:用户自行编写
### 多用途网际邮件扩充MIME
* 定义了传送非ASCII编码的邮件
* 内容
* 新首部字段
* MIME版本
* 内容描述
* 内容标识
* 内容传送编码
* 内容类型
* 定义了新的内容格式(包括多媒体邮件)
* 定义了传送编码
* 传送编码
* quoted-printable编码
* ASCII编码不败你
* 对于非ASCII编码每两B前增加一个'='字符
* 对于等号,也再其前面增加一个'='字符
* base64
* 将二进制代码划分为若干24位长度的单元
* 每六位一组从0~63分别用大写字母小写字符数字+/’表示
* 最后使用==表示最后一组只有8位用=表示最后一组只有16位
### STMP
* 步骤
1. 建立连接发送主机的STMP客户端和接收主机的SMTP服务器不需要中间主机
2. 邮件传输
3. 释放连接
* 缺点:
* 任何客户端都可向邮件服务器发送邮件,造成垃圾邮件泛滥
### POP3
* 工作方式(按拉起邮件之后邮件服务器是否删除邮件来区分)
* 下载并保留
* 下载并删除
* 密码:明文存储
### WEB邮件系统
* 客户代理与邮件服务器使用HTTP通信
* 邮件服务器之间使用SMTP
## WWW万维网
### 组成
* 统一资源定位符URL
* 超文本传输协议HTTP
* 超文本标记语言HTML
### HTTP
* 无状态
* 连接方式
* 非持久连接每个网页连接都需要建立一个TCP连接
* 持久连接HTTP/1.1支持):服务器响应请求后保持连接
* 非流水线:客户机收到前一个响应后才能发送下一个请求
* 流水线(默认):客户机可连续发送对引用对象的请求
* 步骤
1. 浏览器分析URL
2. 浏览器向DNS申请解析域名
3. DNS解析域名并返回
4. 浏览器与服务器建立TCP连接
5. 浏览器发出HTTP请求
6. 浏览器相应请求
7. TCP连接断开
8. 浏览器解释html文件并将界面显示给用户
* 报文结构
* 分类
* 请求报文
* 响应报文
* 结构
* 开始行:区分报文类型
* 首部行:说明浏览器,服务器以及报文主题的一些信息
* 实体主体
![image-20200719205609443](img/应用层/HTTP报文.png)

View File

@@ -413,6 +413,33 @@
* 各节点地位平等,中间节点皆为转发节点,具有路由功能
* 自组织网络可以使用自己特定的路由选择协议,可以不与因特网相连
#### 帧地址字段格式
地址字段在数据帧中的用法:
| 功能 | To DS | From DS | Address1接收端 | Address2发送端 | Address3 | Address4 |
| --------------------- | ----- | ------- | ------------------ | ------------------ | -------- | -------- |
| IBSS | 0 | 0 | DA | SA | BSSID | 未使用 |
| To AP基础结构型 | 1 | 0 | BSSID | SA | DA | 未使用 |
| From AP基础结构型 | 0 | 1 | DA | BSSID | SA | 未使用 |
| WDS无线分布式系统 | 1 | 1 | RA | TA | DA | SA |
缩略语:
IBSSIndependent Basic Service Set独立基本服务集
BSSIDBasic Service Set Identifier基本服务集标识符
DADestination Address目的地址
SASender Address源地址
RAReceiver Address接收端地址
TATransmission Address发送端地址
WDSWireless Distribution System无线分布式系统
#### 物理层
* 跳频扩频FHSS
@@ -570,6 +597,7 @@
* 直通式交换:只检查目的地址
* 优点:速度快
* 缺点:安全性低,不支持不同速率端口的交换
* **注**此时转发时延只有读取目的地址6B的时间考虑前导码时则是14B
* 存储转发式交换:先将帧存储在高速缓存中,检查数据无误后再进行转发,数据有误直接丢弃
* 优点:可靠性高,支持不同速率端口交换
* 缺点:延迟高
@@ -588,3 +616,6 @@
| 网桥 | 是 | 否 |
| 路由器 | 是 | 是 |
## 其他零散知识
* 计算两节点间最大距离时,应保证最短帧长无法在一个争用期发送完成

View File

@@ -0,0 +1,435 @@
# 网络层
## 功能
### 异构网络互联
* 使得适用不同标准的网络在网络层中形成一个虚拟互联网络(逻辑互联网络)
* 网络互联使用的中继设备
* 物理层:中继器,集线器
* 数据链路层:网桥,交换机
* 网络层:路由器
* 网络层以上:网关
### 路由与转发
* 路由选择
* 分组转发
### 拥塞控制
* 开环控制:设计时考虑发生拥塞的因素,做决定时不考虑当前网络状态
* 闭环控制:不考虑发生拥塞的因素,监视网络状态,使用响应措施调整系统,主要措施有**检测拥塞****报告拥塞****调整措施**
## 路由算法
### 静态路由
* 手动配置路由表
* 简单,开销小
* 不能及时适应网络变化
* 仅适合于小网络
### 动态路由
* 较好的适应网络变化
* 实现复杂,开销大
* 适合复杂网络
#### 距离-向量算法
* 每个节点定期发送字节的路由选择表(包含**每条路径目的地****路径的代价****下一跳**)给所有直接相邻的节点
* 节点根据其他节点发来的路由表更新自己的路由表
* 若网络中节点过多,路由选择信息的数量会变得非常庞大
* 具体步骤见**RIP协议**
#### 状态-链路算法
* 主动测试所有邻接节点状态
* 定期将链路状态广播给其他节点
* 特征
* 在自治系统中,发送链路信息采用**洪泛法**(路由通过所有端口向相邻节点发送信息,相邻节点以同样方式转发)
* 发送信息为本路由器的**链路状态**(相邻路由器及其度量值)
* 当链路状态改变时,才发送信息
#### 层次路由
* 因特网将整个互联网划分成多个**自治系统**(包含多个局域网系统)
* 自治系统内部自行选择路由协议,称为**内部网关协议IGP**
* 自治系统间使用**外部网关协议EGP**通信
* 自治系统内路由选择:域内路由选择
* 自治系统间路由选择:域间路由选择
* OSPF协议还可以将自治系统进一步划分成更小的子系统称为**区域**
* OSPF协议按层次将区域分为上层区域骨干区域使用0.0.0.0作为标识)和下层区域
* 骨干区域用来联通所有下层区域,骨干区域内的路由器称为骨干路由
* 各个**区域**间使用区域边界路由器进行通信,各个**自治系统**间使用自治系统边界路由器
* 存在骨干区域的自治系统,自治边界路由器位于骨干区域内
## IPV4协议
### 数据报格式
* 首部长度20~60B长度必须为4的倍数不足的部分使用自动填充默认为20B
* 字段:
* 版本4位用于区分IP协议版本
* 首部长度4位单位为4B故最大可表示60B
* 区分服务1B
* 总长度2B包括首部和数据部分单位为1B
* 标识2B计数器产生的字段用于标识数据报
* 标志3位
* 第一位MF字段标记该数据报是否为最后一个分组MF=0代表该数据报为最后一片
* 第二位DF字段若DF=1则该数据报不能进行分组此时若长度超限则丢弃该数据报
* 第三位:无用
* 片偏移13位代表分片后的数据报起始位置在原数据报的偏移值单位为8B
* 生存时间TTL8位数据报可通过的最大路由器数
* 协议8位代表传输层使用的协议
* 首部校验和8位仅校验首部
* 源地址4B
* 目的地址4B
### 地址分类
| | A类地址 | B类地址 | C类地址 | D类地址 | E类地址 |
| ---------- | ------- | ------- | ------- | -------- | ------- |
| 起始位 | 0 | 10 | 110 | 1110 | 1111 |
| 网络号位数 | 8 | 16 | 24 | 多播地址 | 保留 |
| 主机号位数 | 24 | 16 | 8 | 多播地址 | 保留 |
#### 特殊地址
| 地址类型 | 网络号 | 主机号 | 作为源地址还是目的地址 | 功能 |
| ---------------- | ------ | ---------- | ---------------------- | ---------------------------- |
| 网络地址 | 特定 | 全0 | 都不是 | 标识一个网络 |
| 直接广播地址 | 特定 | 全1 | 目的地址 | 广播该网络中的所有主机 |
| 受限广播地址 | 全1 | 全1 | 目的地址 | 广播当前网络的所有主机 |
| 0.0.0.0 | 全0 | 全0 | 源地址或默认目的地址 | 代表自己的IP或默认目的地址 |
| 网络中的特定主机 | 全0 | 特定 | 目的地址 | 本网络下的特定主机 |
| 环回地址 | 127 | 不全为0或1 | 源地址或目的地址 | 限制在本机范围(常用于测试) |
### NAT
#### 专用地址(仅用于内网通信)
* **10.**0.0.0~**10.**255.255.2551个A类地址
* **172.16.**0.0~**172.31.**255.25516个B类地址
* **192.168.0.**0~**192.168.255.**255256个C类地址
#### 功能
* 将内网地址映射成外网地址
### 子网划分
#### 原因
* 二级IP地址设计的不合理
* 地址空间利用率有时很低
* 每一个物理网络分配一个网络号可能会使路由表过于臃肿
* 二级IP地址不够灵活
#### 子网掩码
* 不是必须令**前若干位为1剩下位为0**
#### 注意
* 子网号不能全0或全1但由于CIDR的广泛使用在使用CIDR划分时支持全0或全1
### CIDR
* 使用网络前缀划分子网IP地址又变为2级结构
* 使用最长匹配原则
* 将小的网络汇聚成大的超网
### ARP
* 网络层协议
* IP地址转为MAC地址
* ARP请求分组广播携带源主机IP地址和硬件地址目的主机IP地址
* ARP响应分组单播
* ARP只能解析本网络内的物理地址对于跨网络的物理地址只能通过路由器进行代理转发
### RARP
* 将物理地址转化为IP
* 现已淘汰
### DHCP
* 应用层协议
* 动态分配IP地址
* 使用UDP协议
* 请求报文源地址0.0.0.0目的地址255.255.255.255
* DHCP服务器分配的IP是临时的分配时间称为租用期
* 步骤
1. 客户机广播**DHCP发现消息**寻找DHCP服务器
2. 服务器收到**DHCP发现消息**后,广播**DHCP提供消息**提供IP地址和相关配置
3. 客户机收到**DHCP提供消息**后若接受该IP和参数广播**DHCP请求消息**申请分配该IP
4. 服务器收到**DHCP请求消息**后,广播**DHCP确认消息**分配IP
### ICMP协议
* 网络层协议
* 用于报告发送数据的主机相应错误信息
* 分类
* ICMP差错报文
* ICMP询问报文
* ICMP差错报文分类
* 终点不可达
* 源抑制:发生拥塞
* 时间超过
* 参数问题
* 改变路由(重定向)
* ICMP询问报文分类
* 有回送请求和回答报文
* 时间戳请求和回答报文
* 掩码地址请求和回答报文
* 路由器询问和通告报文
* 不发送ICMP的情况
* 对ICMP差错报文不再发送ICMP差错报文
* 对第一个分片的后续所有分片
* 对有组播地址的数据报
* 对具有特殊地址的数据报如0.0.0.0127.0.0.1
* 应用
* ping使用**有回送请求和回答报文**,测试主机联通性,该软件工作在应用层
* tracert追踪分组路径
* ICMP报文组成
* 类型+代码+校验和4B
* 内容取决于ICMP报文类型4B
* IP数据报首部
* IP数据报数据部分的前8B带有TCPUDP报文的端口号
## IPV6
### 特点
* 更大的地址空间128位
* 扩展的地址层次结构
* 灵活的首部格式
* 改进的选项允许协议继续扩充
* 支持即插即用(自动配置)
* 支持资源的预分配
* 长度为8B的整数倍
### 基本首部长度
* 40B
### 首部格式
* 版本4位
* 通信量类8位指定数据报类别和优先级
* 流标号20位
* 有效载荷长度16位除基本首部外的所有字节数
* 下一个首部8位相当于IPV4的可选字段或协议字段
* 条数限制8位
* 源地址128位
* 目的地址128位
### 地址类型
* 单播
* 组播(广播为组播的特例)
* 任播(交付于一组主机中的任意一个)
### 地址简写
* 以每16位作为一个位域
* 每个16位域的前导0可省略
* 对于连续0值域可用一个**::**代替,该简写至多出现一次
### 协议过渡
* 双协议站
* 隧道技术
## 路由协议
### 路由信息协议RIP
* 类型:内部网关协议
* 协议层级:应用层
* 使用UDP端口520
* 规定
* 每个路由器维护自身到其他每个目的网络的距离(这是**一组**距离,称为距离向量)
* RIP中距离定义为**跳数**
* RIP认为好的路由即条数最少的路由
* RIP中跳数最多为15距离为16时定义为**不可达**
* 每30s广播一次路由更新信息
* RIP不支持带子网掩码的RIP广播故每个网络子网掩码必须相同RIP2支持变长子网掩码和CIDR
* 特点
* 仅与相邻路由器交换信息
* 交换信息为自己的路由表
* 按规定时间交换信息如30s
* 算法(距离向量算法)步骤:
1. 每个节点定期发送字节的路由选择表(包含**每条路径目的地****距离****下一跳**)给所有直接相邻的节点
2. 节点收到来自节点X的路由表后修改所有**下一跳**字段为X**距离**字段+1
3. 对每一项条目,执行如下操作
1. 若目的网络不在自身路由表中:将该项目添至路由表中
2. 若**下一跳**字段与路由表中的地址一样:用该项目替换原项目
3. 若新项目距离小于原项目:用该项目替换原项目
4. 若180s默认时间未收到相邻路由信息则更新路由表将该路由设置为不可达路由
5. 返回
* 报文格式:
* 首部4B1B命令1B版本2B填充0
* 路由每条20B最多25条
* 优点:
* 简单
* 开销小
* 收敛速度快
* 缺点:
* 最大距离15限制了网络规模
* 网络规模越大,路由表传输开销也越大
* 网络出现故障时,会出现慢收敛现象
### 开放最短路径优先协议OSPF
* 类型:内部网关协议
* 协议层级:网络层
* 使用IP协议
* 特点
* 路由器向自治系统内的所有路由器发送信息,使用**泛洪法**
* 交换信息为本路由器和所有相邻节点的链路状态(说明本路由器与哪些路由器相连,以及该链路的度量)
* 链路状态改变时才发送信息
* 更新过程收敛速度快
* 针对不同链路以不同方式计算距离度量
* 负载均衡(相同代价路径上均匀分配流量)
* 支持可变长子网划分和CIDR
* 每个链路状态带有一个序号标识新旧程度
* 以组播地址发送报文(替代过去的广播发送)
* 原理(链路状态算法):
* 路由器更新链路状态后使用Dijkstra算法计算最短路径
* 路由表中只存储下一跳
* 将自治系统进一步划分成区域,路由器仅在自身区域内使用泛洪法传播信息
* 各路由器存储全网络的链路状态(链路状态数据库的同步)
* 分组类型
* 问侯分组发现和维持邻站的可达性一般每隔10s交换一次若40s未收到回复则认为该节点不可达
* 数据库描述分组:自己链路状态数据库的所有链路状态的摘要信息
* 链路状态请求分组:向对方请求某些链路状态项目的详细信息
* 链路状态更新分组:用泛洪法对全网更新链路状态
* 链路状态确认分组:对链路更新的分组的确认
### 边界网关协议BGP
* 类型:外部网关协议
* 协议层级:应用层
* 使用TCP协议
* 尽力选择一条可达目的地的较好网络,原因如下:
* 因特网规模过大,路由选择非常困难
* 难以寻找最佳路由
* 自治系统间的路由选择必须考虑相关策略
* 原理(路径-向量算法)
* 每个自治系统选择**至少**一个路由器作为**BGP发言人**
* 每个发言人与其他自治系统的发言人交换路由信息先使用TCP建立连接之后建立**BGP会话**,再利用**BGP会话**交换信息)
* 各发言人交换完网络可达性信息后,就能找出到达各自治系统的较好路由了
* 路由交换方式
* 首次:整个路由表
* 非首次:有变化的部分
* BGP报文类型
* 打开报文与相邻的BGP发言人建立关系
* 更新报文:发送某一路由信息和列出要撤销的路由信息
* 保活Keep a live报文确认打开报文和周期性证实邻站关系
* 通知Notification报文发送检测到差错
* 特点
* 节点数量级为自治系统的数量级
* 每个自治系统的BGP发言人数目很少
* 支持CIDR
* 首次交换整个路由表,之后只交换更新的部分
## IP组播
* 仅用于UDP
### 组播地址
* 使用D类地址
* 只能用于目的地址
* 不提供可靠交付
* 不产生ICMP报文
* 非所有地址都可组播
### 分类
* 本局域网上的硬件组播
* 因特网范围内的组播
### 组播IP与MAC转换
* 取IP地址后23位补上前导0构成24位
* 前面再补上固定首部01-00-5e则构成MAC地址
### IGMP
* 用于局域网的组播协议
* IGMP让本地局域网的组播路由器知道是否有主机参加或退出某个组播组
* 步骤
* 新主机加入组播组时向该组播组发送一个IGMP报文组播路由器收到后将组成员关系转发给其他组播路由器
* 组播路由器周期性探询局域网内主机是否仍是组的成员,若在若干次探询后某一组无主机相应,则不再转发该组的成员关系给其他组播路由器
* 路由选择:找出以源主机位根节点的组播转发树,每个分组再每条链路上至转发一次。不同源点的同一组播组和不同组播组都对应一个不同的多播转发树
### 因特网组播路由算法
* 链路状态的路由选择
* 距离-向量的路由选择
* 协议无关的组播PIM
## 移动IP
### 实体
* 移动节点
* 本地代理:移动节点所属网络的代理
* 外部代理:再外部网络中转发移动节点的代理
### 技术
* 代理搜索:让节点知道自己在漫游
* 申请转交地址
* 登录:移动节点在外网进行的认证,注册,建立隧道的过程
* 隧道:本地代理和外部代理间临时建立的双向数据通道
### 过程
1. 本地网络中,使用传统的通信方式
2. 节点漫游到外地网络时,向本地代理注册转发地址(外部代理地址或动态配置的地址)
3. 本地代理接收注册后,构建一条隧道,将发给移动节点的数据转发给转发地址
4. 移动节点使用网络的路由器和代理进行通信
5. 移动节点来到另一外网时,向本地代理更新新的转发地址
6. 移动节点回到本地时,向本地代理注销转发地址,即回到原通信方式
## 路由器
### 组成
* 路由选择部分
* 功能:更新和维护路由表
* 核心:路由选择处理器
* 分组转发部分
* 组成:
* 输入端口
* 交换结构
* 输出端口
* 交换方法
* 通过存储器交换
* 通过总线交换
* 通过互联网络交换
### 转发表和路由表
* 转发表根据路由表构建
* 转发时路由器根据转发表选择下一跳
* 转发表!=路由表
* 在路由选择中,一般不对其区分
## 其他零散知识
* IPV4分组在目的端主机重组
* IPV6禁止中间路由器进行分配操作
* IPV6不使用头部校验来保证传输正确性
* IPV6首部固定长度
* IP数据报仅校验首部信息不校验数据部分