计算机网络原理笔记
copyright: ©Leif_李宇阳 转载请注明出处。
传送门大法好~~
概述
物理层
数据链路层
网络层
运输层
计算机网络原理笔记
copyright: ©Leif_李宇阳 转载请注明出处。
1.概述
1-1.网络(network)由若干结点(node)和连接这些结点的链路(link)组成。
1-2.三种通讯方式
- 客户服务器方式(C/S 方式)即Client/Server方式
- 浏览器服务器模式(B/S 方式) 即Browser/Server方式
- 对等方式(P2P 方式)即 Peer-to-Peer方式
- p2p模式不区分服务请求方和提供方
1-3.三种交换方式
1-4.路由器
1-4-1.作用
- 路由器是实现分组交换(packet switching)的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。
- 在路由器中的输入和输出端口之间没有直接连线。
- N 部电话机两两相连,需 N(N – 1)/2 对电线。
1-4-2.路由器处理分组的过程:
- 把收到的分组先放入缓存(暂时存储);
- 查找转发表,找出到某个目的地址应从哪个端口转发;
- 把分组送到适当的端口转发出去。
1-5.开放系统互连参考模型
- osi参考模型市场化失败
- TCP/IP 常被称为事实上的(de facto) 国际标准。
1-6.五层协议的体系结构(OSI与TCP/IP结合)
1-6-1.五层结构
- 应用层(application layer)
- 运输层(transport layer)
- 网络层(network layer)
- 数据链路层(data link layer)
- 物理层(physical layer) (来自OSI参考模型)
1-6-2.五层结构的通讯过程
1-7.一些名词解析
- 实体(entity) 表示任何可发送或接收信息的硬件或软件进程。
- 协议 是控制两个对等实体进行通信的规则的集合。
- 服务是“垂直的”,即服务是由下层向上层通过层间接口提供的。在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下层所提供的服务。
- 同一系统相邻两层的实体进行交互的地方,称为服务访问点 SAP (Service Access Point)。
2.物理层
2-1.物理层的基本概念
- 机械特性 指明接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等等。
- 电气特性 指明在接口电缆的各条线上出现的电压的范围。
- 功能特性 指明某条线上出现的某一电平的电压表示何种意义。
- 过程特性 指明对于不同功能的各种可能事件的出现顺序。
2-2.数据通信的基本知识
2-2-1.数据通信系统模型
2-2-2.几个术语
- 数据(data)——运送消息的实体。
- 信号(signal)——数据的电气的或电磁的表现。
- “模拟的”(analogous)——代表消息的参数的取值是连续的。
- “数字的”(digital)——代表消息的参数的取值是离散的。
- 码元(code)——在使用时间域(或简称为时域)的波形表示数字信号时,代表不同离散数值的基本波形。
2-2-3.有关信号的几个基本概念
- 单向通信(单工通信)——只能有一个方向的通信而没有反方向的交互。
- 双向交替通信(半双工通信)——通信的双方都可以发送信息,但不能双方同时发送(当然也就不能同时接收)。
- 双向同时通信(全双工通信)——通信的双方可以同时发送和接收信息。
2-2-4.基带(baseband)信号和带通(band pass)信号
- 基带信号(即基本频带信号)——来自信源的信号。像计算机输出的代表各种文字或图像文件的数据信号都属于基带信号。
- 基带信号往往包含有较多的低频成分,甚至有直流成分,而许多信道并不能传输这种低频分量或直流分量。因此必须对基带信号进行调制(modulation)。
- 带通信号——把基带信号经过载波调制后,把信号的频率范围搬移到较高的频段以便在信道中传输(即仅在一段频率范围内能够通过信道)。
2-2-5.几种基本的调制方法
- 调幅(AM):载波的振幅随基带数字信号而变化。
- 调频(FM):载波的频率随基带数字信号而变化。
- 调相(PM) :载波的初始相位随基带数字信号而变化。
- 此外还有正交振幅调制QAM
2-3.信噪比,香农公式???(未记录)
2-4.无线局域网使用的 ISM 频段
无线局域网使用的ISM频段(IEEE802.11n,IEEE802.11ac,IEEE802.11ad) |
频率 |
频率带宽 |
902MHz~928MHz |
26MHz |
2.4GHz~2.4835GHz |
83.5MHz |
5.725GHz~5.850GHz |
125MHz |
2-5.信道复用技术
复用技术是指一种在传输路径上综合多路信道,然后恢复原机制或解除终端各信道复用技术的过程。
2-5-1.分类
2-5-1-1.频分复用(FDM)
载波带宽(请注意,这里的“带宽”是频率带宽而不是数据的发送速率,可参见上边的table)被划分为多种不同频带的子信道,每个子信道可以并行传送一路信号。FDM 用于模拟传输过程。
e.g.——-广电HFC网络电视信号(FDM)
OFDM 正交频分复用
OFDM系统比FDM系统要求的带宽要小得多,效率更高
e.g.——-非对称的数字用户环线(ADSL)、数字视频广播(DVB)、高清晰度电视(HDTV)、无线局域网(WLAN)和第4代(4G)移动通信系统
2-5-1-2.时分复用(TDM)
在交互时间间隔内在同一信道上传送多路信号。TDM 广泛用于数字传输过程。
可能造成线路浪费,TDM信号又称的等时信号。
e.g.——–SDH(同步数字体系),ATM(异步传输模式),IP和HFC网络中CM(电缆调制解调器)与CMTS(电缆调制解调器终端系统)的通信
2-5-1-3.波分复用(WDM)
光的频分复用。在一根光纤上使用不同波长同时传送多路光波信号。WDM 用于光纤信道。WDM与FDM 基于相同原理但它应用于光纤信道的光波传输过程。
2-5-1-4.码分复用(CDM)
每个信道作为编码信道实现位传输(特定脉冲序列)。这种编码传输方式通过传输唯一的时间系列短脉冲完成,但在较长的位时间中则采用时间片断替代。每个信道,都有各自的代码,并可以在同一光纤上进行传输以及异步解除复用。
2-5-2.多址接入技术
2-5-2-1.FDMA
FDMA频分多址采用调频的多址技术,业务信道在不同的频段分配给不同的用户。FDMA适合大量连续非突发性数据的接入,单纯采用FDMA作为多址接入方式已经很少见。目前中国联通、中国移动所使用的GSM移动电话网就是采用FDMA和TDMA两种方式的结合。
2-5-2-2.TDMA
TDMA时分多址采用了时分的多址技术,将业务信道在不同的时间段分配给不同的用户。TDMA的优点是频谱利用率高,适合支持多个突发性或低速率数据用户的接入。除中国联通、中国移动所使用的GSM移动电话网采用FDMA和TDMA两种方式的结合外,广电HFC网中的CM与CMTS的通信中也采用了时分多址的接入方式(基于DOCSIS1.0或1.1和Eruo DOCSIS1.0或1.1)。
2-5-2-3.CDMA
CDMA的特点是所有子信道在同一时间可以使用整个信道进行数据传输,它在信道与时间资源上均为共享,因此,信道的效率高,系统的容量大。CDMA的技术原理是基于扩频技术,即将需传送的具有一定信号带宽的信息数据用一个带宽远大于信号带宽的高速伪随机码(PN)进行调制,使原数据信号的带宽被扩展,再经载波调制并发送出去;接收端使用完全相同的伪随机码,与接收的带宽信号作相关处理,把宽带信号换成原信息数据的窄带信号即解扩,以实现信息通信。CDMA码分多址技术完全适合现代移动通信网所要求的大容量、高质量、综合业务、软切换等
2-5-2-4.SCDMA
中国第3代移动通信系统也采用同步码分多址技术,它意味着代表所有用户的伪随机码在到达基站时是同步的,由于伪随机码之间的同步正交性,可以有效地消除码间干扰,系统容量方面将得到极大的改善,它的系统容量是其他第3代移动通信标准的4~5倍(放屁!!!)。
2-5-2-5.伪随机码(PN),码片,码片序列正交关系???(未记录)
2-5-3.题外话—LTE(长期演进)
2-5-3-1.特性
- 下载使用OFDMA(正交频分多址), 上载使用SC-FDMA(单载波频分多址)以节省电力。
- 支持频分双工(FDD)和时分双工(TD)通信,并接受使用同样无线连接技术的时分半双工通信。
2-5-3-2.分类
2-5-3-3.VoLTE
LTE网络直传(VoLTE、Voice over LTE):该方案基于IP多媒体子系统(IMS)网络,配合GSMA在PRD IR.92中制定的在LTE控制和媒体层面的语音服务标准。使用该方案意味着语音将以数据流形式在LTE网络中传输,所以无需调用传统电路交换网络,旧网络将无需保留。
2-5-3-4.TD-LTE和TDD—LTE
LTE只有两种技术,一种是TDD-LTE,另外一种是FDD-LTE,因为各有优点,这两种方式三家运营商都在用。TD-LTE是移动专用的一个频段,之所以叫TD-LTE,是为了和移动的3G,TD-SCDMA叫法一致,同时也可以让人觉得TDD-LTE是移动搞出来的一样。
2-6.数字传输系统
- 脉码调制 PCM 体制最初是为了在电话局之间的中继线上传送多路的电话。
- 由于历史上的原因,PCM 有两个互不兼容的国际标准,即北美的 24 路 PCM(简称为 T1)和欧洲的 30 路 PCM(简称为 E1)。我国采用的是欧洲的 E1 标准。
- E1 的速率是 2.048 Mb/s,而 T1 的速率是 1.544 Mb/s。
- 当需要有更高的数据率时,可采用复用的方法。
2-7.宽带接入技术
2-7-1.ADSL技术
2-7-1-1.简介
ADSL 技术就是用数字技术对现有的模拟电话用户线进行改造,使它能够承载宽带业务。
ADSL 技术就把 0~4 kHz 低端频谱留给传统电话使用,而把原来没有被利用的高端频谱留给用户上网使用。
2-7-1-2.特点
- 上行和下行带宽不对称
- ADSL 在用户线(铜线)的两端各安装一个 ADSL 调制解调器。
- 我国目前采用的方案是离散多音调 DMT (Discrete Multi-Tone)调制技术。这里的“多音调”就是“多载波”或“多子信道”的意思。
2-7-1-3.DMT技术
DMT 调制技术采用频分复用的方法,把 40 kHz 以上一直到 1.1 MHz 的高端频谱划分为许多的子信道,其中 25 个子信道用于上行信道,而 249 个子信道用于下行信道。
每个子信道占据 4 kHz 带宽(严格讲是 4.3125 kHz),并使用不同的载波(即不同的音调)进行数字调制。这种做法相当于在一对用户线上使用许多小的调制解调器并行地传送数据。
2-7-1-4.ADSL的数据率
- ADSL 不能保证固定的数据率。对于质量很差的用户线甚至无法开通 ADSL。
- 通常下行数据率在 32 kb/s 到 6.4 Mb/s 之间,而上行数据率在 32 kb/s 到 640 kb/s 之间。
- 理论最大速率为8M。
- “新”推出的ADSL2和ADSL2+的最大下行达25Mb/s,上行800Kb/s。
2-7-1-5.ADSL的组成
2-7-2.HFC技术
2-7-2-1.简介
HFC 网是在目前覆盖面很广的有线电视网 CATV 的基础上开发的一种居民宽带接入网。HFC 网除可传送 CATV 外,还提供电话、数据和其他宽带交互型业务。
2.7.2.2.特点
HFC 网将原 CATV 网中的同轴电缆主干部分改换为光纤,并使用模拟光纤技术。
在模拟光纤中采用光的振幅调制 AM,这比使用数字光纤更为经济。
HFC 网具有比 CATV 网更宽的频谱,且具有双向传输功能
2-7-3.FTTx 技术
2-7-3-1.FTTH
光纤到户 FTTH (Fiber To The Home):光纤一直铺设到用户家庭可能是居民接入网最后的解决方法。
2-7-3-2.FTTB
光纤到大楼 FTTB (Fiber To The Building):光纤进入大楼后就转换为电信号,然后用电缆或双绞线分配到各用户。
2-7-3-3.FTTC
光纤到路边 FTTC (Fiber To The Curb):从路边到各用户可使用星形结构双绞线作为传输媒体。
3.数据链路层
数据链路层使用的信道有两种:
点对点信道,广播信道
3-1.使用点对点信道的数据链路层
3-1-1.数据链路和帧
3-1-1-1.链路
链路(link)是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
3-1-1-2.数据链路
- 数据链路(data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
- 现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。
- 一般的适配器都包括了数据链路层和物理层这两层的功能。
3-1-1-3.帧
- 常常在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位是帧。
- 早期的数据通信协议曾叫作通信规程(procedure)。因此在数据链路层,规程和协议是同义语。
3-1-2.三个基本问题
3-1-2-1.封装成帧
封装成帧就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧,确定帧的界限。
首部和尾部的一个重要作用就是进行帧定界。
SOH :帧开始符;
EOT:帧结束符
3-1-2-2.透明传输
- 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是 1B)。
- 字节填充(byte stuffing)或字符填充(character stuffing)——接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
- 如果转义字符也出现数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
3-1-2-3.差错检验
- 在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。
- 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。
- 误码率与信噪比有很大的关系。
- 循环冗余检验(CRC )
- 在发送端,先把数据划分为组。假定每组 k 个比特。
- 假设待传送的一组数据 M = 101001(现在 k = 6)。我们在 M 的后面再添加供差错检测用的 n 位冗余码一起发送。
- 用二进制的模 2 运算进行 2n 乘 M 的运算,这相当于在 M 后面添加 n 个 0。
- 得到的 (k + n) 位的数除以事先选定好的长度为 (n + 1) 位的除数 P,得出商是 Q 而余数是 R,余数 R 比除数 P 少1 位,即 R 是 n 位。
-
-
- 帧检验序列 FCS
- 在数据后面添加上的冗余码称为帧检验序列 FCS
- 循环冗余检验 CRC 和帧检验序列 FCS并不等同。
- CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。
- FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。
- 接收端对收到的每一帧进行 CRC 检验
- (1) 若得出的余数 R = 0,则判定这个帧没有差错,就接受(accept)。
- (2) 若余数 R 0,则判定这个帧有差错,就丢弃。
- 但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错。 只要经过严格的挑选,并使用位数足够多的除数 P,那么出现检测不到的差错的概率就很小很小。
- 注意:
- 仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受(accept)。
- “无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。也就是说:“凡是接收端数据链路层接受的帧都没有传输差错”(有差错的帧就丢弃而不接受)。
- 要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。
3-2.PPP协议
现在全世界使用得最多的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)。用户使用拨号电话线接入因特网时,一般都是使用 PPP 协议。
3-2-1.三个组成部分
- 一个将 IP 数据报封装到串行链路的方法。
- 链路控制协议 LCP (Link Control Protocol)。
- 网络控制协议 NCP (Network Control Protocol)。
3-2-2.PPP协议的帧格式
3-2-2-1.PPP协议的帧格式
- 标志字段 F = 0x7E (符号“0x”表示后面的字符是用十六进制表示。十六进制的 7E 的二进制表示是 01111110)。
- 地址字段 A 只置为 0xFF。地址字段实际上并不起作用。
- 控制字段 C 通常置为 0x03。
- PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节。
3-2-2-2.透明传输
当 PPP 用在同步传输链路时,协议规定采用硬件来完成比特填充(和 HDLC 的做法一样)。
当 PPP 用在异步传输时,就使用一种特殊的字符填充法。
- 字符填充
- 将信息字段中出现的每一个 0x7E 字节转变成为 2 字节序列(0x7D, 0x5E)。
- 若信息字段中出现一个 0x7D 的字节, 则将其转变成为 2 字节序列(0x7D, 0x5D)。
- 若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变。
- 零比特填充
- PPP 协议用在 SONET/SDH 链路时,是使用同步传输(一连串的比特连续传送)。这时 PPP 协议采用零比特填充方法来实现透明传输。
- 在发送端,只要发现有 5 个连续 1,则立即填入一个 0。接收端对帧中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续 1 后的一个 0 删除,
PPP 协议之所以不使用序号和确认机制是出于以下的考虑:
- 在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。
- 在因特网环境下,PPP 的信息字段放入的数据是 IP 数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。
- 帧检验序列 FCS 字段可保证无差错接受。
3-2-3.PPP协议的工作状态
- 当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。
- PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。
- 这些分组及其响应选择一些 PPP 参数,和进行网络层配置,NCP 给新接入的 PC机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。
- 通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。
-
3-3.使用广播信道的数据链路层
3-3-1.局域网的数据链路层
3-3-1-1.局域网
- 局域网最主要的特点是:网络为一个单位所拥有,且地理范围和站点数目均有限。
- 局域网具有如下的一些主要优点:
- 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
- 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
- 提高了系统的可靠性、可用性和残存性。
- 局域网的拓扑结构有三种:
- 星形网 使用集线器连在一起
- 总线网 使用匹配电阻连在一起
- 环形网 使用干线耦合器连在一起
3-3-1-2.媒体共享技术
- 静态划分信道
- 频分复用—FDM
- 时分复用—TDM
- 波分复用—WDM
- 码分复用—CDM
- 动态媒体接入控制(多点接入)
- 随机接入
- 受控接入 ,如多点线路探询(polling),或轮询。
3-3-1-3.以太网的两个标准
- DIX Ethernet V2 是世界上第一个局域网产品(以太网)的规约。
- IEEE 的 802.3 标准。
- DIX Ethernet V2 标准与 IEEE 的 802.3 标准只有很小的差别,因此可以将 802.3 局域网简称为“以太网”。
- 严格说来,“以太网”应当是指符合 DIX Ethernet V2 标准的局域网
3-3-1-4.数据链路层的两个子层(LLC、MAC)
- 为了使数据链路层能更好地适应多种局域网标准,802 委员会就将局域网的数据链路层拆成两个子层:
- 逻辑链路控制 LLC (Logical Link Control)子层
- 媒体接入控制 MAC (Medium Access Control)子层。
- 与接入到传输媒体有关的内容都放在 MAC子层,而 LLC 子层则与传输媒体无关,不管采用何种协议的局域网对 LLC 子层来说都是透明的(即LLC子层看不到局域网)。
- **由于 TCP/IP 体系经常使用的局域网是 DIX Ethernet V2 而不是 802.3 标准中的几种局域网,因此现在 802 委员会制定的逻辑链路控制子层 LLC(即 802.2 标准)的作用已经不大了。
很多厂商生产的适配器上就仅装有 MAC 协议而没有 LLC 协议。**
3-3-1-5.网络适配器,又名:网络接口板、通信适配器、网络接口卡(NIC)、网卡
- 功能:
- 进行串行/并行转换。
- 对数据进行缓存。
- 在计算机的操作系统安装设备驱动程序。
- 实现以太网协议。
-
3-3-2.CSMA/CD 协议 (载波监听多点接入/碰撞检测 )
3-3-2-1.载波监听多点接入
- “多点接入”表示许多计算机以多点接入的方式连接在一根总线上。
- “载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
3-3-2-2.碰撞检测(冲突检测)
- “碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。
- 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。
- 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。
- 所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”。
- 检测到碰撞之后:
- 在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。
- 每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。
3-3-2-3.总线网
- 最初的以太网是将许多计算机都连接到一根总线上(即总线网)。当初认为这样的连接方法既简单又可靠,因为总线上没有有源器件。
- 总线上的每一个工作的计算机都能检测到 B 发送的数据信号。 由于只有计算机 D 的地址与数据帧首部写入的地址一致,因此只有 D 才接收这个数据帧。 其他所有的计算机(A, C 和 E)都检测到不是发送给它们的数据帧,因此就丢弃这个数据帧而不能够收下来。具有广播特性的总线上实现了一对一的通信。
为了通信的简便以太网采取了两种重要的措施:
- 采用较为灵活的无连接的工作方式,即不必先建立连接就可以直接发送数据。
- 以太网对发送的数据帧不进行编号,也不要求对方发回确认。(这样做的理由是局域网信道的质量很好,因信道质量产生差错的概率是很小的。
)
以太网的最大努力交付
- 以太网提供的服务是不可靠的交付,即尽最大努力的交付。
- 当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定。
- 如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送。
-
- 题外话——差分
-差分方程是微分方程的离散化。一个微分方程不一定可以解出精确的解,把它变成差分方程,就可以求出近似的解来。
3-3-2-4.电磁波在总线上的有限传播速率的影响
当某个站监听到总线是空闲时,也可能总线并非真正是空闲的。
A 向 B 发出的信息,要经过一定的时间后才能传送到 B。
B 若在 A 发送的信息到达 B 之前发送自己的帧(因为这时 B 的载波监听检测不到 A 所发送的信息),则必然要在某个时间和 A 发送的帧发生碰撞。
碰撞的结果是两个帧都变得无用。
- CSMA/CD协议的重要特点:
- 使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)。
- 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。
- 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。
3-3-2-5. 争用期
- 最先发送数据帧的站,在发送数据帧后至多经过时间 2t (两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。以太网的端到端往返时延 2t 称为争用期,或碰撞窗口。
- 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
3-4.使用广播信道的以太网
3-4-1.使用集线器的星形拓扑网
3-4-1-1.双绞线以太网10BASE-T
10BASE-T 的通信距离稍短,每个站到集线器的距离不超过 100 m。
传输速率为10 Mb/s 。
3-4-1-2.集线器的特点
- 集线器是使用电子器件来模拟实际电缆线的工作,因此整个系统仍然像一个传统的以太网那样运行。
- 使用集线器的以太网在逻辑上仍是一个总线网,各工作站使用的还是 CSMA/CD 协议,并共享逻辑上的总线。
- 集线器很像一个多接口的转发器,工作在物理层。
3-4-2.以太网的信道利用率
3-4-2-1.发送一帧所需的平均时间
- 一个帧从开始发送,经可能发生的碰撞后,将再重传数次,到发送成功且信道转为空闲(即再经过时间t使得信道上无信号在传播)时为止,是发送一帧所需的平均时间。
3-4-2-2.参数a
- 帧长为 L (bit),数据发送速率为 C (b/s),因而帧的发送时间为 L/C = T0 (s)。
- 要提高以太网的信道利用率,就必须减小 t 与 T0 之比。在以太网中定义了参数 a,它是以太网单程端到端时延 t与帧的发送时间 T0 之比:
a = t/T0;
a = t/(L/C);
a = t·C/L;
// 理想状态下,无碰撞的情况下
Smax = T0/(T0+t) = 1/(1+a);
3-4-3.以太网的MAC层
3-4-3-1.MAC层的硬件地址
在局域网中,硬件地址又称为物理地址,或 MAC 地址。 (802 标准所说的“地址”严格地讲应当是每一个站的名字或标识符。 )
3-4-3-2.MAC地址(48位)【MAC-48】[EUI-48]
- IEEE 的注册管理机构 RA 负责向厂家分配地址字段的前三个字节(即高位 24 位)。
- 地址字段中的后三个字节(即低位 24 位)由厂家自行指派,称为扩展标识符,必须保证生产出的适配器没有重复地址。
- 一个地址块可以生成2的24次方个不同的地址。这种 48 位地址称为 MAC-48,它的通用名称是EUI-48。
“MAC地址”实际上就是适配器地址或适配器标识符EUI-48。
3-4-3-3.适配器检查 MAC 地址
适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址.
如果是发往本站的帧则收下,然后再进行其他的处理。
否则就将此帧丢弃,不再进行其他的处理。
- “发往本站的帧”包括以下三种帧:
- 单播(unicast)帧(一对一)
- 广播(broadcast)帧(一对全体)
- 多播(multicast)帧(一对多)
3-4-3-4. MAC帧的格式
- 以太网的MAC帧格式
- 以太网V2的MAC帧格式(最常用)
- IEEE802.3的MAC帧格式
- MAC帧无效的判定条件:
- 数据字段的长度与长度字段的值不一致;
- 帧的长度不是整数个字节;
- 用收到的帧检验序列 FCS 查出有差错;
- 数据字段的长度不在 46 ~ 1500 字节之间。
- 有效的 MAC 帧长度为 64 ~ 1518 字节之间。
- 对于检查出的无效 MAC 帧就简单地丢弃。以太网不负责重传丢弃的帧。
- 帧见最小的时间间隔
- 帧间最小间隔为 9.6 s,相当于 96 bit 的发送时间。
- 一个站在检测到总线开始空闲后,还要等待 9.6 s 才能再次发送数据。
- 这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。
3-5.扩展局域网
3-5-1.在物理层扩展局域网
使用集线器
- 用集线器扩展局域网的优缺点:
- 优点
- 使原来属于不同碰撞域的局域网上的计算机能够进行跨碰撞域的通信。
- 扩大了局域网覆盖的地理范围。
- 缺点
- 碰撞域增大了,但总的吞吐量并未提高。
- 如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。
3-5-2.在数据链路层扩展局域网(网桥)
3-5-2-1.网桥简介
3-5-2-2.网桥的优点、缺点
- 优点
- 过滤通信量。
- 扩大了物理范围。
- 提高了可靠性。
- 可互连不同物理层、不同 MAC 子层和不同速率(如10 Mb/s 和 100 Mb/s 以太网)的局域网。
存储转发增加了时延。
- 在MAC 子层并没有流量控制功能。
- 具有不同 MAC 子层的网段桥接在一起时时延更大。
- 网桥只适合于用户数不太多(不超过几百个)和通信量不太大的局域网,否则有时还会因传播过多的广播信息而产生网络拥塞。这就是所谓的广播风暴。
3-5-2-3.透明网桥
- 目前使用得最多的网桥是透明网桥(transparent bridge)。
- “透明”是指局域网上的站点并不知道所发送的帧将经过哪几个网桥,因为网桥对各站来说是看不见的。
- 透明网桥是一种即插即用设备(PNP设备,自带驱动,系统自动配置),其标准是 IEEE 802.1D。
3-5-2-4.网桥的自学习
- 若从 A 发出的帧从接口 x 进入了某网桥,那么从这个接口出发沿相反方向一定可把一个帧传送到 A。
- 网桥每收到一个帧,就记下其源地址和进入网桥的接口,作为转发表中的一个项目。
- 在建立转发表时是把帧首部中的源地址写在“地址”这一栏的下面。
- 在转发帧时,则是根据收到的帧首部中的目的地址来转发的。这时就把在“地址”栏下面已经记下的源地址当作目的地址,而把记下的进入接口当作转发接口。
- 转发表中还记录了帧进入网桥的时间
- 透明网桥使用了生成树算法,避免转发帧在网络中兜圈子
3-5-2-5.网桥转发帧
- 网桥收到一帧后先进行自学习。
- 查找转发表中与收到帧的源地址有无相匹配的项目。
- 如没有,就在转发表中增加一个项目(源地址、进入的接口和时间)。
- 如有,则把原有的项目进行更新。
- 然后进行转发帧。
- 查找转发表中与收到帧的目的地址有无相匹配的项目。
- 如没有,则通过所有其他接口(但进入网桥的接口除外)按进行转发。
- 如有,则按转发表中给出的接口进行转发。
- 若转发表中给出的接口就是该帧进入网桥的接口,则应丢弃这个帧(因为这时不需要经过网桥进行转发)。
3-5-2-6.源路由网桥
- 透明网桥容易安装,但网络资源的利用不充分。
- 源路由(source route)网桥在发送帧时将详细的路由信息放在帧的首部中。
- 源站以广播方式向欲通信的目的站发送一个发现帧,每个发现帧都记录所经过的路由。
- 发现帧到达目的站时就沿各自的路由返回源站。源站在得知这些路由后,从所有可能的路由中选择出一个最佳路由。凡从该源站向该目的站发送的帧的首部,都必须携带源站所确定的这一路由信息。
3-5-2-7.多接口网桥
交换式集线器(常称为以太网交换机)是一种多借口网桥
- 以太网交换机的特点
- 以太网交换机的每个接口都直接与主机相连,并且一般都工作在全双工方式。
- 以太网交换机能同时连通许多对的接口,使每一对相互通信的主机都能像独占通信媒体那样,进行无碰撞地传输数据。
- 以太网交换机由于使用了专用的交换结构芯片,其交换速率就较高。
- 独占传输媒体的带宽
- 对于普通 10 Mb/s 的共享式以太网,若共有 N 个用户,则每个用户占有的平均带宽只有总带宽(10 Mb/s)的 N 分之一。
- 使用以太网交换机时,虽然在每个接口到主机的带宽还是 10 Mb/s,但由于一个用户在通信时是独占而不是和其他网络用户共享传输媒体的带宽,因此对于拥有 N 对接口的交换机的总容量为 N10 Mb/s。这正是交换机的最大优点。
3-5-2-8.以太网交换机方便实现虚拟局域网(VLAN)
- 虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组。
- 这些网段具有某些共同的需求。
- 每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的工作站是属于哪一个 VLAN。
- 虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网。
3-6.高速以太网
3-6-1. 100BASE-T 以太网
3-6-2. 1000BASE-T 以太网
3-6-3.10 吉比特以太网和100 吉比特以太网
- 10 吉比特以太网与 10 Mb/s,100 Mb/s 和 1 Gb/s 以太网的帧格式完全相同。
- 10 吉比特以太网还保留了 802.3 标准规定的以太网最小和最大帧长,便于升级。
- 10 吉比特以太网不再使用铜线而只使用光纤作为传输媒体。
- 10 吉比特以太网只工作在全双工方式,因此没有争用问题,也不使用 CSMA/CD 协议。
4.网络层
4-1.网络层提供的两种服务
可靠交付*or最大努力交付*
- 面向连接、无差错交付的虚电路服务–电信网
- 无连接的、尽最大努力交付的数据报服务–因特网
因特网的优点:网络的造价大大降低,运行方式灵活,能够适应多种应用。
虚电路服务与数据报服务的对比 |
对比的方面 |
虚电路服务 |
数据报服务 |
思路 |
可靠通信应当由网络来保证 |
可靠通信应当由用户主机来保证 |
连接的建立 |
必须有 |
不需要 |
终点地址 |
仅在连接建立阶段使用,每个分组使用短的虚电路号 |
每个分组都有终点的完整地址 |
分组的转发 |
属于同一条虚电路的分组均按照同一路由进行转发 |
每个分组独立选择路由进行转发 |
当结点出故障时 |
所有通过出故障的结点的虚电路均不能工作 |
出故障的结点可能会丢失分组,一些路由可能会发生变化 |
分组的顺序 |
总是按发送顺序到达终点 |
到达终点时不一定按发送顺序 |
端到端的差错处理和流量控制 |
可以由网络负责,也可以由用户主机负责 |
由用户主机负责 |
4-2.网际协议(IP)
4-2-1.虚拟互连网络
网络互相连接起来要使用一些中间设备,中间设备又称为中间系统或中继(relay)系统。
4-2-2.分类的IP地址
IP 地址现在由因特网名字与号码指派公司ICANN (Internet Corporation for Assigned Names and Numbers)进行分配
4-2-2-1.IP地址及其表示方法
IP地址中的网络号和主机号字段
点分十进制记法
- 常用的三种类别的IP地址的使用范围
常用的三种类别的IP地址的使用范围 |
网络类别 |
最大网络数 |
第一个可用的网络号 |
最后一个可用的网络号 |
每个网络中最大的主机数 |
A |
126(27-2) |
1 |
126 |
16777214(224-2) |
B |
16383(214-1) |
128.1 |
191.255 |
65534(216-2) |
C |
2097151(221-1) |
192.0.1 |
223.255.255 |
254(28-2) |
4-2-2-2.IP相关知识点
IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。
路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。
在同一个局域网上的主机或路由器的IP 地址中的网络号必须是一样的。
网络层及以上使用 IP 地址
- 链路层及以下使用硬件地址
4-2-3.地址解析协议ARP
每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。
4-2-3-1.使用ARP协议的四种典型情况
- 发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
- 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。
4-2-4.IP数据报的格式
- 一个 IP 数据报由首部和数据两部分组成。
- 首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
- 在首部的固定部分的后面是一些可选字段,其长度是可变的。
- 版本——占 4 位,指 IP 协议的版本,例如IPv4
- 首部长度——占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是 60 字节。
- 区分服务——占 8 位,用来获得更好的服务
在旧标准中叫做服务类型,但实际上一直未被使用过。
1998 年这个字段改名为区分服务。
只有在使用区分服务(DiffServ)时,这个字段才起作用。
在一般的情况下都不使用这个字段。
- 总长度——占 16 位,指首部和数据之和的长度,
单位为字节,因此数据报的最大长度为 65535 (216-1)字节。
总长度必须不超过最大传送单元 MTU【最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。】。
- 标识(identification)占 16 位,它是一个计数器,用来产生数据报的标识。
- 标志(flag) 占 3 位,目前只有前两位有意义。
标志字段的最低位是 MF (More Fragment)。
MF 1 表示后面“还有分片”。MF 0 表示最后一个分片。
标志字段中间的一位是 DF (Don’t Fragment) 。
只有当 DF 0 时才允许分片。
- 片偏移(13 位)指出:较长的分组在分片后
某片在原分组中的相对位置。
片偏移以 8 个字节为偏移单位。
- 生存时间(8 位)记为 TTL (Time To Live)
数据报在网络中可通过的路由器数的最大值。
- 协议(8 位)字段指出此数据报携带的数据使用何种协议
以便目的主机的 IP 层将数据部分上交给哪个处理过程
- 首部检验和(16 位)字段只检验数据报的首部
不检验数据部分。
这里不采用 CRC 检验码而采用简单的计算方法。
- 源地址占 4 字节
- 目的地址占4字节
- IP数据报首部的可选字段
- IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。
- 选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。
- 增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。
- 实际上这些选项很少被使用。
IP数据报分片
4-2-5.IP层换发分组的流程
分组转发算法
- 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
- 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)。
- 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
- 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。
- 报告转发分组出错。
相关概念
- IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”。
- 当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件。
- 网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。
4-3.划分子网和构造超网
4-3-1.划分子网
从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。
原来是两级,网络号,主机号,现在是三级,网络号(net-id),主机号(host-id),子网号(subnet-id)。
4-3-1-1.划分子网的基本思路
4-3-1-2.子网掩码
- 从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
- 使用子网掩码(subnet mask)可以找出 IP 地址中的子网部分。
- 子网掩码是一个重要属性
- 子网掩码是一个网络或一个子网的重要属性。
- 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。
- 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。
- 若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。
将IP地址划分为网络地址和本地地址两部分
屏蔽一个IP地址的网络部分的“全1”比特模式。
对于A类地址来说,默认的子网掩码是255.0.0.0;
对于B类地址来说默认的子网掩码是255.255.0.0;
对于C类地址来说默认的子网掩码是255.255.255.0。
对应数值为255的IP地址为网络地址;
对应数值为0的IP地址位为本地地址。
关于子网掩码的两个例题
4-3-2使用子网掩码的分组转发过程
- 在不划分子网的两级 IP 地址下,从 IP 地址得出网络地址是个很简单的事。
-但在划分子网的情况下,从 IP 地址却不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息。
- 因此分组转发的算法也必须做相应的改动。
在划分子网的情况下路由器转发分组的算法
- 从收到的分组的首部提取目的 IP 地址 D。
- 先用各网络的子网掩码和 D 逐位相“与”,看是否和 相应的网络地址匹配。若匹配,则将分组直接交付。 否则就是间接交付,执行(3)。
- 若路由表中有目的地址为 D 的特定主机路由,则将 分组传送给指明的下一跳路由器;否则,执行(4)。
- 对路由表中的每一行的子网掩码和 D 逐位相“与”, 若其结果与该行的目的网络地址匹配,则将分组传送 给该行指明的下一跳路由器;否则,执行(5)。
- 若路由表中有一个默认路由,则将分组传送给路由表 中所指明的默认路由器;否则,执行(6)。
- 报告转发分组出错。
图解路由器分组转发步骤
4-3-3.无分类编址(CIDR)【无分类域间路由选择】
- 1987 年,RFC 1009 就指明了在一个划分子网的网络中可同时使用几个不同的子网掩码。使用变长子网掩码 VLSM (Variable Length Subnet Mask)可进一步提高 IP 地址资源的利用率。
- 在 VLSM 的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。
4-3-3-1.CIDR的主要特点
- CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。
- CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。
- IP 地址从三级编址(使用子网掩码)又回到了两级编址。
4-3-3-2.CIDR地址块
- 128.14.32.0/20 表示的地址块共有 212 个地址(因为斜线后面的 20 是网络前缀的位数,所以这个地址的主机号是 12 位)。
- 这个地址块的起始地址是 128.14.32.0。
- 在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块”。
- 128.14.32.0/20 地址块的最小地址:128.14.32.0
- 128.14.32.0/20 地址块的最大地址:128.14.47.255
- 全 0 和全 1 的主机号地址一般不使用。
图解CIDR地址块
CIDR记法的其他形式
4-3-3-3.路由聚合(构成超网)
- 一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。
- 路由聚合也称为构成超网(supernetting)。
- CIDR 虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码)。
- 对于 /20 地址块,它的掩码是 20 个连续的 1。 斜线记法中的数字就是掩码中1的个数。
4-3-3-4.最长前缀匹配
- 使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。
- 应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配(longest-prefix matching)。
- 网络前缀越长,其地址块就越小,因而路由就越具体(more specific) 。
- 最长前缀匹配又称为最长匹配或最佳匹配。
4-3-3-5.使用二叉线索查找路由
- 当路由表的项目数很大时,怎样设法减小路由表的查找时间就成为一个非常重要的问题。
- 为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索(binary trie)。
- IP 地址中从左到右的比特值决定了从根结点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址。
- 为了提高二叉线索的查找速度,广泛使用了各种压缩技术。
4-4.网际控制报文协议ICMP
- 为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。
- ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
- ICMP 不是高层协议,而是 IP 层的协议。
- ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。
4-4-1.ICMP报文的种类
- ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
- ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。
4-4-1-1.ICMP差错报告报文
发送ICMP差错报文的五种情况
- 终点不可达
- 源点抑制(Source quench)
- 时间超过
- 参数问题
- 改变路由(重定向)(Redirect)
不应发送ICMP差错报文的四种情况
- 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
- 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
- 对具有多播地址的数据报都不发送 ICMP 差错报告报文。
- 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
4-4-1-2.ICMP询问报文
- 回送请求和回答报文
时间戳请求和回答报文
下面的几种 ICMP 报文不再使用
- 信息请求与回答报文
- 掩码地址请求和回答报文
-路由器询问和通告报文
4-4-2.ICMP的应用
4-5因特网的路由选择协议
4-5-1.分层次的路由选择协议
- 因特网采用分层次的路由选择协议。
- 因特网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使因特网的通信链路饱和。
- 许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到因特网上。
4-5-1-1.自治系统AS
- 自治系统 AS 的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。
- 现在对自治系统 AS 的定义是强调下面的事实:尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。
4-5-1-2.因特网有两大类路由选择协议
- 因特网的早期 RFC 文档中未使用“路由器”而是使用“网关”这一名词。但是在新的 RFC 文档中又使用了“路由器”这一名词。应当把这两个属于当作同义词。
- IGP 和 EGP 是协议类别的名称。但 RFC 在使用 EGP 这个名词时出现了一点混乱,因为最早的一个外部网关协议的协议名字正好也是 EGP。因此在遇到名词 EGP 时,应弄清它是指旧的协议 EGP 还是指外部网关协议 EGP 这个类别。
1.内部网关协议 IGP (Interior Gateway Protocol) 即在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。—–域内路由选择
2.外部网关协议EGP (External Gateway Protocol) 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。在外部网关协议中目前使用最多的是 BGP-4。—–域间路由选择
4-5-2.内部网关协议IGP—RIP
4-5-2-1.RIP协议的工作原理
4-5-2-2.RIP协议的三个要点
- 仅和相邻路由器交换信息。
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
- 按固定的时间间隔交换路由信息,例如,每隔 30 秒。
4-5-2-3.路由表的建立
- 路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为1)。
- 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
- 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
- RIP 协议的收敛(convergence)过程较快,即在自治系统中所有的结点都得到正确的路由选择信息的过程。
- RIP协议让互联网中的所有路由器都和自己的相邻路由器不断交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少)。
- 虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不同,它们的路由表当然也应当是不同的。
4-5-2-4.距离向量算法
收到相邻路由器(其地址为 X)的一个 RIP 报文:
(1) 先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。
(2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
若项目中的目的网络不在路由表中,则把该项目加到路由表中。
否则
若下一跳字段给出的路由器地址是同样的,则把收到的项目替换原路由表中的项目。
否则
若收到项目中的距离小于路由表中的距离,则进行更新,
否则,什么也不做。
(3) 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(距离为16表示不可达)。
(4) 返回。
4-5-2-5.RIP2协议的报文格式
4-5-2-6.RIP协议的优缺点
- RIP 存在的一个问题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。
- RIP 协议最大的优点就是实现简单,开销较小。
- RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
- 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
- 好消息传播得快,而坏消息传播得慢。网络出故障的传播时间往往需要较长的时间(例如数分钟)。这是 RIP 的一个主要缺点。
4-5-3.内部网关协议IGP—OSPF
4-5-3-1.OSPF协议的基本信息 (Open Shortest Path First)
4-5-3-2.链路状态数据库
- 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。
- 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。
- OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。OSPF 的更新过程收敛得快是其重要优点。
4-5-3-3.划分区域
- 为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫作区域。
- 每一个区域都有一个 32 位的区域标识符(用点分十进制表示)。
- 区域也不能太大,在一个区域内的路由器最好不超过 200 个。
- OSPF 使用层次结构的区域划分。在上层的区域叫作主干区域(backbone area)。主干区域的标识符规定为0.0.0.0。主干区域的作用是用来连通其他在下层的区域。
4-5-3-4.OSPF协议的报文格式
4-5-3-5.OSPF的五种分组类型
- 类型1,问候(Hello)分组。
- 类型2,数据库描述(Database Description)分组。
- 类型3,链路状态请求(Link State Request)分组。
- 类型4,链路状态更新(Link State Update)分组,
用洪泛法对全网更新链路状态。
- 类型5,链路状态确认(Link State Acknowledgment)
分组。
指定的路由器????
4-5-4.外部网关协议BGP
- 因特网的规模太大,使得自治系统之间路由选择非常困难。对于自治系统之间的路由选择,要寻找最佳路由是很不现实的。
- 当一条路径通过几个不同 AS 时,要想对这样的路径计算出有意义的代价是不太可能的。
- 比较合理的做法是在 AS 之间交换“可达性”信息。
- 自治系统之间的路由选择必须考虑有关策略。
- 因此,边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
4-5-4-1.BGP发言人
- 每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人” 。
- 一般说来,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器,但也可以不是 BGP 边界路由器。
- 一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。
- 使用 TCP 连接能提供可靠的服务,也简化了路由选择协议。
- 使用 TCP 连接交换路由信息的两个 BGP 发言人,彼此成为对方的邻站或对等站。
4-5-4-2.BGP协议的特点
- BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
-在BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销方面都有好处。
4-5-4-3.BGP报文
- (1) 打开(OPEN)报文,用来与相邻的另一个BGP发言人建立关系。
- (2) 更新(UPDATE)报文,用来发送某一路由的信息,以及列出要撤消的多条路由。
- (3) 保活(KEEPALIVE)报文,用来确认打开报文和周期性地证实邻站关系。
- (4) 通知(NOTIFICATION)报文,用来发送检测到的差错。
在 RFC 2918 中增加了 ROUTE-REFRESH 报文,用来请求对等端重新通告。
4-5-5.路由器在网际互联中的作用
4-5-5-1.路由器的结构
- 路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。
- 下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。
“转发”和“路由选择”的区别
- “转发”(forwarding)就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。
- “路由选择”(routing)则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。
- 路由表是根据路由选择算法得出的。而转发表是从路由表得出的。
- 在讨论路由选择的原理时,往往不去区分转发表和路由表的区别,
4-5-5-2.路由器转发分组的步骤
交换结构(Switching fabric)为通过正确端口将输入到一个网络节点的数据移动到网络下一节点的硬件和软件的集合。它隐含着,交换机似乎只是一个硬件。交换结构包括节点的开关电源、包含的集成电路以及控制开关路径的程序。交换结构独立于总线技术和用于在节点之间移动数据的基础设施,也分离于路由器。它有时用来表示网络中所有的交换硬件和软件。
三种方式:通过存储器,通过总线,通过互连网络
- 输入端口对线路上收到的分组的处理
- 从线路接收分组
- 物理层处理
- 数据链路层处理
- 网络层处理,分组排队,查表和转发
- 交换结构
- 输出端口将交换结构传送来的分组发送到线路
- 交换结构
- 网络层处理,分组排队,缓存管理
- 数据链路层处理
- 物理层处理
- 向线路发送分组
- 若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。
- 路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。
4-6.IP多播
- (1) 多播使用组地址—— IP 使用 D 类地址支持多播。多播地址只能用于目的地址,而不能用于源地址。
- (2) 永久组地址——由因特网号码指派管理局 IANA 负责指派。
- (3) 动态的组成员
- (4) 使用硬件进行多播
4-6-1.在局域网上进行硬件多播
- 因特网号码指派管理局 IANA 拥有的以太网地址块的高 24 位为 00-00-5E。
- 因此 TCP/IP 协议使用的以太网多播地址块的范围是:从 00-00-5E-00-00-00
到 00-00-5E-FF-FF-FF
- D 类 IP 地址可供分配的有 28 位,在这 28 位中的前 5 位不能用来构成以太网硬件地址。
4-6-2.网际组管理协议IGMP和多播路由选择协议
- 为了使路由器知道多播组成员的信息,需要利用网际组管理协议 IGMP (Internet Group Management Protocol)。
- 连接在局域网上的多播路由器还必须和因特网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议。
4-6-2-1.网际组管理协议IGMP
- IGMP 协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组。
- 和 ICMP 相似,IGMP 使用 IP 数据报传递其报文(即 IGMP 报文加上 IP 首部构成 IP 数据报),但它也向 IP 提供服务。
- 因此,我们不把 IGMP 看成是一个单独的协议,而是属于整个网际协议 IP 的一个组成部分。
IGMP的两个阶段
- 第一阶段:当某个主机加入新的多播组时,该主机应向多播组的多播地址发送IGMP 报文,声明自己要成为该组的成员。本地的多播路由器收到 IGMP 报文后,将组成员关系转发给因特网上的其他多播路由器。
- 第二阶段:因为组成员关系是动态的,因此本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。
- 只要对某个组有一个主机响应,那么多播路由器就认为这个组是活跃的。
- 但一个组在经过几次的探询后仍然没有一个主机响应,则不再将该组的成员关系转发给其他的多播路由器。
相关知识
- 在主机和多播路由器之间的所有通信都是使用 IP 多播。
- 多播路由器在探询组成员关系时,只需要对所有的组发送一个请求信息的询问报文,而不需要对每一个组发送一个询问报文。默认的询问速率是每 125 秒发送一次。
- 当同一个网络上连接有几个多播路由器时,它们能够迅速和有效地选择其中的一个来探询主机的成员关系。
- 在 IGMP 的询问报文中有一个数值 N,它指明一个最长响应时间(默认值为 10秒)。当收到询问时,主机在 0 到 N 之间随机选择发送响应所需经过的时延。对应于最小时延的响应最先发送。
- 同一个组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应,自己就可以不再发送响应了。
4-6-2-2.多播路由选择
多播路由选择协议尚未标准化。
转发多播数据报使用的方法:
(1)洪泛【广播】与剪除
- 这种方法适合于较小的多播组,而所有的组成员接入的局域网也是相邻接的。
- 一开始,路由器转发多播数据报使用洪泛的方法(这就是广播)。为了避免兜圈子,采用了叫做反向路径广播 RPB (Reverse Path Broadcasting)的策略。
反向路径广播 RPB
- 路由器收到多播数据报时,先检查是否从源点经最短路径传送来的。
- 若是,就向所有其他方向转发刚才收到的多播数据报(但进入的方向除外),否则就丢弃而不转发。
- 如果存在几条同样长度的最短路径),那么只能选择一条最短路径,选择的准则就是看这几条最短路径中的相邻路由器谁的 IP 地址最小。
几种多播路由选择协议
- 距离向量多播路由选择协议 DVMRP (Distance Vector Multicast Routing Protocol)
- 基于核心的转发树 CBT (Core Based Tree)
- 开放最短通路优先的多播扩展 MOSPF (Multicast Extensions to OSPF)
- 协议无关多播-稀疏方式 PIM-SM (Protocol Independent Multicast-Sparse Mode)
- 协议无关多播-密集方式 PIM-DM (Protocol Independent Multicast-Dense Mode)
4-7虚拟专用网络VPN和网络地址转换NAT
4-7-1.虚拟专用网络VPN
本地地址和全球地址
- 本地地址——仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向因特网的管理机构申请。
- 全球地址——全球唯一的IP地址,必须向因特网的管理机构申请。
RFC1918指明的专用地址
4-7-2.网络地址转换NAT
- 内部主机 X 用本地地址 IPX 和因特网上主机 Y 通信所发送的数据报必须经过 NAT 路由器。
- NAT 路由器将数据报的源地址 IPX 转换成全球地址 IPG,但目的地址 IPY 保持不变,然后发送到因特网。
- NAT 路由器收到主机 Y 发回的数据报时,知道数据报中的源地址是 IPY 而目的地址是 IPG。
- 根据 NAT 转换表,NAT 路由器将目的地址 IPG 转换为 IPX,转发给最终的内部主机 X。
5.运输层
5-1.运输层协议概述
从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。
当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。
5-1-1.进程之间的通信
- 两个主机进行通信实际上就是两个主机中的应用进程互相通信。
- 应用进程之间的通信又称为端到端的通信。
- 运输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。
- “运输层提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。
运输层协议和网络层协议的主要区别
- 运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。
- 运输层还要对收到的报文进行差错检测。
- 运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP。
5-1-2.TCP和UDP
UDP 在传送数据之前不需要先建立连接。对方的运输层在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。
TCP 则提供面向连接的服务。TCP 不提供广播或多播服务。由于 TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。
运输层的 UDP 用户数据报与网际层的IP数据报有很大区别。IP 数据报要经过互连网中许多路由器的存储转发,但 UDP 用户数据报是在运输层的端到端抽象的逻辑信道中传送的。
TCP 报文段是在运输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道。但这样的信道却不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的运输层是否建立了 TCP 连接。
三种端口
- 熟知端口,数值一般为 0~1023。
- 登记端口号,数值为1024~49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在 IANA 登记,以防止重复。
- 客户端口号或短暂端口号,数值为49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。
5-2.用户数据报协议 UDP
5-2-1.UDP特点
- UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。
- UDP 是无连接的,即发送数据之前不需要建立连接。
- UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。
- UDP 是面向报文的。UDP 没有拥塞控制,很适合多媒体通信的要求。
- UDP 支持一对一、一对多、多对一和多对多的交互通信。(支持多播)
- UDP 的首部开销小,只有 8 个字节。
5-2-2.UDP首部
UDP首部格式
5-3.传输控制协议TCP
5-3-1.TCP的特点
- TCP 是面向连接的运输层协议。
- 每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一)。
- TCP 提供可靠交付的服务。
- TCP 提供全双工通信。
- 面向字节流。
- TCP 连接是一条虚连接而不是一条真正的物理连接。
- TCP 对应用进程一次把多长的报文发送到TCP 的缓存中是不关心的。
- TCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。
- TCP 可把太长的数据块划分短一些再传送。TCP 也可等待积累有足够多的字节后再构成报文段发送出去。
5-3-2.TCP的连接
- TCP 把连接作为最基本的抽象。
- 每一条 TCP 连接有两个端点。
- TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫做套接字(socket)或插口。
端口号拼接到(contatenated with) IP 地址即构成了套接字。
TCP 连接 ::= {socket1, socket2} = {(IP1: port1), (IP2: port2)}
5-3-3.题外话
同一个名词socket,有不同的含义
- 应用编程接口 API 称为 socket API, 简称为 socket。
- socket API 中使用的一个函数名也叫作 socket。
- 调用 socket 函数的端点称为 socket。
- 调用 socket 函数时其返回值称为 socket 描述符,可简称为 socket。
- 在操作系统内核中连网协议的 Berkeley 实现,称为 socket 实现。
5-4.可靠传输的工作原理
5-4-1.停止等待协议
“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
停止等待协议的优点是简单,但缺点是信道利用率太低。
流水线传输发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。
由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。
5-4-2.连续ARQ协议
5-4-2-1.累积确认
- 接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了。
- 累积确认有的优点是:容易实现,即使确认丢失也不必重传。缺点是:不能向发送方反映出接收方已经正确收到的所有分组的信息。
5-4-2-2.Go-back-N(回退 N)
- 如果发送方发送了前 5 个分组,而中间的第 3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。
- 这就叫做 Go-back-N(回退 N),表示需要再退回来重传已发送过的 N 个分组。
- 可见当通信线路质量不好时,连续 ARQ 协议会带来负面的影响。
5-4-2-3.TCP可靠通信的实现
- TCP 连接的每一端都必须设有两个窗口——一个发送窗口和一个接收窗口。
- TCP 的可靠传输机制用字节的序号进行控制。TCP 所有的确认都是基于序号而不是基于报文段。
- TCP 两端的四个窗口经常处于动态变化之中。
- TCP连接的往返时间 RTT 也不是固定不变的。需要使用特定的算法估算较为合理的重传时间。
5-5.TCP报文段的首部格式
- 源端口和目的端口字段——各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。
- 序号字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
- 确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
- 数据偏移(即首部长度)——占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。
- 保留字段——占 6 位,保留为今后使用,但目前应置为 0。
- 紧急 URG —— 当 URG 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
- 确认 ACK —— 只有当 ACK 1 时确认号字段才有效。当 ACK 0 时,确认号无效。
- 推送 PSH (PuSH) —— 接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
- 复位 RST (ReSeT) —— 当 RST 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
- 同步 SYN —— 同步 SYN = 1 表示这是一个连接请求或连接接受报文。
- 终止 FIN (FINis) —— 用来释放一个连接。FIN 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
- 窗口字段 —— 占 2 字节,用来让对方设置发送窗口的依据,单位为字节。
- 检验和 —— 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。
- 紧急指针字段 —— 占 16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。
- 选项字段 —— 长度可变。TCP 最初只规定了一种选项,即最大报文段长度 MSS。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。” 此外,还有以下选项:
- 窗口扩大选项 ——占 3 字节,其中有一个字节表示移位值 S。新的窗口值等于TCP 首部中的窗口位数增大到(16 + S),相当于把窗口值向左移动 S 位后获得实际的窗口大小。
- 时间戳选项——占10 字节,其中最主要的字段时间戳值字段(4 字节)和时间戳回送回答字段(4 字节)。
- 选择确认选项——在后面的 5.6.3 节介绍。
- 填充字段 —— 这是为了使整个首部长度是 4 字节的整数倍。
5-6.TCP可靠传输的实现
5.6.1 以字节为单位的滑动窗口
图解
- A 的发送窗口并不总是和 B 的接收窗口一样大(因为有一定的时间滞后)。
- TCP 标准没有规定对不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。
- TCP 要求接收方必须有累积确认的功能,这样可以减小传输开销。
发送缓存和接收缓存
- 发送缓存用来暂时存放:
- 发送应用程序传送给发送方 TCP 准备发送的数据;
- TCP 已发送出但尚未收到确认的数据。
- 接收缓存用来暂时存放:
- 按序到达的、但尚未被接收应用程序读取的数据;
- 不按序到达的数据。
5-6-2.超时重传时间的选择
重传机制是 TCP 中最重要和最复杂的问题之一。
TCP 每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。
- 平均往返时间——–RTT
超时重传时间——–RTO
使用karn算法计算
5-7.TCP的流量控制
5-7-1.利用滑动窗口实现流量控制
一般说来,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。
流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。
利用滑动窗口机制可以很方便地在 TCP 连接上实现流量控制。
持续计时器
- TCP 为每一个连接设有一个持续计时器。
- 只要 TCP 连接的一方收到对方的零窗口通知,就启动持续计时器。
- 若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带 1 字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。
- 若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器。
- 若窗口不是零,则死锁的僵局就可以打破了。
必须考虑传输效率
- 可以用不同的机制来控制 TCP 报文段的发送时机:
- 第一种机制是 TCP 维持一个变量,它等于最大报文段长度 MSS。只要缓存中存放的数据达到 MSS 字节时,就组装成一个 TCP 报文段发送出去。
- 第二种机制是由发送方的应用进程指明要求发送报文段,即 TCP 支持的推送(push)操作。
- 第三种机制是发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段(但长度不能超过 MSS)发送出去。
5-8.TCP的拥塞控制
在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏——产生拥塞(congestion)。
5-8-1.拥塞控制的基本原理
拥塞控制与流量控制的关系
- 拥塞控制
- 拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。
- 拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。
- 流量控制
- 流量控制往往指在给定的发送端和接收端之间的点对点通信量的控制。
- 流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。
拥塞控制的一般原理
- 拥塞控制是很难设计的,因为它是一个动态的(而不是静态的)问题。
- 当前网络正朝着高速化的方向发展,这很容易出现缓存不够大而造成分组的丢失。但分组的丢失是网络发生拥塞的征兆而不是原因。
- 在许多情况下,甚至正是拥塞控制本身成为引起网络性能恶化甚至发生死锁的原因。这点应特别引起重视。
开环控制和闭环控制
- 开环控制方法就是在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。
- 闭环控制是基于反馈环路的概念。属于闭环控制的有以下几种措施:
- 监测网络系统以便检测到拥塞在何时、何处发生。
- 将拥塞发生的信息传送到可采取行动的地方。
- 调整网络系统的运行以解决出现的问题。
5-8-2.几种拥塞控制的方法
5-8-2-1.慢开始和拥塞避免
介绍
- 发送方维持一个叫做拥塞窗口 cwnd (congestion window)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。如再考虑到接收方的接收能力,则发送窗口还可能小于拥塞窗口。
- 发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。
原理
- 在主机刚刚开始发送报文段时可先设置拥塞窗口 cwnd = 1,即设置为一个最大报文段 MSS 的数值。
- 在每收到一个对新的报文段的确认后,将拥塞窗口加 1,即增加一个 MSS 的数值。
- 用这样的方法逐步增大发送端的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理
传输轮次
- 使用慢开始算法后,每经过一个传输轮次,拥塞窗口 cwnd 就加倍。
- 一个传输轮次所经历的时间其实就是往返时间 RTT。
- “传输轮次”更加强调:把拥塞窗口 cwnd 所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认。
- 例如,拥塞窗口 cwnd = 4,这时的往返时间 RTT 就是发送方连续发送 4 个报文段,并收到这 4 个报文段的确认,总共经历的时间。
设置慢开始门限状态变量ssthresh
- 慢开始门限 ssthresh 的用法如下:
- 当 cwnd < ssthresh 时,使用慢开始算法。
- 当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。
- 当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞避免算法。
- 拥塞避免算法的思路是让拥塞窗口 cwnd 缓慢地增大,即每经过一个往返时间 RTT 就把发送方的拥塞窗口 cwnd 加 1,而不是加倍,使拥塞窗口 cwnd 按线性规律缓慢增长。
当网络出现拥塞时
- 无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有按时收到确认),就要把慢开始门限 ssthresh 设置为出现拥塞时的发送方窗口值的一半(但不能小于2)。
- 然后把拥塞窗口 cwnd 重新设置为 1,执行慢开始算法。
- 这样做的目的就是要迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。
乘法减小
- “乘法减小“是指不论在慢开始阶段还是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢开始门限值 ssthresh 设置为当前的拥塞窗口值乘以 0.5。
- 当网络频繁出现拥塞时,ssthresh 值就下降得很快,以大大减少注入到网络中的分组数。
加法增大
“加法增大”是指执行拥塞避免算法后,在收到对所有报文段的确认后(即经过一个往返时间),就把拥塞窗口 cwnd增加一个 MSS 大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。
图解,举例
5-8-2-2.快重传和快恢复
- 快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认。这样做可以让发送方及早知道有报文段没有到达接收方。
- 发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段。
- 不难看出,快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。
快恢复算法
- (1) 当发送端收到连续三个重复的确认时,就执行“乘法减小”算法,把慢开始门限 ssthresh 减半。但接下去不执行慢开始算法。
- (2)由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,即拥塞窗口 cwnd 现在不设置为 1,而是设置为慢开始门限 ssthresh 减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。
5-8-3.随机早期检测 RED (Random Early Detection)
- 使路由器的队列维持两个参数,即队列长度最小门限 THmin 和最大门限 THmax。
- RED 对每一个到达的数据报都先计算平均队列长度 LAV。
- 若平均队列长度小于最小门限 THmin,则将新到达的数据报放入队列进行排队。
- 若平均队列长度超过最大门限 THmax,则将新到达的数据报丢弃。
- 若平均队列长度在最小门限 THmin 和最大门限THmax 之间,则按照某一概率 p 将新到达的数据报丢弃。
5-9.TCP的运输链接管理
运输连接就有三个阶段,即:连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。
连接建立过程中要解决以下三个问题:
- 要使每一方能够确知对方的存在。
- 要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。
- 能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。
5-9-1.TCP连接的建立
5-9-2.TCP连接的释放
5-9-3.TCP的有限状态机
- TCP 有限状态机的图中每一个方框都是 TCP 可能具有的状态。
- 每个方框中的大写英文字符串是 TCP 标准所使用的 TCP 连接状态名。状态之间的箭头表示可能发生的状态变迁。
- 箭头旁边的字,表明引起这种变迁的原因,或表明发生状态变迁后又出现什么动作。
- 图中有三种不同的箭头。
- 粗实线箭头表示对客户进程的正常变迁。
- 粗虚线箭头表示对服务器进程的正常变迁。
- 另一种细线箭头表示异常变迁。
6.应用层
6-1.域名系统DNS
6-1-1.域名系统概述
- 许多应用层软件经常直接使用域名系统 DNS (Domain Name System),但计算机的用户只是间接而不是直接使用域名系统。
- 因特网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS。
- 名字到 IP 地址的解析是由若干个域名服务器程序完成的。域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。
6-1-2.域名服务器
6-1-2-1.根域名服务器
- 根域名服务器是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。
- 不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。
- 在因特网上共有13 个不同 IP 地址的根域名服务器,它们的名字是用一个英文字母命名,从a 一直到 m(前13 个字母)。
这些根域名服务器相应的域名分别是:
a.rootservers.net;
b.rootservers.net;
…
m.rootservers.net
注意
- 根域名服务器并不直接把域名直接转换成 IP 地址。
- 在使用迭代查询时,根域名服务器把下一步应当找的顶级域名服务器的 IP 地址告诉本地域名服务器。
6-1-2-2.顶级域名服务器(TLD服务器)
- 这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。
- 当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)。
6-1-2-3.权限域名服务器
- 这就是前面已经讲过的负责一个区的域名服务器。
- 当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器。
6-1-2-4.本地域名服务器
- 本地域名服务器对域名系统非常重要。
- 当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器。
- 每一个因特网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,
- 这种域名服务器有时也称为默认域名服务器。
6-1-2-5.域名解析过程
- 主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。
- 本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。
6-2.文件传送协议(FTP)
6-2-1.FTP概述
- 文件传送协议 FTP (File Transfer Protocol) 是因特网上使用得最广泛的文件传送协议。
- FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。
- FTP 屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
- RFC 959 很早就成为了因特网的正式标准。
6-2-2.FTP的基本工作原理
- 文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务。
- FTP 的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
- FTP 使用客户服务器方式。一个 FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。
主进程的工作原理
- 打开熟知端口(端口号为 21),使客户进程能够连接上。
- 等待客户进程发出连接请求。
- 启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
- 回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发地进行。
两个连接
- 控制连接在整个会话期间一直保持打开,FTP 客户发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接不用来传送文件。
- 实际用于传输文件的是“数据连接”。服务器端的控制进程在接收到 FTP 客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。
- 数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。
两个端口号
- 当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口(21),同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。
- 接着,服务器进程用自己传送数据的熟知端口(20)与客户进程所提供的端口号码建立数据传送连接。
- 由于 FTP 使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。
特殊情况NFS(网络文件系统)
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
- NFS 允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据。
- NFS 可使用户只复制一个大文件中的一个很小的片段,而不需要复制整个大文件。
- 对于上述例子,计算机 A 的 NFS 客户软件,把要添加的数据和在文件后面写数据的请求一起发送到远地的计算机 B 的 NFS 服务器。NFS 服务器更新文件后返回应答信息。
- 在网络上传送的只是少量的修改数据。
6-2-3.简单文件传送协议 TFTP(Trivial File Transfer Protocol)
工作步骤(类似于停止等待协议)