学习MOOC华南理工计算机网络课程笔记
第1章 概述
1.1 为什么要学习计算机网络
根据第39次《中国互联网络发展状况统计报告》
- 中国出口带宽总量:截止16年12月底,为6640291M
- 中国网民规模:截止16年12月底,7.31亿,世界第一
- 手机网民规模:截止16年12月底,6.95亿
- IPv4地址资源:截止16年12月,中国IPv4地址数维持在3.38亿
- IPv6地址资源:截止16年6月,中国IPv6 /32地址块数已达21188个
1.2 互联网发展史
国外网络发展史
- 1957年,ARPA(Advanced Research Projects Agency)成立
- 1969年,ARPANet诞生,主要技术特点:采用了分组交换(Packet Switching)
- 1970s~1982,ARPANet向Internet的转变,互联网之父瑟夫(Vinton Cerf)、凯恩(Bob Kahn)、柏兰(Bob Braden)等人发明出来了被称为成就了互联网的骨干协议TCP/IP
- 1981年,美国国家科学基金(NSF)成立计算机科学网络(CSnet),在Vinton Cerf的建议下,两网互联,互联网正式诞生。
- 此后互联网走向普通民众,个人电脑、鼠标的使用,1985年视窗操作系统的出现,1993年4月浏览器的诞生
中国网络发展历史
- 1987年9月20日,中国人使用Internet的起点,一封电子邮件:“Across the Great Wall we can reach every corner in the world”。越过长城,走向世界。(花了一个星期才成功发送)
- 1994年4月20日,实现与Internet全功能连接
- 中国科学院院网(CASNet,1992),即后来的中国科技网(CSTNet,1995)
- 中国教育与科研计算机网(CERNet,1995)
- 中国公用计算机互联网(CHINANet,1996)
- 中国金桥信息网(CHINAGBN,1996)
- 1997年,中国四大网络互联互通,国务院授权中科院创立和管理中国互联网网络信息中心CNNIC
- 2006年,建成世界上最大的纯IPv6网络
1.3 常用的基本概念
- 计算机网络:使用单一技术的自主计算机的互联集合;单台计算机具有独立自主性
- 互联网络(Internet):计算机网络的互相联结
- WWW:World Wide Web,万维网:是信息资源的网络,资源、资源标识和传输协议三部分支撑www的运作
- 拓扑:信道的分布方式。常见的拓扑结构:总线型、星型、环型、树型和网型
- 协议:一系列规则和约定的规范性描述,它控制网络中的设备之间如何进行信息交换
- 数字带宽:指在单位时间内流经的信息总量
- 吞吐量:指实际的、可测到的带宽;数字带宽是理想值,吞吐量才是真实感受到的值
- 数字带宽的单位
- 点到点:信源机和信宿机之间的通信由一段一段的直线相连的机器间的通信组成,机器间的直接连接叫点对点连接
- 端到端:信源机和信宿机之间直接通信,好像拥有一条直接的线路;(端到端由点到点构成)
- 计算机网络的分类:按规模分为从小到大5类:PAN、LAN、MAN、WAN和Internet
- 电路交换:电路交换是以电路连接为目的的交换方式,通信之前要在通信双方之间建立一条被双方独占的物理通道;优点:传输时延非常小,实时性强,按顺序发送数据不存在失序问题,可以传输模拟信号和数字信号,设备简单;缺点:连接建立时间长,独占物理通道,信道利用率低,不易控制差错
- 分组交换:分组交换采用存储转发方式,将一个长报文分割为若干个较短的分组,然后把这些分组(携带源地址,目的地址和编号信息)逐个的发送出去;优点:不需要预先建立专用通道,采用储存转发可靠性高,线路利用率高,易于管理;缺点:实时性差,只适用于数字信号,可能出现失序、丢包或重复
1.4 参考模型
- 为什么需要参考模型/分层:各层工作独立,层之间通过接口联系,降低协议工作的复杂程度;灵活性好,任何一层的改变不影响其他层;每层的实现技术可以不同,减少实现复杂度;易于维护,每层单独调试;便于标准化
- 分层原则:信宿机第n层收到的对象应与信源机第n层发出的对象完全一致
- 典型分层模型:OSI七层模型;TCP/IP(DoD)四层模型
- 应用层: Network Processes to Applications;Provides network services to application processes (such as electronic mail,file transfer,and terminal emulation )
- 表示层:Data Representation;Insure data is readable by receiving system、Format of data、Data structures、Negotiates data transfer syntax for application layer
- 会话层:Interhost Communication;Establishes,manages,and terminates sessions between applications
- 传输层:End-to-end Connections;Concerned with transportation issues between hosts、Data transport reliability、Establish,maintain,terminate virtual circuits、Fault detection and recovery、Information flow control
- 网络层:Address and Best Path;Provides connectivity and path selection between two end systems、Domain of routing
- 数据链路层:Access to Media;Provides reliable transfer of data across media、Physical addressing,network topology,error notification,flow control
- 物理层:Binary Transmission;Wires,connectors,voltages,data rates
- 两个参考模型的相同点:都分层;都有应用层,尽管他们的服务不同;都有可比较的传输层和网络层;使用的分组交换而不是电路交换技术
- 两个参考模型的不同点:TCP/IP将表示层和会话层包含到了应用层;TCP/IP将OSI的数据链路层和物理层包括到了一层中;TCP/IP更简洁,但OSI更易开发和排除故障;TCP/IP在实践中产生
1.5 参考模型相关概念
- 数据传输的三要素:发方,信道,收方
- 发方执行封装/打包:将信息打包,从最高层--应用层开始逐渐下行到最底层--物理层
- 收方执行解封装/解包:将信息解包,从最低层—物理层开始逐渐上行到最高层—应用层
- 协议数据单元 PDU:信息(Information),数据流(Data stream),数据段(Segment),分组(Packet),帧(Frame),比特流(Bits)
- 任何一次通信,总是以发方的封装开始,以收方的解封装结束
- 实体(Entity):每层中活动的元素, 每一层都有一个实体,可能是硬件也可能是软件,它负责实现本层的功能
- 对等通信/虚拟通信:发方和收方之间好像有一个“直接”的通道,PDU从发方流向接收方
1.6 本课程的组织
- 课程的教材和讲授是以参考模型来组织的,但既不是OSI七层模型,也不是TCP/IP的四层模型,而是五层模型
- 五层参考模型,其实是将TCP/IP四层参考模型的网络接入层进行了分割,用OSI七层参考模型的下两层来替代
第2章 物理层
2.1 物理层概述
- 物理层的功能:提供透明的比特流传输;封装好的数据以“0、1”比特流的形式进行传递,从一个地方搬到另一个地方;物理层上的传输,从不关心比特流里面携带的信息,只关心比特流的正确搬运
- 物理层的4大特性:机械特性 (mechanical characteristics)指明接口所有接线器的形状、尺寸、引脚数和排列等,如RJ45;电气特性 (electrical characteristics)指明在接口电缆的各条线上出现的电压的范围;功能特性 (functional characteristics)指明某条线上出现的某一电平的电压表示何种意义;规程特性 (procedural characteristics)指明对于不同功能的各种可能事件的出现顺序,规程的概念类似协议
- 物理带宽:传输过程中振幅不会明显衰减的频率范围(一种物理特性,通常取决于介质材料的构成、厚度、长度等)
- 理想信道的最大传输速率:乃奎斯特定理,在无噪声信道中,当带宽为B Hz,信号电平为V级,最大传输速率 = 2Blog(2)V bps
- 噪声信道的最大数据传输速率:香农定理,在噪声信道中,带宽为 B Hz,信噪比为S/N,最大传输速率 = Blog(2)(1+S/N) bps
- 有一条4-kHz的无噪声信道,每秒采样8000次,如果每个采样是16 比特,则信道的最大传输速率是 128 kbps
- 如果一个二进制信号通过一条4-kHz的噪声信道,噪声是30分贝,则最大传输速率是40kpbs
2.2 有导向的传输介质
- 引导性传输介质:铜线:同轴电缆,双绞线;光纤
- 非引导传输介质(无线传输介质):无线电、卫星、激光等
- 同轴电缆:由中心导体、绝缘材料层、网状导体、外部绝缘料4层组成
- 双绞线:由两根具有绝缘层的铜导线按一定密度,逆时针方向绞合而成,消除近端串扰Crosstalk
- 非屏蔽双绞线(UTP:Unshielded Twisted Pair): 优点:成本低、尺寸小、易于安装;缺点:易受干扰、传输距离性能受到绞距影响
- 屏蔽双绞线(STP:Shielded Twisted Pair):优点:抗EMI/RFI干扰;缺点:成本高、安装不易
- 网屏式双绞线(ScTP:Screened Twisted Pair):主要技术参数不变,在成本和抗干扰之间做了折中
- 光纤:光导纤维的简称;由极细的玻璃纤维构成,把光封闭在其中并沿轴向进行传播;优点:重量轻、损耗低、不受电
磁辐射干扰、传输频带宽、通信容量大;缺点:昂贵、易断裂 - 单模光纤:以单一模式传输,激光产生的单束光,纤心细、高带宽、长距离,运行波长为850nm或1300nm
- 多模光纤:以多个模式同时传输,LED产生的多束光,纤心粗、低带宽、短距离,运行波长为1310nm或1550nm
- 光纤和UTP具有各自的特点:到用户桌面的线缆大量使用UTP(水平电缆)干线上大量使用光纤(垂直电缆)
2.3 复用技术
- 复用技术:复用技术是让多用户共享同一根信道(干线)
- 频分多路复用FDM:Frequency Division Multiplexing,将频谱分成若干段,每个用户占据一段来传输自己的信号
- 正交FDM:Orthogonal FDM(简称OFDM),OFDM is an efficient FDM technique used for 802.11, 4G cellular and other communications
- 波分多路复用WDM:WDM (Wavelength Division Multiplexing),本质跟 FDM一样,在光纤上复用信号
- 时分多路复用TDM: Time Division Multiplexing,在时间上共享信道,用户轮流使用信道,广泛用于 telephone/cellular系统
- 统计时分多路复用技术Statistic TDM(STDM):动态分配信道,不使用信道的用户不分配,分给有需要的用户使用,利用率可提高2~4倍,实现技术较复杂,通常只在高速远程通信中使用,如ATM,用户平均使用信道的情况不适用
- 码分多路复用 Code Division Multiple Access:扩展频谱技术CDMA,每个用户拥有一个唯一码片序列,码片是正交的,能够同时传输,广泛用于3G网通信
2.4 调制技术
- 传输信号的两种方式:基带传输、通带传输
- 基带传输:Baseband Transmission,直接将数据比特转化为信号
- 通带传输:Passband Transmission,通过调节信号的振幅、相位或频率来传输比特,特点:信号占据了以载波信号频率为中心的一段频带
- 线路编码方法包括:NRZ、NRZI、曼彻斯特编码、双极性编码等
- 曼彻斯特编码:每个比特时间跳变一次,因此效率只有50%
- 不归零NRZ:编码后电平只有正负电平之分,没有零电平,连续相同的电平会造成同步问题一般不会用
- 不归零逆转NRZI:信号电平的一次反转代表1,电平不变化表示0,并且在表示完一个码元后,电压不需回到0,USB的编码方式(USB电平反转代表0)
- 基本调制方法:调幅、调频、调相,工程中一般综合使用
- 码元:承载信息量的基本信号单位,在数字通信中常常用时间间隔相同的符号来表示一个二进制数字,这样的时间间隔内的信号称为(二进制)码元;在使用时间域(或简称为时域)的波形表示数字信号时,代表不同离散值的基本波形称为码元
- 波特率:其实就是1秒钟能够发送的码元的个数,所以也叫码率,每秒钟信号变化的次数
- 数字带宽跟波特率、信号级别之间的关系:C= B × log(2)N,其中 C:比特率; B:波特率;n:调制电平数或线路的状态数,为2的整数倍(有例外)
- 格子架编码调制(TCM):为了降低高速调制错误,在每个样本中采用一些额外的位用作纠错,剩下的位才用来传输数据,这种机制叫格子架编码调制TCM (Trellis Coded Modulation)
2.5 公共交换电话网络 PSTN
- 公共交换电话网络:(PSTN: Public Switched Telephone Network)最方便的已有通信设施,跟计算机网络紧紧联系在一起
- PSTN的主要构成:本地回路(Local loops):模拟线路,进入千家万户和业务部门;干线(Trunks):数字光纤,连接交换局;交换局(Switching offices):话音接驳干线的场所
- 调制解调器(Modem,猫):本地回路传输的模拟信号,搭载计算机产生的数字信号,完成数字信号到模拟信号的转换;在本地回路上,引入一个正弦波(sine wave carrier)来承载和传输信号:幅度:两种不同的幅度用来表示0和1;频率:不同的频率表示不同的值;相位:不同的相位可表示不同的值 (45, 135, 225, or 315º)
- 56k的调制解调器:电话线路的频率约是 4000 Hz (300 ~ 3400 Hz),采样率 = 2 x 4000 = 8000 sample/sec,每个码元传输 8比特,其中的1比特用来控制错误,传输数据速率是 8000 x 7 = 56,000 bit/sec
- 数字用户线(xDSL):xDSL使用了本地回路的全部物理带宽,大约为1.1Mhz,而不仅仅是4khz, 1.1M/4k≈256,第1根4k信道仍用语语音,接下来的5根信道空闲,剩下的250根信道用于数据和控制
- 光纤到户(Fiber To The Home):FTTH 宽带很多用户共享同一波长,光纤是无源的 (无须放大器,可靠)
- 端局中codec的编码:完成模拟信号到数字信号的转换。
- Codec的基本复用线路T1由24路话音公用,是一个时分复用系统,每125微妙传送一个复用帧。
2.6 物理层设备
- 被动部件/设备:接线板(patch panel )、插头(plug)、插座 (jack)、电缆 (f.g. CAT-5)
- 主动部件/设备:转发器(transceiver)、中继器 (repeater)、集线器 (hub)
- 收发器 Transceiver:它是Transmitter和Receiver的简称,也叫Media Attachment Unit(MAU);将一种形式的信号转变成另一种形式;Transceivers are media converters:RJ-45 –AUI(Attachment Unit Interface),RJ-45 – BNC(同轴电缆卡环形接头),RJ-45 – Optical
- 中继器 Reapter:再生信号让线缆可以延伸得更远,增加连接到网络点的结点数,不能过滤流量;过滤( Filter ):是指设备以一定的特征(如源地址、目的地址、网络协议等)来屏蔽网络流量,并根据已有的标准确定将流量转发或丢弃
- 集线器 Hub:多端口的中继器,放大和再生信号,允许很多设备连接到一个集线器上,作为星型拓扑的中心,不能过滤交通流量
- 冲突:信号的碰撞;使用物理层设备时,更多的用户争抢共享资源,导致冲突
- 冲突域:数据包产生和冲突的网络区域,即指共享媒质区; 物理层设备的使用,增大了冲突域,降低了网络的性能,因此组网中,很少再使用中继器和集线器了
第3章 数据链路层
3.1 数据链路层概述
- 数据链路层功能: 为网络层提供服务,良好的服务接口;保证数据传输的有效、可靠
- 帧:数据链路层使用物理层提供的服务,物理层处理的是位流,数据链路层处理的是帧(数据链路层的PDU)
- 成帧:将原始的位流分散到离散的帧中,叫成帧,成帧的方法有:字符计数法、带字节/字符填充的标志字节法、比特填充的比特标志法、物理层编码违例法
- 字符计数法:帧首放置帧长,优点:简单;缺点:一旦除错,无法恢复,即无法再同步;很少被使用
- 字节填充的标志字节法:考虑了错误之后重新同步的问题,让每一帧都用一些特殊的字节作为开始和结束;标志/标记字节(flag byte);缺点:容易造成帧界混淆——增加转义字节,依赖于8位字符;解决方法:一种方法是在二进制数中偶然出现的标志字节前插入一个转义字节,这就称为字节/字符填充法
- 比特填充的标志比特法:这是一种面向二进制位的帧格式,把所有需传输的数据以比特位一字排开,并以特殊的位模式01111110作为帧标志,即一个帧的开始(同时标志前一个帧的结束);当帧内容中出现一个与帧标志相同的位串01111110,则在5个1后插入一个0,即变成01111101,接收方将自动删除第5 个1后的0。这称为位填充法(零比特填充法),也称为透明传输;如果由于干扰,一个帧没有正确接收,则可扫描接收串,一旦扫描到01111110,即新的一帧从此开始,即可以再同步
- 物理层编码违例法:在曼切斯特编码中,连续高电平或连续低电平可用作帧边界;采用冗余编码技术,如曼切斯特编码,即两个脉冲宽来表示一个二进制位,数据0:低-高电平对,数据1:高-低电平对,高-高电平对和低-低电平对没有使用,可用作帧边界
3.2 差错处理概述
- 差错的类型:单个错误:分散在各个数据块中;突发错误:集中于一个数据块,整个块都是错误;突发错误比单个错误更加难于处理,通常利用处理单个处理的方法来应对突发错误
- 差错的处理:纠错码 ——前向纠错技术:发现错误,从错误中恢复出正确的来,因其需要太多的冗余位,纠错开销太大,在有线网络中极少使用,主要用于无线网络中;检错码:只能发现错误,不能从错误中恢复,但可采用重传,计算机网络中主要采用循环冗余码(CRC)。两种不同的处理方法适用于不同的环境
- 码字:包含数据位和校验位的n位单元
- 海明距离( Hamming Distance ):两个码字(codeword)的海明距离:两个码字之间不同位的数目;如:10001001 和10110001 的海明距离为3;异或的结果中,1的个数
- 海明距离的意义:如果海明距离为d,则一个码字需要发生d个1位错误才能变成另外一个码字
- 海明距离与检错的关系:海明距离为d+1的编码能检测出d位差错;海明距离为2d+1的编码,能纠正d位差错
- 随着海明距离的增加,纠错的能力也增加;即海明距离越大,纠错能力越强。海明距离为3,可以纠正1个错误;而海明距离为5,才可以纠正2个错误。当一个系统中的海明距离增加的时候,合法码字就减少了,即传输效率降低
3.3 纠1位错的海明码
- 纠1位错,需要多少位冗余位:满足(m+r+1)≤
- 海明纠错码:每一个码字从左到右编号,最左边为第1位,凡编号为2的乘幂的位是校验位,如1、2、4、8、16,其余是数据位,如3、5、6、7、9;每一个校验位设置根据:包括自己在内的一些位的集合的奇偶值(奇数或偶数);将某一位数据位的编号展开成2的乘幂的和,每一项所对应的位即为该数据位的校验位,如: 11 = 1 + 2 + 8;校验位1的检验集合为所有奇数位,校验位2的检验集合:2、3、6、7、10、11……
- 海明码纠错过程(接收端): 首先将差错计数器置“0”,counter=0,当海明码数据到达接收端后,接收端逐个检查各个校验位的奇偶性;如发现某一校验位和它所检测的集合的奇偶性不正确,就将该检验位的编号加到差错计数器中;Counter=0,无差错,counter ≠0,出错,该值指明出错的位
- 利用海明码纠正突发错误:将连续的k个码字按行排列成矩阵,发送数据时,按列发送,每列k位,如果一个突发性错误长度是k位,则在k个码字中,至多只有一位受到影响,正好可用海明码纠错改位后恢复
3.4 检错码
- 为什么要用检错码?:纠错需要较多的冗余位,信道利用率不高,局域网中,主要使用的是检错码;分为:奇偶校验码(海明距离为2,检1位错)、互联网校验和、循环冗余校验码
- 奇偶校验:奇偶位取值等同于对数据位进行模2和运算,也等同于 XOR运算(偶校验时);例如,采用偶校验: 1110000 11100001;接收方检查是否存在单个比特的错误,出错误的概率为 ½
- 奇偶校验交替的N位校验:可检查出最多N位的突发错误
- 校验和:校验和通常是按照N位码字来进行模2加/和运算,发放将运算结果附加在数据报文尾部,作为校验位;待校验的相邻字节成对组成16比特的整数一行,按列从低位开始计算其模2和;并将结果按位取反码,作为校验和取值;检查校验和时,将所有字节,包括校验和,进行相加并求二进制反码。接收方:如果结果为全1 ,无错误;注意:如果某列的模2和有溢出,向高位进位,如果高位产生进位,循环向低位进位
- 循环冗余检错码CRC:任何一个k位的帧看成为一个k-1次的多项式,如:1011001看成x 6 +x 4 +x 3 +x 0 (k项k-1阶多项式);设定一个多项式编码生成多项式G(x),G(x)为 r 阶,设一个 m 位的帧的多项式为 M(x),m > r,即M(x)比G(x)长,如 M(x)/G(x) = Q(x) + R(x) 其中Q(x)为商、R(x)为余数,则( M(x) - R(x) )一定能被G(x)整除,即余数为0
- 模2运算:模2加以及模2减等同于异或运算,即相同得0,相异得1,比如:0+1=1,1+1=0,0-1=1
- CRC计算算法: Sender:在数据帧的低端加上r个零,对应多项式为X r M(x);采用模2除法,用G(x)去除X r M(x),得余数;采用模2减法,用X r M(x)减去余数,得到带CRC校验和的帧;Receiver:用收到的幀去除以G(x),为零:无错误产生非零:发生了错误,重传
- CRC码计算:
- 生成多项式国际标准:
3.5 基本数据链路协议1~3
- 无限制的单工协议 (协议1):数据单向传送,收发双方的网络层都处于就绪状态(随时待命),处理时间忽略不计(瞬间完成),可用的缓存空间无穷大(无限空间),假设DLL之间的信道永远不会损坏或者丢失帧(完美通道),“乌托邦”
- 单工的停—等协议 (协议2):解决如何避免收方被涌入的数据淹没,即取消“接收方允许无限量接收”的假设;解决方法:收方回发一个哑帧,接收方收到哑帧,表明收方允许接收数据,此时再次发送下一帧数据;实际上是半双工协议
- 有错误信道的单工协议 (协议3):对正确帧的确认,定时器超期:重传,重传定时器可防止死锁的产生
- 解决重复帧:给每个帧一个独一无二的序列号;序号也用来重组排序
- 主动确认重传:接收方无误,回发确认帧;ARQ:automatic repeat request;PAR:positive acknowl-edgement with retransmission
- PAR/ARQ的基本工作机制:发送方每发出一个帧,启动一个重传定时器,超时前,如果收到收方的确认,拆除定时器,超时还未收到确认,重传,重置定时器(数据帧丢失或错误、确认帧丢失)
- 协议1处理的是“完美”的传输环境,所以叫“乌托邦”协议;协议2做了简单的流控,防止接收方被数据所淹没;协议3解决了噪声信道带来的错误,引出了肯定确认技术
- 捎带确认(piggyBacking):将确认暂时延迟以便可以钩到一个外发的数据帧
3.6 滑动窗口协议
- 提高信道利用率:全双工;捎带确认;批量发送数据:滑窗技术(协议4~协议6),协议4:n=1——引出滑动窗口的基本概念,协议5:回退n帧(Go Back n),协议6:选择重传(Select Repeat)
- 发送窗口:对应着 已经发送但还未被确认的帧 的序号
- 接收窗口:对应着 期望接收 的帧的序号
- 窗口滑动的条件:接收方收到帧后,首先核对是否为预期帧号(frame_expected),如果是的,则接收并frame_expected+1,即移动接收窗口;发送端收到应答帧,核对响应帧号next_frame_to_send,核对无误后,从网络层取新的帧,并执行next_frame_to_send+1,即移动发送窗口,如核对帧号不正确,则不移动窗口
- 滑动窗口的基本概念:每个待发送帧被赋予一个序列号seq,seq的取值范围是 0 ~ 2 n -1(n位字段);建立缓冲区,发送窗口:缓存已发送、待确认的帧,顺序接收来自网络层的分组,成帧,赋予序列号,最多保存W个已经发送、等待确认的帧,窗口达到最大值W时强制关闭网络层;接收窗口:缓存期待接收的帧(序号),对进入窗口的帧顺序提交网络层,产生确认,落在窗口外的帧被丢弃
- 窗口设置:滑动窗口最大值:MAX_SEQ = 1;通信双方初始值:seq =0, ack=1(期待接收seq=0);窗口滑动机制:A首先发送数据帧(seq=0, ack=1, A0);B收到A0,发送捎带确认帧(seq=0, ack=0, B0);A收到对A0的确认,滑动窗口,发送帧(seq=1, ack=0, A1) ;特点:序列号seq和确认值ack“0”“1”交替;滑动窗口长度W=1,收到确认才移动窗口;保证按顺序将接收到的正确帧只一次上交网络层
- 协议4的信道利用率:如果:信道传输速率是: b bps,每帧的大小是: k bits,来回时间是: R sec,则信道的利用率是:Line Utilization Rate = k/(k + bR)
- 提高信道利用率的方法:增加滑动窗口最大长度W,信道利用率 = W*T f / (T f +R) = W* k / ( k + bR),令其=100%,求W
- 信道上的容量:一帧从发送方传输到接收期间可容纳的帧数量,带宽-延迟积:BD,窗口值:W=2*BD+1
- 出错:连续发送W个数据帧,其中有一帧出错,但其后续帧被成功发送
- 接收方的接收策略选择:丢弃错帧及后续帧,其后续帧因不是期望接收帧也被丢弃;丢弃错帧,缓存后续正确接收帧
- 对应的发送方的重传策略选择:缓存在发送窗口中的出错帧以及其后续帧全部重发——协议5;只重发出错帧——协议6
3.7 回退n帧
- 回退n帧协议的基本概念:定义序列号seq的取值范围和滑动窗口长度W;发送方连续发送至发送窗口满;接收窗口为1,对出错帧不确认(引发超时);发送方超时重传,从未被确认帧开始
- 累计确认:发送方一直保存着未被确认的帧;n号帧的确认到达时,暗含一个意思:n-1、n-2…….等n号帧
之前的帧也被确认;当采用了累计确认,收到了n帧的确认,n帧之前的帧都可从缓存中删掉 - 滑动窗口长度w的选择:MAX_SEQ = 7( Seq=0~ MAX_SEQ ),W = 7,发送窗口:W = MAX_SEQ,接收窗口:W=1
- 需要发送方付出更多的缓存代价,适合出错率较少的高速信道
3.8 选择性重传
- 选择性重传:接收方需要较大的缓冲区,以便按正确顺序将分组提交网络层,重传帧数少,适于信道质量不好的情况
- NAK/累计确认:加快出错帧的重传,对出错帧回送否定确认,使发方不再等到超时再重传
- 滑动窗口长度w的选择:MAX_SEQ =7( Seq=0~ MAX_SEQ ),W = 4,接收窗口:W= (MAX_SEQ + 1) / 2,发送窗口小于接收窗口
第4章 介质访问控制子层
4.1 MAC子层概述
- 数据链路层被分成了两个子层:MAC和LLC,MadiaAccess Control,Logical Link Control
- 数据通信方式:单播(unicast):One - to - One;广播(broadcast):One - to - Everyone of the whole,局域网采用的通信方式,共享传输介质以降低费用;组播(multicast):One - to -A part of the whole (group)
- 广播网络面临的问题:共享信道/多路访问信道/广播信道;可能两个(或更多)站点同时请求占用信道;解决办法: 介质的多路访问控制,在多路访问信道上确定下一个使用者
- 分配信道(介质访问控制):静态分配:只有一个站/用户使用信道,不用的就浪费了;动态分配:信道是开放的没有预分配
- 信道的静态分配:频分多路复用 FDM (Frequency Division Multiplexing) ;时分多路复用 TDM (Time Division Multiplexing)
- 静态信道分配的特点:资源分配不合理,不满足用户对资源占用的不同需求,有资源浪费,效率低,延迟时间增大N倍;适于用户数量少且用户数目固定的情况,适于通信量大且流量稳定的情况,不适用于突发性业务的情况
- 信道的动态分配:通过多路访问协议( Multiple Access Protocol )动态分配信道资源,提高信道利用率
4.2 ALOHA协议
- 随机访问协议(Random Access):特点:站点争用信道,可能出现站点之间的冲突;典型的随机访问协议:ALOHA协议、CSMA协议、CSMA/CD协议(以太网采用此协议)
- 受控访问协议(Controlled Access):特点:站点被分配占用信道,无冲突
- 纯ALOHA (Pure ALOHA) 工作原理:任何一个站都可以在帧生成后立即发送(可能冲突),并通过信号的反馈,检测信道,以确定发送是否成功,如发送失败,则经随机延时后再发送,发生冲
突的可能伴随着发送的整个过程;冲突危险期:2t,信道利用率18.4% - 分隙ALOHA中,规定发送行为必须在时隙的开始,一旦在发送开始时没有冲突,则该帧将成功发送;冲突危险期:t,信道利用率36.8%
4.3 CSMA协议
- 载波侦听多路访问协议CSMA:Carrier Sense Multiple Access;特点:“先听后发”,改进ALOHA协议的侦听/发送策略;分类:非持续式、持续式:1-持续CSMA,P-持续CSMA
- 非持续式:特点:①经侦听,如果介质空闲,开始发送②如果介质忙,则等待一个随机分布的时间,然后重复步骤①;等待一个随机时间可以减少再次碰撞冲突的可能性,但缺点是等待时间内介质上没有数据传送,这段时间是浪费的
- 持续式(指1-持续式):特点:①经侦听,如介质空闲,则发送。②如介质忙,持续侦听,一旦空闲立即发送。③如果发生冲突,等待一个随机分布的时间再重复步骤①。持续式的延迟时间要少于非持续式。主要问题是:如果两个以上的站等待发送,一旦介质空闲就一定会发生冲突
- p-持续式:特点:①经侦听,如介质空闲,那么以p的概率发送,以(1–p)的概率延迟一个时间单元发送。②如介质忙,持续侦听,一旦空闲重复①。③如果发送已推迟一个时间单元,再重复步骤①。可见,1-持续式是p-持续式的特例
- CSMA工作方式如侦听到介质上无报文则可发送,发送后会发生冲突吗?:会冲突,原因:(1)同时再传送;(2)传播延迟时间;信号在介质上的传播速度只有在自由空间的65%左右,一般近似为:200m/μs,由于传播延迟时间的存在,某个站发出报文后仍会遇到冲突
- 冲突窗口:发生冲突时间的上限,即发送站发出帧后能检测到碰撞的最长时间,数值上等于最远两站传播时间的两倍,即2τ
- CSMA/CD (1-持续)CSMA with Collision Detection:“先听后发、边发边听”,特点:①经侦听,如介质空闲,则发送②如介质忙,持续侦听,一旦空闲立即发送③如果发生冲突,等待一个随机分布的时间再重复步骤①
- 堵塞信号(称强化冲突信号,Jamming signal):所有工作站在发送的同时也接收自己的信号,监测发送的情况,一旦收到的信号与发出的不一致,就说明发生了冲突;发送站感知冲突后立即停止帧的发送,并且发一个简短的堵塞信号(称强化冲突信号Jamming signal),通知网上各站已经发生冲突,本站及网上所有站都等待一段随机分布的时间,然后再按CSMA/CD方式重发该帧
- 冲突检测方法:比较发送信号(AB)与回复信号(AB)的能量或脉冲宽度变化;最大冲突检测时间(冲突窗口):两个最远距离站点间的传输时间为τ,则网络的最大冲突检测时间为2τ
4.4 以太网概述
- 4B/5B编码:4B/5B编码是百兆以太网(即快速以太网)中线路层编码类型之一,就是用5bit的二进制数来表示4bit二进制数;为什么要进行4B/5B编码?在通信网络中,接收端需要从接收数据中恢复时钟信息来保证同步,这就需要线路中所传输的二进制码流有足够多的跳变,即不能有过多连续的高电平或低电平,否则无法提取时钟信息;Manchester(曼切斯特)编码可以保证线路中码流有充分的跳变,因为它是用电平从“-1”到“+1”的跳变来表示“1”,用电平从“+1”到“-1”的跳变来表示“0”,但是这种编码方式的效率太低,只有50%,相当于用线路的有效带宽来换取信号的跳变,十兆以太网就是使用Manchester编码,虽然线路的有效带宽只有10Mbps,但实际带宽却是20Mbps;百兆以太网用的4B/5B编码与MLT-3编码组合方式,发送码流先进行4B/5B编码,再进行MLT-3编码,最后再上线路传输;千兆以太网用的是8B/10B编码与NRZ编码组合方式;万兆以太网用的是64B/66B编码;PCIE 3.0用的是128B/130B编码;4B/5B编码其实就是用5bit的二进制码来代表4bit二进制码。此编码的效率是80%,比Manchester码高,需要满足两个规则:每个5比特码组中不含多于3个“0”;或者5比特码组中包含不少于2个“1”
- 以太网编码:以太网采用曼彻斯特编码,1:高电压到低电压,0:低电压到高电压;电压值:+0.85 volt: high signal、-0.85 volt: low signal、0 volt: DC value、差分曼彻斯特编码(802.5采用)
- 以太网线缆:
- 以太网介质访问控制技术:CSMA/CD
- 二进制指数后退算法:发送方在检测到冲突后,双方(或多方)都将延时一段时间,那么这段时间到底是多长?冲突检测到后,时间被分成离散的时隙;时隙的长度等于信号在介质上来回传输时间(51.2µs );一般地,i 次冲突后,等待的时隙数将从(0~ -1) ×51.2μs 中随机选择;i次冲突后时间片为:0 < i ≦10 时,取( 0~-1) ×2τ,10 < i < 16 时,取(0~1023 ) ×2τ,i > 16 时,放弃发送
- 以太网强大的生命力:简单性和灵活性;易于维护;支持TCP/IP,互联容易;善于借鉴:4B/5B,8B/10B……
4.5 以太网帧格式
- IEEE 802.3和 和以太网帧的比较:
- IEEE802.3帧格式:
- 前导码与帧起始字段:前导码:7个字节,10101010…101010比特序列;帧起始符:1字节,10101011
- 目的地址和源地址字段:地址字段长度:48位(6个字节) ;目的地址类型:单一结点地址(unicast address),组播地址(multicast address),广播地址(broadcast address)
- 物理地址(MAC地址):地址数约7 X 10 13 ,7万亿个;Ethernet地址 = Manufacture ID + NIC ID=24bit (OUI)+ 24bit;工作站的源地址有个有趣的特性,那就是它的全球唯一性(globally unique),由IEEE分配,保证世界上没有两个工作站具有的MAC地址是相同的;当一台计算机启动时,MAC地址从ROM拷贝到RAM;IEEE 要求厂商遵守两条简单的规定:必须使用该供应商分配的OUI作为前3个字节,OUI相同的所有MAC地址的最后3个字节必须分配唯一的值
- 长度字段(DIX以太帧中变为:类型):帧的最小长度为64字节,最大长度为1518字节,不包括前导码
- 数据字段:LLC数据字段是帧的数据字段,长度最小为46个字节,如果少于46个字节,需要填充
- 帧校验字段:采用32位的CRC校验,校验范围:目的/源地址、长度、LLC数据等字段
- 类型/长度字段:在DIX以太帧中,type 字段指明上层网络协议的了类型;DIX以太帧是事实上的使用标准,通常抓取到的报文都是以太帧,该字段是类型字段;在IEEE 802.3帧中,length 字段指明了携带的数据的长度;检查这个字段的数值:如果小于等于 1536(0x600),则是长度(802.3)字段,如果大于 1536,则表示类型(以太帧)
- 为什么有效帧长度≥64 Byte?CSMA/CD的要求最短帧的发送时间≥争用时隙2τ;以太网(802.3)规定,在10Mbps局域网中时隙:2τ = 51.2 微秒,最短帧长度:10Mbps× 2/8 = 64 Byte,或者:(51200/100ns)/8=64Byte
4.6 二层交换的基本原理
- 为什么需要二层交换?有很多LAN,使用网桥(bridges )/交换机将它们连接起来; 网桥工作在DLL层,通过检查MAC地址做出转发帧的决策,不会检查网络层,所以,IPv4, IPv6, AppleTalk, ATM, IPX, andOSI 分组均可穿越网桥
- 网桥工作原理:当一帧到达时,网桥启动如下算法:如果源LAN和目的LAN相同,则丢弃该帧;如果源LAN和目的LAN不同,则转发该帧;如果目的LAN未知,则广播该帧;每当一帧到达,上述算法都将执行一遍
- 透明的网桥:通过透明网桥(transparent bridges )将多个LAN连接起来,硬件和软件不需要做任何的变化;透明网桥工作在混杂模式(promiscuous mode ),它接收所有跟它相联的LAN的帧;当一个帧到达网桥时,它必须作出丢弃(discard)还是转发( forward )的决策,如果是转发,它还要知道向哪个LAN转发;决策是通过在网桥内部的一张地址表(hash table)中查找目的MAC地址而作出的
- 网桥如何维护它的内部转发表?初始时,这张表是空的;扩散算法(泛洪算法,flooding algorithm)当网桥不知道目的地址时(表中查不到),它会将这帧从除来的LAN外的所有LAN转发出去;逆向学习(backward learning)网桥从到达帧的源地址认识到源地址对应的那台机是在帧来的那个LAN上,所以,把它写入MAC地址表
- 但是拓扑是变化的,网桥怎样适应这种变化?无论何时,凡往表中加入记录,也必须同时打下时戳;到达帧的源地址在表中已有记录,将时戳更新为当前时间;网桥周期性地扫描表,将那些超时的记录从表中删除
- 网桥和中继器的比较:
4.7 生成树协议
- 为了可靠,采用冗余结构;但是透明网桥会产生无休止循环的问题
- 冗余交换拓扑可能造成环路带来的问题:广播风暴;多帧传送;MAC地址库不稳定
- 生成树协议STP:spanning tree protocol;为了维护一个无环路的网络拓扑;新标准:RSTP;生成树算法,生成在逻辑上无回路的树,即生成树,生成树算法能在有物理回路的网络中,生成一棵没有逻辑回路的生成树,但并不能保证其中的路径是最优的, 当逻辑STP树上的某点出故障了,非指定端口将会被重新启用
4.8 虚拟局域网
- 虚拟局域网(VLAN):一组逻辑上的设备或用户;VLAN的实现:基于端口、基于MAC地址、基于三层协议
- IEEE 802.1Q 标准:1998年颁布;一种幁标记方法:VLAN ID, 帧标记法可以让帧穿过交换机的干线;通过trunk的时候使用
- 一个VLAN对应一个广播域,有了VLAN,可使用二层交换机实现广播域的分割;当一个VLAN跨越几个交换机的时候,使用802.1Q穿越连接交换机的干线
4.9 二层设备
- 二层(数据链路层)设备:网卡、网桥、交换机
- NIC 网卡:Nework Interface Card、为主机提供介质的访问、MAC地址烧在网卡的ROM中;主要是第二层的设备,在计算机中与上层通信,Logical Link Control (LLC),烧入芯片的MAC 地址,封装数据城帧,提供介质访问;也是第一层设备,创建信号和与介质的接口,内建转发器( transceiver)
- NIC 网卡:Logical link control (LLC): 和上层通信;Naming: 提供一个独特的 MAC 地址标识符;Framing: 封装过程的一部分,为传输比特流打包;Media Access Control (MAC): 为访问共享介质提供访问策略;Signaling:创建信号和与介质的接口
- 网桥的功能特点:连接不同的LAN网段;通过过滤部分交通流量,减少冲突的机会,改善网络性能;以网段分流交通,基于 MAC 地址过滤流量
- 交换机 Switch:LAN 交换机是多端口网桥;连接 LAN 网段;使用一张 MAC 表,来决定一帧转发的端口;交换机常被用来替换集线器(hub),以改善现有网络性能;增加带宽;比网桥更高的交换速度;支持新的功能,如VLAN
- LAN 交换机中地址表的维护:动态更新,直接读取数据包中的源地址信息,存入CAM,如在CAM中没有找到所需的地址,添加到CAM中,删除过时的地址记录:时间标记,每增加一条记录,为它打上时间标记,每引用或找到某条记录,为它打上新的时间标记,当某条地址记录超过一定时间没被引用,则删除它
- 交换机的工作原理:flooding --当目的地址未知或为广播地址时,桥发送帧到除源端口之外的每个端口;learning --通过读取每个帧的源地址和对应源端口来学习连在网段上的每个设备的地址;forwarding --对于已学到的目的地址,桥将直接发送帧到对应的目的设备所在端口;filtering --如果目的地址和源地址在同一端口,桥将丢掉帧
- 交换机的三种交换方式各有特点:存储转发:把整个帧接收下来,计算校验没错误再根据MAC地址转发等操作,时延大但出错小;直通交换(贯穿、虫洞):读到目的地址时就开始进行下一步,转发或广播等,时延小易出错;无分片交换:读满64字节再进行决策,可以保证不转发碎片帧(残帧runt),时延较小也不易出错
第5章 网络层
5.1 网络层引言
- 网络层要做什么?将源端数据包(分组)一路送到接收方;封装源数据;识别目的机;找到一根好的路径(路由)
- 源和目的之间的网络有哪些类?数据报网络:提供无连接的服务;虚电路网络:提供面向连接的服务
5.2 IP地址
- 互联网和网络层:在网络层上,可将整个互联网看作一组互联的子网络和自治系统;将整个互联网粘合起来的正是网
络层协议:IP (Internet Protocol).;IP的任务是提供一种尽力传送( Best-Efforts )的方法,将数据报从源传送到目的 - IP地址:标识收发数据机,由32位二进制位表示,提供约2^32 = 43亿个地址
- IP地址的表示:点分十进制表示;32位被分成了4个8位组;相邻8位组之间用“.”分隔;每个8位组转换成十进制数,从0到255
- IP地址的分类:
- A类地址:
- B类地址:
- C类地址:
- 地址比较:
- 保留的IP地址: D类(224.0.0.0~239.0.0.0)和E类(240.0.0.0~254.0.0.0);网络地址:主机部分全为“0”的IP 地址;广播地址:主机部分全为“1”的 IP 地址;32位全为0,0.0.0.0:这个主机、这个网络、Cisco路由器指定的默认路由;32位全为1,255.255.255.255 Flood Broadcast;127.0.0.0 Lookback Network;127.0.0.1 Lookback test;169.254.x.x,非正常地址
- 泛洪广播(Flood Broadcast) : 本地广播(Local Broadcast)
5.3 子网规划
- 子网 (Subnet):局域网不断增长,越来越难于管理,必须将它分割成子网;一个网络被分隔成几个部分(子网),但是在外界看来,该网络仍被看成一个整体(体现在路由表例上,就是外部的路由器只对应一条路由);这也允许不同的子网在一个组织内部连接起来
- 主/边界路由器:和外部联系,主路由器从外部接收分组,向内部转发
- 子网掩码:路由器使用子网掩码决定分组往哪个子网转发;子网掩码可用点分十进制表示(1表示网络位,0表示主机
位),也可用“/网络位数+子网位数”表示,255.255.255.224,202.10.23.102/27;路由器采用“AND”操作(目的IP和子网掩码),得到目的网络地址;使用这种机制,路由器不必记录全部主机的IP地址,缩减了路由器的规模 - 缺省的子网掩码:A:255.0.0.0 (8位网络位)、/8;B:255.255.0.0 (16位网络位)、/16;C:255.255.255.0 (24位网络位)、/24
- 子网规划: 划分子网实际上建立了一个由网络、子网和主机构成的三级层次结构,根据用户需求,划分出合适数量和规模的子网
- 如何进行子网规划?规划子网时需要考虑两个因素:所需的子网数量、所需主机地址的数量;确定可用主机数量的公式 -2
,(其中n为剩余的主机位的数量) 用于计算主机数量,-2 在每个子网中不能使用子网ID和广播地址;借位规则(从主机域的高位开始借位;主机域至少保留 2 位。)
5.4 IP寻址
- 寻址:IP寻址,根据目的IP地址,找到目的网络;MAC寻址,根据目的MAC地址,找到目的机
- 路由器的主要功能:路由器处理接到一个分组后,打开分组(de-encapsulation),确定目标网络(“与”),查找路由表,重新封装,转发
- 数据(Packet)如何流经路由器?通常要定位到目的机,是先通过IP寻址找到目的网络,再通过MAC寻址找到目的机
- 路由器转发数据的依据:路由表,主要包括目的网络地址network address,接口interface,代价metric (f.g. hop),子网掩码subnet mask,网关gateway,等等。除了路由表,路由器内部有一张ARP表所有子网设备的IP-MAC映射(包括网关),路由表可能因厂家的不同而不同
5.5 IP分组
- IP 分组格式:重要字段:头部长度,TTL,用户协议,目的IP
- 协议版本:4 bits,标明IP协议的版本号;IPv4 : 0100;IPv6 : 0110
- 报头长度:4 bits,IP 头长度:以32bit为单位标明报文长度 (4 bytes),可指向数据开始处
- 服务类型:8 bits,Type Of Service,上层协议表明该分组的重要程度,Precedence,Reliability,ECN
- 数据报总长度:16 bits,指明整个数据分组的总长度,包括数据头和数据。单位“字节”
- 数据报标识号:16 bits,标识当前数据报的序列号,由发送者分配,以便接收方可以依据来做重组
- 标志:3比特和13比特,分组是否分片,帮助收方重组
- 生存时间:8 bits,Time-to-Live(TTL)维护一个计数器,递减为零时,数据报被丢弃,防止分组在网络中无限循环(单位为一跳,经过一个路由器值减一,到0丢弃)
- 用户协议:8 bits,用来指定传输层协议,17(UDP) or 6(TCP)
- 报头校验和:16 bits,针对头部计算校验和,验证分组头部的正确性
- 源/目的站点IP地址:源和目的地址都是32位(IPv4)
- 数据报选项:可变长字段,Allows IP to support various options,such as security, route, error report ...
- 填充:确保IP头是32位的整数倍
5.6 什么是IPv6
- IPv4有哪些问题: IPv4存在地址危机、端到端模式受到破坏、配置复杂、安全问题、QoS问题等
- IPv6目标:支持几十亿台主机;缩减路由表的规模;简化协议,让路由器可以更快地处理分组;提供比IPv4好的安全性;更加关注服务类型 (尤其是实时数据);允许通过指定范围来支持组播传输;允许主机在不改变地址的情况下能够漫游;允许协议具有扩展性;允许新老协议共存多年
5.7 IPv6地址
- IPv6的最显著变化:地址空间,IPv4: = 4×(约40亿);IPv6地址空间:=3.4× =340涧(1涧=)
- IPv6地址首选格式:v6地址与v4地址表示方法有所不同:点分十进制 冒分十六进制;用十六进制表示,如: FE08:….;4位一组,中间用“:”隔开,如: 2001:12FC:….;若以零开头可以省略,全零的组可用“::”表示,如:1:2::ACDR:….;地址前缀长度用“/xx”来表示,如: 1::1/64
- 同一个地址不同表示法:例0001:0123:0000:0000:0000:ABCD:0000:0001/96;1:123:0:0:0:ABCD::1/96;1:123::ABCD:0:1/96
- IPv6地址分类:单播地址 (Unicast Address);组播地址 (Multicast Address);任播地址 (AnycastAddress);特殊地址
- 单播地址:链路——本地 (Link- Local);用在单一链路上,带有链路—本地源或目的地址的数据包不转发到其它链路,如:FE80::20C:76FF:FE0A:9A7C
- 链路本地地址:应用范围:只能在同一本地链路节点之间使用,FE80::/64,节点启动时,自动配置一个本地链路地址,前64位:FE80:0:0:0,后64位:EUI-64地址
- EUI-64地址:由主机的MAC地址得出,MAC48位分为前24和后24,中间插入11111111 11111110,成为64位
- 站点本地地址:应用范围:站点内,与IPv4私人地址类似,FEC0:0:0:SID::/64,不是自动生成的
- 可聚合全球单播地址:提供商分配的前缀:/48;Site拓扑:由组织机构划分子网;接口ID:64
- 怎么做到即插即用的?启动时,生成链路本地地址;该地址可和网关通信,获得全球IP地址前缀(后缀:手工输入、EUI-64地址、随机生成);也可利用DHCP获得上网所需的资源
- 各类地址的应用范围:
- IPv6地址子网规划:IPv4 子网划分是管理地址稀缺性,IPv6 子网划分是根据路由器的数量及它们所支持的网络来构建寻址分层结构,无需精打细算,如果真的需要,在半字节边界划分,
5.8 IPv6分组
- IPv6分组:IPv6分组由基本头部、扩展头部和载荷三部分构成,下一个头(Next Header)字段描绘了三者间的关系;相比IPv4分组,IPv6的字段精简了,但是头部总长度并没有减少;IPv6 的报头在起始64比特之后是128比特的源地址和目的地址,全长为40字节
- IPv6基本头(固定头):
- IPv6 扩展头:目前,已经定义了6种扩展头;扩展头是可选的,可以有多个扩展头,但是必须按一定的顺序排列;扩展头有固定的格式;其他扩展头包含可变数目的可变长度域;每个可变项都被编码成 (Type,Length,Value) 三元组
- 基本报头、扩展报头和上层协议的关系:每一种扩展报头其实也有自己特定的协议号(下一个头NextHeader),例如:路由报头为43,AH报头为51;每一个基本报头和扩展报头的下一个头(NextHeader)字段标识后面紧接的内容
5.9 IPv6过渡技术
- IPv6过渡:IPv6不是一蹴而就的,漫长的过渡过程;三类过渡技术,双协议栈(Dual Stack)、隧道(Tunnel)、地址转换技术
- 双协议栈:网络设备、网络系统必须有双协议栈的支持
- 隧道技术:通过隧道,IPv6分组被作为无结构无意义的数据,封装在IPv4的数据报中,被IPv4网络传输
- 翻译/转换技术:从IPv4转换到IPv6,或反过来,不仅发生在网络层,还有传输层和应用层;当双栈和隧道都无法使用的时候,才使用;适用纯IPv4节点和纯IPv6节点间的通信
5.10 路由从何而来
- 路由器转发分组的依据:路由表
- 路由表从何而来:直连路由、静态路由、动态路由
- 路由器收到一个分组之后:打开分组L3,提取出目的IP地址;确定目标网络,查找路由表按位“AND”操作;重新封装,转发
TTL-1,置换源和目的的MAC地址,计算校验和,可选分片等 - 直连路由:开启了路由器接口后,自动发现
- 静态路由:管理员手工配置的路由
- 动态路由:由路由选择协议动态地建立、更新和维护的路由;适合大型的、经常变动的网络,需要维护开销,减少了网络管理员的负担
- 路由选择算法(Routing protocol):网络层软件的一部分,负责确定所收到分组应传送的外出线路,主要有两大类;距离矢量路由选择(DV),RIP:路由信息协议;链路状态路由选择(LS),OSPF:开放的最短路径优先
- 量度路径的优劣? (度量/代价/开销 /成本):路径长度,由网络管理员定义每条网络链路的代价(cost),从源到宿的代价总和为路径长度,hop (跳数);可靠性,链路数据传输的可靠性(误码率);延迟,数据包从源到宿需要花费的传输时间;带宽,链路的最大传输能力以及网络流量;负载,网络资源(例如路由器的CPU)的使用率;通信代价,占用通信线路的费用
5.11 距离矢量路由器选择协议
- 距离矢量路由选择(Distance Vector:DV):每个路由器维护一张表,表中列出了当前已知的到每个目标的最佳距离,以及为了到达那个目标,应该从哪个接口转发;D-V 算法是动态的和分布式的,它常被用于小型网络,RIP是一个典型的 DV
- RIP:Routing information protocol,路由选择信息协议,在早期互联网中广为使用的一种路由选择协议
- DV的工作原理:每个路由器(节点)维护两个向量, D i 和 S i ,分别表示从该路由器到所有其它路由器的距离及相应的下一跳(next hop);在邻居路由器之间交换路由信息(矢量);每个路由器(节点)根据收到的矢量信息,更新自己的路由表
- D-V算法的特点:优点:简单;缺点:交换的信息太大了,路由信息传播慢,可能导致路径信息不一致,收敛慢,度量计数到无穷,不适合大型的网络
5.12 路由信息协议 RIP
- RIP:Routing information protocol,路由选择信息协议,现代网络中极少使用 RIP
- RIP的主要特点:RIP 是一种典型的 D-V 路由选择协议;RIP 采用了跳数(hop)(路由器的个数)作为量度( metric);当量度超过 15 跳,目的被认为不可达;默认地,每30秒钟交换一次矢量/向量信息(全部路由表)
- RIP的主要缺陷:不能到达量度超过15跳的目标网络;RIP的度量(代价)是跳数,即沿途经过的路由器的个数,有时候,并
不合理,不能真正反映网络的状况;实际运行中,会遇到度量计数到无穷、收敛慢等问题
5.13 RIP为什么会衰落
- DV路由可能遇到的问题:路由环路( routing loop);计数到无穷问题( Count to infinite);收敛慢的问题( slow Convergence )
- 解决办法:定义路径度量(代价)的最大值;提高收敛速度,水平分割( Split Horizon),毒性逆转(Poison Reverse),抑制定时器( Hold-Down Timers),触发更新(Triggered Updates )
- 路由面临的复杂情况:站得高才能看得远,确定全局最佳路径,但是站得高需要付出代价;途经线路、站点以及目的网络都是动态变化的,最佳路径也要跟随发生变化,需要及时获取状态变化信息;在站得不够高、跟得不够紧的情况下,只能直接获取近邻信息,远处信息通过逐站信息传播而间接获取,有可能传播、学习到错误的、过时的信息;最坏情况,全网传播和学习过时的信息,永远无法达到稳定状态:算法不收敛
5.14 链路状态路由选择
- 链路状态路由(Link State)主要思想:发现 它的邻居节点们,了解它们的网络地址;设置 到它的每个邻居的成本度量;构造 一个分组,包含它所了解到的所有信息;发送 这个分组给所有其他的路由器;计算 到每个路由器的最短路径
- 发现邻居节点:当一个路由器启动的时候,在每个点到点的线路发送一个特别的HELLO分组;收到HELLO分组的路由器应该回送一个应答,应答中有它自己的名字 (采用一个全球唯一的名字 globally unique name)
- 设置链路成本:为了决定线路的开销,路由器发送一个特别的 ECHO 分组,另一端立刻回送一个应答;通过测量往返时间(round-trip time) ,发送路由器可以获得一个合理的延迟估计值;为了得到更好的结果,可多次测量,取均值,一种常用的选择,与链路带宽成反比
- 构造链路状态分组LSA:链路状态分组构造后被发送给其他的路由器,分组中包含这些信息:1 发送方的标识(ID of the sender)2 序列号(sequence number )3 年龄(age )4 邻居列表(list of neighbors )5 到邻居的成本/量度(delay to each neighbor );周期性地构造和发送,或者有特别的事件发生时构造,比如某条线路或邻居down掉了
- 发布链路状态分组LSA:基本算法:每个分组都包含一个序列号,序列号随着新分组产生而递增;路由器记录下他看见的所有 (源路由器,序列号)对;当一个的新的分组到达时,路由器根据它的记录:如果该分组是新的,就被从除了来线路外的所有其他线路转发出去 ( flooding,泛洪),如果是重复分组,即被丢弃(喜新厌旧),如果该分组的序列号比对应的源路由器发送的到过此地的分组的最大序列号还小,则该分组被当作过时的信息而被拒绝
- 计算新的路由路径: 一旦一个路由器获得了全部的链路状态分组就可以构造出全网络图来了(Graph);现在,可以使用最短路径算法来计算路由器之间的最短路径;计算结果是一棵树,会形成相应的路由,安装在路由表中,引导数据分组的转发
- L-S 路由算法的特点:优点:每个路由器的认识一致,收敛快,适合在大型网络里使用;缺点:每个路由器需要较大的存储空间,计算负担很大
5.15 单区域 OSPF
- L-S路由协议的实例—OSPF:开放的路径优先(Open Shortest Path First);使用图(graph)来表述真实的网络;计算最短路径; OSPF是内部网关协议(IGP)中性能最优、应用最广的一个协议
- RouterID:一个32位的无符号整数,是一台路由器的唯一标识,在整个自治系统内唯一
- 协议号:IP头中代表OSPF报文的协议号是89
- TTL=1:通常OSPF报文不转发,只被传递一条,即在IP报头的TTL值被设为1,但虚联接除外
- 分组类型:
- OSPF的运行步骤:1 建立路由器毗邻关系;2 选举DR和BDR;3 发现路由;4 选择最佳路由;5 维护路由信息
- OSPF 状态:Down;Init(初始);Two-way(双向);ExStart(准启动);Exchange(交换);Loading(加载);Full adjacency(全毗邻)
- DR选举过程:登记选民 本网段内的OSPF路由器;登记候选人 本网段内的priority>0的OSPF路由器;竞选演说 所有的priority>0的OSPF路由器都认为自己是DR;投票 选priority值最大的,若priority值相等,选RouterID最大的
- DR选举中的指导思想:DR一旦当选,除非路由器故障,否则不会更换;DR是路由器选出来的,而非人工指定;DR选出的同时,也选出BDR,DR故障后,由BDR接替DR成为新的DR
- DR可能带来的问题:非全连通网络(full mesh),如PTMP网络;由管理员配置成PTMP,不选举DR
- DR带来的变化:同步的次数减少了(O(n)),减少了带宽的利用;路由器的角色:DR、BDR、DROther;路由器间的关系:Unknown、Neighbor、Adjacent
- 为什么说OSPF克服了路由自环?每一条LSA都标记了生成者(用生成该LSA的路由器的RouterID标记),其他路由器只负责传输,这样不会在传输的过程中发生对该信息的改变和错误理解。路由计算的算法是SPF,计算的结果是一棵树,路由是树上的叶子节点,从根节点到叶子节点是单向不可回复的路径。 区域之间通过规定骨干区域避免
5.16 无类域间路由 CIDR
- IP 地址问题:IP 正变成过渡流行的牺牲品分类造成了数百万个地址浪费;A类地址网络:16 M 个地址(太大);C类地址网络:256个地址(太小);B类地址网络:65,536个地址(够用);路由表膨胀
- CIDR:Classless InterDomain Routing;缓解了地址枯竭的趋势;控制甚至缩减了路由表的开销;CIDR的基本思想描述在 RFC 1519 中,分配IP地址的时候不再以类别来分,而是按照可变长的地址块来分配(按需分配)
- CIDR路由:路由表必须扩展,增加一个 32-bit 的子网掩码;每个路由表有一个三元组(IP address, subnet mask, outgoing line);当一个分组到来到的时,分组中的目标IP地址( Destination IP )被检查,目标IP和子网掩码进行与操作,获得目标网络地址,以查找路由表,如果路由表中有多个表项匹配 (这些表项有不同的子网掩码) ,使用子网掩码最长的那个表项
- 路由聚合:缩减路由表规模、隔离路由翻动;将子网IP不变的位数设为网络位数或掩码位
5.17 网络地址翻译 NAT
- Private IP address:不可路由的地址、也可用于广域网链路上。(不止以下三类,还有100.64.0.0/10等)
- NAT:net address translate,私有IP地址和公有IP地址之间的转换,一个IP地址耗尽的快速修补方案,内部网络使用私人地址,当内网需要和外网通信的时候,私人地址转换成合法的global 的地址;由NAT转换器(盒子)完成这种转换;NAT转换器能够转换并且维护一个地址转换表,以便回来的分组找到它的去处,当回来的分组到达NAT转换器的时候,它查找地址转换表(以源端口作索引),获得目标机的私人地址,并转换地之后发往目标机
- PAT:port address translate(超载),将多个私有IP地址影射到同一个公有IP地址的不同端口
- 优点:节省了公有IP地址;提供了内部网访问外网的灵活性;有一定的保密性。
- 缺点:影响了部分协议和应用的通信;增加了网络延时;NAT转换设备的性能可能成为网络的瓶颈;影响了路由追踪工具的使用
5.18 互联网控制消息协议 ICMP
- ICMP - Internet Control Message Protocol:用来报告意外的事件或测试互联网;IP分组传送不可靠,可能遭遇各种问题丢包,可能发生拥塞,产生很大延迟、抖动等,ICMP用来向源(通常)报告这些问题或状况; ICMP消息本身也可能遭遇问题,因此规定ICMP消息不生成自己的差错报告
- 应用 1:ping的工作原理:使用ping命令(即调用ping过程)时,将向目的站点发送一个ICMP回声请求报文(包括一些任选的数据),如目的站点接收到该报文,必须向源站点发回一个ICMP回声应答报文,源站点收到应答报文(且其中的任选数据与所发送的相同),则认为目的站点是可达的,否则为不可达
- ping:测试TCP/IP是否正常工作ping 127.0.0.1;网络设备是否正确ping 本机IP地址;检查对外连接的路由器ping 默认网关IP;检查与某台设备的畅通情况ping IP;检查DNS设置如ping www.scut.edu.cn;执行DNS反向查询ping –a IP地址
- 应用 2:tracert命令:tracert过程是通过ICMP数据报超时报文来得到一张途经的路由器列表;源主机向目的主机发一个IP报文,并置TTL为1,到达第一个路由器时,TTL减1,为0,则该路由器回发一个ICMP数据报超时报文,源主机取出路由器的IP地址即为途经的第一个路由端口地址;接着源主机再向目的主机发第二个IP报文,并置TTL为2,然后再发第三个、第四个IP数据报,……直至到达目的主机; 但互联网的运行环境状态是动态的,每次路径的选择有可能不一致,所以,只有在相对较稳定(相对变化缓慢)的网络中,tracert才有意义
5.19 地址解析协议 ARP
- ARP —Address Resolution Protocol:任务是找到一个给定IP地址所对应的MAC地址
- 优化措施:缓存ARP 结果;在ARP请求中包括源机的 IP-to-MAC 地址的映射;每台机器在启动的时候,广播它的IP-MAC地址对
- 免费ARP (Gratuitous ARP):当一台主机启动时,发送要给一个免费ARP,(如果意外收到一个应答,即是IP地址发生了冲突);当一个接口(interface)的配置发生了改变,会发送一个免费ARP
- ARP table:IP地址到MAC地址的映射表;为了减少ARP请求的次数,每个设备拥有自己的ARP表,包括路由器;储存在存储器(RAM)中,自动维护。(掉电消失)
- 维护ARP表:通过广播ARP请求中的源设备信息添加更新表;利用自己的ARP请求之应答信息来添加、更新表;删除超过一定时限的信息
- 缺省网关(代理ARP):当源设备需要的目的地址与自己不在同一个网络时,如果源不知道目的MAC地址,它必须使用路由器的服务使它的数据达到目的,当路由器在这种方式下使用时,称为缺省网关;缺省网关是与源设备所处的网段相连的路由器接口上的IP地址
5.20 拥塞控制
- 拥塞:当一个子网或子网的一部分出现太多分组的时候,网络的性能急剧下降,这就是拥塞( Congestion )
- 拥塞根源:负载 > 资源
- 拥塞量度:因为缺乏缓存空间而丢弃的分组百分比;平均队列长度;超时和重传的分组数;平均分组延迟;分组延迟的标准方差(standard deviation)
- Choke Packets(抑制分组):路由器给源机发回一个抑制分组,并在抑制分组中指明原分组的目标地址;当源机收到抑制分组后,它会以某种百分比减少它发向该目标的流量
- 逐跳抑制分组( Hop-by-Hop Choke Packets):改进方法让抑制分组路径的每个路由器都采取相应的措施;逐跳抑制的效果:拥塞点上的拥塞很快得到了缓解,但是付出的代价就是,上游路由器需要更多的缓存空间
- 负载丢弃/载荷脱落:处理拥塞的最极端的方法,当路由器收到的分组超载了,一些分组会被丢掉:随机丢弃(random)、丢弃新到达的 (葡萄酒策略,适合文件传输类)、丢弃早到达的分组 (牛奶策略,适合多媒体类)、丢弃不太重要的( less important )分组、需要发送方在它们的分组中标明优先级
5.21 流量整形
- 流量整形:调节数据传输的平均速率(和突发数据流);算法:漏桶(leaky bucket)、令牌桶(token bucket);其它:资源预留、准入控制、分组调度等;可以减少拥塞
- 漏桶算法:每个主机连接到网络的接口中都有一个漏桶,即一个优先长度的内部队列;当桶中有分组的时候,输出速率是恒定的,当桶空的时候,输出速率是0;当一个分组到达满的桶的时候,分组将被丢弃(满则溢);每个时钟嘀嗒( tick ),仅允许一个分组或固定数量的分组发送出去。主机内用户进程产生的分组流往往是一个不稳定的流,漏桶可以让它输出到网络时变成一个稳定流,抹平了突发尖峰,极大地减少了发生拥塞的机会
- 令牌桶算法:当大量数据突发的时候,令牌桶算法允许输出加快到某种程度;令牌桶拥有令牌(tokens),且以每△T秒产生一个令牌的速度;往桶中输入令牌;一个分组要发送的时候,它必要从桶中取出和获取到一个令牌;令牌桶算法允许累积令牌,但最多可以累积n(令牌桶的容量)个令牌
- 算法比较:漏桶算法可让一个不稳定的流整为一个稳定的流,但无法处理突发,桶满时丢掉的是分组;令牌桶可以累计突发数据的令牌,允许有上限的突发,桶满时丢掉的是令牌
第6章 传输层
6.1 传输层概述
- 传输层概述:传输层是整个协议栈(TCP/IP)的核心;传输层的最终目标是向它的用户(应用层)提供高效、可靠
和性价比高的服务;完成这项工作的硬件或软件被称为传输实体( transport entity) - 有两种传输层服务:面向连接的服务;无连接的服务 Connectionless
- 数据段 (TPDU,传输层协议数据单元):TPDU (Transport Protocol Data Unit) 是从传输实体发到对端传
输实体的信息;TPDUs 被封装在分组(packet)中,由网络层交换;分组被封装在帧(frames)中,由数据链路层交换 - 传输层协议:UDP,User datagram protocol;TCP,Transport control protocol
6.2 用户数据报协议
- User Datagram Protocol :UDP 是一个无连接的(connectionless)的传输层协议;UDP是传输层的一个轻量级协议,提供高效的端到端的数据段传输;UDP传输数据段,无须建立连接;很多C/S应用(如: DNS),都使用UDP发送一个请求, 然后对方应答;UDP不提供数据传输的可靠保证
- TCP/UDP伪头部(pseudo header):
- UDP 数据段头:UDP 数据段包括8字节( 8-Byte)的头部和数据两个部分;其中的长度域表示的长度包括头部和数据总共的长度;校验和(checksum)是可选的,如果不计算校验和,则该域置为 0;UDP比IP好的地方在于它可以使用源端口和目的端口
- 端口(port)定义:16 位,共有 个端口;端口范围:0~65535;<1023 用于公共应用(保留,全局分配,用于标准服务器),IANA分配;1024~49151 用户端口,注册端口;>49152 动态端口,私人端口
- 自由端口(Free port):本地分配,动态的随机端口
- UDP 校验和:如果收方的校验和为全1,传输无错;二进制反码求和:从低位到高位逐列计算,0和0相加是0,0和1相加是1,1和1相加是0,但产生进位,最高位相加产生进位,该位为1;检错能力较弱,但简单快速;使用协议地址,破坏了分层原则
6.3 通信模型
- 通信5元组:源IP、源端口、目的IP、目的端口、协议
- 一些已分配的知名端口:
6.4 TCP数据段
- 传输控制协议:TCP (Transmission Control Protocol) 是专门为了在不可靠的互联网络上提供可靠的端到端字节流而设计的;支持TCP的机器都有一个 TCP 实体,或者是用户进程或者是操作系统内核,都可以管理TCP流和跟IP层的接口
- 发:封装:TCP实体接收本地进程的用户数据流,将其分割成不超过64kB的分片(实践中,通常分割成1460字节,以通过
以太网传输) - 收:解封装:当包含TCP数据段的报文到达某台机器的时候,被提交给传输实体,传输实体将其重构出原始的字节流
- TCP 数据段的大小:TCP软件决定数据段的大小,有两个因素限制了数据段的长度:1 TCP数据段必须适合IP的65515的载荷限制,2 每个TCP数据段必须适合于下层网络的 MTU (如,1500 字节– 以太网载荷大小);TCP使用的基本协议具有动态窗口大小的滑动窗口协议(sliding window protocol)
- TCP 数据段头:
- 源端口 和 目的端口 字段:标明了一个连接的两个端点用来跟踪同一时间内通过网络的不同会话。一般每个端口对应一个应用程序;
- 序列号 – 字节号 (32 位):初始序列号ISNs(initial sequence numbers ),随机产生的;SYN:携带了ISNs 和SYN 控制位的数据段;
- 确认号: 期望接收的字节号 (32位);
- TCP 段头长度 :TCP段头长度,单位32位(4字节)保留域/字段
- URG:当紧急指针使用的时候,URG 被置为1。紧急指针是一个对于当前序列号的字节偏移量,标明紧急数据从哪里开始
- ACK:可设为 1/0,1 表示确认号有效,0 标明确认号无效
- PSH:表示这是带有PUSH标志的数据;接收方收到这样的数据,应该立刻送到上层,而不需要缓存它
- RST:被用来重置一个已经混乱的连接
- SYN:用在连接建立的过程;SYN=1 ,ACK=0 连接请求;当SYN=1 ,ACK=1 连接接受
- FIN:被用来释放连接,它表示发送方已经没有数据要传输了,但是可以继续接收数据
- TCP中的流控(Flow control):使用一个可变长的滑动窗口来完成的
- Window size :告诉对方可以发送的数据字节数(从确认字节号开始(决定于接收方);窗口尺度(Window scale)选项允许收发双方协商一个窗口尺度因子, 这个因子允许双方把窗口尺寸域向左移动至14位;因此窗口数可多达 字节,很多TCP都支持这个选项
- Checksum :提供额外的可靠性,校验的范围包括头部、数据和概念性的伪头部
6.5 TCP三次握手建立连接
- TCP 连接的建立:采用三次握手建立连接;一方(server)被动地等待一个进来的连接请求;另一方(the client)通过发送连接请求,设置一些参数;服务器方回发确认应答应答到达请求方,请求方最后确认,连接建立
- 三次握手:三次握手建立连接是一个同步的过程,交换初始序列号,保证后续的每一个字节的可靠传输;一次:SYN=1,ACK=0;二次:SYN=1,ACK=1;三次:SYN=0,ACK=1
- SYN泛洪导致DoS攻击(伪造源IP);数据传输开始后可能有两个原因导致阻塞,快的机器向慢的机器发送数据,多台机器同时向一台机器发送数据
6.6 TCP连接释放
- TCP 连接释放:任何一方在没有数据要传送的时候,都可以发送一个FIN置位了的 TCP 数据段;当FIN被确认的时候,该方向的连接被关闭;当双向连接都关闭了的时候,连接释放
- 两军队问题 (two-army problem):对称释放–对待连接像两个双向连接,要求连接的两端都释放;遗憾的是,决定什么时候两边释放非常困难,最后信息的发送者,永远无法知道这个信息是否到达
- 避免两军队(two-army)问题:使用定时器;如果一方发送了FIN数据段出去却在一个设定的时间没有收到应答,释放连接
另一方最终会注意到连接的对方已经不在了,超时后连接释放 - 半开放连接(half-open):如果初始DR的和重传都丢了,协议失败发送者将放弃发送且释放连接,但是,另外一端却不知道这些情况,仍然处于活跃的状态,这种情形导致半开放连接
- 杀死半开放连接的方式:如果在一定的时间内,没有TPDUs 到达的话,连接自动释放;如果这样,传输实体在发送一个TPDU的时候必须启动定时器,定时器超期,将发动一个哑TPDU(dummy TPDU),以免被断掉
6.7 TCP传输策略
- TCP 传输策略:窗口尺寸受制于接收方,TCP适配收发双方的数据流量;当窗口数为 0 时,发送者不能正常发送数据段,除非Urgent数据。比如,用户想杀掉远端机器上的进程的时候,可以发送数据,发送者可以发送一个字节的数据段,以便让接收者再次发送期待接收的字节号和窗口数(避免死锁)
- TCP效率优化:发方优化: Nagle’s algorithm尽量不发送数据含量小的数据段,缓存应用层的数据,达到一定量再发送;收方优化: Clark’s solution不请求对方发送短数据段(window size),延迟窗口变更信息,使接收缓冲区足够大
- Nagle's algorithm (1984):当数据以一次一字节的速度到达的时候,只发送第一个字节,然后将后续的字节缓存起来,直到发出的字节得到确认,将缓存起来的字节在一个数据段中发出,再继续缓存,直到发出的数据得到确认;Nagle算法在很多TCP上实现,但是有些时候最好禁用,比如:当一个X-Windows应用在互联网运行的时候,鼠标的移动事件必须发送给远程计算机,把这些移动事件收集起来一批一批发送出去,使得鼠标的移动极不连贯
- 傻瓜窗口综合症(silly window syndrome problem):当有大块数据被传递给发送端TCP实体,但接收端的交互式应用每次只读取一个字节的时候,问题就来了
- Clark解决方案 :阻止接收方发送只有1个字节的窗口更新,相反,它必须等待一段时间,当有了一定数量的空间之后再
告诉发送方接收方可以可以维护一个内部缓冲,且阻塞上层应用的READ 请求,直到它有大块的数据提供
6.8 TCP拥塞控制
- TCP 拥塞控制:虽然网络层也试图管理拥塞,但是,大多数繁重的任务是由TCP来完成的,因为针对拥塞的真正解决方案是减慢数据率;TCP希望通过动态维护窗口大小来实现这个目标
- 分组守恒:当有一个老的分组离开之后才允许新的分组注入网络
- 拥塞检测 (Congestion detection):所有的互联网TCP算法都假定超时是由拥塞引起的,并且通过监视超时的情况来判断是否出现问题
- 拥塞控制 (Congestion prevention):当一个连接建立的时候,双方选择一个合适的窗口大小,接收方根据自己的缓冲区大小来指定窗口的大小;如果发送者遵守此窗口大小的限制,则接收端不会出现缓冲区溢出的问题,但可能由于网络内部的拥塞而发生问题
- 两个潜在问题:网络容量,接收者容量;单独地处理这两个问题为此,每个发送者维护两个窗口:接收者窗口 大小反映了目前窗口的容量 (容易控制)、拥塞窗口 大小反映了网络目前的容量(难于控制);发送者发送的数据字节数是两个窗口中小的那个窗口数
- 慢启动算法(Slow Start) (尝试的过程):当连接建立的时候,发送者用当前使用的最大数据段长度初始化拥塞窗口,然后发送一个最大的数据段;如果在定时器超期之前收到确认,则将拥塞窗口翻倍,然后发送两个数据段……直至超时(或达到接收方窗口的大小)确定出拥塞窗口的大小; 如:如果试图发送 4096 字节没有问题,但是发送8192字节的时候,超时没有收到应答,则拥塞窗口设为4096个字节
- 阈值:除了使用接收者窗口和拥塞窗口,TCP拥塞控制还是用了第三个参数,阈值(threshold),初始化为64K;当一个超时发生的时候,阈值降为当前拥塞窗口的一半,同时将拥塞窗口设为一个最大数据段的长度;使用慢启动算法来决定网络的容量,拥塞窗口增长到阈值时停止指数增长;从这个点开始,每次成功的传输都会让拥塞窗口线性增长(即每次仅增长一个最大的数据段长度)
- 拥塞控制算法:定义初始拥塞窗口阈值和窗口大小Threshold 0 和 cwnd 0;初始超时,拥塞窗口阈值减半:Threshold1 = CWND / 2;cwnd二进制指数增长至确认超时;cwnd线性增长至确认超时,拥塞窗口值减半:Threshold n = CWND n / 2,定义窗口大小:cwnd = cwnd 0;重新开始慢速启动过程
- 如果收到一个ICMP抑制分组( ICMP source quench)并被送给TCP传输实体 ,则这个事件被当作超时对待
6.9 TCP定时器等
- 重传定时器(retransmission timer,Positive ackn. with retransmit):最重要的定时器
- 持续定时器(persistence timer),用来避免如下的死锁( deadlock )发生;接收方发送了一个窗口数为零的确认(窗口更新),告诉发送方等待;稍后,接收方空出了缓冲,发送更新窗口的数据段,但是,很不幸,该分组丢失啦;现在,收发双方都在等待对方发送数据段过来,但永远等不到!死锁产生
- 保活定时器(keep-alive timer):用来检查连接是否存活,当一个连接空闲的时间超过保活定时器的时间,该连接将被杀
掉;在关闭时刻处于TIMED WAIT 状态中使用的定时器:运行两倍的最大分组生存时间,以确保连接关闭之后,该连接上的
所有分组都完全消失 - 比较 TCP 和 UDP:TCP,可靠传输方式,可让应用程序简单化,程序员可以不必进行错误检查、修正等工作;UDP,为了降低对计算机资源的需求(DNS),应用程序本身已提供数据完整性的检查机制,勿须依赖传输层的协议来保证;应用程序传输的并非关键性的数据(路由器周期性的路由信息交换),一对多方式,必须使用UDP(TCP限于一对一的传送)(视频传播)
第7章 应用层
7.1 应用层概述
- 应用层的主要功能:最靠近用户的一层,向应用程序提供网络通信
- 应用层的特点:没有应用层,就没有网络通信支持;参考模型中唯一的一层,不需为它的上层服务;它向参考模型之外的用户提供服务;网络应用程序可被分为两大类,直接网络应用程序 Browser , e-mail ,FTP , Telnet、间接网络应用程序 Word , resource manager , (via Redirector重定向器)
- 传统经典的应用:DNS、电子邮件E-mail、万维网World wide web、文件传输ftp、远程登陆telnet
7.2 域名系统DNS概述
- 域名系统DNS:DNS是一个层次化的分布式数据库系统,提供域名解析服务;在互联网中,使用IP地址作为机器的绝对地址,是行不通的,有两个原因:计算机可能常常地更换IP地址,所以,通过IP地址去访问某台机器就会发生问题;P地址难于记忆(如202.38.193.188=www.scut.edu.cn)使用名字name来访问某台机器,可以解决这个问题
- 域名系统DNS和域名空间:DNS是分层次的,基于域的命名方案,且采用了分布式数据库系统来实现
- 域名(Domain Names):域名是大小写无关的( case insensitive ),各组成部分的名字最多有 63 个字符长,整个路径不超过 255个字符;没有规则限制同时在两个或多个顶级域名下的注册 (如:sony.com and sony.nl)—域名抢注
- 资源记录(Resource Records):每个域,无论是单主机域还是顶级域,都可以有一组跟它相关联的资源记录( Resource Records );当一个解析器把域名传递给DNS时,DNS所返回的是与该域名相关联的资源记录。所以DNS的主要功能是将域名映射到资源记录上
- 一个资源记录包括5个部分:域名Domain name、生存期Time to Live、类别Class、类型Type、值Value
- 域名:指出这条记录适用于哪个域;通常,每个域有多条记录,而数据库则保存了多个域的信息;域名字段是匹配查询条件的主要关键字;记录在数据库中的顺序是无关紧要的
- 生存时间:指示该条记录的稳定程度;极稳定的信息会被分配一个很大的值,如 86400 (一天时间的秒数);非常不稳定的信息会被分配一个很小的值,如60 (1分钟)
- 类别:对于互联网信息,它总是 IN
- 类型:指出了这是什么类型的记录
- 域名服务器:整个互联网需要多台而不是一台域名服务器;DNS名字空间被分割成不相交的区域(zones),每个区域包
含域名树的一部分,也包含一台主域名服务器( primary nameserver );主域名服务器从自己硬盘的一个文件中读取信息,次域名服务器( secondary name servers )分享这些信息 - 根域服务器— 最高级域名服务器:最重要的域名服务器;存储所有顶级域名的名字和IP;无论是哪个本地域名服务器,无论何时,只要它无法回答一个查询请求,它都会向根域服务器求救 (for help);全球有 13 根域服务器,它们的名字分别是a to m(前13 个字母);到 2006 年底全世界已经安装了一百多个根域名服务器,分布在世界各地;这样做的目的是为了方便用户,使世界上大部分 DNS 域名服务器都能就近找到一个根域名服务器
7.3 DNS之域名解析
- 为什么需要域名解析?:封装的过程,信息、数据流、数控段、数据分组、数据帧、比特流,只知道被访问资源的域名,而不知道对用的IP地址时由域名服务器提供解析服务
- 域名解析:将域名映射为IP地址的方法和过程
- DNS的使用方法:为了将一个名字映射为IP地址,应用程序调用一个叫解析器( resolver )的库过程,把名字作为参数传递给这个过程 (如:gethostbyname()就是一个解析器);解析器发送一个UDP分组给本地DNS服务器,它会负责查找该名字,然后将对应的IP地址返回给解析器;解析器返回结果给应用程序,然后应用程序即可开始工作了(封装,发送……);当一个解析器收到一个域名查询时,它将该查询传递给本地的一个域名服务器;如果待查询的域名落在该名字服务器的管辖范围内,它将返回权威资源记录;一个权威资源记录(authoritative record)是指来自于管理该记录的权威机构,因此总是正确的,它和缓存的记录不同,后者可能是过期的;如果被请求的域名是远程的,且本地没有关于它的信息,那么本地名字服务器向根域服务器发送一条查询此域的消息
- 域名解析的种类:主机向本地域名服务器,查询一般都是采用递归查询;本地域名服务器向根域名服务器,查询通常是采用迭代查询
- 优化方法:高速缓存—减少查询环节,提高效率;上例中,本域中的另一台主机如果查询同一个域名,则马上
可得到结果;上例中,本域中的另一台主机如果查询另一个域名,如Z.abc.com,则可直接发送到权威域名服务器得到权威记录;缺点:缓存中的内容不具有权威性 - 什么时候使用TCP?:UDP报文超过512Bytes,从(second)服务器的数据更新, 对首次请求响应,返回参数TC置位,再请求,建立TCP连接,将数据流分段发送;主、从 服务器间建立TCP连接进行批量数据流传输
7.4 电子邮件
- 电子邮件 (email 伊妹儿)电子邮件系统通常由两部分组成:用户代理(UA):让用户能够阅读和发送邮件,本地程序,提供命令行或图形界面,让用户和电子邮件系统交互;消息传输代理 (MTA):将消息从源端送到目标端,通常是系统守护进程,即运行在后台的进程,在系统中传递电子邮件
- Email 消息传输:消息传输系统专注于将消息从发信方转发给收信方,可以这样完成上述功能:建立一个从源机器到目标机器间的传输层连接,然后传输消息;SMTP – Simple Mail Transfer Protocol源机与目标机(SMTP守护进程在监听)的25端口建立TCP连接,如果消息不能被投递,则向消息的发送方返回一个错误报告(包含了不能投递消息的第一部分);这是一个简单的ASCII 协议
- SMTP 传输步骤:1 连接建立 在端口 25;2 数据交换 客户机(作为客户)等待服务器(作为服务器)首先开始通话,服务器首先发送一行文本,给出它自己的标识,并且告诉客户机是否已准备好接收邮件;如果服务器没有准备好,则客户机释放连接,以后再重试;如果服务器愿意接收电子邮件,则客户机申明发信人和收信人;如果服务器确实存在这样的收信人,则服务器指示客户可以发送了;客户发送消息,服务器回发确认;3 连接释放
- POP3 (Post Office Protocol Version 3):一个协议,允许用户和消息传输代理MTA联系,然后把邮件从ISP那里拷贝到用户
- IMAP (Internet Message Access Protocol),在 RFC2060 定义:IMAP 假设所有的电子邮件都永久地保存在服务器上的多个邮箱中;IMAP 提供了阅读消息或阅读部分消息的机制;IMAP 服务器在143端口监听;IMAP 也可以接收外发的邮件 (这点跟 POP3不同);IMAP 有更多的命令,更复杂
7.5 万维网 WWW
- WWW的组成部分:资源,web页面,Resource (html);统一资源定位器:URL;通信协议HTTP
- Web页面:由 URL (Uniform Resource Locators)标识 (i.e. http://www.abcd.com/products.html);协议:http;页面所在的机器的DNS 域名:www.abcd.com;包含web页面的文件的名字:products.html
- 当用户单击一个超级链接(URL)时:浏览器检查URL (读取浏览器的输入);浏览器向 DNS 服务器询问域名的IP地址;DNS 返回对应的 IP 地址;浏览器和Web服务器建立TCP 连接(在端口 80);浏览器发送请求,要求获取文件products.html;Web服务器返回被请求的文件;TCP 连接被释放;浏览器解释显示下载到本地的文件
- 有两种可能的扩展浏览器的方式:插件Plug-ins代码模块,运行在浏览器的内部;Helper applications独立的程序,浏览器只是把参数传入
- 典型的web 服务器的操作:接收来自客户的TCP连接;获取所需文件的名字;从本地磁盘上获取文件(静态页面);将文件返回给客户;释放TCP连接
- 客户的TCP连接中止于前端,所以应答也必须经过前端 (a);一种解决的方法是TCP移交,TCP端点被传递给处理节点 ,所以应答可以直接向客户端发送 (b)
- 代理服务器(proxy server):又称为万维网高速缓存(Web cache),它代表浏览器发出 HTTP 请求。万维网高速缓存把最近的一些请求和响应暂存在本地磁盘中。当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不需要按 URL 的地址再去因特网访问该资源
- Cookie:一个小于4kB的命名串,当客户请求时,web服务器除了应答外,附送一个cookie,存储在客户机磁盘;客户再访问同一个web服务器时,同时发送cookie;服务器辨识出该用户,并得到它关心的一些信息;方便的同时,是否侵犯了用户的隐私
7.6 其他应用
- 文件传输(FTP):一种可靠的面向连接的服务,采用TCP在支持FTP的系统间传输文件,它支持双向二进制文件和ASCII文件传输。
- TFTP:一种无连接的不可靠的服务,采用UDP在支持TFTP的系统间传输文件。
- 上载: 将文件从自己的计算机中拷贝到远程计算机上(upload)
- 下载: 将文件从远程计算机上拷贝到自己的计算机上。 (download)
- FTP 使用两条 TCP链接
- 远程登陆Telnet:不要求远地系统创建众多的服务器,只需为每个远程登陆用户建立一个进程,这个进程再通过创建子进程为远程登陆用户提供各种允许的服务。远程登陆的另外一个优点,它提供与本地登陆几乎完全相同的用户界面
- 本地用户在本地终端对远地系统进行远程登陆,该远程登陆的内部视图实际上是一个TCP连接(服务器端口:23);将本地终端上的键盘输入逐键传到远地机;将远地机输出送回本地终端
- Telnet的使用方法:视窗下的使用Cmd、telnet ip/DN;Unix下的使用Telnet address;使用专用软件Neterm、CSTelnet、SSH 为 Secure Shell,在22端口
- 多媒体: