1. 用户的本地电话公司也就是ISP
2. 分频机制实现的FDM(Frequency-Division Multiplexing)
2. 电缆(利用有线电视公司的有线电视基础设施)
1. 光缆将电缆头端连接到地区的枢纽,从这里使用传统的同轴电缆到达各家各户,一般每个地区的枢纽通常支持500-5000个家庭
2. 物理材料:HFC 混合光纤同轴
3. 重要的特征是:
1. 共享广播媒体:上行与下行信道都是共享的(上行信道需要一个分布式多路访问来协调传输与避免碰撞)
3. 光纤到户(FTTH)
1. 主动光纤网络(Active Optical Network, AON):等价于交换因特网
2. 被动光纤网络(Passive Optical Network, PON)
2. 企业接入:
1. 以太网:LAN local area network
2. WiFi
3. 广域无线接入:
1. 3G
2. LTE
4. 物理媒体
2. 排队时延与分组丢失:
1. 因为每一个分组交换机都有一个输出缓存,也就是输出队列。
3. 转发表与路由选择协议:
6. 电路交换与分组交换
3. 应用层:
1. HTTP、SMTP、FTP、DNS
2. 分布在多个端系统上。位于应用层的分组信息成为message 报文
4. 运输层:
1. 在应用程序之间进行应用层报文的传送
2. 运输层分组成为segment 报文段
5. 网络层:
1. 负责将成为数据报的网络层分组从一台主机移动到另一台主机
2. 网络层分组称为datagram 数据报
6. 链路层;
1. 为了将网络层分组从一个结点移动到路径上的下一个结点,需要链路层的服务
2. 链路层分组称为frame 帧
7. 物理层:
1. 比特为单位
10. 封装:
4. Web浏览器实现了HTTP的客户端,所以交替使用“浏览器”与“客户”这两个术语
4. Web服务器总是打开着,具有一个固定的ip地址,且它服务于可能来自数以万计的不同的浏览器的请求
5. HTTP:无状态协议
1. HTTP服务器并不保存关于用户的任何信息
7. HTTP
4. 非持续连接的缺点:
1. 必须为每一个请求的对象建立和维护一个全新的连接,这样在客户与服务器中都要分配TCP的缓冲区和保持TCP变量,这给Web服务器带来了负担
2. 每一个对象经受两倍RTT的交付时延,即一个RTT用于创建TCP,另一个RTT用于请求和接收一个对象
5. HTTP的默认模式是使用带流水线的持续连接
6. HTTP报文格式
1. 两种报文:请求报文与响应报文
1. 请求报文
1. 由5行组成,每一行由一个回车和换行符结束。最后一行后再附加一个回车换行符
2. 第一行为请求行,有三个字段:方法字段、URL字段和HTTP版本字段
3. 其后继的行叫做首部行:
1. 主机
2. 告诉服务器是否使用持续连接
3. 用户代理,指明向服务器发送请求的浏览器的类型(服务器可以有效地为不同类型的用户代理发送相同对象的不同版本)
4. 表示用户想要得到的对象的版本
4. get与post的区别
2. 响应报文
1. 三个部分组成:一个初始状态行(status line)、6个首部行(header line),然后是实体体(entity body)
2. 状态行有3个字段:协议版本、状态码和相应的状态信息
3. 其后的看就知道了
4. 其中last-modified表示的是对象创建或者最后修改的日期的时间。对即可能在本地用户也可能在网络缓存服务器上的对象缓存很重要
5. content-length:字节数
6. 常见的状态码:
8. 用户与服务器的交互:cookie
9. Web缓存
4. 在因特网上部署Web缓存器的原因如下:
1. Web缓存器可以大大减少对客户请求的响应时间,特别是当客户与初始服务器之间的瓶颈带宽远低于客户与Web缓存器之间时
2. Web缓存器可以迅速将该对象交付给用户,同时可以大大减少一个机构的接入链路到因特网的通信量。从而降低了费用
5. **内容分发网络CDN(**content distribution network):也就是使用web缓存服务器
10. 条件get方法:
2. 一些陈旧的特性:
1. 限制所有的邮件报文的体部分(不只是首部)只能采用简单的7比特ASCII表示。(这是因为当时的传输能力不足)
3. SMTP一般不使用中间邮件服务器发送邮件。这意味着邮件并不会在中间的某个邮件服务器中存留
4. SMTP之运行在发送与接收邮件服务器上
5. 命令都是自解释的:比如HELO、MAIL FROM、RCPT TO、DATA 和 QUIT
6. SMTP用的是持续连接
13. SMTP与HTTP的对比
4. POP3
1. 简单但是功能有限
2. 按照三个阶段进行工作
1. 特许:用户代理使用明文用户名和口令鉴别用户
2. 事务处理:用户代理取回报文以及一系列的操作
3. 更新:quit(此时完成删除操作)
5. IMAP
1. 解决的问题:POP3在服务器上没有层次文件夹
2. 两个特性:
1. 只是服务器上的层次文件夹
2. 允许用户代理获取报文组件的命令(在低带宽连接的时候十分有用)
15. DNS(Domain Name System)域名系统
3. DNS的服务:
1. 进行主机名到IP地址的转换
2. 主机别名:应用程序可以调用DNS来获得主机别名对应的规范主机名以及主机IP
3. 邮件服务器别名:电子邮件应用程序调用DNS来对提供的邮件服务器别名进行解析…
4. 负载分配:(因为存在多个服务器有着同一个别名,所以DNS需要在这些冗余的web服务器之间循环分配负载)
4. DNS的设计:
1. 第一种:简单一个
问题有:单点故障、通信容量、远距离的集中式数据库、维护
2. 第二种:分布式
1. 三种类型的DNS服务器:根DNS服务器、顶级域(Top-Level Domain)DNS服务器、权威DNS服务器
2. 还有一类DNS,称为DNS服务器(严格意义上不属于该服务器的层次结构)
3. DNS缓存:
1. 解决的问题:下面的查询的过程太过冗长
2. 与Web缓存类似
3. 两种查询方式:
1. 递归查询:
1. 递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
2. 迭代查询:
1. DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS 服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止
5. DNS记录与报文:
1. 记录资源(Resource Record)RR
1. 是一个4元组(Name,Value,Type,TTL)
Type | Name | Value |
---|---|---|
A | 主机名 | 对应的IP |
NS | 域 | 一个知道如何获得该域中主机IP地址的权威DNS服务器的主机名 |
CNAME | 主机规范名 | 别名 |
MX | 别名 | 主机规范名 |
2. TTL表示的记录生存时间
2. DNS报文
1. 两种报文:查询与回答报文
2. 有着相同的格式
6. 在DNS数据库中插入记录
1. 注册登记机构
16. P2P应用
6. Web服务器与TCP
3. UDP无连接运输
2. 使用UDP的应用是可以实现可靠数据传输的。这是通过应用程序自身建立可靠机制来完成的(例如,可通过增加确认与重传机制来实现)
3. 报文结构:
4. 检验和:(16位)
1. 求和回卷求反
2. 在接收方的检验是:将报文所有的比特相加(包括校验和),如果结果是111…111,则为正确,如果有0则表示分组出现差错
3. 原因:UDP必须在端到端基础上在运输层提供差错检测。-----端到端原则
4. 可靠数据传输原理
要求的机制如下:
1. 差错检测:检验和
2. 接收方反馈:NAK与ACK,0表示NAK,1表示ACK
3. 重传
2. rdt2.0被称为停等协议
3. rdt2.0有一个致命的缺陷,也就是没有考虑到ACK与NAK分组受损的可能性
3. 解决上面rdt2.0的问题:rdt2.1
1. 将发送数据分组的序号放在该分组的字段中
2. 对于停等协议,只需要1个比特序号就好了---->造成状态数是rdt2.0的两倍
3. 显式发送NAK数据包
4. 如果不显式发送NAK数据包而是发送对上一次正确接受的分组的一个ACK,也能够实现与NAK一样的效果。也就是冗余ACK------rdt2.2
1. 发送方:
2.
3.
5. 经具有比特差错的丢包信道的可靠数据传输:rdt3.0**(比特交替协议)**
1. 解决的问题:丢包
2. 引入的机制:
1. 引入一个时间值,以判定可能发生了丢包------>产生重传-------->冗余数据分组
2. 定时器
3.
4. 各种情况
5. 流水线可靠数据传输协议
2. 流水线计数带来的新的要求:
1. 必须增加序号范围,
2. 协议的发送方和接收方两端必须缓存多个分组
3. 所需序号范围和对缓存的要求取决于数据传输协议如何处理丢失、损坏和延时过大的分组。方法有:GBN(go back n)与SR(selective Repeat)
6. 回退N步GBN(滑动窗口协议)
3.
4. TCP序号是按照字节流中的字节进行计数的,而不是按分组计数的。
5. FSM
6. GBN发送方需要相应的三种类型的事件:
1. 上层的调用:rdt_send()时,要判断当前发送的窗口是否已经满
2. 收到一个ACK,采用的是累积确认
3. 超时事件,重新发送并重新计时
7. GBN接受方:当一个序号为n的分组被正确接收到并且是按序的,则为分组n发送一个ACK,否则则为最近的按需接收到的分组重新发送ACK并丢弃该分组
8. 问题:丢弃一个失序但是正确的分组是随后该分组的重传可能会丢失或者出错,因此甚至需要更多的重传。
9.
7. 选择重传(SR)
4. 发送方:
1. 从上层收到数据
2. 超时
3. 收到ACK
5. 接受方:分为三种情况进行处理(处理的范围是2*N,其余的情况全部忽略)
6. 可靠数据传输机制及其用途的总结
1. 检验和
2. 定时器
3. 序号
4. 确认、否认确认
5. 窗口、流水线
8. 面向连接的运输:TCP(后面的都是TCP的)
单工:简单的说就是一方只能发信息,另一方则只能收信息,通信是单向的。
半双工:比单工先进一点,就是双方都能发信息,但同一时间则只能一方发信息。
全双工:比半双工再先进一点,就是双方不仅都能发信息,而且能够同时发送。
5. TCP连接也总是点对点的,即在单个发送方与单个接收方之间的连接。
9. TCP报文段结构
一些需要注意之处:MSS(MAximum Segment Size),当TCP发送一个大文件,例如某Web页面上的一个图像时,TCP通常对文件进行划分成长度为MSS的若干块。
接收窗口字段:用于流量控制(表示接受方愿意接收的字节的数量)
选项字段:该字段用于发送方与接收方协商最大报文段长度(MSS),或在告诉网络环境下用作窗口调节因子时使用,首部字段中还定义了一个时间戳选项。
6比特标志字段:
| 字段 | 功能 |
|:----|:----|
| ACK | 用于指示确认字段中的值是有效的 |
| RST、SYN、FIN | 用于连接的建立与拆除 |
| PSH | 被设置的时候表示接收方应立即将数据交给上层 |
| URG | 用来只是报文段中存在着被发送端的上层实体置为“紧急”的数据 |
TCP序号和确认号
TCP报文段首部中两个最重要的字段是序号字段和确认号字段。TCP把数据看成一个无结构的、有序的字节流。我们从TCP的序号是建立在传送的字节流上,而不是建立在传送的报文段的序列之上。一个报文段的序号因此是该报文段首字节的字节流编号。
所以需要对原来的文件进行切割(如下,其中MSS为1000字节)
11. Telnet:
EstimatedRTT = 0.875 * EstimatedRTT + 0.125 * Sample
3. 这种平均称为指数加权移动平均 EWMA (Exponential Weighted Moving Average)
4. 除了估算RTT外,测量RTT的变化也是有价值的。定义RTT偏差DevRTT,用于估算SampleRTT一般会偏离EstimatedRTT的程度。
DevRTT = (1 - b) * DevRTT + b * | SampleRTT - EstimatedRTT |
5. 设置和管理重传超时间隔
TimeoutInterval = EstimatedRTT + 4 * DevRTT (初始只推荐为1秒)
13. 可靠数据传输
3. 因为TCP不允许分配的缓存溢出,所以有以下的公式成立
LastByteRevd - LastByteRead <= RecvBuffer
其中接收窗口用rwnd表示,所以有rwnd = RecvBuffer - [LastByteRevd - LastByteRead]
4.
16. TCP连接管理
三次握手:(其中第二阶段的报文有时也称为SYNACK报文段)
四次挥手
17. 拥塞控制原理
**ATM (异步传递方式)网络 **
ABR (可用比特率)服务
2. 情况2:两个发送方和一台具有有限缓存的路由器
1. 两个速率:
1. 应用程序将初始数据发送到套接字中的速率
2. 运输层像网络中发送报文段的速率
2. 两种情况:
1. 不存在丢包现象
2. 存在丢包现象:
1. 网络拥塞所带来的另一个代价是发送方必须执行重传以补偿因为缓存溢出而丢弃(丢失)的分组。
2. 另一个代价是发送方在遇到大时延时所进行的不必要的重传会引起路由器利用其链路带宽来转发不必要的分组副本。
注意纵坐标是out,也就是有效的到达的
3. 4个发送方和具有优先缓存的多台路由器及多跳路径
1.
2. 可以看到另外一个拥塞导致的问题:一个分组沿一条路径被丢弃时,每个上游路由器由于转发该分组到丢弃该分组而使用的传输容量最终被浪费掉了。
2. 拥塞控制方法
1. 端到端的拥塞控制:原因如下
1. IP层不会向端系统提供有关网络拥塞的反馈信息
2. TCP报文段的丢失(超时或者三次冗余确认)被认为是网络拥塞的一个迹象,TCP会相应的减小器窗口长度
2. 网络辅助的拥塞控制
1. 两种方式:
1. 一种阻塞分组的形式,直接反馈信息发送给发送方
2. 路由器标记和更新从发送方流向接收方的分组中的某个字段来指示拥塞的产生。
3. ATM 、ABR拥塞控制
1. ATM **是一种采用面向虚电路VC的方法来处理分组交换的。**也就是从源到目的地路径上的每台交换机将维护有关源到目的地VC的状态。这样更有利于网络辅助拥塞控制的实现。
2. ATM的术语:
1. 交换机 (路由器)
2. 信源(cell) (分组)
3. 资源管理单元 (Resource-Management Cell) RM信元
3. 在两个交换机之间传递的时候夹杂着RM信元,可以用来提供直接网络反馈
4. ATM ABR拥塞控制是一种基于速率的方法。提供的机制有:
1. EFCI比特 (Explicit Forward Congestion Indication)显示转发拥塞指示(1表示拥塞)
2. CI 和 NI比特, Congestion Indication 拥塞指示比特 和 No Increase 无增长比特。
3. ER的设置, 显示速率(Explicit Rate, ER)
整个过程与细节:
18. TCP拥塞控制(端到端的拥塞控制)
2. 每一个RTT的起始点,只允许发送cwnd个字节,所以发送速率是cwnd/RTT字节/秒
3. TCP使用确认来出发(或计时)来增大cwnd长度。所以也被说成是自计时的.
4. 三个冗余ACK表示的是总共有4个ACK
5. 拥塞控制的FSM描述
6. 快速恢复:
1. 在早期的TCP Tahoe中没有快速恢复
2. TCPReno中综合了快速恢复
3.
7. 称为:加性增,乘性减(AIMD Additive Increase Multiplicative Decrease)
8. TCP吞吐量的宏观描述:
1. 一个高度简化的模型:
1. 当速率增长到W/RTT时,网络开始丢弃来自连接的分组,则会导致发送速率变成原来的一半,然后又开始增长,不断重复,所以
一条连接的平均吞吐量 = 0.75 * W /RTT
2.
证明:
9. 公平性:
1. 理想化情形中是公平的,但是有条件的:
1. 只有TCP连接穿过瓶颈链路,所有的连接具有相同的RTT值
2. 并且对于一个主机-目的地对而言只有一条TCP与之相关联
2. 实践中是不公平的:
1. 多个连接共享一个共同的瓶颈链路时,具有较小的RTT的连接能够在链路空闲时更快地抢到可用带宽(因为可以更快地打开拥塞窗口)
3. 现实中的UDP是没有拥塞控制的,这也就是UDP源可能压制TCP流量。
4. TCP应用可以使用多个并行连接,web应用十分常见。
前面的都是协议栈的边缘
粗略的本章节内容
区分转发与路由选择功能
硬件体系结构和组织
分组转发(IP、IPv4)
网络地址转换(NAT)、数据报分段、因特网控制报文协议(ICMP)与IPv6
路由选择功能
路由选择算法的理论:
LS
DV
等级制路由选择方法
因特网的自治系统内部的路由选择协议(RIP、OSPF、IS-IS)
因特网的自治系统之间的路由选择协议(BGP)
转发与路由选择
两者的区别:
转发指的是单个路由器将分组有输入链路移动到适当的输出链路
三种内部结构
路由选择:指的是从全局中分组发送的路由或路径。
每一个路由器都具有一张转发表。路由器通过检查到达的分组首部字段的值来转发分组。
路由器接收路由选择协议报文,该信息被用于配置其转发表。
| 分组交换机(包含后面两个) | 链路层交换机 | 路由器 |
|:----|:----|:----|
| 分组交换设备 | 基于链路层字段中的值做转发决定的 | 其他的分组交换机,基于网络层字段中的值做转发决定的 |
网络层的功能:
转发
路由选择
连接建立
因特网的网络层
尽力而为服务(best-effort service)
不同服务模型的比较
3. **ATM CBR (Constant Bit Rate)恒定比特率 **(电话公司)
4. ATM ABR 见课本207页以及前面的知识点
5. 虚电路与数据报网络(重要 与其他的层相区别)
4. 创建一个新的虚电路,转发表就增加一个新的表项
5. 终止一条虚电路,沿着该路径的每个表的相应项就被删除
4. 虚电路的3个不同的阶段:
1. 虚电路建立(该阶段还可以预留带宽)
2. 数据传送
3. 虚电路拆除
5. 虚电路与运输层的连接建立的区别:
1. 运输层的连接仅仅设计两个端系统,而网络中的路由器对这些完全不知情
2. 而对于一个虚电路网络层,沿着两个端系统之间路径上的路由都要参与虚电路的简历,且每台路由器都完全知道经过它的所有虚电路。
6. 信令 signaling
2. 数据报网络
1. 例子:因特网
2. 不同之处:
1. 每个路由器中的每台都是用分组的目的地址来转发该分组。
2. 每台路由器有一个将目的地址映射到链路接口的转发表。
3. 最长前缀匹配原则:
4. 数据包网络中路由器不维持连接状态信息,但是需要维护转发表这一个转发状态信息。然而实际上变化的时间尺度比较慢,是通过前面的路由选择算法协议进行修改的,通常1-5分钟改一次。
3. 由来:
1. 虚电路与前面的电路交换类似,来源于电话界
2. 数据报则是因为高层已经实现,而且方便新主机的加入
6. 路由器工作原理(转发功能)
2. 四个结构:
1. 输入端口
1. 功能:
1. 一条输入的物理链路与路由器相连接的物理层功能
2. 需要与位于入链路远端的数据链路层交互的数据链路层功能
3. 查找功能,控制分组
2. 交换结构(路由器中的网络)
3. 输出端口
1. 双向的链路时,输出端口通常是与输入端口在同一线路卡上成对出现的
4. 路由选择处理器
3. 输入端口:
1. 在输入端口中执行的查找对于路由器的运行是重要的
2. 通常转发表的一份影子副本会被存放在每个输入端口。转发表从路由选择处理器经过独立总线复制到线路卡。也就上面图的虚线。
3. 有了影子副本,转发决策能够在每一个输入端口本地做出,无需调用中央路由选择处理器。避免了集中式处理的瓶颈。
4.
5. 由于查找表的速度要足够快,所以有了一个三态内容可寻址存储器(TCAM)用于查找。
6. 一系列在端口完成的操作:
1. 必须出现物理层与链路层处理
2. 必须检查分组的版本号、检验和以及寿命字段,并重写后面两个字段
3. 必须更新用于网络管理的计数器
4. 交换结构
1. 交换结构位于一台路由器的核心部位
2. 三种:
1. 内存:
1. 许多的现代路由器通过讲分组存储进适当的内存存储位置
2. 总线:
1. 每一时刻只能够传一个
3. 纵横式:
1. 可以同时传,除非通过端口输出
5. 路由器缓存的大小:
1. 线路前部阻塞(HOL),即在一个输入队列中排队的分组必须等待通过交换结构发送(即使输出端口时空闲的),因为她被位于线路前部的另一个分组所阻塞。
7. 因特网的网络层的三个主要组件:
8. IP数据报格式(IPv4)
版本 | IPv4、IPv6 |
---|---|
首部长度 | 一般情况下是20 |
服务类型TOS | 将不同类型的IP数据报区分开(比如IP电话或者FTP什么的) |
数据报长度 | IP数据报的总长度 |
标识、标志、片偏移 | 用于分片机制 |
寿命TTL | 用于确保数据报不会永远在网络中循环(ICMP有用到) |
协议 | 表明应该交给哪个运输层协议 |
首部检验和 | 检验和(16位 2个字节) |
源和目的IP地址 | 通过DNS获取的IP地址 |
选项 | |
数据 | 该字段还可以承载ICMP报文 |
5. 存在的问题:
1. 分片是有开销的,使得变得复杂
2. 其次是会引发攻击
3. 所以IPv6从根本上废止了分片
10. IPv4编址
5. DHCP的4个步骤:
1. DHCP发现的过程通过广播,也就是链路层将该帧广播到所有与该子网连接的子网。
2. DHCP提供,提供推荐的IP地址与网络掩码、IP地址租用期,通常是几个小时
3. DHCP请求,回显配置参数
4. DHCP ACK证实参数
12. 网络地址转化NAT
5. 有很多的缺点:
1. 端口号是用于进程编址而不是用于主机编址
2. 路由器通常仅应处理高达第三层的分组
3. NAT违反了端到端的原则(这样导致TCP不能建立)
4. 应该使用IPv6来解决IP地址短缺的问题
13. UPnP 通用即插即用
14. ICMP 因特网控制报文协议
ICMP被主机和路由器用来批次沟通网络层的信息。最典型的用途是差错报告
ICMP通常被认为是IP的一部分,但从体系结构上是位于IP之上的。因为ICMP报文时承载在IP分组中的
ICMP报文:
常用的
| ICMP类型 | 编码 | 描述 |
|:----|:----|:----|
| 0 | 0 | 回显回答 |
| 8 | 0 | 回显请求 |
| 11 | 0 | TTL过期 |
| 3 | * | error |
ICMP报文**另一个是源抑制报文,**也就是强制主机减少其发送速率
常用的也就是Traceroute程序
IPv6
| 主要变化 | |
|:----?:----|
| 扩大的地址容量 | 任播地址(anycast address)的新型地址,可以将数据报交付给任意一组主机中的任意一个 |
| 简化高效的40字节首部 | 更加高效(抛弃了很多的IPv4的标签) |
| 流标签和优先级 | 需要特殊处理的流,如一种非默认服务质量或者需要实时服务的流 |
| 版本 | 4个比特表示IP版本号 |
| 流量类型 | 与IPv4TOS类似 |
| 流标签 | 标识一条数据报的流 |
| 有效载荷长度 | 长度 |
| 下一个首部 | 表示的是交付给哪一个协议 |
| 跳限制 | 与TTL类似 |
| 源地址和目的地址 | |
| 数据 | |
| 分片/重新组装 | IPv6不允许在中间路由器上进行分片与重新组装,如果数据报太大则丢弃并返回一个分组太大的ICMP差错报文 |
| 首部检验和 | |
| 选项 | |
一种用于IPv6的新版ICMP,新增的有:“分组太大”和“未识别的IPv6选项”
还包括后面的IGMP(管理主机加入和离开多播组)
从IPv4到IPv6的迁移
双栈方法
使用该方法的IPv6节点还具有完整的IPv4实现,这样的节点称为IPv6/IPv4节点,具有发送和接收IPv4和IPv6两种数据报的能力
可以通过DNS来判断节点是IPv6还是IPv4
但是就会丢失一部分IPv6特有的字段
2. 建隧道
1. 两台IPv6路由器之间的中间IPv4路由器的集合称为一个隧道
2. 将IPv6数据报直接放在IPv4的数据中
3. 图示:
17. 路由选择算法
背景知识:
默认路由器/第一跳路由器
将源主机的默认路由器称为源路由器,把目的主机的默认路由称为目的路由器
用图G = (N, E)表示
邻居
路径 最低费用路径 最短路径
理想化:
假设是无向图,同时双向的费用一样
路由选择算法的分类
| 全局/分散 | 全局式路由选择算法 | 链路状态算法 LS |
|:----?:----|:----|
| | 分散式路由选择算法 | 距离向量算法 DV |
| 静态/动态 | 静态 | 人工干预进行调整 |
| | 动态 | 能够随网络流量负载或拓扑变化而变化。 容易出现路由选择循环、路由震荡的问题 |
| 负载敏感/迟钝 | 敏感 | |
| | 迟钝 | RIP、OSPF、BGP |
链路状态路由选择算法(复杂度:O(n^2))
使用链路状态广播算法完成
使用Dijkstra算法
特点:k次迭代后,可知道到k个目的结点的最低费用路径
使用的记号
3. 计算的过程
原图:
步骤:
产生的转发表
4. 出现的问题 — 链路振荡
1. 定义:链路费用等于链路的负载
2. 背景:非对称的,不是无向图
3. 图示 x、z输入1,y输入e
4. 解决方法:
1. 强制链路费用不依赖于所承载的流量(不太现实)
2. 确保并非所有的路由器都运行LS算法,让每台路由器发送链路通告的时间随机化。
19. 距离向量路由选择算法 DV RIP(routing information protocol)
3. 其中v是x的所有邻居
4. 每个节点所需要维护的信息:
1. 对于每个邻居v,从x到直接相连邻居v的费用为c(x,v)
2. 结点x的距离向量,即x到N中所有目的地y的费用的估计值
3. 它的每个邻居的距离向量
5. 发送更新的条件:本身的距离向量发生了变化
6. 图示
7. 问题:链路费用改变与链路故障
1. 路由选择环路
2. 图示
8. 解决方法:增加毒性逆转
1. 也就是z如果通过y路由选择到目的地x,则z将通告y,z到x的距离是无穷大
2. 3个或者更多结点 的环路无法使用毒性逆转技术检测到
20. LS与DV路由选择算法的比较
算法 | LS | DV |
---|---|---|
报文复杂性 | O(N E) | 在新的链路费用变化时才广播 |
收敛速度 | O(N^2) | 比较慢 |
健壮性 | 比较好 | 比较差(分散式的) |
网关路由器(gateway router)
4. inter-autonomous system routing protocol:在自治系统之间运行的路由选择算法 BGP4
转发表的生成
5. 热土豆路由选择
1. AS尽可能快地扔掉分组(热土豆)。这通过让路由向某网关路由器发送分组来完成。同时该网关路由器在到目的地路径上的所有网关路由器中最低的路由器到网关的费用
2. 具体步骤的图示如下
6. ISP与AS之间的关系
1. 某些第一层ISP对它们的整个网络使用一个AS,其他的ISP则将它们的ISP划分成数十个互联的AS。
23. RIP Routing Information Protocol 路由选择信息协议
TCP流控制小程序: http://www.ccs-labs.org/teaching/rn/animations/flow/
三次握手与四次挥手以及一些问题:https://www.jianshu.com/p/9968b16b607e
TCP/IP之网络地址转换(NAT) : https://www.jianshu.com/p/83738ff01b8e
ICMP : https://blog.csdn.net/qq_37964547/article/details/80503760