互联网采用存储转发的分组交换技术和三层ISP结构
互联网按工作方式划分为边缘部分和核心部分:
协议是为进行网络中的数据交换建立的规则。计算机网络的各层和其协议的集合称为网络的体系结构。
五层的体系结构包括:应用层、运输层、网络层、数据链路层、物理层。运输层最重要的协议是TCP和UDP协议,网络层最重要的协议是IP协议。
计算机网络(简称网络)把许多计算机连接在一起。互连网把许多网络连接在一起,是网络的网络。
internet是互连网,通用名词,泛指网络。Internet是互联网,专用名词,特指全球最大的互连网。
互联网采用TCP/IP协议族作为通信规则,前身是美国的ARPANET。
计算机通信是计算机中的进程(即运行着的程序)之间的通信。网络的通信方式是客户-服务器方式和对等连接方式。
客户和服务器都是通信中所涉及的应用进程。客户是服务请求方,服务器是服务提供方。
计算机网络按作用范围分为广域网(WAN),城域网,局域网(LAN),个人区域网(PAN)
1.1计算机网络在信息时代中的作用
常见的网络有三大类:电信网络、有线电视网络、计算机网络。其中计算机网络是核心。
互联网即因特网,是Internet的译名(注意不是internet)
互联网是由数量极大的各种计算机网络互连起来的。
互联网的两个基本特点:连通性、共享
互联网+的含义:互联网+各个传统行业
1.2互联网概述
1.2.1网络的网络
计算机网络由多个结点和连接结点的链路组成。结点可以是计算机、集线器、交换机或路由器等。
网络之间可以通过路由器互连起来构成网络的网络,称为互连网。
网络把许多计算机连接在一起,互连网则把许多网络通过路由器连接在一起。与网络相连的计算机称为主机。
1.2.2互联网基础结构发展的三个阶段
internet是互连网,通用名词,泛指网络。互连网之间的通信协议可以任意选择,不一定是TCP/IP
Internet是互联网,专用名词,特指全球最大的互连网。互联网采用TCP/IP协议族作为通信规则,前身是美国的ARPANET。
第三阶段的互联网
现在的互联网是多层次ISP结构:分为主干ISP、地区ISP、本地ISP。
ISP即互联网服务提供商,中国电信、中国联通、中国移动都是ISP。
上网就是指接入到互联网。主机必须有IP地址才能上网。
ISP从互联网管理机构申请到很多IP地址,同时拥有通信线路及路由器等联网设备。
用户向ISP交纳费用获得所需IP地址的使用权,然后就可以通过该ISP接入互联网。
互联网由全球无数的ISP所共同拥有。
万维网(WWW)是基于互联网开发的一种信息共享服务,浏览网址一般使用的就是万维网,而邮件等就没有用到万维网。
1.2.3互联网的标准化工作
所有的互联网标准都以RFC文档的形式发表在互联网上。互联网上有很多RFC文档,但只有少部分是互联网标准
1.3互联网的组成
1.3.1互联网的边缘部分
主机又称端系统,个人电脑、摄像头、手机等都属于端系统。
边缘部分利用核心部分提供的服务进行通信,一般称为计算机之间通信。
计算机之间的通信实际上是计算机A上某个进程和计算机B上另一个进程之间的通信。
通信方式主要有两类:客户-服务器方式、对等方式(P2P)。
1.3.2互联网的核心部分
核心部分最重要的功能是分组交换,主要组件是路由器。
路由器是实现分组交换的关键构件,用来转发分组。
分组交换
要发送的整块数据称为一个报文。将报文分为多个数据段,每个数据段加上一个首部(包头)构成一个分组(包)。
分组交换采用存储转发技术。路由器收到分组后,先暂时存储,检查首部,查找转发表,然后按照首部中的目的地址,找到合适的接口转发给下一个路由器,这样一步步交付给最终的目的主机。
首部中主要包含着目的地址、源地址等控制信息。
分组是在互联网中传送的数据单元。
三种交换方式
1.5计算机网络的类别
1.5.1计算机网络的定义
计算机网络并非专门用来传送数据,还支持很多其他应用。
1.5.2几种不同类别的计算机网络
接入网
接入网AN是用来把用户接入到互联网的网络。
接入网既不属于核心部分,也不属于边缘部分,而是位于端系统到互联网中第一个路由器之间的一种网络。
宽带接入网就是一种接入网。
1.6计算机网络的性能
1.6.2计算机网络的性能指标
常用的7个性能指标:
速率
速率是计算机网络中最重要的性能指标。
速率是数据的传送速率,单位是bit/s,有时也写为bps。
1G速率实际上是1Gbit/s而不是1Gbyte/s。提到网络速率时,一般指的是额定速率或标称速率。
带宽
带宽有两种意义:
吞吐量
吞吐量受网络的带宽或额定速率的限制。
时延
网络中的时延由以下几个不同的部分组成:
总时延=发送时延+传播时延+处理时延+排队时延。
高速链路(高带宽链路)相比其他提高的是数据的发送速率,减小发送时延。光纤传输速率高即向光纤信道发送数据的速率高。
时延带宽积
时延带宽积=传播时延*带宽。
时延带宽积表示的是一个管道的体积,表示这个链路可容纳的比特,或者说同一时刻正在链路上传送的数据。
只有链路中充满了比特时,链路才得到充分的利用。
利用率
利用率有信道利用率和网络利用率两种:
信道利用率并非越大越好,因为根据排队论,当利用率增大时,信道引起的时延也会迅速增加。
D0为网络空闲时的时延,则网络当前时延D和利用率U之间的关系为:D=D0/(1-U)。
当利用率U达到0.5时,时延就要加倍。利用率接近1时,时延会趋于无穷。
1.6.2计算机网络的非性能特征
费用、质量、标准化、可靠性、可扩展性和可升级性、易于管理和维护
1.7计算机网络体系结构
计算机的体系结构是分层次的。
1.7.1计算机网络体系结构的形成
两个计算机之间通信要完的工作:
相互通信的计算机系统必须高度协调工作才可以完成通信。
OSI的七层协议的体系结构是法律上的国际标准。
应用最广泛的、事实上的国际标准是TCP/IP。互联网即采用的TCP/IP。
1.7.2协议与划分层次
网络协议(简称协议)是为进行网络中的数据交换而建立的规则、标准或约定。
网络协议规定了网络中交换的数据的格式和有关的同步问题。
协议主要由三个要素组成:
网络协议是分层的,分层的好处:
各层需要完成的工作包括一下的一种或多种:
计算机网络的各层及其协议的集合就是网络的体系结构。
1.7.3具有五层协议的体系结构
TCP/IP是个四层的体系结构,包含应用层、运输层、网际层和网络接口层。实质上TCP/IP只有上三层,最下面的网络接口层没什么内容。
这里以五层协议为例来学习,五层协议中的物理层和数据链路层对于TCP/IP中的网络接口层。
应用层
任务:通过应用进程间的交互来完成特定网络应用。
应用层协议定义的是应用进程间通信和交互的规则。进程即主机中正在运行的程序。
互联网中的应用层协议有域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等。
应用层交互的数据单元称为报文。
运输层
任务:负责向两台主机中进程之间的通信提供通用的数据传输服务。应用层利用该服务传输应用层报文。
运输层有复用和分用的功能。因为一台主机有多个进程,复用就是多个应用层进程可同时使用下面运输层的功能。
运输层主要使用两种协议:
网络层
任务:为分组交换网上的不同主机提供通信服务;选择合适的路由。
发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。
TCP/IP体系中,网络层使用IP协议,因此分组也叫IP数据报,或简称数据报,但注意这与用户数据报不同。
互联网使用无连接的网际协议IP。
无论哪一层的数据单元,都可以笼统地用“分组”来表示。
数据链路层
任务:将网络层交下来的IP数据报组装成帧,在两个相邻结点的链路上传送帧。
每一帧包括数据和必要的控制信息(包括同步信息、地址信息、差错控制等)。
物理层
物理层传输的单位是比特。
上图中为主机1的AP1进程向主机2的AP2进程间传送数据的过程。
第5层、第4层、第3层分别为数据加上了属于本层的控制信息,都位于首部。第2层的控制信息分为两部分加到了首部和尾部。
对等层次间的数据单位称为该层的协议数据单元。
在路由器中,分组上升到第3层,过程中每一层都根据控制信息进行必要的操作并将该控制信息剥去。在第三层根据首部中的目的地址查找路由器中的转发表,找出转发分组的接口,然后依次加上新的控制信息下降到第1层,将数据发送出去。
理解:上图可以发现网际层的控制信息用于整个网络,而链路层的控制信息仅用于两个节点之间。路由器只到第3层。
1.7.4实体、协议、服务和服务访问点
实体表示可发送或可接收信息的硬件或软件进程。
协议是控制两个对等实体间进行通信的规则的集合。
在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,也需要下一层提供的服务。
上层使用下层提供的服务必须通过与下层交换一些命令,即服务原语。
同一系统中相邻两层的实体交互的地方称为服务访问点,实际上就是一个逻辑接口。
协议必须把所有不利的条件都事先估计到,确保能应对所有异常情况。
1.7.5TCP/IP的体系结构
技术的发展不严格遵循分层概念,事实上现在某些应用程序可以直接使用IP层甚至网络接口层,如下图。
TCP/IP协议族中的多种协议如下所示:
问题
回答
第2章物理层
2.1物理层的基本概念
物理层的主要任务:确定与传输媒体的接口有关的一些特性:
数据在计算机内部一般是并行传输,但在通信线路上是串行传输,所以物理层还要完成传输方式的转换。
物理层协议很多,因为物理连接的方式很多,传输媒体的种类也很多。
2.2数据通信的基础知识
2.2.1数据通信系统的模型
一个数据通信系统可划分为源系统、传输系统、目的系统,或称为发送端、传输网络、接收端。
源系统包括源点和发送器。典型的发送器是调制器。
目的系统包括接收器和终点。典型的接收器是解调器。
通信的目的是传送消息,数据是运送消息的实体,信号是数据的电气或电磁的表现。
信号可分为模拟信号和数字信号。
2.2.2有关信道的几个基本概念
信道不等于电路,信道表示向某一方向传送信息的媒体,一条通信电路通常包含一条发送信道和一条接受信道。
通信方式
信息交互有以下三种基本方式:
调制
来自信源的信号成为基带信号,因为基带信号中包含较多低频成分,而许多信道不能传输低频分量和直流分量,所以需要对基带信号调制。
调制可分为两大类:
常用编码方式
不归零制:正电平代表1,负电平代表0。
归零制:正脉冲代表1,负脉冲代表0。
曼彻斯特编码:位周期中心的向上跳变代表0,向下跳变代表1。
差分曼彻斯特编码:每一位的中心都有跳变。位开始的边界有跳变代表0,没有代表1。
曼彻斯特码的频率比不归零制高,但有自同步能力,即可以从信号波形自身中提取信号时钟频率。
基本带通调制方法
2.2.3信道的极限容量
数字通信的优点:信号在信道上传输时必然会失真,但只要能识别出原有信号,就没有影响。
传输速率越高,或距离越远,或噪声越大,失真就越严重。
信道能通过的频率范围
信道中码元传输的速率有上限,超过上限会出现严重的码间串扰问题,接收端无法识别编码。
信道的频带越宽,能通过的高频分量越多,最大速率越高。
信噪比
信号的平均功率与噪声的平均功率之比,写作S/N,单位是分贝(dB)
信噪比=10log10(S/N)。
香农公式
信道的极限传输速率C=Wlog(2+S/N)。
香农公式表明带宽越大,信噪比越大,极限传输速率越高。还表明只要信息传输速率低于信道的极限速率,就一定可以实现无差错传输,但方法未知。
另一种提高传输速率的方法:通过编码让每个码元携带更多比特的信息。
2.3物理层下面的传输媒体
传输媒体分为导引型和非导引型两大类。
导引型中电磁波沿着固体媒体传播,非导引型中传输媒体就是自由空间,又称无线传输。
2.3.1导引型传输媒体
导引型传输媒体有架空明线,双绞线,同轴电缆,光纤等。
光纤的传输带宽远大于其他传输媒体的带宽。
2.3.2非导引型传输媒体
利用无线信道进行传输是运动中通信的唯一手段。
卫星通信的优点是通信距离远,缺点是传播时延高,保密性差。
2.4信道复用技术
信道复用:多个发送端使用同一条信道来传输信息。
发送端使用复用器将不同的信息合起来传输,接收端使用分用器将信息分开。
2.4.1频分复用、时分复用和统计时分复用
三种复用:
2.4.2波分复用
波分复用WDM就是光的频分复用。
一根光纤上可以复用几十路甚至更多的光载波信号。光信号传输一定距离后会衰减,因此需要使用光纤放大器放大后继续传输。
2.4.3码分复用
如对某一个用户,序列00011011表示比特1,11100100表示比特0。其他用户的码片序列必须与此用户的序列相互正交。
码分复用实际上是一种扩频通信。无线局域网中常用CDM。
2.5数字传输系统
数字通信相比模拟通信,在传输质量和经济上都更好。
光纤是长途干线最主要的传输媒体。
同步数字序列SDH和同步光纤网SONET是当前最主要的数字传输国际标准。简称SONET/SDH标准
2.6宽带接入技术
用户连接到互联网,要先连接到某个ISP,以便获得上网所需的IP地址。
宽带接入网是接入网的一种,即一种用来把用户接入到互联网的网络。
宽带接入可分为有线宽带接入和无线宽带接入。
2.6.1ADSL技术
因为用户一般都是下载,ADSL的下行带宽(从ISP到用户)远大于上行带宽,所以叫做非对称。
ADSL在用户线(铜线)的两端各安装一个ADSL解调器。采用基于频分复用的DMT调制技术,将4kHz以上的频带划分为许多子信道,其中25个子信道用于上行,249个子信道用于下行。
类似ADSL还有许多其他xDSL技术,速度更快,但在国内应用较少。
2.6.2光纤同轴混合网(HFC网)
光纤同轴混合网(HFC网)是基于有线电视网开发的一种宽带接入网。
为提高传输的可靠性和质量,HFC网将原有线电视网的同轴电缆主干部分改换为了光纤。
光纤从头端连接到光纤结点,在光纤结点处光信号转换为电信号,连接到一个光纤结点的典型用户数为500。
光纤节点与头端的典型距离为25km,到用户的距离不超过3km。
用户通过电缆调制解调器来使用HFC网,它比ADSL中的解调器复杂很多,因为要解决共享信道中的冲突问题。
使用HFC网的数据率大小不确定,它取决于这段电缆上有多少个用户正在传送数据,如果有很多人在用,每个人的速率会很慢。
2.6.3FTTx技术
光纤到户FTTH(FiberToTheHome)是把光纤一直铺设到用户家庭,在光纤进入用户家中后才把光信号转换为电信号,这样的上网速率最快。
现在信号在陆地上的长距离传输基本都是使用的光缆,在ADSL和HFC中长距离传输也是用的光缆。
多个用户通过光配线网共享一根光纤干线,光配线网使用波分复用,上行和下行使用不同的波长。
出光纤到户FTTH外,还有光纤到大楼FTTB,光纤到楼层FTTF等,一般运行商所说的光纤到户并非真正的FTTH。
第3章数据链路层
路由器转发分组时只涉及到下面三层。
3.1使用点对点信道的数据链路层
3.1.1数据链路和帧
数据链路既包含物理线路也包含必要的通信协议,将实现协议的软件和硬件加到链路上就构成了数据链路。
常用网络适配器(既包括硬件也包括软件)来实现这些协议,一般适配器包括了数据链路层和物理层两层的功能。
帧是点对点信道的数据链路层的协议数据单元。网络层的协议数据单元是IP数据报,又称分组。
数据链路层将网络层交下来的数据构成帧发送到链路上,以及把接收到的帧里的数据取出并上交给网络层。
点对点信道的数据链路层在通信时的主要步骤:
3.1.2三个基本问题
数据链路层的三个基本问题:封装成帧、透明传输、差错检验
封装成帧
给IP数据报加上首部和尾部就构成了数据链路层的帧,IP数据报成为帧的数据部分。
链路层协议规定了帧中数据部分的长度上限——最大传送单元(MTU)。
首部和尾部包括帧定界符(即确定帧的界限)和其他控制信息。
帧定界符包括开始符(SOH)和结束符(EOT),分别是一串8为二进制数字。
帧定界符的作用:确定帧的界限。当出现差错时可以根据帧定界符识别是否是一个完整的帧。
透明传输
透明传输是因为控制字符产生的。
透明传输即表示无论传送什么样的数据,都能按照原样无差错地通过数据链路层。
字节填充:因为存在帧定界符,如果传输的数据中出现了和SOH、EOT等控制字符一样的文本,就在文本前面插入一个转义字符(ESC),接受端收到数据后在发送给网络层之前删除这个插入的转义字符。如果转义字符也出现在数据中,就在它前面再插入一个转义字符。
差错检测
比特差错:传输时产生差错,0变成了1或1变成了0.
差错检验的方法:循环冗余检验CRC
循环冗余检验的原理:
在要传输的数据后加上n位的冗余码(成为帧检验序列FCS),如何得出冗余码:让数据乘以2^n(相当于在后面加了n个0),然后除以一个事先约定的n+1位的除数P,得出n位的余数R就作为冗余码加到数据后面。接收端将收到的每一个帧除以同样的除数P,若余数为0就表明没有差错,否则就是有差错,丢弃这个帧。
循环冗余检验使用硬件完成,速度很快。
循环冗余检验只能识别比特差错,无法识别帧丢失、帧重复、帧失序,因此不是可靠传输。
对于通信质量较差的无线传输链路,数据链路层协议使用帧编号、确认和重传机制。即接收方收到正确的帧就向发送方发送确认,如果发送方没有收到确认就表明出现差错,就进行重传直到收到对方的确认。
对于通信质量较好的有线传输链路,只进行CRC检验,不使用确认和重传机制,即不需要数据链路层向上提供可靠传输,而是由上层协议来改正差错。
本章的PPP协议和CSMA/CD协议都不是可靠传输的协议。
3.2点对点协议PPP
点对点协议PPP是目前点对点链路中应用最广泛的数据链路层协议。
3.2.1PPP协议的特点
PPP协议是用户和ISP通信时使用的数据链路层协议。
PPP协议应满足的需求
TCP/IP协议族中,可靠传输由TCP协议负责。PPP不负责纠错等。PPP只支持点对点的链路通信,且只支持全双工链路。
PPP协议的组成
PPP协议有三个组成部分:
3.2.2PPP协议的帧格式
各字段的含义
PPP的首部和尾部分别为4个字段和2个字段。
首部的第一个字段和尾部的第二个字段都是标志字段F,规定为0x7E,它标志着一个帧的开始或结束。两个连续的帧之间只需要一个F,如果连续出现两个标志字段,表示这是一个空帧,应该丢弃。
首部的第二个和第三个字段目前都没有实际含义。第四个字段是2字节的协议字段,它表明了信息部分的数据类型(可能是IP数据报也可能是其他类型的数据)。尾部的第一个字段是帧检验序列FCS。
字节填充
PPP使用异步传输时使用了字节填充,转义符为0x7D。
零比特填充
PPP协议用在SONET/SDH链路上时使用同步传输,此时采用零比特填充方法来实现透明传输。
零比特填充的方法:当信息字段中出现5个连续的1,立即填入一个0,这样信息字段中就不会出现6个连续的1(PPP的帧定界符中有6个连续的1)。
3.2.3PPP协议的工作状态
PPP链路从建立到释放的全过程:用户拨号接入ISP后,就建立了从用户到ISP的物理连接。这时用户向ISP发送一系列的链路控制协议LCP分组,以便建立LCP连接。然后网络控制协议NCP给新接入的用户电脑分配一个临时的IP地址。等用户通信完毕后,NCP释放网络层连接,收回分配的IP地址,然后LCP释放数据链路层连接,最后释放物理层连接。
PPP链路的状态变化:链路静止——链路建立——鉴别——网络层协议——链路打开——链路终止——链路静止。
可以看到,PPP协议不是纯粹的数据链路层协议,还包含了物理层和网络层的内容。
3.3使用广播信道的数据链路层
广播信道可以进行一对多的通信,局域网用的就是广播信道。
局域网可以按照拓扑结构进行分类。
3.3.1局域网的数据链路层
局域网的最主要特点:网络为一个单位所拥有,且地理范围和站点数目都有限。
局域网的优点:
以太网是局域网的一种,绝大多数局域网都是以太网。双绞线是局域网中的主流传输媒体。
实现共享信道有两种方法:
以太网应用的主要是随机接入。
由于历史原因以太网层被拆分为两个子层:逻辑链路控制LLC和媒体接入控制MAC。现在LLC基本已经消失了,主要是MAC协议。
适配器的作用
计算机与外界局域网的连接是通过适配器进行的,适配器以前又称网卡。
适配器和局域网之间的通信通过电缆或双绞线以串行传输方式进行的,而适配器与计算机之间的通信是通过I/O总线并行传输的,因此适配器的一个重要功能就是进行数据串行传输和并行传输的转换。
适配器实现的功能包含了数据链路层和物理层两个层次的功能。
适配器收到正确的帧后,使用中断来通知计算机,并把数据交付给协议栈中的网络层。当计算机要发送IP数据报时,就由协议栈把分组交给适配器,适配器将其组装成帧后发送到局域网。(封装成帧、透明传输、差错检错等功能都是由适配器完成的)
计算机的硬件地址存储在适配器中,而软件地址——IP地址存储在计算机中。
3.3.2CSMA/CD协议
局域网上的计算机常被称为工作站、站点等。
为了通信的简便,以太网采取了以下两种措施:
CSMA/CD协议的要点
在使用CSMA/CD协议时,不能同时发送和接收,因此使用CSMA/CD协议的以太网只能进行半双工通信(双向交替通信)。
发生碰撞是因为传播时延,A发送了数据但是还没传到B处,B就不知道有人发送了数据。
因为不知道是否会发生碰撞,所以以太网存在发送的不确定性。
如果发生碰撞,以太网使用截断二指数退避算法来确定碰撞后重传的时机。
以太网规定了争用期的时长,这就约束了以太网的地理范围不能太大,不然传播时延会超过争用期限制。
以太网规定最短帧长为64字节(一个争用期可以发送的字节数),如果争用期发生碰撞就会停止发送,因此信道上长度小于64字节的帧就是无效帧。
碰撞后除了立即停止发送数据外还要继续发送一个人为干扰信号,通知所有用户现在发生了碰撞。
CSMA/CD协议的要点归纳
3.3.3使用集线器的星形拓扑
现在的以太网采用星形拓扑,在星形中心使用可靠性非常高的集线器。每个站用两对双绞线,分别用于发送和接收。
集线器的特点:
3.3.4以太网的信道利用率
因为发生碰撞会浪费信道资源,所以以太网的信道利用率达不到100%。
减少端到端的传播时延、可以提高信道利用率,因此以太网的连线的长度不能太长,同时以太网的帧长不能太短。
3.3.5以太网的MAC层
MAC层的硬件地址
局域网中,硬件地址又叫MAC地址。
IEEE为局域网规定了一种6字节的全球地址,是局域网上的每一台计算机中固化在适配器中的地址。因此如果更换了新的适配器,硬件地址也就变了。
适配器上的标识符EUI-48就是计算机的硬件地址。
路由器通过适配器连接到局域网时,适配器上的硬件地址标志路由器的一个接口。如果路由器同时连到多个网络上,就需要多个适配器有多个硬件地址。
局域网中适配器收到的帧有三种:
适配器至少能够识别前两种帧。
以太网适配器有一种特殊的工作方式:混杂方式。混杂方式的适配器只要”听到“有帧再传输就悄悄接收下来。
混杂方式可以用来监视和分析以太网上的流量,黑客也常用混杂方式非法获取信息。
MAC层的帧格式
最常用的MAC帧格式是”以太网V2标准“,此外还有IEEE的802.3标准。
MAC帧的首部共有源地址字段、目的地址字段、用来标识上层使用什么协议的类型字段这3个字段,尾部有一个帧检验序列FCS。
MAC帧没有帧定界符也没有帧长度字段。因为它用的是曼彻斯特码,曼彻斯特码的码元中间有一个电压跳变。当发送方发完一个帧后就不发送码元了,这是接收方发现没有跳变了就知道帧结束了。
MAC帧在向下传送到物理层时要在帧前面插入8字节,包括一个前同步码和一个帧开始定界符。前同步码用来通知接收端调整时钟频率以与发送端的时钟同步。
MAC帧的最小长度是64字节,其中数据字段最小长度是46字节。如果不够就要进行填充。IP数据报的首部有一个”总长度“字段,网络层根据它来识别填充字段的长度并丢弃掉。
3.4扩展的以太网
有时会对以太网的范围进行扩展。这种扩展的以太网在网络层看来仍然是一个网络。
3.4.1在物理层扩展以太网
由于CSMA/CD协议的限制,以太网的主机之间距离不能太远。
可以使用光纤来扩展主机和集线器之间的距离,因为光纤的时延小带宽宽,所以可以很轻松地将主机和集线器的距离扩展到几千米。
可以将多个以太网通过主干集线器连接起来形成一个更大的以太网。
多个以太网通过连接进行扩展后的优点是可以实现不同以太网间的通信,且扩大了地理范围。缺点是碰撞域会增大,发送数据产生碰撞的概率增加。
3.4.2在数据链路层扩展以太网
扩展以太网更多的是在数据链路层扩展。
以太网通过以太网交换机(又称第二层交换机)来在数据链路层进行扩展。
以太网交换机的特点
以太网交换机实际上是一个多接口的网桥,每个接口直接与一台主机或另一个交换机相连,一般工作在全双工方式。
以太网交换机具有并行性,可以同时连接多对接口,使多对主机同时通信。相互通信的主机都独占传输媒体,无碰撞地传输数据。
以太网交换机是一种即插即用设备,它内部的帧交换表(又称地址表)是通过自学习算法自动地逐渐建立起来的。
以太网交换机的最大优点
交换机的最大优点:它的并行性。多对主机同时通信并不会平分总带宽,因为每对主机独占其传输媒体的带宽,所以每对主机的带宽还是原带宽。
传统的10Mbit/s的共享式以太网,如果有10个用户,则每个用户的平均带宽为1Mbit/s,而用以太网交换机来连接这些主机,10个用户的带宽都是10Mbit/s,相当于总带宽100Mbit/s。
以太网交换机的自学习功能
实现自学习的两个关键点:
从总线以太网到星形以太网
总线以太网使用CSMA/CD协议,以半双工方式工作。
而以太网交换机不使用共享总线,没有碰撞问题,因此不使用CSMA/CD协议,而是以全双工方式工作。
3.4.3虚拟局域网
使用以太网交换机可以方便地实现虚拟局域网VLAN。
虚拟局域网VLAN:它是由一些局域网网段构成的与物理位置无关的逻辑组,这些网段具有某些共同的需求。每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的计算机属于哪一个VLAN。
虚拟局域网是局域网给用户提供的一种服务,不是一种新型局域网。
下图中每一个VLAN的计算机可以处于不同的局域网中。
3.5高速以太网
现在的以太网的速率已经从传统的10Mbits/s发展到了1Gbit/s的吉比特以太网。
3.5.1100BASE-T以太网
100BASE-T是在双绞线上传送100Mbit/s基带信号的星形拓扑以太网,仍使用CSMA/CD协议,又称快速以太网。
100BASE-T可以使用以太网交换机,当使用以太网交换机时工作在全双工状态,且不使用CSMA/CD协议。
快速以太网使用的MAC帧格式仍然是IEEE802.3标准规定的帧格式。
3.5.2吉比特以太网
吉比特以太网有以下几个特点:
吉比特以太网在半双工时,采用了“载波延伸”方法,延长争用期与发送的MAC帧最小长度到512字节。这在发送短帧时需要进行大量填充造成了额外开销。
还增加了“分组突发”的功能,当很多短帧要发送时,第一个短帧采用载波延伸的方法进行填充,后面的则一个接一个地发送而不需填充。
3.5.310吉比特以太网和更快的以太网
10GE的帧格式与10Mbit/s,100Mbit/s和1Gbit/s的帧格式完全相同,最小帧长和最大帧长也相同。
10GE只工作在全双工方式,不使用CSMA/CD协议,这使它的传输距离极大地提高。
以太网技术发展很快,10GE后面又制定了40GE和100GE的标准,他们都只工作在全双工方式。传输距离可达几十千米。
现在以太网的工作范围已经扩大到城域网和广域网,它的优点是:
以太网的发展证明了以太网的优点:
3.5.4使用以太网进行宽带接入
现在也使用以太网进行宽带接入互联网。
以太网接入可以提供双向的宽带通信,且可以根据需要灵活地升级(如从10M到10G)。
但是以太网的帧格式中没有用户名字段和让用户键入密码来鉴别用户身份的过程。于是诞生了PPPoE(在以太网上运行PPP),它把PPP协议中的PPP帧封装到以太网中来传输。现在的光纤宽带接入FTTx都是用PPPoE。
第4章网络层
4.1网络层提供的两种服务
网络层提供的服务可以是”面向连接“的或是”无连接“的服务。
互联网采用的是无连接的方式,发送分组时不需要建立连接。
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。这样使造价降低,运行灵活。
4.2网际协议IP
这里的IP是IP协议的第4个版本,实际叫做IPv4。较新的还有IPv6。
与IP协议配套的还有三个协议:
4.2.1虚拟互连网络
不同网络的区别很大,因为没有一种单一的网络能够适应所有用户的需求。因此需要通过一些中间设备将网络连接起来。
根据所在层次,可以将中间设备分为以下四种:
在物理层使用转发器或在数据链路层使用网桥时,仅是把一个网络扩大了。从网络层看,这还是一个网络,不是网络互连。
网络互连是在网络层通过路由器实现的。
都使用IP协议的网络互连以后叫虚拟互连网络,含义是这些在物理层面不同的网络在网络层看起来好像是一个统一的网络,又叫IP网。
现在的互联网就是使用了IP协议和TCP协议。
4.2.2分类的IP地址
IP地址及其表示方法
整个互联网就是一个单一的、抽象的网络。
IP地址就是给互联网上每一台主机或路由器的每一个接口分配一个全世界唯一的32位的标识符。
IP地址的编址方法经历了三个阶段:
分类的IP地址就是讲IP地址划分为多个固定类,每一类地址由两个固定长度的字段组成。
IP地址={,},它既指明了主机接口,也指明了所在网络。
分类的IP地址分为以下5类:
分类是考虑到了不同网络间的差异性,有的网络主机很多,有的则很少。
现在广泛使用无分类IP地址进行路由选择,分类的地址已经成为历史。
IP地址是4字节共32位字符,平常电脑上显示的是每个字节按转化为10进制后的结果,称为点分十进制法。
IP地址有以下几个特点:
4.2.3IP地址与硬件地址
硬件地址(又称物理地址、MAC地址)是数据链路层和物理层使用的地址。MAC帧传送时使用的源地址和目的地址都属于硬件地址,放在MAC帧的首部。
IP地址是网络层和以上各层使用的地址,是一种逻辑地址。放在IP数据报的首部。
下面是三个局域网通过两个路由器连接在一起,主机H1要与主机H2通信。
路由器因为同时连在两个局域网上,所以有两个硬件地址。
注意:
4.2.4地址解析协议ARP
网络层用的是IP地址,但实际网络的链路上传送数据帧时还是要用硬件地址。当数据传到不同网络时,MAC帧中的硬件地址还会发生改变,主机或路由器怎么知道该在MAC帧的首部中填入什么硬件地址呢?
ARP协议的用途是从网络层使用的IP地址解析出数据链路层使用的硬件地址。
根据地址解析协议ARP,每台主机都有一个ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表。
当主机A向本局域网上的主机B发送IP数据报时有两种情况:
ARP解决的是同一个局域网上主机或路由器的IP地址到硬件地址的映射问题。它无法解析另一个局域网上主机的硬件地址,实际上也不用。
使用ARP的四种典型情况
总的来说,当发送方与接收方不在同一个网络时,要通过同时位于两个或更多个网络上的路由器来中转,而ARP协议则用于每个局域网内部的地址解析。
4.2.5IP数据报的格式
一个IP数据报的首部包括两部分,前一部分是固定长度,共20字节。后面是一些可选字段,长度可变。
IP数据报首部的固定部分的各字段
IP数据报首部的可变部分
长度可变,具有多种功能,但很少使用。IPv6已经把这部分做成固定长度的了。
4.2.6IP层转发分组的流程
路由器的路由表中不直接存储主机地址,而是存储目的网络的地址和对应下一跳的地址。
路由表中并没有指明完整的网络路径,仅指出要想到达某个网络,需要先到哪个路由器,即仅指出下一步该怎么走。这样一跳一跳直到最后到达目的网络。
分组转发算法如下:
4.3划分子网和构造超网
4.3.1划分子网
之前是两级IP地址,缺点很多。后在IP地址中又增加了一个子网号字段,将IP地址分为了三级。
划分子网是把IP地址的主机号再划分,未改变网络号。
子网掩码
划分子网后,IP数据报的首部无法体现是否进行了划分。需要使用子网掩码。
现在的互联网规定所有的网络都必须使用子网掩码,路由器的路由表中也必须有子网掩码这一栏。
路由器在和相邻路由器交换信息时,必须把自己所在子网的子网掩码告诉对方。
4.3.2使用子网时分组的转发
使用子网划分后,路由表中必须包含目的网络地址、子网掩码和下一跳地址三项内容。
此时的分组转发算法如下:
4.3.3无分类编址CIDR(构造超网)
无分类编址全名无分类域间路由选择CIDR。
CIDR有两个主要特点:
CIDR使用32位的地址掩码,地址掩码中1的个数对应的就是前缀的长度。前缀越短,其地址块包含的地址数越多。
使用CIDR可以更有效地分配地址空间。
最长前缀匹配
CIDR中,路由表的每个项目由网络前缀和下一跳地址组成,查找时可能得到不止一个匹配结果。这是从匹配结果中选择具有最长网络前缀的路由,因为它对应的地址块最小。
使用二叉线索从查找路由表
无分类编址的路由表通常存放在一个二叉线索树中。
下图的二叉线索树表示了一个有5个IP地址的路由表。树的每一层对应IP地址中的一位,树最多有32层。
给定一个IP地址,查找它是否在该项目表中,只需在二叉线索树中一层层对应向下寻找,若中间无法在二叉树中找到对应分支,表明这个地址不在这个二叉线索中。
4.4网际控制报文协议ICMP
网际控制报文协议ICMP用于更有效地转发IP数据报和提高交付成功的机会。
ICMP报文装在IP数据报中,作为其中的数据部分。
ICMP报文的首部共8个字节,具体如下图。
其中检验和字段用来检验整个ICMP报文。
4.4.1ICMP报文的种类
ICMP报文包括ICMP差错报告报文和ICMP询问报文两类,每类下细分为几种不同的类型。
表中给出了4种常用的ICMP差错报告报文:
另外2种常用的ICMP询问报文:
ICMP差错报告报文的数据字段是固定格式的:把收到的需要进行差错报告的IP数据报的首部和数据字段的前8个字节(为了得到运输层的端口号和运输层报文的发送序号)提取出来作为ICMP报文的数据部分。
4.4.2ICMP的应用举例
PING
ICMP的一个重要应用是进行分组网间探测PING(PacketInterNetGroper),以测试两台主机之间的连通性。
PING使用了ICMP回送请求和回送回答报文。它会连续发送4条回送请求报文。
PING是应用层直接使用ICMP的例子,未经过运输层。
使用方法:在Windows的Dos窗口中键入pinghostname即可测试本机与主机hostname之间的连通性,hostname应该是某个主机的IP地址或域名
pingwww.baidu.com;//测试与百度之间的连通性ping192.168.100.5;//测试与IP地址为192.168.100.5的之间的连通性
tracert
tracert可以用来跟踪一个分组从源点到终点的路径。
tracert从源主机向目的主机发送一连串的IP数据报。数据报中封装的是无法交付的UDP用户数据报。
使用方法:在Windows的Dos窗口中键入tracerthostname即可测试本机到主机hostname所经过的路由器。
4.5互联网的路由选择协议
4.5.1有关路由选择协议的几个基本概念
路由选择协议的核心是采用何种算法来获得路由表中的各项目。
路由选择算法可以分为静态路由选择策略和动态路由选择策略。
其中动态的可以较好地使用网络状态的变化,但实现起来较复杂,适用于大网络。互联网采用的主要是动态的、分层次的路由选择协议。
分层次的路由选择协议
互联网被划分为许多小的自治系统(AS),一个AS是在单一技术管理下的一组路由器,一个AS对另一个AS表现出的是一个单一的和一致的路由选择策略。目前互联网中,一个大的ISP就是一个AS。也可以进一步划分。
这样互联网就把路由选择协议分为了两类:
4.5.2内部网关协议RIP
RIP是一种分布式的基于距离向量的路由选择协议,最大优点是简单。
RIP协议要求每一个路由器都要维护从它自己到其他每一个目的网络的距离记录,距离的单位是跳数。RIP选择一条具有最少路由器的路径。
RIP允许一条路径最多有15个路由器,因此RIP只适用于小型互联网。
RIP和OSPF同为分布式路由选择协议,特点是每一个路由器都要不断地和其他路由器交换路由信息。
RIP的特点是:
路由器刚开始的路由表是空的,通过不断地和与它直接相连的路由器交换并更新信息,经过多次更新后,所有的路由表就都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址了。
路由表中最主要的信息就是到某个网络的最短距离和下一跳地址。
4.5.3内部网关协议OSPF
OSPF是分布式的链路状态协议,适用于大型互联网。OSPF只在链路状态发生变化时,才向本自治系统中的所有路由器用洪泛法发送与本路由器相邻的所有路由器的链路状态信息。
链路状态指明本路由器和哪些路由器相邻,以及该链路的度量(度量可表示费用、距离、时延、带宽等),所有的路由器最终都能建立一个全网的拓扑结构图。
4.5.4外部网关协议BGP
BGP是BGP-4的简写。BGP是不同AS的路由器之间交换路由信息的协议,是一种路径向量路由选择协议。BGP力求寻找一条能够到达目的网络(可达)且比较好的路由(不兜圈子),而非寻找最佳路由。
4.5.5路由器的构成
4.6IPv6
IPv4的地址已经耗尽。
IPv6目前尚未推出标准协议。
4.6.1IPv6的基本首部
IPv6将协议数据单元PDU称为分组,而非IP数据报。
IPv6的主要变化:
IPv6数据报分为基本首部和有效载荷。有效载荷中允许有0个或多个扩展首部。注意扩展首部不属于首部。
IPv6的首部包括:
4.6.2IPv6的地址
IPv6数据报的目的地址可以是以下三种之一:
IPv6地址有128位,采用冒号十六进制计法:每16位用16进制表示并用冒号隔开,因此共分为了8段,每段是一个不超过4位的16进制数。
4.6.3从IPv4向IPv6过渡
两种从IPv4向IPv6过渡的策略:双协议栈和隧道技术。
双协议栈
双协议栈即使一部分主机或路由器装有双协议栈:一个IPv4和一个IPv6,当它与IPv6主机通信时使用IPv6地址,与IPv4主机通信时使用IPv4地址。
双协议栈使用域名系统DNS来查询目的主机使用哪一种地址。
隧道技术
当源主机和目的主机都采用IPv6时,中间经过的网络有可能是IPv4网络。
在IPv6数据报要进入IPv4网络时,把IPv6数据报作为数据部分封装到IPv4数据报中,等离开IPv4网络后在把数据部分取出来。
4.6.4ICMPv6
ICMPv6是应用于IPv6的ICMP协议版本,比ICMPv4复杂很多,地址解析协议ARP和网际组管理协议IGMP的功能都合并到了ICMPv6中。
ICMPv6是面向报文的协议,利用报文来报告差错、获取信息。
4.7IP多播
4.7.1IP多播的基本概念
在一对多的通信中,多播可以比单播节省很多资源。
局域网具有硬件多播功能,所以不需要复制分组就能使所有的多播组成员收到分组。
IP多播所传送的分组需要使用多播IP地址。在传统的IP地址中的D类地址就是多播地址,每个D类地址可以标识一个多播组。
多台主机可以加入到一个多播组中共享一个多播地址。不同网络的主机可以加入到同一个多播组中。每一台主机可以随时加入或离开一个多播组。
能够运行多播协议的路由器为多播路由器。
多播地址只能用于目的地址,不能用于源地址。
IP多播有两种
4.7.2在局域网上进行硬件多播
多播IP地址与以太网硬件地址之间有映射关系,但不是一一对应的。收到多播数据报的主机需要在IP层进行过滤。
4.7.3网际组管理协议IGMP和多播路由选择协议
IGMP协议用于让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或退出了某个多播组。IGMP工作在单个本地局域网内部。
因为主机随时可能加入或退出某个多播组。并且发送多播数据报的主机可以位于多播组内,也可以不位于多播组内。所以IP多播很复杂。
IGMP协议的工作内容:
多播路由选择协议
多播路由选择协议有多种,尚未进行标准化。
多播路由选择协议在转发多播数据报时有以下三种方法:
目前的多播路由选择协议:
4.8虚拟专用网VPN和网络地址转换NAT
4.8.1虚拟专用网VPN
因为IP地址的紧缺。所以现在使用了一种“本地地址”。本地地址仅在本机构内部有效,不是全球唯一的地址,又称可重用地址。
本地地址只能用于一个机构的内部通信,不能和互联网行的主机通信。互联网中的所有路由器对目的地址是专用地址的数据报一律不转发。
IPv4标准指明了以下地址为专用地址,他们只能作为本地地址用于机构内部的通信:
采用专用地址的网络称为专用互联网或本地互联网。
有时一个机构的分布范围很广,就需要用公共的互联网作为本机构各专用网之间的通信载体,这样的称为虚拟专用网VPN。
VPN依然只用于机构内的通信,但是要经过公用的互联网,通过互联网传送的数据都要加密。这里使用了隧道技术。
VPN中每个不同的场所必须至少有一个合法的全球IP地址。
VPN代理就是依托VPN技术进行的。
4.8.2网络地址转换NAT
网络地址转换NAT用于实现专用网中的主机到互联网上的主机的通信。
它需要在专用网连接到互联网的路由器上安装NAT软件,这种路由器称为NAT路由器,NAT路由器至少有一个全球地址。
使用本地地址的主机和外界通信时要在NAT路由器上将本地地址转换为全球地址。
NAT路由器中有一个地址转换表,存储本地地址与转换后的全球地址的对应关系。
通过NAT路由器的通信必须由专用网内的主机发起,因此专用网内的主机不能作为服务器。
现在的NAT转换表把端口号也利用上了。这样NAT路由器只需要有一个全球地址,通过给具有不同本地地址的主机分配不同的端口号就可以实现内部多个主机与外界互联网的通信。
问题4.1~4.2
回答4.1~4.2
问题4.3~4.8
回答4.3~4.8
第5章运输层
5.1运输层协议概述
5.1.1进程之间的通信
网络层为主机之间提供通信,运输层为应用进程提供端到端的逻辑通信。
通信的真正端点是主机中的进程,即应用进程之间的通信是端到端的通信。
运输层的复用和分用
即发送方的不同进程通过不同的端口号使用同一个运输层协议,接收方的运输层则把收到的报文根据端口号分发给不同的进程。
5.1.2运输层的两个主要协议
运输层的两个主要协议是传输控制协议TCP和用户数据报协议UDP,他们都有复用和分用,和检错的功能。
UDP的特点:无连接、尽最大努力交付、面向报文、无拥塞控制、支持一对一、一对多、多对一、多对多,首部开销小。
TCP的特点:面向连接的、点对点通信、提供可靠传输、全双工通信、面向字节流。
UDP
接收方的主机收到UDP后不需要发出确认。
TCP
TCP传送数居前要建立连接,传送完成后要释放连接。
TCP不提供广播或多播服务。
因为TCP的功能较多,所以首部很长,且占用处理器资源。
5.1.3运输层的端口
运输层使用16位(即两字节)端口号来标志一个端口。端口号用来标志本计算机应用层中的不同进程。不同计算机间的端口没有关联。
这里的端口是软件端口,作为交互的地址使用,不同于路由器上的硬件端口。
端口号的分配
运输层的端口号分为服务器端使用的端口号和客户端使用的端口号。
服务器端的端口号包括0~49151,其中0~1023是熟知端口号(又称系统端口号),剩下的是登记端口号。
客户端使用的端口号包括49152~65535。这些端口号是给某个客户进程暂时使用的,通信结束后端口号就要恢复未分配状态。
5.2用户数据报协议UDP
5.2.1UDP概述
5.2.2UDP的首部格式
UDP的首部总共8个字节,只有四个字段:源端口、目的端口、长度、检验和。
如果接收方发现报文中的目的端口号不对,就丢弃报文,并使用ICMP发送“端口不可达”差错报文给发送方。ICMP的应用tracert就是使用了UDP报文。
因为UDP的通信之间是无连接的,所以虽然要用到端口号,但是不用套接字(TCP必须要在套接字之间建立连接)。
UDP的检验和用来检验整个UDP报文的差错。
UDP的差错检验方法是各个4字节段的反码求和,和作为检验和序列放入检验和字段。检验时对数据报各个4字节段反码求和,若每一位都是1则无错。
这种差错检验方法的检错能力不强,但是处理起来快。
5.3传输控制协议TCP概述
5.3.1TCP最主要的特点
TCP的报文长度是根据接收窗口和网络拥塞程度决定。如果应用进程一次往发送缓存中放了很长的数据,那TCP可能会把它划分为多个短的数据块发送,如果应用进程一次只发来一个字节,TCP也可以等积累足够多的字节后再把它们构成报文段发出去。
5.3.2TCP的连接
IP地址加上端口号称为套接字,套接字就是TCP连接的端点。
套接字不是应用进程,也不是端口。
套接字的格式:IP地址:端口号(如192.168.100.2:80)
每一条TCP连接唯一地被它地两个端点的套接字所确定。
5.4可靠传输的工作原理
5.4.1停止等待协议
停止等待协议用来在不可靠的传输网络上实现可靠通信。
原理:每发送完一个分组就停止发送,等待对方的确认,收到确认后再发送下一个分组。分组需要进行编号。
出现差错
如果发送方发送的数据在传输过程丢失了,或者到达了接收方但是报文内容出了差错,那么接收方都不会发送任何信息。这时发送方超时没有收到确认,就会进行重传。
这里要注意:
确认丢失和确认迟到
如果接收方发送给发送方的确认丢失或迟到了,那么发送方超时未收到确认,也会进行重传。而接收方收到重传的报文后,会丢弃这个重复的报文,并向发送方发送确认。发送方收到了重复的确认会直接丢弃。
若对方收到重复分组,就丢弃该分组,同时还要发送确认。接收方收到重复的确认后不做任何操作。
提高信道利用率
停止等待协议的信道利用率很低,为了提高效率,采用了流水线传输方式,这用到了连续ARQ协议和滑动窗口协议
流水线传输就是发送方可以连续发送多个分组,而不必每发完一个分组都要停下来等待对方的确认。
5.4.2连续ARQ协议
连续ARQ协议用来提高利用率,它规定:
由上可见,连续ARQ协议是在滑动窗口上实现的。滑动窗口协议是TCP协议的精髓。
5.5TCP报文段的首部格式
TCP传输的数据单元是报文段,一个TCP报文段分为首部和数据两部分。
TCP报文段首部的前20个字节是固定的,后面有4N个字节是按需增加的选项。
首部各字段的作用:
最大报文段长度MSS
最大报文段长度MSS是每一个TCP报文段中的数据字段的最大长度,而不是整个TCP报文段的最大长度。
MSS并不是一个标准固定值,而是可以由连接双方各自确定的值,且两个传送方向可以有不同的MSS值。MSS的值可能达到几千字节。
连接建立时,双方都把自己支持的MSS写入这个选项字段中,以后就按照这个值传送数据。
如果未填写这一选项,那么MSS的默认值是536字节长。
窗口扩大选项
TCP中窗口字段长度是16位,因此最大的窗口大小是64K字节。但是对于卫星网络,因为传播时延和带宽都很大,为了获得高吞吐率就需要更大的窗口。
5.6TCP可靠传输的实现
5.6.1以字节为单位的滑动窗口
滑动窗口是以字节为单位的,每个字节都有序号。
TCP使用滑动窗口机制。发送窗口里的序号表示允许发送的序号,发送窗口后沿的后面部分表示已发送且已收到了确认,发送窗口前沿的前面部分表示不允许发送。发送窗口的前沿会不断向前移动(也可能不动或后移),发送窗口的后沿可能不动(没有收到新的确认)也可能前移(收到了新的确认),不可能后移。
接收方会把接收窗口的值放到窗口字段中发给发送方,发送窗口的大小不能超过接收方传来的报文首部中的窗口字段值。
接收方发回的确认号是自己按序收到的数据的最高序号加1。
发送方会根据接收方发来的确认号和窗口字段来构造自己的发送窗口,确认号决定了发送窗口的后沿,窗口字段值和拥塞窗口共同决定发送窗口的大小。
发送窗口中的数据是可以直接连续发送出去的,所以发送窗口越大,可能获得的传输效率越高。
一个使用滑动窗口进行可靠传输的例子
A为发送方,B为接收方。
例子的开始时,A根据B发来的窗口值(20)和确认号(31)构建了自己的发送窗口,如上图所示。此时发送窗口内的数据都是允许发送但尚未发送的数据。
现在A发送了11个字节的数据(序号31-41),如下图所示。此时发送窗口内的数据包含已发送但未收到确认(P1~P2)的数据和允许发送但尚未发送的数据(P2~P3)两部分。
这时发送窗口的状态需要三个指针来描述:P1指向发送窗口的后沿,P2指向允许发送但尚未发送的第一个字节,P3指向发送窗口的前沿外即将进入发送窗口的字节。P2~P3之间的部分又称可用窗口。
然后B收到了序号为32,33的数据,但是没有收到序号为31的数据,因为B只对按序收到的数据中的最高序号进行确认,所以此时B发送给A的确认报文段中确认号仍为31。
接下来B收到了序号为31的数据,并把31~33的数据交付给应用进程,然后删除了这些数据。B的接收窗口也向前移动了3个序号,同时给A发送确认号为34的确认报文。
A收到确认号为33的报文后,也将发送窗口向前滑动了3个序号,此时发送窗口大小没变,但是可用窗口变大了。
接下来A继续把可用窗口中的数据发送完后,P2指针向前移动和P3重合,此时A的可用窗口已减小到0,要暂时停止发送,等待收到确认。
如果A超时未收到确认报文,就重传这部分数据,直到收到B的确认报文为止。
发送缓存
发送方维持一个发送缓存,其中存放
发送窗口是发送缓存的一部分。已被确认的的数据会被从发送缓存中删除,因此发送缓存和发送窗口的后沿是重合的。
应用进程向发送缓存写入数据时不能太快,否则填满发送缓冲后就没有存放数据的空间了。
实际发送/接收缓存和窗口中的字节数是非常大的。
接收缓存
接收方维持一个接收缓存,用来存放:
接收窗口是接收缓存的一部分。如果应用程序来不及读取收到的数据,接收缓存就会被填满,使接收窗口减小到0,反之接收窗口会增大,但最大不能超过接收缓存的大小。
TCP没有明确规定如何处理未按序到达的数据,但通常是先临时存放在接收窗口中,等字节流中缺少的字节到达后,再交付给上层的应用进程。
累积确认
TCP要求接收方必须有累积确认的功能,这样可以减小传输开销。
接收方可以在合适的时候发送确认,也可以在自己有数据要发送时把确认信息捎带上。
但是注意接收方不能过分推迟发送确认,以避免发送方产生不必要的重传。如果收到一连串具有最大长度的报文段,则必须每隔一个报文段就发送一个确认。
TCP的通信是全双工通信。通信中每一方都在发送和接收报文段,因此每一方都有自己的发送窗口和接收窗口。
TCP保留了一个历史RTT的加权平均结果RTTs。
RTTs的计算方式:新的RTTs=(1-a)*旧的RTTs+a*新的RTT。a建议取0.125。
RTTd是RTT的偏差的加权平均值:新的RTTd=(1-b)*旧的RTTd+b*|RTTs-新的RTT|。b建议取0.25。
具体实现
要解决当报文重传的特殊情况。
实现方式:报文段每重传一次,就把RTO增加一倍,当不重传了,就继续使用上述公式计算RTO。
5.6.3选择确认SACK
当报文未按序到达(到达的字节不连续,一段一段的),发送方需要重传收到的确认号之后的所有报文,而有些确认号之后的不连续的报文实际上已经到了,全部重传会浪费资源。选择确认用来解决这种情况。
首部的选项中可以有选择确认SACK字段。SACK使用两个字节块分别指明一个连续字段的开始位置和长度。最多可以指出4个连续字节块的边界情况。
SACK应用不多。
5.7TCP的流量控制
流量控制是为了让发送方的发送速率不要太快,要让接收方来得及接收。
5.7.1利用滑动窗口实现流量控制
流量控制是通过滑动窗口实现的。接收方会把接收窗口的大小放到给发送方的报文的窗口字段中。
发送方的发送窗口不能超过接收方给出的窗口字段的数值。
死锁
5.7.2TCP的传输效率
应用进程把数据传送到TCP的发送缓存后,剩下的发送任务就交给TCP来完成了。
Nagle算法
TCP的实现中广泛使用了Nagle算法:
Nagle算法用来避免发送方发送很小的报文段。
5.8TCP的拥塞控制
5.8.1拥塞控制的一般原理
拥塞就是当前对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能变坏。
概括而言拥塞的条件就是:对资源的需求>可用资源。
网络拥塞的成因往往十分复杂,并拥塞常常趋于恶化。比如因为网络拥塞有报文未能按时到达,那么发送方就会超时重传使更多的分组进入网络,加剧网络拥塞。
拥塞控制就是防止过多的数据注入到网络中,使网络中的路由器或链路不致过载。
TCP连接的端点只要迟迟收不到对方的确认信息,就猜想网络中某处可能出现了拥塞。
拥塞控制很复杂。网络拥塞的指标有:被丢弃的分组数,平均队列长度、超时重传的分组数、平均分组时延等。
5.8.2TCP的拥塞控制方法
TCP的拥塞控制采取了慢开始、拥塞避免、快重传、快恢复四种算法。
这种方法是基于窗口的拥塞控制。发送方维持一个拥塞窗口,并让自己的发送窗口等于拥塞窗口(实际上发送窗口取拥塞窗口和接收窗口中的较小者)。
控制拥塞窗口的原则是:只要网络中没有出现拥塞,就把拥塞窗口增大一些;但只要网络出现拥塞或可能出现了拥塞,就把拥塞窗口减小一些。
判断网络拥塞的依据是出现超时。当出现拥塞就使拥塞窗口减小,反之增大。
慢开始
初始拥塞窗口很小,然后由小到大逐渐增大发送窗口。
初始拥塞窗口一般不超过2-4个SMSS(发送方最大报文段)长度。每收到一个新的确认后,就增加一次拥塞窗口。
使用慢开始算法,每经过一个传输轮次,拥塞窗口cwnd就会加倍。
拥塞避免
拥塞避免算法是让拥塞窗口缓慢地增大,不像慢开始那样加倍增长。
当cwnd大于一个界限值时,就使用拥塞避免算法,小于时就使用慢开始算法。
当出现超时,拥塞窗口就恢复初始值重新进行慢开始,且界限值减半。
快重传
快重传要求当接收方收到报文段后立即发送确认。
当接收方收到的报文段出现丢失,它后面不论收到什么报文段,发回的确认号都是对失序之前的那个报文段的确认。
当发送方连续收到3个对同一报文段的重复确认(表明下一个报文段未收到),就立即重传下一个报文段,这样就可以避免超时。
这是为了避免出现超时,使发送方误判为网络拥塞。
快恢复
对于一般的超时,界限值减半,拥塞窗口直接置为初始值;对于快重传情况下,界限值减半,拥塞窗口设置为和界限值一样,以实现快恢复。
发送方的发送窗口实际设置为接收方窗口rwnd和拥塞窗口cwnd中较小的一个。
5.8.3主动队列管理AQM
在网络层,路由器可以通过采用主动队列管理AQM来减少网络拥塞的发生。
主动队列管理就是路由器采取的一种分组丢弃策略。
路由器的队列中的分组是先进先出,在队列满了之后到达的分组就直接丢弃。
主动队列管理就是在队列长度还未满时就丢弃后面的分组。但是具体丢弃策略尚未标准化。
5.9TCP的运输连接管理
TCP连接有三个阶段:连接建立、数据传送、连接释放。
主动发起TCP连接的应用进程是客户,另一方是服务器。
TCP的连接开始前客户和服务器都会创建一个传输控制块TCB,其中存储如TCP连接表、指向发送/接收缓存的指针、指向重传队列的指针等。连接释放后删除。
5.9.1TCP的连接建立
TCP的连接采用三次握手机制:服务器要确认客户的连接请求,客户要对服务器的确认进行确认。
连接请求报文和连接接受报文段都不能携带数据,但是都消耗一个序号。
第三个ACK报文段可以携带数据也可以不携带,若不携带则不消耗序号(即下一个报文序号和此报文序号相同)。
SYN-SENT表示同步已发送状态,SYN-RCVD表示同步收到状态,ESTABLISHED表示已连接状态。
TCP有如下规定:
三报文握手中的第二个报文,也就是服务器发给客户的SYN报文也可以拆分成两个报文段,一个确认报文段(ACK=1,ack=x+1)和一个同步报文段(SYN=1,seq=y),那样就是四报文握手了。
采用三报文握手是为了解决客户发送的连接请求报文中途滞留发生重传的情况。当发生重传情况,客户可能连续发送了两个连接请求,而服务器也会回复两个连接接受,此时发送端通过最后一个确认报文保证只建立一个连接。
如果不采用三报文握手,那么只要服务器发出确认,新的连接就建立了。
5.9.2TCP的连接释放
TCP的连接释放采用四次挥手机制。任何一方都可以在数据传送结束后发出连接释放的通知,等待对方确认后进入半关闭状态。当另一方也没有数据发送后,则发送连接释放通知,对方确认后完全关闭TCP连接。
上图中客户发起了连接释放报文(FIN=1),此时不再传送数据。但是服务器可能还要传送数据,因此在发送一个ACK报文后,如果有数据传送还要继续发送完。
当服务器发送完数据,就发送连接释放报文,接着客户端对此确认,服务器收到确认后彻底关闭连接。
TCP规定:FIN报文即使不携带数据,也要消耗一个序号。
四次挥手的详细流程
MSL含义是最长报文段寿命,RFC标注建议是2分钟,实际一般小于等于2分钟,因此TIME-WAIT的时长一般小于等于4分钟。
TIME-WAIT状态的意义
保活计时器
保活计时器:TCP还会设置一个保活计时器。如果客户发生故障,服务器不再收到客户发来地数据,可以通过保活计时器来避免服务器白白等待。
保活计时器的工作方式:服务器每收到一次客户的数据,就重新设置保活计时器,通常是2小时。如果2h每收到客户数据,服务器就发送一个探测报文段,之后每隔75s发送一次。如果连续发送10个探测报文后客户仍没有响应,服务器就认为客户端出了故障,关闭当前的TCP连接。
TIME_WAIT
5.9.3TCP的有限状态机
下面的状态机中虚线表示的是服务器进程的状态变迁,实线表示的是客户进程的状态变迁。
第6章应用层
应用层的协议多是基于客户-服务器方式。这里的客户和服务器都是应用进程。
应用层协议规定了应用进程通信时遵循的协议。
6.1域名系统DNS
6.1.1域名系统概述
域名系统DNS是互联网使用的命名系统,用来把便于识别的名字转换为IP地址。
DNS是一个联机分布数据库系统,采用客户-服务器方式。
DNS使大多数名字在本地进行解析,只有少量解析要在互联网上通信。
域名到IP地址的解析是由互联网上的许多域名服务器共同完成的。
域名到IP地址的解析过程:
6.1.2互联网的域名结构
互联网采用层次树状结构的命名方法,任何一台连接在互联网上的主机或路由器都有唯一一个域名。
如以下两个网站采用了不同的四级域名:
域名由标号序列组成,最右边的标号是顶级域名,往左依次降低。
域名中的标号只能由英文字母、数字和‘-’组成,不区分大小写字母。完整域名不超过255个字符。
各级域名由其上一级的域名管理机构管理,顶级域名由ICANN管理。
顶级域名TLD包括:
我国的二级域名分为两类:
6.1.3域名服务器
域名服务器分为根域名服务器、顶级域名服务器、权限域名服务器和本地域名服务器。
域名解析过程中主机向本地域名服务器的查询是递归查询。
本地域名服务器向根域名服务器的查询是迭代查询,即当根域名服务器无法完成解析时,就把下一步应该查询的域名服务器告诉本地域名服务器。
为提高查询效率,域名服务器中采用了高速缓存,存放最近查询过的域名信息。
6.2文件传送协议
6.2.1FTP概述
文件传送协议FTP使用TCP的可靠运输服务,为客户-服务器模式。
简单文件传送协议TFTP使用UDP协议。
FTP和TFTP都属于文件共享协议中的一大类:复制整个文件。特点是要存取一个文件,就必须先获得一个本地的文件副本。要修改文件,只能对文件副本进行修改,然后将修改后的文件副本传送回到原节点。
6.2.2FTP的基本工作原理
FTP主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
FTP的服务器进程
一个FTP服务器进程可以同时为多个客户进程提供服务。
FTP的服务器进程包括一个主进程和若干个从属进程:
服务器进程中的主进程和从属进程是并发执行的。
文件传输功能的实现
文件传输时,FTP的客户和服务器之间会建立两个并行的TCP连接:控制连接和数据连接,其中数据连接用于传输文件。因此FTP要使用两个端口号。
两个连接对应服务器端的两个从属进程:控制进程和数据传送进程。
FTP客户发送的传送请求通过控制连接发送给控制进程。然后控制进程创建数据传送进程和数据连接。
6.2.3简单文件传送协议TFTP
TFTP的主要优点是可用于UDP环境,代码简便。
TFTP采用了类似停止等待协议的重传机制。即发送后就等待确认,没有确认就重传。
6.3远程终端协议TELNET
远程终端协议TELNET采用客户服务器模型。能将客户端的操作传到服务器端,然后将服务器端的输出返回到客户端屏幕。
TELNET采用TCP协议。
TELNET的服务器进程
TELNET的服务器进程类似FTP,由主进程等待新的请求,并产生从属进程来处理每一个连接。
6.4万维网www
6.4.1万维网概述
万维网WWW是一个大规模的、联机式的信息储藏所。万维网的简称是Web。
超文本指的是包含指向其他文档的链接的文本,一个超文本由多个信息源链接组成。超文本仅包含文本信息,超媒体扩充为包含图形、声音、视频等。
万维网是一个分布式的超媒体系统。
Web的客户程序向互联网中的服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
页面就是在客户程序主窗口显示出的万维网窗口。
Web要处理的几个问题及解决方式:
6.4.2统一资源定位符URL
万维网使用统一资源定位符URL来标志万维网上的各种文档,每个文档有在互联网内唯一的URL。
URL相当于指向互联网上任何可访问对象的一个指针。
URL的一般形式:://:/
输入URL时协议和www都可以省略,浏览器会自动补上。
使用HTTP的URL
HTTP的默认端口号是80,通常都省略掉了。
主页可以是:
6.4.3超文本传送协议HTTP
HTTP是面向事务的应用层协议。事务指的是一系列的不可分割的信息交换(即这些信息交换是一个整体)。
万维网客户与服务器程序之间交互使用的协议是HTTP协议。万维网的客户就是浏览器
HTTP本身是无连接、无状态的,使用可靠传输的TCP协议。
HTTP连接的建立与释放
每个万维网网点都有一个服务器进程,它不断地监听TCP的端口80,当发现有浏览器向它发来TCP的连接建立请求并建立连接后,浏览器就会发出浏览某个页面的请求,服务器接着返回所请求的页面作为响应。最后TCP连接释放。
注意这个过程:首先建立TCP连接,且该连接的端口为80。客户会把HTTP请求报文作为TCP连接三次握手中的第三个报文的数据。然后服务器直接返回文档作为响应。
HTTP/1.1
HTTP/1.1协议的持续连接有两种工作方式:
代理服务器
代理服务器又称万维网高速缓存,它把最近的一些请求和响应暂存在本地磁盘中。当新请求与暂存的请求相同,就返回暂存的响应。
代理服务器可以在客户端或服务端工作,也可以在中间系统上工作。
比如某个校园网使用了代理服务器,当校园网中某个主机的浏览器请求服务时,先和代理服务器建立TCP连接并发出HTTP请求报文,如果代理服务器有所请求对象就返回这个对象,如果没有,代理服务器就代表用户与源点服务器建立连接并发送HTTP请求报文。
HTTP的报文结构
HTTP报文的每一个字段都是ASCII码串。
HTTP有请求报文和响应报文两类报文。
HTTP报文由三部分组成:
注意:HTTP报文中,请求行最后有一个CRLF,其他所有首部之间也都有一个CRLF,首部与实体主体之间有两个CRLF。
一个HTTP请求报文的例子:
GET/dir/index.htmHTTP/1.1//请求行,这里使用了相对URLHost:www.buaa.edu.cn//第一个首部行,给出了主机的域名Connection:close//告诉服务器发送完请求的文档后就可以释放连接。User-Agent:Mozilla/5.0//表明用户代理使用了火狐浏览器Accept-Launguage:cn//表明用户希望优先收到中文版本的文档//请求报文的最后还有一个空行
HTTP请求报文的一些方法
HTTP响应报文的5大类状态码:
在服务器上存放用户的信息
HTTP是无状态的。当有时想要保存一些信息,比如保存某网站的账号与密码,就需要采用Cookie技术。万维网站点可以使用Cookie来跟踪用户。
Cookie的工作原理:当用户A浏览某网站,该网站的服务器就为A产生一个唯一的识别码,并存储在数据库中,接着在给A的响应报文中添加一个字段名为Set-cookie,值为识别码的首部行,A收到此响应报文后把它存储在自己的Cookie文件中。这样服务器就能够知道用户A什么时候访问了哪些页面。当A之后再次访问时,服务器可以识别出A,这样就不需要用户A再次输入姓名,密码等。
6.4.4万维网的文档
万维网使用超文本标记语言HTML来显示各种万维网页面。
HTML文档是一种可以使用任何文本编辑器创建的ASCII码文件。
HTML文档一般以.html或.htm为后缀。
HTML规定了链接的设置方法。链接一般显示为蓝色字且加上下划线,链接的终点是其他页面。
当链接指向的是本计算机中的文件,就是本地链接。
其他语言
可扩展标记语言XML和HTML很相似。但从设计宗旨而言,XML用于传输数据,而HTML用于显示数据。
可扩展超文本标记语言XHTML是作为一种XML应用被重新定义的HTML,将逐步取代HTML。
层叠样式表CSS是一种样式表语言,用于为HTML文档定义布局。如规定在浏览器上显示的字体、颜色、边距等。
静态文档
万维网静态文档:文档创作完毕后就存放在万维网服务器中,在用户浏览过程中,内容不会变。
动态文档
动态文档:文档的内容是在浏览器访问万维网服务器时由应用程序动态创建的。每次访问用户看到的内容都是不一样的。
比如天气预报、股市行情等都要用动态文档。
动态文档和静态文档的差别主要在服务器一端。
通用网关接口CGI是一种标准,定义了动态文档如何创建。服务器端使用CGI程序来创建动态文档。
脚本指的是被另一个程序而非处理器来解释或执行的程序。JavaScript等就是脚本语言。
活动文档
活动文档:可以使浏览器屏幕连续更新。
当浏览器请求一个活动文档,服务器直接返回一段活动文档程序的副本,使该程序副本在浏览器端运行。活动文档程序可以与用户直接交互,并可以连续地改变屏幕的显示。
6.4.5万维网的信息检索系统
搜索引擎是在万维网中进行搜索的工具,可以分为全文搜索引擎(百度、谷歌等)和分类目录搜索引擎(搜狐、新浪等门户网站)两大类。
全文检索搜索引擎的工作原理:通过搜索软件(如爬虫程序)到各网站搜集信息,像蜘蛛爬行一样从一个网站连接到另一个网站,然后建立一个在线索引数据库。当用户查询时,就从已经建立的索引数据库中进行查询。
Google搜索技术的特点
Google的核心技术是PageRank,即网页排名。
将搜索结构根据重要性排名。关键字频率、是否知名网站等都会影响重要性。
6.5电子邮件
6.5.1电子邮件概述
电子邮件系统包括三个主要构件:用户代理、邮件服务器、邮件协议(包括邮件发送协议和邮件读取协议)。
用户代理就是电脑上的邮件客户端。
从用户代理把邮件发送到邮件服务器,以及邮件服务器之间的传送都要使用SMTP协议。用户代理从邮件服务器读取邮件时则使用POP3或IMAP协议。
发送邮件的过程
用户代理使用SMTP协议把邮件发给“发送方邮件服务器”,然后“发送方邮件服务器”与“接收方邮件服务器”建立TCP连接并把邮件发送过去,邮件不会在某个中间服务器落地。收件人收信时,使用POP3协议从“接收方邮件服务器”读取邮件。
6.5.2简单邮件传送协议SMTP
SMTP采用客户-服务器模式。
发件人的邮件会存在发送方邮件服务器的邮件缓存中,发送方邮件服务器(此时它是SMTP客户)定期扫描邮件缓存,如果有邮件就与接收方邮件服务器建立连接并发送过去。
SMTP的熟知端口是25。
SMTP发送的是明文,不利于保密;发送邮件不需要鉴别,方便了垃圾文件的泛滥。新出的扩展的SMTP即ESMTP对这些进行了改进。
6.5.3电子邮件的信息格式
略。
6.5.4邮件读取协议POP3和IMAP
常用的邮件读取协议有POP3和IMAP。
POP3
POP3采用客户-服务器模式,它非常简单、但功能有限。POP3的特点是只要用户从POP3服务器读取了邮件,服务器就把该邮件删除。
IMAP
IMAP的缺点是如果用户没有将邮件复制到自己计算机上,每次查阅邮件都必须上网。
6.5.5基于万维网的电子邮件
基于万维网的电子邮件即用户使用浏览器收发电子邮件,这种情况用户浏览器和邮件服务器之间的传送使用HTTP协议,邮件服务器之间的传送仍使用SMTP协议。
万维网电子邮件不需要在计算机中安装用户代理软件。
6.5.6通用互联网邮件扩充MIME
SMTP只能传送ASCII码,不能传送非英语文字,也不能传送可执行文件等。
通用互联网邮件扩充MIME对SMTP进行了扩充,它定义了传送非ASCII码的编码规则。
网络中传送的还是ASCII码,MIME采用一些编码方式来用ASCII码表示其他字符。
MIME指定了几百上千种可传送的文件类型,这些类型涵盖了常用的各种文件类型。
6.6动态主机配置协议DHCP
因为IP地址中包含了网络号,而计算机第一次使用前不知道它会连到哪个网络,所以无法在出厂前就设置好IP地址。
当计算机的IP地址发生变化,比如计算机到了一个新的网络中,就要使用动态主机配置协议DHCP来配置IP地址,通过DHCP可以实现即插即用联网,而不需要人工配置IP地址。
配置IP地址的方法
DHCP采用了客户-服务器模式。
需要配置IP地址的主机启动时就向DHCP服务器广播发送发现报文。DHCP收到后会给该计算机发送一个提供报文来提供分配的IP地址。
响应DHCP客户的DHCP服务器可能有多个,客户机会从中选择一个给其发送请求报文。
每个网络至少有一个DHCP中继代理(一般是一个路由器),用来做主机与DHCP服务器之间的中转。
DHCP服务器分配的地址有一个租用期限制。可能是几小时也可能是几年。当接近租用期了DHCP会请求更新租用期。
DHCP客户的熟知端口是68,DHCP服务器的熟知端口是67。
当一个手机从连接到一个新的wifi时,就要通过DHCP来获取新的IP地址。
6.7简单网络管理协议SNMP
6.7.1网络管理的基本概念
网络管理包括对硬件、软件和人力的使用、综合和协调。
在一个网络管理系统中会有一个管理者和许多被管设备。被管设备可能是主机、路由器、集线器等。
每个被管设备中都要运行一个网络管理代理程序。代理程序在管理程序的命令和控制下,在被管设备上采取本地的行动。
网络管理采用的协议就是SNMP协议。
SNMP协议
SNMP协议中,管理程序运行SNMP客户程序,代理程序运行SNMP服务器程序。被管对象上的SNMP服务器程序不停监听SNMP客户程序的请求和命令,一旦发现就执行对应动作。
网络管理有一个基本原理:要管理某个对象,就必然要给这个对象添加一些软件或硬件,但是这种添加的影响应该尽量小一些。SNMP最重要的思想是尽量简单。
简单网络管理协议SNMP包括三部分:
6.7.2管理信息结构SMI
SMI的功能有三个:
被管对象的命名
SMI规定所有的被管对象的名字都必须在一颗对象命名树上。即类似于URl的命名方式。
被管对象的数据类型
SMI把数据类型分为两大类:简单类型和结构化类型,简单类型有Interger32等,结构化类型有sequence(类似结构体)和sequenceof(类似数组)两种
SMI采用了抽象语法记法来定义数据类型。抽象语法只描述数据的结构形式,不考虑具体的编码格式,也不考虑数据结构在内存中如何存放。
编码方法
SMI使用基本编码规则BER来进行数据编码,BER指明了数据类型和值。它把所有的数据元素都组织为一个T-L-V三字段序列,T定义数据类型,L定义V字段的长度,V定义数据的值。
6.7.3管理信息库MIB
管理信息就是被管对象的集合。被管对象必须维持供管理程序读写的若干控制和状态信息,这些被管对象就构成了一个虚拟的信息存储器,称为管理信息库MIB。
只有MIB中的对象才是SNMP可以管理的。
6.7.4SNMP的协议数据单元和报文
实际上SNMP的操作只有两种基本的管理功能:
SNMP使用无连接的UDP。
SNMP实现管理功能的方式:
6.8应用进程跨越网络的通信
6.8.1系统调用和应用编程接口
系统调用接口是应用进程的控制权和操作系统的控制权进行转换的接口,又称为应用编程接口API。
API就是应用程序和操作系统之间的接口。
API和一般的函数调用很相似,应用程序调用API来将控制器传递给操作系统。
现在的TCP/IP协议软件是驻留在操作系统中的。套接字接口就是一种供应用程序使用TCP/IP服务的API,Windows系统就采用了套接字接口。
套接字是应用进程和运输层协议之间的接口,是应用进程为了获得网络通信服务而与操作系统进行交互时使用的一种机制。
理解:套接字实际上就是一套API接口,应用进程(应用层)通过套接字来使用位于操作系统内核的TCP/IP服务(运输层)。
套接字描述符
套接字描述符是套接字接口中的第一个参数。
套接字的数据结构
在机器中有一个套接字描述符表,其中存储了多个套接字描述符,每个进程对应一个套接字描述符,每个描述符有一个指针指向存放套接字的地址。
在套接字的数据结构中有很多参数要填写,如协议族(PF_INET表示TCP/IP协议族)、服务(SOCK_STREAM表示TCP服务)、本地和远地IP地址、本地和远地端口等。
6.8.2几种常用的系统调用
下面以使用TCP服务为例介绍了几种常用的系统调用
并发方式工作的服务的工作模式
一个服务器要能够同时处理多个连接,即以并发方式工作。
采用一个主服务器进程+多个从属服务器进程是并发方式工作的一种实现方法。
主服务器进程M用来不停地接受新的连接请求,M原本就有一个套接字,但是每收到一个新的请求就为它创建一个新的套接字,并把这个新的套接字的标识符返回给客户。然后它会创建一个新的从属服务器进程使用刚才创建的新的套接字来和客户建立连接。而主服务器进程M则使用原来的套接字继续接受下一个连接请求。
连接建立阶段
刚创建的套接字的端口号和IP地址都是空的,此时服务器端的应用进程要调用bind来指明套接字的本地端口号和本地iP地址。在客户端可以调用bind也可以不调用而由操作系统自动分配一个动态端口号。
服务器调用bind后,还要调用listen把套接字设置为被动模式,来随时接受用户的服务请求。UDP服务器采用无连接方式,所以不使用listen
然后服务器(主服务器进程)要调用accept,来完成给发出请求的远地客户分配从属服务器进程与新的套接字。
在客户端创建了套接字后,客户进程要调用connect来向服务器发出连接请求。在connect调用中,客户需指明远地服务器的IP地址和端口号。
数据传送阶段
客户和服务器都调用send来传送数据,调用recv来接收数据:
连接释放阶段
调用close来释放连接和撤销套接字。
6.9P2P应用
P2P应用采用了P2P体系结构:没有固定的服务器,绝大多数交互都使用对等方式。
目前P2P工作方式下的文件共享占据了互联网流量中最大的份额,比万维网所占比例大得多。
6.9.1具有集中目录服务器的P2P工作方式
第一代的P2P文件共享网站采用了这种方式。
这种方式下,所有用户机上文件的地址存放在一台服务器上,某个用户要下载资源时首先向该服务器询问资源地址,再从存储资源的计算机下载资源。
6.9.2具有全分布式结构的P2P文件共享程序
BT是一种很流行的P2P应用,采用“最稀有的优先”的技术,尽快把最稀有的文件块收集到。
BT中参与某个文件分发的所有对等方构成了一个“洪流”,每一个洪流都有一个“追踪器”,当有对等方加入洪流时,要向追踪器登记。
如果有当前以最高数据率向某个对等方传送文件块的相邻对等方,该对等方就要优先把所请求的文件块传送给这些相邻对等方。这样使对等方彼此都能以较高的速率交换文件块。
6.9.3P2P文件分发的分析
当对等方的数量很大时,采用P2P下载文件比传统的客户-服务器模型快很多。
6.9.4在P2P对等方中搜索对象
P2P中广泛使用的索引和查找技术是分布式散列表DHT,它实际上是一个分布式数据库。数据库中仅包含两部分信息:关键字是资源名,值是存放对象的节点的IP地址,只要给出资源名就能查到IP地址。但是数据库是分布式的,资源名保存在哪一台主机中呢?这就要用到基于DHT技术的算法。
Chord算法是一种基于DHT的算法,它采用了散列函数来将资源名映射为了一个均匀分布的数字(标识符),然后将其放到Chord环上。保存资源名的主机也通过散列函数映射为一个标识符放到Chord环上作为环上的结点(显然结点数目远少于资源名数目),然后每个资源名就保存到Chord环上离他最近的结点所对应的主机中。
第7章网络安全
7.1网络安全问题概述
7.1.1计算机网络面临的安全性威胁
计算机网络上的通信面临的威胁可以分为两大类:被动攻击(如截获)和主动攻击(如中断、篡改、伪造)。
7.1.2安全的计算机网络
安全的计算机网络应该达到:保密性、端点鉴别、信息的完整性、运行的安全性。
7.1.3数据加密模型
密码学包括密码编码学(设计密码体制)和密码分析学(破解密码)。
7.2两类密码体制
7.2.1对称密钥密码体制
对称密钥密码体制中加密密钥与解密密钥是相同的。这种加密的保密性仅取决于对密钥的保密,算法是公开的。
数据加密标准DES是一种对称密钥密码体制。初版的DES已经不安全,目前采用的是三重DES(3DES)。三重DES广泛用于网络、金融、信用卡等系统。
7.2.2公钥密码体制
公钥密码体制中加密密钥是公开的(公钥),解密密钥是保密的(私钥),加密和解密算法也是公开的。
私钥是某个用户私有的,对其他人都保密。
公钥密码体制相对于对称密钥体制的优点:
RSA体制(RSA公钥加密算法)是最著名的公钥密码体制,它采用了数论中的大数分解问题。
任何加密方法的安全性取决于密钥的长度和攻破密文所需的计算量,而非体制。
7.3数字签名
数字签名需要提供三点功能:
基于公钥密码体制数字签名功实现方法:发送者使用自己的私钥对一段报文进行加密,接收者使用该发送者的公钥来解密报文。
7.4鉴别
鉴别是要验证通信对方是自己要通信的对象。
7.4.1报文鉴别
报文鉴别用来鉴别报文的完整性,它采用了密码散列函数。
散列函数的两个特点:
密码学中的散列函数最重要的特点是:要找到两个不同的报文具有相同的散列值,在计算上是不可行的。也就是根据散列值来求报文的逆向变换是不可能的。
报文摘要MD5是进行报文鉴别的一种简单方法,但目前广泛使用的是安全散列算法SHA-2/3。
散列函数的使用方法:对报文计算出散列值,将散列值附加在报文后面,将附加了散列值的整个报文加密进行发送。接收方解密后重新对报文计算散列值,如果与收到的散列值相同就没问题。
7.4.2实体鉴别
报文鉴别对每一个收到的报文都要鉴别发送者,实体鉴别只需要在整个连接的过程中鉴别一次。这种不同带来了微妙的影响。
重放攻击
场景:A向B发送带有自己身份和口令的报文,并使用对称密钥加密。B收到报文后用对称密钥解密,鉴别A的身份。
但是C可能截获A发出的报文并转发给B,这样B就会误认为C是A,之后向C发送了许多本该发给A的报文。
不重数法
可以采用一个不重复使用的大随机数来解决重放攻击。A向B发送不重数(即不同会话使用不同的数),这样C截获后再向B发送,B发现收到的是重复的,就不会被骗了。
7.5密钥分配
密钥分配即密钥分发,是密钥管理中最大的问题,密钥必须通过最安全的通路进行分配。
7.5.1对称密钥的分配
目前常用的密钥分配方式是设立密钥分配中心KDC。
7.5.2公钥的分配
公钥也不可随意分配。比如C截获A发给B的报文(报文用A的私钥加密并附有A的公钥)再转发给B,B无法验证这个公钥是A的还是C的。
所以要将公钥与对应的实体进行绑定,由认证中心CA来完成此操作。
每个实体都有CA发来的证书,里面有公钥机器拥有者的标识信息,此证书被CA进行了数字签名。
任何用户都可以从可信的地方获得认证中心CA的公钥。
7.6互联网使用的安全协议
网络层、运输层、应用层都有相应的网络安全协议。
7.6.1网络层安全协议
网络层使用IPsec协议族。
VPN就是用了网络层安全协议。
IPsec没有规定用户必须使用哪种加密和鉴别算法,但它提供了一套加密算法。
IP安全数据报格式有两个协议:包括鉴别首部协议AH和封装安全有效载荷协议ESP。
使用AH或ESP协议的IP数据报叫做IP安全数据报(IPsec数据报)。
在IPv6中,AH和ESP都是扩展首部的一部分。AH协议都包含在ESP协议内部。
IPsec数据报的工作方式有两种:
无论哪种方式,IPsec数据报的首部都是不加密的(这样路由器才能识别首部中的信息),只有数据部分是经过加密的。
IPsec数据报的格式
7.6.2运输层安全协议
运输层的安全协议有安全套接字层SSL和运输层安全TLS。
SSL最新版本是SSL3.0,常用的浏览器和Web服务器都支持SSL,SSL也是TLS的基础。
SSL作用于端系统应用层的HTTP和运输层之间,在TCP之上建立起一个安全通道,为通过TCP传输的应用层提供安全保障。
TLS是在SSL3.0的基础上设计的。
未使用SSL时,应用层的数据通过TCP套接字与运输层交互,使用SSL后,中间又多了一个SSL子层。
SSL提供的安全服务可以归纳为三种:
SSL的工作过程
以浏览网站为例,用户点击链接建立TCP连接后,先进行浏览器和服务器间的握手协议,简要流程如下:
7.6.3应用层安全协议
PGP是一个完整的电子邮件安全软件包,包括加密、鉴别、电子签名、压缩等技术。PGP没有使用新概念,只是综合了现有的加密算法。
7.7系统安全:防火墙与入侵检测
防火墙和入侵检测系统IDS构成了系统防御的两层防线。
7.7.1防火墙
防火墙是一种特殊编程的路由器,安装在一个网点和网络的其余部分之间,目的是实施访问控制策略。
防火墙内的网络称为可信的网络。
防火墙技术包括以下两类:
7.7.2入侵检测系统
入侵检测系统IDS是在入侵开始后及时检测到入侵以便尽快阻止。
入侵检测系统分为两种:
7.8一些未来的发展方向
未来的发展方向:
第8章互联网上的音频视频服务
8.1概述
当提到在互联网上传送多媒体数据,一般都指“边传输,边播放”的特点。
多媒体信息有两个特点:信息量往往很大;对传输时延和时延抖动有较高要求。
多媒体信息构成的分组在发送时是等时的,但是到达接收端时就变成非等时的了,接收端会在缓存中的分组达到一定数量后,再以恒定速率按顺序将这些分组进行还原播放,这就产生了播放时延,但可以在很大程度上消除时延抖动。
传送时延敏感的数据时,宁可丢失少量分组,也不要接收太晚到达的分组。比如视频会议。
互联网上的音频/视频服务有三种:
8.2流式存储音频/视频
8.2.1具有元文件的万维网服务器
流媒体可以边下载边播放,但不能存储在硬盘上成为用户的文件。
8.2.2媒体服务器
媒体服务器又称流式服务器,可以更好地支持流式音频和视频的传送。
8.2.3实时流式协议RTSP
实时流式协议RTSP是为了给流式传送过程增加更多功能而设计的协议。RTSP本身不传送数据,它仅仅是使媒体播放器能够控制多媒体流的传送。
8.3交互式音频/视频
8.3.3实时运输协议RTP
RTP采用无连接的UDP协议。
实时运输协议RTP为实时应用提供端到端的运输,但不提供任何服务质量的保证。
可以把RTP看成是UDP之上的一个运输层子层的协议。它将应用交给它的多媒体数据块封装成RTP分组,然后装入运输层的UDP数据报。
8.3.4实时运输控制协议RTCP
实时运输控制协议RTCP是与RTP配合使用的协议。RTCP也采用UDP服务,但并不对音频/视频分组进行封装。
RTCP的主要功能是:服务质量的监视与反馈、媒体间的同步、多播组中成员的标志。
8.3.5H.323
信令是通信双方为建立呼叫连接和各种控制而传送的专门信息。
H.323不是一个单独的协议而是一组协议,涵盖了很多功能,很复杂。
H.323标准的4个构件是:H.323终端、网关、网闸、多点控制单元MCU。
8.3.6会话发起协议SIP
SIP使用文本方式的客户服务器协议。
SIP系统只有两种构件:用户代理(包括用户代理客户和用户代理服务器)和网络服务器(包括代理服务器和重定向服务器)。
8.4改进"尽最大努力交付"的服务
8.4.1使互联网提供服务质量
服务质量QoS是服务效能的总效果,它决定了一个用户对服务的满意程度。
要使互联网具有一定的服务质量,可以采取以下措施:
8.4.2调度和管制机制
8.4.3综合服务IntServ与资源预留协议RSVP
综合服务IntServ可以对单个的应用对话提供服务质量的保证,它定义了两类服务:有保证的服务、受控负载的服务。
IntServ有四个组成部分:资源预留协议RSVP、接纳控制、分类器、调度器
8.4.4区分服务DiffServ
区分服务DiffServ(简称DS)在路由器中增加区分服务的功能,在IP数据报中有一个区分服务字段,利用DS字段的不同数值提供不同等级的服务质量。
DiffServ将所有的复杂性放在DS域的边界结点中,而使DS域内的路由器工作尽可能简单。
第9章无线网络和移动网络
9.1无线局域网WLAN
无线局域网:WirelessLocalAreaNetwrok(WLAN)。
9.1.1无线局域网的组成
无线局域网可以分为两大类:
802.11
无线以太网的标准是802.11系列协议,使用802.11系列协议的局域网又称Wi-Fi。
理解:WLAN表示无线局域网,Wi-Fi表示采用802.11系列协议的局域网,因此Wi-Fi是一种局域网,且属于无线局域网。Wi-Fi实际上已经成了WLAN的代名词。
802.11无线以太网标准是用星形拓扑,其中心叫做接入点AP,在MAC层使用CSMA/CA协议和停止等待协议。
802.11规定无线局域网的最小构件是基本服务集BSS。一个BSS包括一个基站和若干个移动站,接入点AP就是BSS内的基站。
所有的站在本BSS以内都可以直接通信,与其他站通信则要通过接入点AP。
每个AP都有一个分配的名字,称为服务集标识符SSID,它其实就是使用该AP的无线局域网的名字(也就是wifi名字)。
理解:日常说的wifi路由器其实就是接入点AP,而接入点AP本身就是一种用于wifi的路由器。
一个BSS所覆盖的地理范围叫做一个基本服务区BSA,直径一般不超过100m。
一个BSS可以是孤立的,也可以通过接入点AP连到分配系统(DS)。
AP与AP之间的连接是有线的。
当一个移动站(如上图中的A)从一个服务集漫游到了其他服务集的范围,就要选择一个接入点AP与之建立关联,建立关联后加入该BSS。
移动站关联AP后,要通过该AP向该子网发送DHCP发现报文以获取IP地址。这之后,移动站就作为该AP子网的成员加入到了网络中
移动站(手机、平板电脑等)通常选择信号最强的AP来连接,但是一个AP提供的信道是有限的,如果已经耗尽了,就只能连接其他AP。
移动站与AP间通信采用的协议就是802.11协议。
现在的手机和电脑上都有内置的无线局域网适配器,它能够实现802.11的物理层和MAC层的功能。
现在的无线局域网一般采用了加密方案WPA或WPA2,这时要加入该无线局域网就要输入密码。
移动自组网络
无固定基础设施的无线局域网叫做移动自组网络。蓝牙就是一种自组网络。
移动自组网络没有基站,而是由一些处于平等状态的移动站相互通信组成的临时网络。
自组网络一般不和外界的其他网络相连接。
无线传感器网络WSN是一种近年来发展很快的移动自组网络。它由大量传感器结点通过无线通信技术构成。物联网IoT就是WSN的应用领域。
9.1.2802.11局域网的物理层
802.11无线以太网标准是用星形拓扑,其中心叫做接入点AP,接入点AP就是基本服务集内的基站。
wifi的历史版本
2020年6月正式发布的wifi6的标准是IEEE802.11ax,又称HEW(HighEffieciencyWLAN),wifi6标准支持1GHz到6GHz的所有ISM频段,包括6GHz和目前使用的2.4GHz和5GHz,向下兼容a/b/g/n/ac。包含多种带宽,其中最高带宽为160MHz,数据速率为单条流最高1201Mbit/s
第4代wifi是802.11n,第5代wifi是802.11ac
9.1.3802.11局域网的MAC层协议
区分CSMA/CA协议和CSMA/CD协议:
802.11无线以太网在MAC层使用CSMA/CA协议和停止等待协议。
使用停止等待协议是因为无线信道的通信质量远不如有限信道,要使用停止等待来保证可靠传输。
无线局域网中不能使用CSMA/CD协议,因为:无线局域网中不是所有的站点都能听见对方,因此无法实现碰撞检测。使用CSMA/CA协议是为了减小碰撞发生的概率。
它包括两个子层
802.11标准允许要发送数据的站对信道进行预约,即在发送数据帧之前先发送RTS帧请求发送,收到响应允许发送的CTS帧后,就可发送数据帧。
802.11采用了几种机制:
9.1.4802.11局域网的MAC帧
802.11的MAC帧有三种类型:控制帧、数据帧、管理帧。
MAC帧的首部有30字节,尾部是4字节的帧检验序列。
802.11数据帧的地址
802.11数据帧有4个地址字段。地址4用于自组网络。
前三个地址的内容取决于帧控制字段中的“去往AP”和“来自AP”。
9.2无线个人区域网WPAN
无线个人区域网WPAN就是把个人设备用无线技术连起来的自组网络。
WPAN都工作在2.4GHz频段。
无线个人区域网包括:蓝牙系统、ZigBee、超高速WPAN等。
9.3无线城域网WMAN
无线城域网WMAN可提供最后一英里的宽带无线接入,可以用来代替现在的有线宽带接入。
无线城域网的标准是802.16系列协议,它可以覆盖一个城市的部分区域。
9.4蜂窝移动通信网
9.4.1蜂窝无线通信技术简介
移动通信有多种,如蜂窝移动通信、卫星移动通信等。
蜂窝移动通信网原来属于通信领域,但是现在的蜂窝移动通信网采用了许多iP技术,可以支持手机、电脑上网。
蜂窝移动通信是小区制的移动通信,它把整个网络划分成许多小区(也就是蜂窝),每个小区设置一个基站。移动站的通信都必须通过基站完成。
3G的带宽为5MHz,并使用了IP的体系结构和混合的交换体制(电路交换和分组交换),3G以后的蜂窝移动通信就是以传输业务为主的通信系统了。
3G/4G时代诞生了上网卡,上网卡像一个U盘,可以插到电脑的USB接口上,然后电脑就可以通过3G/4G蜂窝移动网络接入互联网。
使用蜂窝移动通信是与同一个蜂窝小区的其他用户共享带宽的,每个用户实际分配到的带宽是不确定的。
小区的组成像蜂窝一样,每个基站的发射功能要能够覆盖本小区,又不会太大以至干扰邻近小区。采用蜂窝结构可以最大化频分复用,每个基站使用不同的频率。
3G通信网络的构件
RNC还连接到GPRS核心网络,当移动站要上网,就通过GPRS来进行。
RNC处于无线接入网的边缘,它进行无线通信和有线通信的转换。在有线通信这边,RNC把电路交换的话音通信传送到MSC,把分组交换的数据传送到GPRS。
9.4.2移动IP
概念
当计算机移动到外地,移动IP技术允许该计算机仍保留原来的IP地址。
移动iP与DHCP的区别:当用户带着电脑换了个位置,离开了原来的网络,通过DHCP协议就可以自动获取所需的IP地址。而移动IP用于在移动中上网
移动IP使用了一些新概念:永久地址、归属地址、归属网络、被访网络、归属代理、外地代理、转交地址、同址转交地址等。
移动IP使用了几种协议:移动站到外地代理的协议、外地代理到归属代理的登记协议、归属代理数据报封装协议、外地代理拆封协议等。
实现
一个移动站必须有一个原始地址,即归属地址(又称永久地址),移动站原始连接到的网络叫做归属网络。
移动IP通过使用代理来让地址的改变对互联网的其他部分是透明的。归属代理通常就是连接在归属网络上的路由器。
当移动站A移动到另一个地点,所接入的网络叫做外地网络(又叫被访网络),被访网络中中使用的代理叫外地代理,通常是连接在被访网络上的路由器。
外地代理负责两件事:
注意:转交地址供移动站、外地代理、归属代理使用,各种应用程序都不使用转交地址。转交地址也不具有唯一性,外地代理向移动站A发送数据时不使用地址解析协议ARP,而是用移动站A的MAC地址。