目录
计算机网络概论
计算机网络的定义
网络实体可抽象为两种基本构件:
- 结点(node)(亦称节点):计算设备
- 链路(link):物理媒体
构成网络的方式
- 直接相连
- 由某种物理媒体直接相连所有主机组成
- 分类
- 物理链路与一对结点相连: 点到点链路(point-to-point link)
- 多结点共享同一物理链路: 多路访问链路(multiple access)
- 网络云
- 网络云表示任何类型的
- 网络通常采用分组交换技术
- 主机间接连通的第一种方法
- 网络云互联
- 递归地连接网络云形成更大规模的网络,有很好的扩展性由网络云构建成网络称为互联网
- 连接两个或多个网络云的结点称路由器
- 主机间接连通的第二种方法
两种数据传递方法
- 电路交换(circuit switching)
- 主要用于电话网,在发送方和接收方之间通过多台交换机建立一条连接(电路circuit)
- 分组交换(packet switching)
- 主要用于计算机网络分组(packets) 长报文(message)划分为等长的短段,并为每个段加上首部
网络服务
- 网络服务是向用户所提供的有用网络功能,由运行在网络中不同主机上的网络应用程序协作提供。
- 应用程序运行在端系统上,而不运行在交换机和路由器上
因特网的结构
- 网络边缘(edge):
- 应用与主机
- 网络核心(core):
- 路由器(网络的网络)
- 接入网(access network):
- 连接两者的通信链路
- 将端系统连接到其边缘路由器(edge router)的物理链路及设备的集合
- 端到端原则
- 边缘智能,核心简单
- 将复杂的网络功能置于边缘(如差错控制、流量控制和应用等)
- 相对简单的分组交付功能置于核心(如分组的选路和转发功能)
- 因特网的核心
- 在中心: “第一层”ISP (如UUNet, BBN/Genuity, Sprint, AT&T), 覆盖国家/国际
- 第二层” ISP: 较小的(常为区域的) ISP(如中国电信、中国 网通、中国移动)
- 第三层” ISP和本地ISP
协议分层与服务模型
网络协议
- 为进行网络中的数据交换而建立的规则、标准或约定即称为网络协议(network protocol)
- 网络协议3要素:
- 语法 :数据与控制信息的结构或格式
- 语义:发出何种控制信息,完成何种动作以及做出何种响应
- 定时:事件实现顺序的详细说明
作业
- 网络有哪些构件?主机之间互联有哪几种方式? 端系统上的现代操作系统通常定义了哪些编程开发接口?
- 参见图1-11,因特网具有大致分层的ISP等级结构。由此回答:为何说因特网是网络的网络?每层ISP是否大致与地理范围对应?内容提供商正在以何种方式改变因特网 的结构?
- 什么叫做网络协议?构成协议的几个要素是什么?是否可以缺失其中的某个要素?请举例说明原因。
网络分层
- 分而治之
- 协议是“水平的”,服务是“垂直的”
- 体系结构
端到端原则
- 如果在较高层能够完善地实现某种功能,就无需再由较低层提供这种功能
分组交换网的性能指标
时延和丢包的产生
流量强度
- R = 链路带宽 (bps)
- L = 分组长度 (比特)
- a = 平均分组到达速率
- 流量强度 = \(La / R\)
- La/R -> 0: 平均排队时延小
- La/R -> 1: 时延急剧变大
- La/R > 1: 更多“工作”到达,超出了服务能 力,平均时延无穷大!
节点时延
- dproc = 处理时延
- 通常几个微秒或更少
- dqueue = 排队时延
- 取决于拥塞
- dtrans = 传输时延(发送时延)= L/R
- 对低速链路很大
- dprop = 传播时延
- 几微秒到几百毫秒
丢包率
- 在一定的时段内在两结点间传输过程丢失分组数量与总的分组发送数量的比率
- IP网丢包主要原因
- 路由器无法容纳到达的分组,只能丢弃(drop) 到达的分组
带宽和吞吐量
- 网络带宽
- 链路在一段特定的时间内所能传送的比特数的额定值
- 吞吐量
- 网络在单位时间内无差错地传输数据的能力
- 瓶颈链路
- 路径中可用带宽最小的链路
- 可用带宽
- 带宽与干扰流量之差
跳与路径
- 路径可以定义为形式为 \([h_0, l_1, h_1, ..., l_n,h_n]\) 的序列,是单向的
- 对于端到端路径而言,h0和hn是端系统,而 h1...hn-1 是路由器。每个<li,hi>二元组被称为一“跳”
时延与带宽乘积
- 物理意义
- 管道能够容纳的比特数
作业
- 数据在各层之间的传递过程中,各层协议的首部起着什么作 用?“水平的”协议和“垂直的”服务之间有什么关系?
- TCP/IP体系结构具有哪些层次?该体系结构的主要特点是什 么?
- 考虑一个长度为L的分组从端系统A开始,经一段链路传送到一 台分组交换机,并从该分组交换机经第二段链路传送到目的端 系统。令di、si和Ri表示链路i的长度、传播速度和传输速率 (i=1,2)。该分组交换机对每个分组的时延为dproc。假定没有 排队时延,根据di、si、Ri (i=1,2)和L,该分组总的端到端时延 是什么?现在假定该分组是1,000字节,分组交换机的处理时延 是1 ms,第一段链路的长度是4,000km,并且最后一段链路的 长度是1,000km。对于这些值,该端到端时延为多少?
数据通信基础
交换技术
电路交换
- 具有“连接建立-数据传输-连接释放”三个步骤,以分时的方式共享通信资源
- 优点
- 独占资源,通信质量有保证
- 传输时延小,通信中无拥塞
- 缺点:
- 建连时间较长,工作过程复杂
- 有时工作效率较低:计算机通信
报文交换
- 优点:
- 无连接,报文发给相邻结点,报文存储后再选择合适出口向后转发,直至目的结点
- 以“存储转发”为特征
- 缺点
- 对报文长度不加限制,中间结点存储空间很大
- 长时间占用某段线路,导致报文在中间结点时延非常大
分组交换
- “存储转发”能逐段并行利用线路,而长报文降低了系统效率
- 改进措施:
- 长报文分为较短数据块(分组)
- 仅引入较小时延
- 统计复用
- 按需使用链路带宽资源
- 链路传输能力逐分组地被共享,以链路的最大传输速率传输
- 每段链路传输速率不一定相同
接入网
点对点接入
- 经调制解调器拨号
- 最高达56Kbps直接接入到路由器(经常较少)
- 不能同时上网和打电话
- ADSL: 不对称数字用户线
- 最高达1Mbps上行(典型<256kbps)
- 最高达8Mbps下行(典型<1Mbps)
电缆调制解调器
- HFC: 混合光纤同轴
- 不对称:最高达30Mbps下行, 2 Mbps上行
- 电缆和光缆的网络将家庭连到ISP的路由器
- 家庭共享到路由器的接入
公司/大学局域网 (LAN)
- 将端系统连接到边缘路由器
以太网
- 共享或专用链路连接端系统和路由器
- 10 Mbs, 100Mbps, 千兆以 太网
物理层概述
物理层作用
- 定义在连接各种计算机的传输媒体上原始比特的交互方式及其接口,不关心具体的物理设备或具体的传输媒体
- 屏蔽掉种类繁多的物理设备和传输媒体的差异,使这些差异对上面的数据链路层透明
物理层协议
- 机械特性
- 电气特性
- 功能特性
- 规程特性
- 使用相同的物理层标准,互联设备之间能够交互比特
作业
- 假定用户共享一条2 Mbps链路。同时假定当每个用户传输 时连续以1 Mbps传输,但每个用户仅传输20%的时间。
- 当使用电路交换时,能够支持多少用户?
- 对于该问题的遗留问题,假定使用分组交换。为什么如果两个或更少的用户同时传输的话,在链路前面基本上没有排队时延?为什么如果3个用户同时传输的话,将有排队时延? c.求出某指定用户正在传输的概率。d. 假定现在有3个用户。求出在任何给定的时间,所有3个用户在同时传输的概率。求出排队增长的时间比率。 答:
- 当使用电路交换时,信道带宽需要用户独占,最多智能支持2个用户;
- 因为2Mbps链路仅能容纳两个或更少的用户同时以1Mbps连续传输时, 这时统计上会有资源富余,而当 3 个用户同时传输时,统计上便会出现供不应求 的现象,导致排队时延。
- ADSL的上下行带宽为何设计为不对称?
- 当前无线接入所使用的WiFi技术基于何种标准?为何3G技术经常要与WiFi技术配合使用?
直接连接的网络
机制
- 成桢
- 查错检测和纠错
- 可靠数据传输
- 多路访问
设备
- 以太网
- 局域网交换机
链路层概述
链路层协议
- 通过单段链路,点到点传送上层数据报
- 链路两端结点间交互的帧格式,发送和接收帧时的操作
两种网络链路类型
- 点对点链路和广播链路 链路层环境重要特点
- 一条路径上的不同链路可运行不同的链路层协议
- 链路层协议提供的服务可以不同
- 通信环境较为简单
链路层服务的设计问题
- 帧访问链路
- 用媒体访问控制(MAC)地址标识源、目的地
- 相连节点间的可靠交付
- 流量控制
- 查错检测
- 纠错
成桢
面向比特的协议
- 面向比特的协议把帧看成比特的集合
- 帧的开始和结束:
01111110
- 比特填充 (bit stuffing)法(用于发送前/接收后)
- 发送方:若报文中5个连续1,则插入一个0
- 接收方:收到5个连续1:
- 如果后面为0 ,去掉;
- 如果后面为1,再后为0,则帧结束;否则出错
PPP协议
- 点对点协议
- 家庭主机点对点链路的链路层协议
面向字节的协议
- 每帧都看成是字节的集合
- 保留一组字符为控制字符
- 效率较低,目前已很少使用
- DLE字符的“转义”作用
差错检测和纠错技术
处理帧差错的两种方法
- 检错重发
- 差错率低效果好
- 适合链路差错率很低的场合,如有线通信
- 前向纠错(Forward Error Correction, FEC )
- 纠错通过额外信息“预先”进行
- 时效性好
- 适合对时间要求很高的场合,如航天和实时控制
差错检测
- EDC= 差错检测和纠错比特 (冗余)
- D = 数据由差错校验保护,可能包括首部字段
- 奇偶校验
- 单比特奇偶校验
- 检测单个比特差错
- 二维比特奇偶校验
- 检测和纠正单个比特差错
- 单比特奇偶校验
- 互联网校验和
- 目标:检测传输段中的“差错”(如比特翻转) (注意: 仅用于运输层)
- 发送方:
- 将段内容作为16比特整数序列来处理
- 检验和: 段内容相加(补码和)
- 发送方将检验和的值取反放入 UDP 检验和字段
- 接收方:
- 计算接收到段的检验和
- 检查是否计算的检验和等于检验和字段的值:
- NO – 检测到差错
- YES – 没有检测到差错,仍可能有错
- 注意:当作加法时,最高位进比特位的进位需要加到结果中
- CRC
- 将数据比特D看作一个二进制数
- 选择r+1比特模式(生成式)G
- 目标:选择r个CRC 比特R, 使得 <D,R> 被G整除 (以2为模)
- 接收方知道G, 用G除以<D,R>。如果有非零余数:检测到差错!
- 能够检测所有小于r+1比特的突发差错
可靠传输原理
SW0协议
- 信道不丢包
- 停止等待(stop-and-wait, SW)协议
- 方案
- 接到正确PKT,发送一个肯定确认(ACK)
- 收到错误PKT,发送一个 否定确认(NAK),重传原 PKT
- 问题:若信道丢包,则发送方会一致等待接收方的确认到来,从而产生协议死锁
SW1协议
- 信道丢包
- 解决方案: 增加超时定时器
- 每发PKT,启动超时定时器,称为超时重传机制
- 重传时间略大于RTT
- 问题:当确认分组丢失时,接收方会收到两个同样的PKT
SW2协议
- 解决方案: 增加一种新机制:发送序号
- 序号只需1比特,因为它可以让接收方知道发送方是否在重传前一个分组
- 问题:若ACK迟到,则发送方判断包超时重发,结果刚发完就收到了ACK,SW2无法知道这个ACK确认的是哪个包
SW3协议(rdt2.2)
- 解决方案: 增加确认序号机制,分辨出确认对应哪个分组
- 综合以上机制为SW协议,或自动重传请求 (ARQ, Automatic Repeat Request)
- 差错检测
- 接收方确认
- 重传
- 定时器
- 序号
- 发送方FSM
作业
- 链路层协议能够向网络层提供哪些可能的服务? 举例说明链路层协议相应的服务 答:链路层协议能够向网络层提供的服务包括:成帧、差错检测、可靠交付、 媒体访问、流量控制。 例如,HDLC 协议提供了数据链路层的成帧和 CRC 检测功能等。
- 考虑4 bit的生成多项式G(x)=x3+1,假设数据M(x) 的值为10101010。附加比特R(x)的值是什么?
流水线可靠数据传输协议
- 流水线: 发送方允许发送多个传输中、未应答的分组
- 必须增加序号范围
- 发送方和/或接收方设有缓冲
- 例子
回退N步 (Go-Back-N, GBN)
- 发送方
- 在分组首部需要K比特序号,2的k次方=N
- “窗口”最大为N, 允许N个连续的没有应答分组
- ACK(n):确认所有(包括序号n)的分组->累计ACK
- 可能收到重复的分组
- 对每个传输分组用同一个计时器
- timeout(n):重传窗口中的分组n及所有更高序号的分组
- 发送窗口为3,序号为0, 1, 2, 3
- 接收方
- 接收方根据滑动窗口的序号按序接收分组,窗口内连续
- 窗口中失序分组及后面将被丢弃
- 接收方采用累积确认的方式,可以不一一确认
- GBN协议的接收窗口的长度为1
- 如果允许接收窗口的长度大于1,就不必重发已发送过的N个分组,于是得到选择重传协议
选择重传 (Selective Repeat, SR)
- 接收方分别确认所有正确接收的报文段
- 缓存分组, 以便最后按序交付给上层
- 发送方只需要重传没有收到ACK的分组
- 发送方定时器对每个没有确认的分组计时
- 发送窗口
- N个连续的序号
- 也需要限制已发送但尚未应答分组的序号
- 窗口长度小于等于序号空间的一半
- 发送方
- 上层传来数据:
- 如果窗口中下一个序号可用, 发送报文段
- timeout(n):重传分组n,重启计时器
- ACK(n):在[发送基,发送基+N\]
- 标记分组 n 已经收到
- 如果n 是最小未收到应答的分组,向前滑动窗口基指针到下一个未确认序号
- 上层传来数据:
- 接收方
- 分组n在[接收基,接收基+N-1\]
- 发送ACK(n)
- 失序:缓存
- 按序:交付(也交付所有缓存的按序分组),向前滑动窗口到下一个未收到报文段的序号
- 分组n在[接收基-N,接收基-1\]
- 发送ACK(n)
- 其他:忽略
- 分组n在[接收基,接收基+N-1\]
作业
- 在课件中给出了SW3的发送方FSM,请画出协议SW3的接收方的FSM。
- 考虑讨论流水线时的例子,网络跨越国家的例子。窗口长度设置成多少时,才能使该信道的利用率超过90%?
- 考虑一种GBN协议,其发送方窗口为3,序号范围为1,024。假设在时刻t, 接收方期待的下一个有序分组的序号是k。假设介质不会对报文重新排序。 回答以下问题:
- 在t时刻,发送方窗口内的报文序号可能是多少?为什么? b.在t时刻,在当前传播回到发送方的所有可能报文中,ACK字段中所有可能值是多少?为什么?
多路访问协议
多个发送/接收结点同时使用广播信道,如何协调它们共享一个信道 ?
信道只有一个,访问结点多个,如何设计共享算法?
- 当多个结点频繁访问信道
- 协同结点无碰撞,统一控制效率高
- 当大量结点偶尔访问信道
- 结点随机占资源,简单算法解碰撞
多路访问协议
- 信道划分
- 将信道划分为较小的“段” (时隙,频率,编码) 为每个结点分配一部分专用
- 轮流
- 结点轮流,信息较多的轮流发送的时间较长
- 随机访问
- 不划分信道,允许碰撞
- 设法从“碰撞”恢复
- 大量结点以小概率发送分组
- 以信道全部速率R传输
- 结点间无优先权协调
- 随机访问MAC协议定义了:
- 如何检测碰撞
- 如何从碰撞中恢复 (例如,经延迟后重新传输)
- 随机访问MAC协议的实例:
- ALOHA
- 时隙ALOHA
- CSMA, CSMA/CD, CSMA/CA
信道划分MAC协议: TDMA
- “循环”访问信道
- 每个站点在每个循环中获得固定长度时隙(长度=分组传输时间)
- 不使用的时隙则空闲
信道划分MAC协议: FDMA
- 信道频谱划分为频带
- 每个站点分配固定的频带
- 频带中未使用的传输时间空闲
TDMA和FDMA特点
- 消除了碰撞且公平
- 结点在每个帧时间内得到了专用的传输速率R/N bps
- 若系统仅有少数几个有大量分组要发送的结点
- 分配的频率或时隙被浪费
- 适合场合
- 所有结点都持续有大量数据发送
轮流协议
- 令牌传递(无中心)
- 控制令牌从一个结点顺序地传递到下一个
- 轮询(有中心)
- 主结点“邀请”从结点依次传输
- 适用于希望共享信道但却无法预测访问结点的数量的场景
ALOHA
- 非时隙ALOHA: 无同步要求
- 时隙ALOHA
- 效率:最大1/e=0.37
- 优点
- 效率高
- 缺点
- 有碰撞/空闲时隙,浪费时隙
- 时钟同步困难
CSMA(载波侦听多路访问)
- 发前先听
- 如果侦听到信道忙, 推迟传输
- 如果侦听到信道空闲: 传输整个帧
- 仍可出现碰撞: 传播时延意味着两个结点也许不能听到其他结点传输
- 边发边听
- 发送时侦听到信道忙, 立即停止;
- 转发强化冲突信号
CSMA/CD (碰撞检测)
- 在短时间内检测到碰撞
- 碰撞的传输尽快结束,以减少信道浪费
- 碰撞检测
- 在有线的LAN中容易: 测量信号强度,比较传输的和接收的信号
- 在无线LAN中困难:碰撞可能听不到
协议比较
- 信道划分MAC协议
- 在高负载时高效、公平地共享信道
- 低负载时低效:信道访问中延时,当1个活跃结点时,甚至仅有分配了 1/N 带宽!
- 随机访问MAC协议
- 低负载是有效:单个结点能够全面利用信道
- 高负载:碰撞开销大
- 轮流协议
- 兼有两方面的优点!
作业
- 在分析多路访问协议时进行了哪些假设?现有的几十种多路访问协议是如何分类的?这种分类的方法与结点数 量和结点访问信道的频率是否有关?
以太网
以太网(Ethernet)帧结构
- 前导码
- 模式为10101010 的7个字节,后跟模式为 10101011 的一个字节
- 用于同步接收方,发送方时钟速率
- 地址: 6字节
- 如果适配器接收具有匹配的目的地址或广播地址(如ARP分组)的帧, 它将帧中的数据提交给网络层协议
- 否则, 适配器丢弃帧
- 类型: 指示较高层协议 (大多数为IP但也可以支持其他类型如 Novell IPX和AppleTalk)
- CRC: 在接收方核对;如果检测到差错,该帧被丢弃
MAC地址
- LAN地址=物理地址=MAC地址,通常用6字节16进制表示
- 如1a-03-65-3F-2e-46
- 共有2的48次方个LAN地址
- IEEE地址分配方式:固定前24 bit,公司生成后24 bit,每个适配器具有唯一MAC地址
- 适配器的MAC地址具有扁平(没有层次)结构,且保持不变
以太网协议(CSMA/CD)
- 无连接: 在发送和接收适配器之间没有握手
- 不可靠: 接收适配器不向发送适配器发送应答或否定应答
- 发前先听;边发边听;强化碰撞;指数后退
- CSMA/CD
- 适配器从网络层接收数据报并生成帧
- 如果适配器感知信道空闲,它开始传输帧;如果它感知信道忙,等待信道空闲再传输
- 当适配器传输整个帧时,一直在检测
- 如果检测传输过程中的其他传输, 中止并发送强化冲突信号
- 中止后, 适配器进入指数回退: 在第m次碰撞后, 适配器随机地从[0,1,2,…, 2^m-1]选择一个K值。适配器等待K·512 比特时间并返回到第2步
特点
- 强化冲突信号
- 确保所有的其他传输方都知道碰撞
- 48 bit长
- 比特时间
- 对10 Mbps 以太网传每比特需 0.1 μs
- 对K=1023, 等待时间约为50 msec
- 指数回退算法
- 目标:估计当前负载,适应重传尝试
- 重负载时,随机等待时间更长
- 首次碰撞后: 从[0,1] 中 选择K;时延是K*512 bit 传输时间
- 第二次碰撞后: 从[0,1,2,3]选择 K ……
- 10次碰撞后, 从[0,1,2,3,4,…, 1023] 选择K
- 目标:估计当前负载,适应重传尝试
- 效率
链路层交换机
集线器
- 将来自某链路的比特放大后从其他所有链路传出
- 可能与来自其他结点的比特碰撞
- 无帧缓存
- 集线器相当于一根导线,碰撞检测由适配器完成
交换机
- 存储并转发以太网帧
- 当帧在网段上转发时,检查帧首部并基于MAC目的地址,选择性地向一个或多个出链路转发帧
- 当帧在网段上转发时,使用CSMA/CD 访问网段
- 全双工、无碰撞
- 透明性
- 主机不知道交换机存在
- 即插即用, 自学习
- 交换机不必配置
- 流量隔离
- 交换机将子网分割成LAN段
- 交换机过滤分组:
- 相同LAN段的帧通常不在其他LAN段上转发
- 段成为分离的碰撞域
交换机表
- 当收到帧时,交换机“学习”到发送方位置:入链路
- 在交换机表中记录下发送方/位置对
- 表结构:(MAC地址,接口,TTL)
帧过滤/转发算法
- 记录与发送主机关联的链路
- 使用MAC目的地址索引交换机表
1
2
3
4
5
6
7if 找到目的地项
then{
if 目的地位于帧到达的段
then 丢弃帧
else 在指示的接口转发该帧
}
else 洪泛
作业
- 考虑某让所有结点直接与一个集线器相连的100 Mbps的100BASE-T以太网。为了获得0.5的效率,结点和集线器之间的最大距离是多少?假设帧长为64 byte并且中间没有转发器。这个最大距离也确保正在传输的结点A能够检测出当A在传输时是否有其他任何结点在传输吗?为什么?你得到的最大距离和实际的100 Mbps标准比较将有什么结论? 只要T0>2t(tao)就能检测出有其他节点传输?
- 考虑在图3-26环境中的交换机的情况。假定(i)A向D发送一个帧,(ii)D向A回答一个帧,(iii)C向D发送一个帧,(iv)D向C回答一个帧。该交换机表初始为空。显示在这些时间的前后该交换机表的状态。对于这些事件的每个,确定传输的帧在上面的转发的链路,并简要地论证你的答案。
网络互联
网络层概述
异构网络
- 在体系结构和通信协议方面具有差异的计算机网络
- 在寻址方法、分组长度、路由选择、差错恢复等方面不同,无法直接通信
互联互通需采用网络层中继系统对不同协议的语法、语义和时序进行转换
- IP具有统一的协议和地址,为全局性寻址和路由选择进而实现网络互联互通提供了可能
- IP网络是虚拟网络,提供全局性路由选择和转发功能,下层网络提供了分组传送交付功能
- 路由器是连接异构网络的关键设备,至少有两个接口,最高层是网络层
- 端系统有协议栈所有层次,沿途网络层协议的共同作用下,形成了主机到主机的端到端路径
网络层服务
- 底层直接连接的网络可为异构,网络层提供互联互通
- 多条传送分组,需要网间路由器进行分组转发和路由选择
- 关键功能
- 转发
- 路由选择
- 路由:分组从源到目的地所经过的端到端路径
分组交付
- 直接交付
- 在一个直接连接的网络上时,分组从一台主机上直接传送到另一台主机的过程
- 间接交付
- 不在一个直接连接的网络上时,源主机必须先把分组发给一个路由器
- 可能使用不同的网络地址
网络服务模型
网络服务模型与采取的链接方式有关
- 面向连接服务
- 虚电路 (Virtual-Circuit, VC) 网络
- 连接
- 虚电路 (Virtual-Circuit, VC) 网络
- 无连接服务
- 数据报 (Datagram) 网络
- 在网络层无呼叫建立
- 路由器:没有端到端连接的状态
- 无网络级“连接”的概念
- 分组使用目的主机地址转发
- 在相同源和目的对可能采用不同的路径
- 数据报 (Datagram) 网络
因特网IP服务模型(数据报网络)的优势
- 简化了中继设备路由器的设计
- 容易互联使用不同的链路层技术
- 网络故障容易修复
- 尽力而为
- 不可靠
- 无连接
- 服务是尽力而为的
- 编址方案
- 提供标识因特网中所有主机的方法
- 不可靠的、尽力而为和无连接分组交付系统
作业
- 根据图4-1,为什么说IP网络是一个虚拟网络? 如果IP网络不实际传输分组,那么它的作用是什么? 答:直接连接的网络是能够实际传送分组的通信网,但它们通常覆盖区域较小、协议异构且没有统一的地址,无法互联互通。设计了具有统一 IP 地址和规格的 IP 协议,其他异构网络通过 IP 网络转换了格式进行中继,使得它们能够网络互联互通。因此,IP 网络相当于在异构的直接连接的网络之上构建的一个虚拟网络,它仅仅提供在各个异构子网之间 全局性路由选择和转发功能,而下面网络则提供了分组实际的通信功能。
- 根据图4-2,试填写出路由器R3的转发表内容
- 分组的直接交付和间接交付有什么区别与联系?在
交付过程中,它们分别要用到哪些层次的地址?
网际协议(IP)
IP数据报
- 分片和重新组装
- MTU-最大传输长度
- 大IP 数据报被分 割(“分段”)
- 一个长数据报分成几个短数据报
- 仅在最后目的地“重新装配”
- IP首部比特用于标识、排序相关段
IP编址
- 点分十进制记法
- IP地址: 对主机、路由器 接口的32 bit 标识符
- 接口: 在主机/路由器和物理链路之间的连接
- 路由器通常具有多个接口
- 主机可能具有多个接口
- IP编址与每个接口相联系
- 子网掩码
- 早期表示的IP地址 = {<网络号>, <子网号>, <主机号>\}
- 例:192.168.143.3/27, 即子网掩码共有27个连续的1
- 无类别域间路由选择(CIDR)
- 对于解决因特网路由器转发表空间急剧膨胀的问题至关重要
- IP地址 = {<网络地址>/<前缀>\}
- 最长前缀匹配原则
- 200.19.25.170前20 bit与表中的第一项 匹配,而该地址的前23 bit与表中的第二项匹配:应选择与表中的第二项相匹配
- 特殊的IP地址
- 网络怎样得到IP地址的子网部分?
- 从它的ISP的地址空间得到分配的部分
- ISP怎样得到地址块?
- 从因特网名字与号码分配团体( Internet Corporation for Assigned Names and Numbers,ICANN )
DHCP: Dynamic Host Configuration Protocal
- 目的:使主机在它进入网络时从网络服务器动态获取其IP地址
- 能够更新IP和租用期
- 允许地址重复
- 支持移动用户
- 概述
- 主机广播 DHCP discover 报文
- DHCP服务器用 DHCP offer 报文响应
- 主机请求IP地址 DHCP request 报文
- DHCP服务器发送地址 DHCP ack 报文
- 不仅仅提供IP地址
- IP地址
- 客户第一跳路由器地址
- DNS服务器的名字和IP地址
- 网络掩码
- 详细过程
- DHCP请求依次封装在UDP 中、IP中、802.3 Ethernet中
- 以太网帧在LAN中广播 (dest: FFFFFFFFFFFF), 被运行DHCP服务器的主机名路由器收到
- Ethernet依次解封装到IP、 UDP、DHCP
NAT 网络地址转换
- 外部仅看到本地网络使用的一个IP地址
- 对ISP无需分配地址范围:对所有设备只用一个IP地址
- 能够改变本地网络中的设备地址,而不必通知外部
- 本地网络中的设备不显式地可寻址、由外部所见(增强安全性)
- 争议
- 路由器的处理上升为第三层
- 违反了端到端原则
- 应用设计者必须要考虑 NAT可能性,如 P2P应用程序
- 地址短缺应当由IPv6来解决
ARP: Address Resolution Protocol
- 问题:虚拟网络IP地址与直接相连的网络MAC地 址如何打交道?
- 链路层协议
- LAN上每个IP结点(主机、 路由器)都有ARP表
- ARP表: 结点的IP/MAC 地址映射
- <IP地址; MAC地址; TTL>
- TTL (寿命): 地址映射被 B 忘记的时间(常为20分钟)
- 节点在相同LAN
- A向B发数据报, 且B的MAC地址不在A的ARP表中
- A广播ARP 请求分组, 包含B的IP地址
- 目的地MAC地址 = FF-FF-FF-FF-FF-FF
- LAN上所有机器接收 ARP请求
- B接收ARP分组,用自己MAC地址回答A
- A在其ARP表中缓存(保存) IP与MAC的地址对,直到信息超时
- 软状态:除非不断更新信息,否则超时
- ARP是“即插即用”的 结点自行创建其ARP表,无需网络管理员干预
- 节点在不同LAN
- A比较E的网络地址,发现不在相同网络,送路由器R(间接)
- A使用ARP从10.10.10.4得到R的MAC地址
- A生成以R的MAC地址作为目的地的链路层帧,帧包含A到E IP 数据报
- A的适配器发送帧,R的适配器接收帧
- R从帧中看到它目的地是E,使用选路协议确定路由器端口
- R出端口发现E在右侧网络,用ARP得到E的MAC(直接)
- R生成包含A到E IP数据报的帧向E发送
- E收到来自A的IP分组
ICMP: Internet Control Message Protocol
- 设计用于网 络维护和管理
- 允许端系统或路由器报告差错情况,为网管人员提供适当的工具以查询网络结点的信息
- IP 数据报携带ICMP 报文
- Traceroute原理
- 源向目的地发送一系列UDP段
- 第一个 TTL = 1
- 第二个 TTL= 2,
- ......
- 最后一跳为不可能的端口号
- 当第n个数据报到达第n个路由器:
- 路由器丢弃数据报
- 向源发送一个ICMP报文(类型11, 代码0) 报文包括路由器名字和IP地址
- 当ICMP报文到达,源计算 RTT
- 停止规则
- UDP段最终到达目的地主机
- 目的地返回ICMP “主机不可达”分组 (类型3, 代码3)
- 当源得到该ICMP, 停止
- 源向目的地发送一系列UDP段
作业
- 从IP协议支持网络层编址和转发两大功能的角度看,IP协议数据报首部 至少要包括哪些字段?这些字段应当包括什么内容?
- 考虑使用8 bit主机地址的数据报网络。假定一台路由器使用最长前缀匹 配并具有下列转发表: 对这4个接口,给出相关的目的主机地址的范围和在该范围中的地址数量。
- 在4-14网络环境中,若内网有30台主机从172.16.0.0/24地址块 中分配地址,公网地址为150.20.20.1。当内网主机浏览公网 Web网站(用80端口)和用FTP下载文件(用20端口)时,NAT的 端口随机申请。试填入NAT转换表的值。
- 在图4-17所示的网络中,端系统A要与端系统E通信。试简述 它们之间具体的通信过程。
- 设计ICMP用于处理网络管理问题的基本思路是什么? Traceroute程序的工作原理符合这个基本思路吗?
路由选择协议及其算法
路由选择
- 节点是路由器
- 边是物理链路
- 链路代价:时延、费用或拥塞等级
- 分类
- 分散
- 路由器知道物理相连的邻居、到邻居的链路费用
- 计算的迭代过程,与邻居交换信息
- 距离矢量(Distance-Vector, DV)算法
- 全局
- 所有路由器具有完全的拓扑、链路费用信息
- 链路状态(Link State algorithm, LS)算法
- 静态
- 动态
- 分散
RIP:路由选择信息协议
- 距离矢量算法
- 距离测度: 跳的数量(最大 = 15跳)
- 特点
- 仅与相邻路由器交换信息
- 交换本路由器选路表中的更新信息
- 按固定时间间隔交换信息,约30秒
- 根据更新信息,对本地RIP表进行处理
- 思想
- 如果邻居知道到达目的地的距离,且自己知道到达邻居的距离,则能算出自己到达目的地的距离
- 每个结点周期性地向其邻居发送自己距离矢量
- 当结点x接收到来自邻居的新DV估计,它使用Bellman-Ford方程更新其自己的DV
- 如果邻居知道到达目的地的距离,且自己知道到达邻居的距离,则能算出自己到达目的地的距离
- 每个结点:
- 算法
- 问题
- 链路费用变化
- 好消息传播得快
- 坏消息传播得慢—“计数到无”问题!P171
- 在算法稳定前,反复迭代
- 链路费用变化
- 例子
OSPF:开放最短路优先
- 使用链路状态(link state)算法:
- 网络拓扑和所有链路的费用都已知,可作为LS算法的输入
- LS算法依靠两种机制进行路由计算
- LS信息的可靠传输
- 积累的链路状态知识
- OSPF两个技术要点
- 使用洪泛链路状态信息的链路状态协议
- Dijkstra最低费用路径算法
- 特色
- 安全性:所有OSPF报文经鉴别(以防攻击)
- 允许多条费用相同的路径
- 在大规模网络中,用层次的OSPF
- Dijkstra算法
- 知道网络所有结点的拓扑、链路费用
- 从一个结点(源)到所有其他 结点计算最低费用路径
- 迭代: k次迭代后,得知到k 个目的地的最低费用路径
c(x,y)
: 从结点x到y的链路 费用; = ∞ 如果非直接邻居D(v)
:从源到目的地v路径费用的当前值p(v)
: 从源到v沿路径的前任结点N‘
: 已知在最小费用路径中的结点集合
BGP和层次路由选择
- 先将某区域的路由器聚合成为 “自治系统” (AS)
- 在相同AS中的路由器运行相同的路由选择协议
- 不同的AS中的路由器通过AS间的路由选择协议选路
- BGP:边界网关协议
路由器的工作原理
功能
- 转发:两个异构通信子网中的分组经过路由器的帧格式转换,实现了异构网络的互联
- 路由选择:路由器通过执行路由选择协议,更新了转发表,并使分组到达正确的输出端口
体系结构
- 输入接口卡
- 输出接口卡
- 控制器卡
- 维护本地路由转发表
- 确定分组的输出接口
- 执行路由器中的网络管理功能
- 交换结构
- 内存交换
- 经总线交换
- 经互联网络交换
作业
- 考虑图4-27上的网络。试用距离矢量算法给出结点b的距离表表项生成过程
- 考虑图4-27的网络。用Dijkstra的最短路算法计算出从b到所有网络结点的最短路径。通过计算一个类似于表4-10的表, 给出该算法的工作过程
- BGP有哪些主要功能。描述在BGP中是如何检测路径中的环路 答:BGP 是 AS 之间供可达路径的分层路由选择协议。BGP 具有以下功能:
- 从相邻 AS 处获得子网可达性信息;
- 向本 AS 内部的所有路由器传播这些可达性信息;
- 基于可达性信息和 AS 策略,决定到达子网的“好”路由。BGP 从相邻 AS 获得子网可达性信息,基于自己的策略,决定是否向其他 AS 通告, 一旦通告就承诺向该子网转发数据报;
- BGP 还向本 AS 内部的所有路由器传播相关可达性信息。 在 AS-PATH 属性包含了传递前缀的通告所经过的 AS,由此可以判断是否存 在环路。
- 观察图4-30所示的路由器体系结构。如何体现出路由器具有互联异构网络、转发和选择路由等几项关键功能。 答:
- 互联异构网络:不同异构通信子网中的分组经过路由器的物理层、链路层和网络层功能转换,在 IP 层实现地址和报文结构的统一,能够进行统一寻址。
- 转发:分组进入路由器不同输入接口卡后,通过将分组目的地址与转发表进行比较,经过交换结构后,由输出接口卡输出到不同路由器不同接口。
- 路由选择:路由器接收来自不同路由器的路由选择报文,通过执行路由选择协议,更新了转发表内容,使分组能够到达正确的输出端口 。这些功能由路由器的控制器卡供,包括路由计算与更新、拓扑和地址信息交换。
端到端协议
运输层协议概述
运输服务和协议
- 为形形色色的应用层进程利用共同的网络层尽力而为服务,提供了多路复用/分解的功能,以及可靠传输、流量控制和网络拥塞控制功能
- 可靠、按序的交付:TCP
- 面向连接服务
- 可靠数据传送服务
- 拥塞控制服务
- 传送的数据单位是TCP报文段
- 不可靠、不按序交付: UDP
- 扩展了尽力而为IP基本服务
- 传送的数据单位是 UDP 报文或用户数据报
多路复用与多路分解
端口
- 定位器端口连同IP地址,唯一标识进程
- 端口扩展了网络地址
- 进程标识符标识本地进程
- 端口号为16 bit的数,其大小在0到65535之间
- 0到1023范围的端口号称为周知端口号
进程通过套接字(socket)来描述网络两端进程间的通信链。
UDP的多路复用/分解
- UDP套接字由二元组标识 :(目的地IP地址, 目的地端口号)
- 具有不同源IP地址和/或源端口号的IP数据报可定向到相同的套接字
- 主机上进程目的端口号相同,UDP套接字相同
- 一个UDP套接字对应着一条UDP通信链
TCP的多路复用/分解
- TCP套接字由四元组标识: (源IP地址, 源端口号; 目的地IP地址, 目的端口号)
- 服务器主机可能支持许多并行的TCP套接字
- 每个套接字由其自己的四元组标识
- Web服务器对每个连接的客户具有不同的套接字
- 如非持续HTTP将为每个请求具有不同的套接字
UDP
UDP优点
- 无连接
- 简单
- 效率高
- 面向报文
- 没有拥塞控制
UDP只做了运输协议的最少工作在IP之上加入多路复用/多路分解和错误检测
重要应用
- DNS
- RIP选路表更新报文
- 网络管理数据
UDP校验和=互联网校验和
作业
- 根据网络应用的时延和可靠性可以将它们分为几类?运输层是否应当由此设计几种不同的协议?因特网的运输层协议能够为网络应用提供哪些服务?不能够提供哪些服务? 答:不能够提供带宽和时延保证、安全性服务等
- 可以认为端口号是一种地址吗?如果是,它是标识什么的地址?将端口号分为周知端口号和一般端口号有什么好处, 这与网络应用的模式有关系吗? 答:好处:大大地降低了出处差错的可能性。一般在 C/S 模式中,服务器端口通常使用周知端口好,而且必须要长期处于 打开状态,因此端口号划分与网络设计模式有关。
- 给出标识图5-5中TCP套接字的所有四元组。与UDP套接字忽略了源端的标识信息相比,TCP的套接字标识能力是增强了还是削弱了?
TCP
特点
- 面向连接
- 点对点
- 全双工
- MSS:最大报文段长度
- MTU:最大传输单元
- 可靠的交付服务
- 客户/服务器模式
- 面向字节流
- 流量控制
- 拥塞控制
TCP 的首部包括以下内容:
- 源端口 source port
- 目的端口 destination port
- 序号 sequence number
- 确认号 acknowledgment number
- 数据偏移 offset
- 保留 reserved
- 标志位 tcp flags
- 窗口大小 window size
- 检验和 checksum
- 紧急指针 urgent pointer
- 选项 tcp options
TCP可靠数据传输机制
- 使用序号、确认、超时重传、滑动窗口等机制
- 数据是无结构、有序的字节流
- 报文段的序号是该报文段字节流的首字节编号
- TCP的高效载答机制
- 确认机制是捎带(piggybacked)的
- 确认号是期望收到的下一字节的编号
- 累积确
- 确认号隐含表明了前面所有字节已正确收到
- 对失序报文段的处理方式
- 未规定,可用“回退N步协议”和“选择重传协议”
- 初始序号的选择
- 双方均可随机地选择
- 超时时限 > RTT
- RTT估计值 = (1 - a) x RTT估计值 + a x RTT样本
- 指数加权移动平均
- 典型值 a = 0.125
- RTT偏差
作业
- 主机A和B经一条TCP连接通信,并且主机B已经收到了来自A的 到字节248的所有字节。假定主机A随后向主机B发送两个紧接 着的报文段。第一个和第二个报文段分别包含了40和60 byte的数据。在第一个报文段中,序号是249,源端口号是503, 目的地端口号是80。无论何时主机B接收到来自主机A的报文段,它都会发送确认。
- 在从主机A发往B的第二个报文段中,序号、源端口号和目的端口号各是什么?
- 如果第一个报文段在第二个报文段之前到达,在第一个到达报文段的确认中,确认号、源端口号和目的端口号各是什么?
- 如果第二个报文段在第一个报文段之前到达,在第一个到达报文段的 确认中,确认号是什么?
- 假定由A发送的两个报文段按序到达B。第一个确认丢失了而第二个确认在第一个超时间隔之后到达,如在下一页上的图中所显示的那样。 画出时序图,显示这些报文段和发送的所有其他报文段和确认。(假设没 有其他分组丢失。)对于你图上每个报文段,标出序号和数据的字节编号; 对于你增加的每个应答,标出确认号。
TCP流量控制
- 让接收方控制发送方
- 控制方法:发送方维护一个接收窗口
- 工作原理
- 设置接收窗口Rwin
- Rwin用于向发送方提示接收方的缓存还有多大
Rwin = RcvBuffer - [LastByteRcvd - LastByteRead]
- 发送方不使接收缓存溢出
LastbyteSent - LastByteAcked ≤ Rwin
- 使TCP缓存不溢出
LastbyteRcvd - LastByteRead ≤ RcvBuffer
- 当接收窗口为0时,A应当周期性地发送只有一个字节数据的报文段
- 设置接收窗口Rwin
- 流量控制与拥塞控制的区别
- 流量控制是某TCP接收方针对其发送方所采取的措施
- 拥塞控制是TCP发送方针对网络拥堵情况所采取的措施
TCP连接管理
- 三次握手
- 客户向服务器发送TCP SYN报文段
- 指定初始序号
- 没有数据
- 服务器收到SYN 报文段, 用SYN ACK报文段回复
- 服务器为该连接分配缓冲区和变量
- 指定服务器初始序号
- 客户收到SYN ACK,用ACK报文段回复,可能包含数据
- 客户向服务器发送TCP SYN报文段
- 四次挥手
- 客户机向服务器发送FIN报文段
- 客户不再发送数据
- 服务器收到FIN后,返回ACK报文段
- 通知应用进程对方关闭连接
- 服务器仍然可以发送数据
- 服务器发送完数据,发送FIN ACK报文段
- 服务器释放连接,不再发送数据
- 客户收到FIN ACK后,回复ACK报文段
- 等待超时,连接关闭
- 服务器收到ACK后,连接关闭
- 客户机向服务器发送FIN报文段
- 为什么等待超时再关闭?
- 确保全部接收服务器(B)发来的数据
- 有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文
拥塞控制原理
- 成因
- 当对网络中某种资源的需求超过了其可用部分。所出现的网络性能变差直至系统崩溃现象
- Σ对资源的需求 > 可用资源
- 思路
- 增加瓶颈资源
- 抑制流量注入
- 闭环控制
- 方法
- 端到端的拥塞控制
- 不能从网络得到明确的反馈
- 从端系统根据观察到的时延/丢失推断出拥塞
- TCP✅
- 网络辅助的拥塞控制
- 路由器为端系统提供反馈
- 端到端的拥塞控制
作业
- 观察图5-9所示的TCP报文段结构,其中哪些字段分别与多路复用/分解功能有关?哪些字段分别与可靠数据传输功能有关?哪些字段分别与流量控制功能有关?哪些字段分别与拥塞控制传输功能有关? 答:源端口和目的端口;序号、确认号和检验和;窗口大小;序号和确认号
- TCP创建连接采用了三次握手过程。分析第三次握手有何作用?当TCP一端释放连接后,这端是否还能够发送报文段?此时,另一端是否还能够继续发送报文段? 答:在 TCP 创建连接的三次握手过程中,第三次握手表明第一次握手的确 是自己发送的,以防止第一次握手是以前遗留的连接。
- 网络拥塞的主要成因有哪些?它们带来的危害分别有哪些?有哪几种网络拥塞控制方法? 答:端到端;网络辅助
- 分析产生网络拥塞条件的式(5-6),其中的资源通常包括哪些内容?该公式能够为设计和解决网络管理和网络安全方案及问题提供哪些思路?
TCP拥塞控制
TCP感知拥塞方法
- TCP拥塞控制:端系统采取措施使网络不致拥塞
- 超时:确认报文没有及时返回,判断报文段“丢失”,即出现了网络拥塞
- 冗余ACK:多次收到对某个报文段的ACK
- 报文未按序达到,只能对按序接收到的最后一字节数据重复确认
- 丢包事件
- 某TCP报文段确认超时
- 收到对相同报文段的3个冗余ACK
- 控制发送速率方法
- 维护一个拥塞窗口
CWin
发送窗口上限值 ≤ min{CWin, RWin}
- 维护一个拥塞窗口
TCP拥塞控制机制
- 基本思想
- 当出现丢包事件时,迅速减小拥塞窗口CWin 的长度,使发送方降低其发送速率,而一般情况下则须谨慎地增加 CWin 的长度。
- 慢启动(SS)
- 基本思想
- 先从较小的拥塞窗口(如1个 MSS)开始,逐步试探出网络状态,而试探的增长速率要迅速,直至接近某个阈值
- 连接开始时,拥塞窗口
CWin = 1 MSS
- 以指数率快速增加速率,直到进入拥塞避免区域或发生丢包
- 每收到ACK,拥塞窗口
CWin = CWin + 1
,呈现倍增效果
- 每收到ACK,拥塞窗口
- 总结:初始速率很低,但以指数率快速增加
- 基本思想
- 加性增和乘性减(AIMD)
- 加性增
- 基本思想
- 当网络可能进入拥塞状态时,将指数增长的发送速率降低为线性增长的发送速率
- 如没有检测到丢包事件, 每个RTT时间拥塞窗口值
CWin = CWin + 1
- 状态变量ssthresh:从慢启动阶段进入拥塞避免阶段的阈值
- 基本思想
- 乘性减
- 基本思想
- 急剧减小拥塞窗口
- 超时事件后:
ssthresh = CWin / 2
CWin = 1
- 重新进入慢启动
- 收到3个冗余ACK后(Reno):
ssthresh = CWin / 2
CWin = CWin / 2
- 继续加性增
- 基本思想
- 加性增
- 小结
- 当
CWin < ssthresh
时,发送方处于慢启动阶段, CWin指数增长 - 当
CWin > ssthresh
时,发送方处于拥塞避免阶 段, CWin线性增长 - 当出现3个冗余确认时, 阈值
ssthresh = CWin/2
,且CWin = ssthresh
后线性增长 - 当超时发生时,阈值
ssthresh = CWin/2
,并 且CWin = 1 MSS
后慢启动
- 当
- 快速重传(Fast Retransmit)
- 一旦对某报文段收到了3个冗余ACK,可以在该报文段的定时器过期之前就重传丢失的报文段
- 快速恢复(Fast Recovery)
- 对TCP Tahoe,当发生丢包事件,立即将拥塞窗口减 速至1 MSS,然后转入慢启动阶段
- 对新版TCP Reno,一旦收到3个冗余ACK后, 取消慢启动并转入拥塞避免阶段
TCP的公平性
- 多媒体应用不希望用TCP
- TCP对用户公平且稳定网络,TCP友好(TCP friendly)
- 不能防止2台主机之间打开多个并行连接
作业
- TCP拥塞控制的基本思想是什么?有哪些基本拥塞控制机 制?试简要阐述它们的基本思想
- 考虑下图中TCP窗口长度作为时间的函数。 假设TCP Reno是一个经历如上所示行为的协议,回答下列问题。在各种情况中,请简要地论证你的回答
- 指出当TCP慢启动运行时的时间间隔
- 指出当TCP拥塞避免运行时的时间间隔
- 在第16个传输轮回之后,报文段的丢失是根据3个重复确认还是根据超时 检测出来的?
- 在第22个传输轮回之后,报文段的丢失是根据3个重复确认还是根据超时 检测出来的?
- 在第一个传输轮回里,ssthresh的初始值设置为多少?
- 在第18个传输轮回里,ssthresh的值设置为多少?
- 在第24个传输轮回里,ssthresh的值设置为多少?
- 第70个报文段在哪一个传输轮回内发送?
- 假定在第26个发送轮回后,通过收到3个冗余ACK检测出有分组丢失,拥塞的窗口长度和ssthresh的值将应当是多少?
- 若通信信道带宽为1Gbps,两个端系统之间的时延为 15ms,而TCP的发送窗口最大为65535字节。试计算:能达到的最大吞吐量是多少?信道的利用率是多少?
网络应用协议
域名系统DNS
域名系统
- 分布式数据库:由层次化的许多名字服务器实现
- 应用层协议:主机、路由器、 名字服务器间通信,以解析名字 (进行地址/名字转换)
- 供应用程序而不是人直接使用
- 因特网核心功能,作为应用层协议实现
- 复杂性位于网络“边缘”
- 域名系统维护了一组名字到值的映射关系
- 给定一个主机名,域名系统解析返回一个值, 如IP地址
- DNS协议运行在UDP之上,使用53号端口
- 类型
- 根域名服务器(root name server)
- 负责com, org, net, edu等,以及所有顶级国家域cn、uk等
- 顶级域名服务器(top-level domain,TLD)
- 负责管理在该顶级域名服务器注册的所有二级域名
- 权威域名服务器(authoritative name server)
- 为本组织的服务器(如Web和电子邮件)提供映射,通常有基本、辅助(备份)服务器
- 本地域名服务器(local name server)
- 默认域名服务器
- 根域名服务器(root name server)
- 交互
- 递归查询(recursive query)
- 迭代查询(iterative query)
- 后3个查询
作业
- 如果在本地域名服务器、根服务器和顶级域名服务器的无法找到某公司的域名,请阐述解析该公司域名的过程 答:主机要经过如下过程: (1)DNS 查询报文发向本地 DNS 服务器,它将查询转发到权威 DNS 服务器; (2)DNS 权威服务器将查询转发到顶级域名服务器; (3)顶级域名服务器将查询转发到根域名服务器; (4)跟域名服务器在 com 顶级域名服务器解析该公司的权威服务器; (5)由权威服务器就可以解析到该公司的本地域名服务器。
- 对同一个域名向DNS服务器发出好几次的DNS请求报文后, 每一次得到IP地址都不一样。这可能吗? 答:如果一个域名与多个 IP 地址对应,这是可能的。这种技术可用于负载 均衡场合。
- 电子邮件系统在运输层使用了TCP来传送邮件。为什么还会有发送的电子邮件对方没有收到的情况出现?请解释原因。 答:一份电子邮件必要经过: (1)从发送方用户代理通过 SMTP 向发送方 邮件服务器 (2)发送方邮件服务器通过 SMTP 向接收方邮件服务器发送邮件 (3)接收方用户代理用 POP3 或 IMAP 从接收方邮件服务器读取邮件 等 3 个环节。 尽管每个应用协议都是基于 TCP 的,可以保证邮件每次端到端传输的可靠 性,但并不能保证:
- 在发送邮件服务器或接收邮件服务器因服务器故障或缓存溢等原因导致的邮件丢失;
- 邮件服务器未工作,邮件发送不出去。电子邮件本身并没有端到端的可靠性保障机制。
HTTP
HTTP工作过程
- 客户向服务器发起TCP连接,80端口
- 服务器接受来自客户TCP连接
- 在浏览器(HTTP客户)和 Web服务器(HTTP服务器) 之间交换HTTP报文(应用层协议报文)
- 关闭TCP 连接
- HTTP是无状态的
- RTT
- 从客户到服务器发送一个分组并返回所历经的时间
- 响应时间:2RTT + 传输时间
- 一个RTT发起TCP连接
- 文件传输时间 * 连接方式
- 非持续HTTP
- 至多一个对象经过一个TCP连接发送
- HTTP/1.0
- 问题
- 每个对象要求2RTT
- 操作系统必须为每个TCP连 接工作并逐个分配资源
- 但浏览器经常打开并行TCP 连接以获取引用的对象
- 持续HTTP
- 多个对象能够经过客户和服务器之间的单个TCP连接发送
- 无流水线的持续
- 仅当前面的响应已经收到,客户才发出新的请求
- 对每个引用对象用1RTT
- 有流水线的持续
- HTTP/1.1
- 只要客户遇到一个引用对象, 它发送请求
- 例子
- 基本HTML文件、8个图片和5个视频
- 流水线持续连接的响应时间
2 * RTT + 8 * t1 + 5 * t2
- 无流水持续连接的响应时间
RTT + 8 * (RTT + t1) + 5 * (RTT + t2) = 14 * RTT + 8 * t1 + 5 * t2
- 并行非持续连接的响应时间
2 * RTT + t2
- 服务器负担大
- 对象小时开销大
请求报文格式
响应报文格式