一、应用层
1、第1部分:应用程序层
a.概念性,网络应用协议的实现方面
-客户端 - 服务器范例
-服务模式
b.通过检查流行的应用程序级协议来了解协议
c.具体协议:
HTTP、FTP、SMTP、流行(邮局协议)、DNS
d.编程网络应用
-套接字API
2、网络应用程序和应用程序架构
基于文本的应用程序
- telnet,电子邮件,ftp,网页,聊天,P2P文件共享
- 多用户游戏、电子商务、互联网电话、视频会议、VoD,AoD - 音频和视频点播
- C / S模式,P2P,c / s + p2p混合
- 通过套接字:应用程序和传输层之间的门,API
3、服务质量(QoS)要求
- 一些应用程序(例如音频)可以容忍一些损失
- 其他应用程序(例如,文件传输,远程登录,电子邮件,金融应用程序)需要100%可靠的数据传输
- 一些应用程序(例如,互联网电话,交互式游戏)需要低延迟以“有效”
- 一些应用程序(例如多媒体)需要最小量的带宽以“有效”
- 分组间隔的变化
- 其他应用程序(“弹性应用程序”)利用他们获得的任何带宽
除此之外还有安全性,同步等
4、超文本传输协议(HTTP)
- http:超文本传输协议,网络的核心。
- C / S,交换HTTP消息
- HTTP定义了消息交换的结构以及客户端和服务器如何交换这些消息
- 无状态
- 网页(网页文件)由对象组成
- 对象是可以通过单个URL寻址的文件
- URL:统一资源定位器
--主机名+路径
--www.someschool.edu/somedprt/pic.gif
- HTML:超文本标记语言
4.1、持久连接(默认为http / 1.1)
- 服务器在发送响应后保持TCP连接处于打开状态,同一客户端和服务器之间的后续请求和响应可通过此连接发送
- 同一台服务器中的多个对象或网页可以通过单个持久性TCP连接发送
- HTTP服务器在空闲一段时间后关闭连接
- 客户端在接收到基本HTML后立即发送对所有引用对象的请求。
- 背对背的请求和引用对象的响应
- 1 RTT适用于所有对象,启动延迟较慢。
4.2、http请求消息格式
- 两种类型的http消息:请求,响应
- http请求消息:
--ASCII(人类可读格式)
4.3、http响应消息格式
5、网页缓存
- 客户端缓存
- 代理缓存
- 分布式缓存
5.1、条件GET:客户端缓存
目标:如果客户端具有最新的缓存版本,则不要发送对象
- 减少对象检索延迟和网络流量
- Web缓存可以驻留在客户端或中间缓存服务器中
- 条件GET:获取最新的对象
- 客户端:在http请求中指定缓存副本的日期
- 如果缓存副本是最新的,则server:response不包含对象:
--HTTP / 1.0 304未修改
5.2、代理缓存
Web缓存:代表服务器满足HTTP请求的网络实体
目标:满足客户请求,而不涉及原始服务器
工作准则:
- 用户设置浏览器:通过Web缓存进行Web访问
- 客户端将所有http请求发送到Web缓存
--Web缓存中的对象:Web缓存返回对象--否则来自原始服务器的Web缓存请求对象,然后将对象返回给客户端
5.3、合作缓存/分布式缓存
多个Web缓存和多级缓存- 骨干缓存
- 位于互联网的不同位置
- 合作并提高整体表现
--如果命中错过,使用Http和ICP(Internet缓存协议)从相邻(或更高级别)缓存中获取对象,协作缓存的另一种形式涉及高速缓存集群,通常位于同一局域网上
--ICP是一种应用层协议,它允许一个缓存如果有一个给定的文档,就可以快速询问另一个缓存[RFC 2186]
- 可靠性,并行性
- 负载均衡
- 对象定位(哈希路由)
6、ftp:文件传输协议
6.1、ftp基本传输原理
- RFC 959:将文件传输到远程主机或从远程主机传输文件:C / S模型
- 打开两个并行TCP连接:
--控制:交换命令,客户端,服务器之间的响应。
-“带外控制”(port21),持久
-带内的
- 有状态的协议
6.2、ftp数据类型和结构
- ASCII
- EBCDIC
- 图像:连续的位
- 本地:指定字节的大小
- 文件结构:连续的数据字节序列
- 记录结构:文件由连续记录组成
- 页面结构:文件是由独立的索引页面组成的?
- 流,块,压缩
7、电子邮件
7.1、电子邮件的基本结构与组成
三大组成部分:
- 用户代理
- 邮件服务器
- 简单的邮件传输协议:smtp
- 邮箱包含用户传入的消息(尚未读取)
- 传出(待发送)邮件消息的消息队列
- 邮件服务器之间的smtp协议发送电子邮件
--C / S模式
7.2、电子邮件的协议:smtp [RFC 821]
直接传输:将服务器发送到接收服务器
- 没有中间服务器
- 端口25
- 持久连接
- 消息必须是7位ASCII码
- 消息中不允许使用CRLF.CRLF
7.3、非ASCII数据的MIME扩展
8位编码支持多媒体,包括中文
- 16位编码
- 内容类型:提醒接收者使用哪个显示程序
- Content-transfer-encoding:ascii编码中使用的编码类型
7.4、邮件访问协议
邮件访问协议:从服务器检索
- POP3:邮局协议[RFC 1939]
--授权(代理< - >服务器)和下载
- IMAP:Internet邮件访问协议[RFC 1730]
--操纵服务器上存储的信息
- HTTP:Hotmail,Yahoo! 邮件等
--交互是通过通用网关接口(CGI)脚本完成的
8、DNS:域名系统(RFC1034,1035)
8.1、DNS中的标识符与域名系统
- DNS服务器
-减少DNS流量
-减少DNS延迟
- IP地址(32位)
- “主机名”,例如gaia.cs.umass.edu - 由人使用
- 分布式数据库以许多名称服务器的层次结构实现
- 应用层协议主机,路由器,名称服务器进行通信以解析名称(IP地址/名称翻译)
--网络“边缘”的复杂性
8.2、DNS服务
域名解析
主机名←→IP地址
其他服务:
主机别名
- 助记符
负荷分配
- 具有与一个主机名关联的不同IP地址的复制Web服务器
- 通过旋转名称映射请求来平衡负载
--Web服务器
--电子邮件服务器
8.2、DNS名称服务器 - 分布式服务器和分层服务器
3种类型的名称服务器:
根服务器
顶级域名(TLD)服务器
- 顶级域名:com,org,net,edu,gov
- 国家域名:uk,fr,ca,jp ...
- 位于主机的当地ISP
- 对于主机:存储主机的IP地址,名称
- 始终可以执行主机名称的名称/地址转换
- 每个ISP,公司都有本地(默认)名称服务器
- 主机DNS查询首先转到本地名称服务器
8.3、DNS分层结构
8.4、DNS:根名称服务器
根名称服务器:
- 如果名称映射未知,联系TLD名称服务器
- 得到映射
- 返回映射到本地名称服务器
8.5、三种查询模式
迭代查询
混合查询
- 递归+迭代
8.5.1、递归查询
8.5.2、迭代查询
根名称服务器:- 可能知道TLD DNS服务器
- 可能知道中间名称服务器:谁联系找到权威名称服务器
8.5.3、混合查询
部分递归查询,部分迭代查询9、搜索引擎
- 一个页面是一个节点
- 网址是一个边缘
- 将所有页面中标题的关键字编入索引
- Keyword←→url(title + short specification)
- 线性数组:url_table,存储找到的url指针和标题指针
- 堆:存储可变长度的标题和URL
- 散列表,将网址散列到较短的项目中
索引制作:两个步骤
第一:搜索
- 使用递归过程:process_url,输入一个url,对url进行散列,在url_table中决定url;
- 如果url位于url _table中,请选择下一个url,否则访问该页面并将url和标题放入堆中,然后散列该url并处理指针;
- process_url像上面那样处理页面中的所有URL(超链接)
- 对于url_table中的每个项目,提取标题中的关键字
- 将关键字指向相应的url_table项目
二、传输层
1、第二部分:传输层
我们的目标:
了解传输层服务背后的原理:
复用/解复用
- 可靠的数据传输
- 流量控制
- 拥塞控制
在互联网上的实例化和实现
概述:
传输层服务
复用/解复用
无连接传输:UDP
面向连接的传输:TCP
- 可靠的转移
- 流量控制
- 连接管理
- 拥塞控制
2、传输服务和协议
提供在不同主机上运行的应用进程之间的逻辑通信
提供复用/解复用服务
传输协议在终端系统而不是路由器中运行
TCP,UDP
3、UDP:用户数据报协议[RFC 768]
“无褶边”,“露骨”的互联网传输协议
- 复用/ demultimplexing
- 查错
- 该应用程序几乎直接与IP通话
- 丢失
- 按顺序交付给应用程序
- UDP发送者,接收者之间没有握手
- 每个UDP分段独立处理
3.1、UDP应用程序
简单
小段标题(8字节)
快速
- 没有连接建立(可以增加延迟)在发送者,接收者没有连接状态
--没有缓冲区,没有cc参数--没有sn,没有ack号码
- 无发送控制:UDP可以按照要求快速发送,发生错误时不会重发
3.2、UDP段结构(RFC 768)
- 源端口
- 目的端口
- 长度
- 校验
- 大约500Bytes
3.3、校验和示例
4、TCP:概述
点对点:
- 一个发件人,一个收件人
- 没有“消息界限”
- TCP拥塞和流量控制设置窗口大小
- 双向数据流在同一连接中
- MSS:最大段大小(536字节)
- 握手(交换控制消息)最初的发送者,接收者在数据交换之前的状态
- 发件人不会覆盖接收者
4.1、TCP段结构
4.2、TCP:可靠的数据传输
重新传输丢失的段
需要发送缓冲区
如何知道段丢失与否?
- 承认
- 时间到
- 序列号
- ACK预期细分:
- 累计ACK
4.3、TCP:可靠的数据传输算法
- 单向数据传输
- 无流量,拥塞控制
4.4、TCP ACK生成
事件 | TCP接收器操作 |
---|---|
按顺序到达分段,没有差距,其他一切已经确认 | 延迟的ACK。 等待下一段500毫秒。 如果没有下一个段,发送ACK |
有序段到达,没有间隙,一个延迟ACK待处理 | 立即发送单个累积确认 |
乱序分部到达高于预期的seq。 #gap检测到 | 发送重复的ACK,指示seq。 下一个预期字节数 |
细分市场的到来部分或完全填补了空白 | 如果分段在间隙的下端开始,则立即确认 |
4.5、TCP:重传场景
- 在完整收到字节120之前,发送方知道所有数据
4.6、TCP流量控制
TCP流量控制服务可以消除由于这种不匹配而导致数据包丢失的可能性
- 需要接收器的缓冲器
RcvWindow =缓冲区中的备用房间数量
RcvWindow= RcVBuffer-[LastByteRcvd-LastByteRead]
接收方:明确通知发送方(动态更改)的可用缓冲区空间量- TCP段中的RcvWindow字段
- 最初,RcvWindow = RcvBuffer
- LastByteSent-LastByteAcked<= RcvWindow
- 避免rcvBuffer = 0
4.7、TCP往返时间和超时
比RTT长
- 注意:RTT会有所不同
- 不必要的重传
SampleRTT:从段传输到ACK接收的测量时间
- 忽略重传,累计确认的段
- 使用几个最近的测量,而不仅仅是当前的SampleRTT
- 指数加权移动平均
- 给定样品的影响迅速呈指数下降
- x的典型值:0.125
- EstimtedRTT加上“安全边际”
- EstimatedRTT变化很大 - >安全系数较大
4.8、示例RTT估计:
4.9、TCP连接管理
初始化TCP变量:
seq#秒
缓冲器,流量控制信息(例如RcvWindow)
客户端:连接发起者
Socket clientSocket = new Socket(“主机名”,“端口号”);
服务器:由客户联系
Socket connectionSocket = welcomeSocket.accept();
三次握手:
- 指定初始序列号:Client_isn
- ACK收到SYN
- 分配缓冲区和变量
- Client_isn+1
- 指定服务器 - >接收器初始序列#
发送确认到服务器
- Server_isn+1
- SYN= 0
关闭连接:
第1步:客户端系统向服务器发送TCP FIN控制段
第2步:服务器收到FIN,并回复ACK。 关闭连接,发送FIN。
第3步:客户端收到FIN,并回复ACK。
- 输入“定时等待” - 将用ACK回应接收到的FIN
第4步:服务器收到ACK。 连接关闭。
5、拥塞控制方法
- 没有来自网络的明确反馈
- 从终端系统观察到的损失,延迟推断拥塞
- TCP采取的办法
路由器向终端系统提供反馈
- 表示拥塞的单个比特(SNA,DECbit,TCP / IP ECN,ATM ABR)
- 明确的费率发送者应该发送
- 两种反馈模式:
--Router→sender
--Router→receiver→sender
5.1、TCP拥塞控制
传输速率受拥塞窗口大小限制,Congwin,超过段:
- 理想情况下:尽可能快地传输(Congwin尽可能大)而不会丢失
- 增加Congwin直到发生损失(拥塞)
- 损失:减少Congwin,然后再开始探测(增加)
- 启动缓慢
- 拥塞避免
- Congwin
- 阈值:定义两个慢启动阶段,拥塞避免阶段之间的阈值
5.1.1、TCP慢启动
丢失事件:超时(Tahoe TCP)和/或三个重复ACK(Reno TCP)
5.1.2、TCP拥塞避免
三个重复的ACK(Reno TCP):
有些细分正在正确地穿过!
不要像Tahoe那样将窗口降到1来“反应过度”
- 将窗口大小减半
5.1.3、TCP Reno vs TCP Tahoe
5.1.4、AIMD与TCP公平
TCP拥塞避免:
AIMD:加法增加,乘法减少- 每个RTT增加1个窗口
- 在损失事件中减少2倍的窗口
公平性目标:如果N个TCP会话共享相同的瓶颈链路,则每个链路应获得1 / N的链路容量
5.1.5、TCP为什么公平?
随着整个增加,附加增加给出斜率1
乘积减少量按比例减少吞吐量
- 如果n个纯粹的TCP服务共享瓶颈链接,则每个最终获得C / n,这是公平的
- 如果TCP + UDP共享链路,UDP将占用更多带宽,这是不公平的!
- 如果用户使用多个并行连接(如Web浏览器),即使在纯服务中,也是不公平的!
- 速率R的链路支持9个用户,每个用户使用一个TCP连接
- 如果新用户使用11个连接,他将占用11/20的带宽,这对其他用户不公平
- 世界上没有绝对的公平!
三、网络层
1、第三部分:网络层
目标:
了解网络层服务背后的原理:- 路由(路径选择)
- 处理规模
- 路由器如何工作
- 多播
在互联网上的实例化和实现
概述:
网络层服务
路由选择原则:路径选择
分层路由
IP
Internet路由协议可靠传输
- 域内
- 域间
组播
2、网络服务模式
- 保证带宽?
- 保持分组间定时(无抖动)?
- 无亏损交货?
- 按订单交货?
- 拥塞反馈给发件人?
3、互联网网络层
4、IP地址:简介
接口:主机,路由器和物理链路之间的连接
- 路由器通常有多个接口
- 主机可能有多个接口
- 与接口相关的IP地址,而不是主机,路由器
4.1、IP地址
- 网络部分(高位比特)
- 主机部分(低位比特)
- 设备与IP地址的相同网络部分接口
- 可以在没有中间路由器的情况下物理地到达彼此
IP地址:
- 网络部分(高位比特)
- 主机部分(低位比特)
- 从路由器分离每个接口,创建孤岛
4.2、IP寻址:CIDR
- 地址空间使用效率低下,地址空间耗尽
- 例如,B类网络为65K主机分配了足够的地址,即使该网络中只有2K个主机
- 网络部分任意长度的地址
- 地址格式:a.b.c.d / x,其中x是地址网络部分的#位
4.3、特殊地址
4.4、子网掩码
主机ID的一些左位用于子网字段
子网分区必须使用子网掩码:
使用子网将减少可用的主机地址
- B:65534 host-id,如果6bit用于子网标识
- (26-2)(210-2)=63364
5、NAT:网络地址转换
5.1、NAT网关
NAT路由器维护一个NAT转换表
5.2、NAT穿越问题
- 服务器地址10.0.0.1局域网(客户端不能将其用作目标地址)
- 只有一个外部可见的NAT地址:138.76.29.7
- (138.76.29.7,端口2500)〜(10.0.0.1,端口25000)...
- 向外部广告蓝色部分
- NAT路由器在给定端口将传入请求转发给服务器
- 互联网网关设备(IGD)协议。
- 产生映射:(138.76.29.7,5001)〜(10.0.0.1,3345)...
- (有租约时间)
- 广告到外面
6、DHCP
由系统管理员在文件中硬编码
- Wintel:控制面板 - >网络 - >配置 - > tcp / ip->属性
- UNIX:/etc/rc.config
- 主机广播“DHCP discover”消息
- DHCP服务器以“DHCP offer”msg响应
- 主机请求IP地址:“DHCP请求”消息
- DHCP服务器发送地址:“DHCP ack”消息
6.1、DHCP客户端 - 服务器方案
广播
(2):地址提供
广播
(3):地址选择
广播
(4)DHCP ACK
广播
7、获取从源到目标的数据报
- 查找网络。 B的地址
- 发现B与A在同一个网络
- 链路层将直接发送数据报到链路层帧内的B.
--B和A直接相连
从A开始,目的地E:
- 查找E的网络地址
- E在不同的网络上
--A,E不直接连接
- 路由表:到E的下一跳路由器是223.1.1.4
- 链路层将数据报发送到链路层帧内的路由器223.1.1.4
- 数据报到达223.1.1.4
- 继续…..
抵达223.1.1.4,发往223.1.2.2
- 查找E的网络地址
- E在与路由器接口223.1.2.9相同的网络上
- 路由器E直接连接
- 链路层通过接口223.1.2.9将数据报发送到链路层帧内的223.1.2.2
- 数据报到达223.1.2.2 !!!
7.1、IP数据报格式
8、ICMP:Internet控制消息协议
- 错误报告:无法访问的主机,网络,端口,协议
- 回应请求/回复(由ping使用)
- IP数据报中携带的ICMP消息
9、路由原则
- 图形节点是路由器
- 图边是物理链接
“好”路径:--链路成本:延迟,$成本或拥塞水平
- 通常意味着最低成本路径
- 其他def可能
9.1、链路状态路由算法
网络拓扑,所有节点已知的链路成本
- 通过“链接状态广播”
- 所有节点都有相同的信息
- 给出该节点的路由表
符号:
c(i,j):从节点i到j的链接成本。 成本无限,如果不是直接的邻居
D(v):从源到目标的路径成本的当前值V
p(v):沿从源到v的路径的前驱节点
N:最小成本路径明确已知的节点集合
Dijkstra算法:例子
Dijkstra算法,讨论
算法复杂度:n个节点
- 每次迭代:需要检查所有节点,w,不在N中
- n *(n + 1)/ 2比较:O(n ** 2)
- 更有效的实现可能:O(nlogn)
- 例如,链路成本=携带的业务量
避免摆动
链接成本不取决于流量
- 不可接受!
- 自同步[floyd同步1994]
算法运行时引入随机延迟
9.2、距离矢量路由算法
分散式:- 每个节点只与直接连接的邻居进行通信
- 继续,直到没有节点交换信息。
- 不需要所有的节点信息
自行终止
距离表数据结构
- 每个节点都有自己的表格
- 列为每个可能的目的地
- 行为每个直接连接的节点邻居
距离表:例子
距离表给出了路由表
距离矢量算法:
在所有节点上,X:
1 Initialization: 2 for all adjacent nodes v: 3 D (*,v) = infinity /* the * operator means "for all rows" */ 4 D (v,v) = c(X,v) 5 for all destinations, y 6 send min D (y,w) to each neighbor /* w over all X's neighbors */ 8 loop |
1初始化: 2用于所有相邻节点v: 3 D(*,v)=无穷大 /*操作符表示“对于所有行”* / 4 D(v,v)= c(X,v) 5对于所有目的地,y 6向所有X的邻居发送min D(y,w)/ * 给每个邻居w * / 8循环 9等待(直到I发现链路损失更改为邻居V. 10或直到I收到来自邻居V的更新) 11 12如果(c(X,V)改变d) 13 / *通过d *改变所有dest通过邻居v的开销* / 14 / *注:d可能是正值或负值* / 15对于所有目的地y:D(y,V)= D(y,V)+ d 16 17 else if(更新来自V wrt目标Y) 18 / *从V到某些Y的最短路径已经改变* / 19 / * V已经为其最小DV(Y,w)* / 20 / *称这个收到的新值是“newval”* / 21表示单个目标y:D(Y,V)= c(X,V)+ newval 22 23如果我们有任何目的地Y的新的最小D(Y,w) 24向所有邻居发送min D(Y,w)的新值 25 26循环结束 |
距离矢量算法:例子
距离矢量:链接成本变化
链接成本变化:
- 节点检测本地链路成本变化
- 更新距离表(第15行)
- 如果成本变化的成本最小路径,通知邻居(23,24行)
链接成本变化:
- 好消息快速传播
- 坏消息传播缓慢 - “数无穷”问题!
距离向量:加入反向poisoned
如果Z通过Y路由到X:
Z告诉Y其与Z的距离是无限的(所以Y不会通过Z路由到X)
这将完全解决无穷大问题吗?
9.3、分层路由
同一AS内的路由器运行相同的路由协议
- “AS内部”路由协议
- 不同AS内的路由器可以运行不同的AS内部路由协议
9.3.1、AS内部和AS间路由
9.3.2、AS内部路由
最常见的Intra-AS路由协议:
- RIP:路由信息协议
- OSPF:开放最短路径优先
- IGRP:内部网关路由协议(思科专有)
- EIGRP
9.4、RIP(路由信息协议)
包含在1982年的BSD-UNIX发行版中
距离度量:跳数(最大= 15跳)
- 你能猜出原因吗?
每个广告:路由到多达25个目标网路
9.4.1、RIP:链接失败和恢复
- 经由邻居的路由无效
- 新的广告发送给邻居
- 邻居依次发出新的广告(如果表格改变了)
- 链路故障信息迅速传播到整个网
- 毒性逆转用于防止乒乓循环(无限距离= 25跳)
9.4.2、RIP表处理
- 由应用程序级进程管理的RIP路由表,称为route-d(守护进程)
- 通过UDP数据包发送的广告,定期重复
9.5、OSPF(开放式最短路径优先)
使用链接状态算法
- LS分组传播
- 每个节点的拓扑图
- 使用Dijkstra算法进行路由计算
--以自己为根的最短路径树--链接成本由管理员配置
OSPF通告每个邻居路由器携带一个条目
广告传播到整个AS(通过泛滥)- OSPF消息直接通过IP(而不是TCP或UDP)
9.5.1、OSPF“高级”功能(不适用于RIP)
允许多个相同成本路径(RIP中只有一条路径)
对于每个链路,针对不同TOS的多个成本度量(例如,对于尽力而为的卫星链路成本设置为“低”;对于实时为高的)
- 不同的通路←→不同的树
- 组播OSPF(MOSPF)使用基于OSPF的相同拓扑数据
9.5.2、分层OSPF
9.6、EIGRP:增强型内部网关路由协议
作为RIP的继承者,距离矢量协议
允许多个成本指标
- 延迟,带宽,可靠性,负载
9.7、Internet中的跨域路由:BGP
路径矢量协议(无成本)
- 类似于距离矢量协议
- 每个边界网关向邻居(对等体)广播全部路径(即,AS的序列)到目的地
- BGP路由到网络(AS),而不是单个主机
路径(X,Z)= X,Y1,Y2,Y3,...,Z
9.7.1、BGP:控制你的路由
X,W,Y是(提供商网络的)客户,
X是双宿:连接到两个网络
- X不想从B经由X到C路由
- ..所以X不会通告给B的路由
B通告X路径BAW
B应该为C路径BAW做广告吗?
- 没门! 因为W和C都不是B的客户,所以B没有获得任何“收入”来传递CBAW
- B想迫使C通过A路由到w
- B只想路由到/从它的顾客!
9.7.2、BGP操作
接收和过滤来自直接连接的邻居的路由通告。
路线选择。
- 要前往目的地X,哪条路径(多条广告)将被采用?
9.7.3、BGP消息
BGP消息:
- 打开:打开TCP连接到对端并认证发件人
- 更新:宣传新路径(或退出旧)
- 没有UPDATES时,KEEPALIVE保持连接活着; 也确认OPEN请求
- 通知:报告之前消息中的错误; 也用于关闭连接
9.8、广播路由
方法:
N-way-unicasting,缺点:
- N个目的地址
- N份数据
- 异步
- 不受控制的洪水
- 受控洪水
- 生成树广播
9.8.1、不受控制的洪流
当数据包到达路由器时,转发到除传入接口外的所有接口
致命缺陷:
- 广播循环
- 广播风暴
9.8.2、受控洪流
序列号控制的洪泛
- 将广播序列号引入分组中:源地址+序列号
- 每个节点都维护一个收到的每个数据包的源地址+序列号列表
- 当一个节点收到一个广播包时,检查列表是否在列表中, 否则,淹没
- 如果一个数据包到达了它自己的反向最短路径(接收器→源)的接口,泛洪;
- 否则,下降。
9.8.3、RPF示例
A→ B, C C→E,F,B(discard) F→E (discard) E→F(discard),D(discard) B→D,C(discard) D→ G,E (discard) 可能会收到重复的数据包 |
9.8.4、生成树广播
生成树:包含图中每个节点的树 第一:构建一棵生成树
|
10、路由器概述
10.1、路由器架构概述
- 运行路由算法/协议(RIP,OSPF,BGP)
- 将数据报从入局切换到出局链路
10.2.1、输入端口功能
10.2.2、路由表查找
方法:
将路由表条目存储在树状数据结构中,二进制搜索
CAM:内容可寻址内存
- 一些Cisco,64K /输入端口
其他
- 更快的数据结构
- 压缩路由表
- 基于硬件的
10.2.3、输入端口队列
头线(HOL)阻塞:队列前排队的数据报阻止队列中的其他人前进
由于输入缓冲区溢出导致排队延迟和丢失!
10.2.4、三种交换结构
10.3、输出端口
数据报从光纤到达时所需的缓冲速度高于传输速率
调度规则在排队的数据报中选择传输
11、多播
- 单播协议
- 广播协议
- 软件升级,视频会议,共享数据应用,WWW缓存更新,多部分游戏和聊天等
11.1、如何以多部分进行通信?
多重发送(Multi-uncast):发送者通过多次发送将 多个数据复制到许多接收者 多点传送(Multicast):通过一次发送操作将一个 数据包从一个发送方发送到多个接收方
|
11.2、主机组
- D类:224.0.0.0〜239.255.255.255
发件人可能是也可能不是成员
主持人可能属于多个组
主持人可能会发送给许多组
主机组是动态的
问:如何维护该组?
- IGMP
团体可以是任何大小
小组成员可能位于互联网的任何地方
团体成员可以随意加入和离开
组员身份不明确
后一部分
https://blog.csdn.net/fengcc7099/article/details/80450518
Thanks FCC