参考视频:https://www.bilibili.com/video/BV1c4411d7CQ
计算机网络已由一种通信基础设施发展成为一种重要的信息服务基础设施。
计算机网络已经成为像水、电这些基础设时一样,成为我们生活重不可或缺的一部分。
查看:http://www.cnnic.net.cn/
网络(Network)由若干结点(Node)和连接这些结点的链路(Link)组成。
多个网络还可以通过路由器互联起来,这样就构成了一个覆盖范围更大的网络,即互联网(或互联网)。因此 ,互联网是“网络的网络”(Network of Networks)。
因特网(Internet)是世界上最大的互联网络(用户数以万计,互联的网络数以百万计)。
区分:
internet:(互联网或互连网)这是一个通用名词,泛指由多个计算机网络互联而成的网络,网络之间的通信协议可以是任意的。
Internet:(因特网)是一个专有名词,指当前全球最大的、开放的、由众多网络相互连接而成的特定计算机网络,是采用TCP/IP协议族作为通信的规则,其前身是美国的APPNET。
因特网服务提供者ISP(Internet Service Provider)
ISP可以从新特网管理机构申请到成块的IP地址,同时拥有通信线路以及路由器等联网设备,任何机构和个人只要向ISP缴纳费用,就可以从ISP得到ip地址,这一点很重要,因为因特网上的主机都必须有ip地址才能进行通信,这样就可以通过ISP接入Internet
基于ISP的三层结构的因特网
边缘部分:由所有连接在因特网的主机组成,是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
核心部分:由大量网络和连接这些网络的路由器组成,这部分是为边缘服务提供服务的(提供连通性交换)。
电话交换机接通电话线的方式称为电路。
从通信资源的分配角度来看,交换就是按照某种方式动态的分配传输线路的资源。
在图中,每个电路交换都需要建立一条物理通路,每条连接都是不可抢占,一直存在的。
电路交换的步骤:
1、建立连接(分配通信资源)
2、通话(一直占用通信资源)
3、释放连接(归还通信资源)
在建立连接后不论通信资源有没有使用,都不会进行中断,除非用户中断。
当使用电路交换来传送计算机数据时,其线路的传输效率往往很低
把整块数据/信息分为多个数据段(相对于报文传输而言),数据段分开传输。在数据段前面加上首部后,成为一个分组。以分组为单位传输。各个分组交换机会把分组先存储下来,然后根据其头部信息的目的地地址,发送给下一个交换机。各个交换机进行对分组信息的储存转发后,最终到达主机H2。接收方去除分组首部,还原出原始报文。
在转发过程中有两个特点:
1、各分组从源站到达目的地可以走不同的路径。
2、分组到达目的站的顺序不定,可能出现顺序变化。
在分组传输中各个角色主要功能:
与分组交换类似,报文交换中的交换结点也采用 存储-转发方式,但报文交换对报文的大小没有限制,这就要求交换及结点要有较大的存储空间,需要注意的是,报文交换主要用于早期的电报通信网,现在较少使用,通常被先进的分组方式替换
公用网:指的是电信公司构建的大型网络,面对公众开放,只要交钱既可使用,又叫公众网。
专用网:指的是某个部门为本单位的特殊业务工作需要而建造的网络。例如铁路部门、电信部门专门为自己构建的,不对外开放的网络
有线网络:主要双绞线(日常使用网线)、光纤。
无线网络:主要是WIFI。
广域网WAN:覆盖面积通常为几十公里到几千公里,可以覆盖国家范围、洲际范围,有时也成为远程网。负责互连分布在不同区域的城域网和局域网,是最大范围的网络。
城域网MAN:覆盖范围一般是一个城市。作用距离为5到50公里。通常作为城市骨干网,互连大量企业、机构、学校。
局域网LAN:局域网一般是微信计算机或工作站通过告诉线路相连,范围一般是一个实验室、一栋楼或一个校园。通常由某个单位单独拥有、使用和维护。
个域网PAN:个人区域网络。非用来连接普通计算机,耳式在个人工作的地方把个人使用的电子设备,鼠标、键盘、耳机等用无线的方式连接起来形成的个人网络系统。
总线型网络:用单根传输线把计算机连接起来。
优点:建网容易,增减节点方便,节省线路。
缺点:重负载时通信效率不高,任意一处出现故障后全网瘫痪。
星型网络:是将每个计算机都以单独的线路与中央设备相连。中央设备现在一般是交换机。
优点:便于网络的集中控制和管理。
缺点:成本高,中央设备对故障敏感。
环形网络:是将所有计算机网络接口连接成一个环。环可以是单环或者双环,环中信号是单项传输的。
在网状结构中,每个节点至少由两条路径与其他节点相连接,多用在广域网中。
优点:可靠性高。
缺点:控制复杂,线路成本高。
在以上四种结构中可以组合任意的更加复杂有效的结构。
性能指标可以从不同的方面来度量计算机网络的性能。
常用的计算机网络的性能指标有以下8个:
速率
带宽
吞吐量
时延
时延带宽积
往返时间
利用率
丢包率
能够占领市场的就是标准
TCP/IP体系结构相当于: 将OSI结构的物理层和数据链路层合并成为网络接口层,去掉了会话层和表示层。
TCP/IP协议为了将不同的网络接口互联,因此网络接口层并没有规定什么内容
所以了为了便于计算机网络的原理学习,将体系结构划分成了5层
解决以上问题后就可以实现01信号在计算机之间的传输。
解决此问题后可以实现分组在一个网络上传输。
解决此问题后可以实现分组在网络间传输。
解决此问题后可以实现进程之间基于网络的通信。
解决此问题后可以实现计算机网络所解决的所有问题。
应用层:按照http请求的协议,构建报文。
**运输层:**给http请求加上一个首部,使其成为一个TCP报文段。其首部的作用是区分应用进程和实现可靠传输。
网络层:给TCP报文段加上一个IP首部,使其成为IP数据报。其首部作用是为了使该数据报可以在互联网上传输(被路由器转发)。
数据链路层:给IP数据报添加一个首部和一个尾部,使其成为帧(按帧传输)。其首部的作用是使其能够在一段链路或者网络上传输,能够被相应的目的主机接收。其尾部的作用是为了让目的主机检查是否有误码。
物理层:将帧看作是比特流(01编码),由于是在以太网传输,因而给其加上前导码,便于传输。并且将其变成相应的信号发送到传输媒体。
接收端的过程就是发送端的逆过程
服务访问点 在同一系统中相邻两层的实体交换信息的逻辑接口,用于区分不同的服务类型。
服务原语 上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令称为服务原语。
协议数据单元PDU 对等层次之间传送的数据包称为该层的协议数据单元。
服务数据单元SDU 同一系统内,层与层之间交换的数据包称为服务数据单元。
多个SDU可以合成一个PDU;一个SDU也可以划分为几个PDU
在导引型传输媒体中,电磁波被导引沿着固体传播媒体传播。
模拟传输,主要用于有线电视
同轴电缆价格较贵且布线不投灵活和方便,随着集线器的出现,在局域网领域基本上都是采用双绞线作为传输媒体。
双绞线是最古老又常用的传输媒体。也就是生活中最常见的网线。
绞合的作用:
每一根光纤是非常细的,因此需要将他做成很结实的光缆,一根光缆少则只有一根光纤,多则可能有数十根甚至数百跟光纤。 光纤的芯非常细。
光纤的优点:
光纤的缺点:
光在光纤中传输的原理
常见的非导引型传输媒体
无线电波用于国际广播、海事和航空通讯等。
利用红外线传输数据,例如电视遥控等。
点对点无线传输。
直线传输,中间不能有障碍物,传输距离短,传输速率低。
LIFI,可以实现使用可见光通信,但是目前还在实验室阶段。
编码:在不改变信号性质的情况下仅对数字基带信号的波形进行变换
调制:把数据基带信号的频率范围,搬移到较高的频段,并转换为模拟信号
常用编码
基本调制方法
调幅: 对基带信号的波幅进行调整,例如将上图的1信号波幅进行改变,在接收方读取时有载波输出为1.
调频: 对基带信号频率进行调整,例如将0信号调制为频率f1,1信号调制为频率f2。
**调相: **对基带信号相位进行调制,例如将0信号的初相位调整为0度,1信号的初相位调整为180度。
使用基本调制方法,1个码元只能包含1个比特信息。
如何能使1个码元包含更多比特信息?
混合调制
因为频率和相位是相关的,即频率是相位岁时间的变化率。所以一次只能调制频率和相位两个中的一个。
通常情况下,相位和振幅可以结合起来一起调制,称为正交振幅调制QAM。
QAM-16
链路:就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。
数据链路:是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路
数据链路层已帧为单位传输和处理数据
使用点对点信道的数据链路层的三个重要问题
封装成帧是把网络层交付的协议数据单元,添加帧头和帧尾的操作,称为封装成帧,主要目的是为了在链路上以帧为单元传输数据,从而实现数据链路层本身的功能。
在传输过程中可能会产生比特差错
发送方会基于发送的数据和检错算法计算出检错码,并放在帧尾。
接收方主机根据帧尾中的检错码和检错算法来判断帧中是否有误码。
尽管误码是不能完全避免的,但若能实现发送方发送什么,接收方就能收到什么,就称为可靠传输。
使用广播信道的数据链路层
以太网V2的MAC帧,在其帧头就有目的地地址和发送主机源地址。
数据链路层的互连设备
随着技术的发展,交换技术的成熟,在有线(局域网)领域 使用点对点链路和链路层交换机的交换式局域网取代了共享式局域网
在无线局域网中仍然使用的是共享信道技术
封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。
透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。
为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大些。
考虑到 差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTU(Maximum Transfer Unit)
实际的通信链路都不是理想的,比特在传输过沉重可能会产生差错:1可能会变成0,而0也可能变成1。这称为比特差错。
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)。
在使用差错检测码来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一。
奇偶校验
循环冗余校验
检错码只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。
要想纠正传输中的差错,可以使用冗余信息更多的纠错码进行前向纠错。但纠错码的开销比较大,在计算机网络中较少使用。
循环冗余校验CRC有很好的检错能力(漏检率非常低),虽然计算比较复杂,但非常易于用硬件实现,因此被广泛应用于数据链路层。
在计算机网络中通常采用我们后续课程中将要讨论的检错重传方式来纠正传输中的差错,或者仅仅是丢弃检测到差错的帧,这取决于数据链路层向其上传提供的是可靠传输服务还是不可靠传输服务。
使用差错检测技术(例如循环冗余校验CRC),接收方的数据链路层就可检测出帧在传输过程中是否产生了误码(比特错误)。
数据链路层向上层提供的服务类型
一般情况下, 有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。
无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务。
比特差错只是传输差错中的一种。
从整体计算机网络体系结构来看,传输差错还包括分组丢失、分组失序以及分组重复。
可靠传输服务并不仅局限于数据链路层,其他各层可选择实现可靠传输。
可靠传输的实现比较复杂,开销也比较大,是否使用可靠传输取决于应用需求。
停止-等待协议SW(Stop-and-Wait)
注意事项
接收端检测到数据分组有误码时,将其丢弃并等待发送方的超时重传。但对于误码率较高的点对点链路,为使发送方尽早重传,也可给发送方发送NAK分组。
为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的停等性,只需1个比特编号就够了,即编号0和1。
为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号,所用比特数量与数据分组编号所用比特数量一样。数据链路层一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号。
超时计时器设置的重传时间应仔细选择。一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”。
回退N帧协议在流水线传输的基础上利用发送窗口来限制发送方连续发送数据分组的数量,是一种连续ARQ协议。
在协议的工作过程中发送窗口和接口窗口不断向前滑动,因此这类协议又称为滑动窗口协议。
由于回退N帧协议的特性,当通信线路质量不好时,其信道利用率并不比停止-等待协议高。
回退N帧协议的缺点:
为了进一步提供性能,可设法只重传出现误码的数据分组。因此,接收窗口的尺寸WR不应再等于1(而应大于1),以便接收方先收下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交上层。这就是选择重传协议。
点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议
PPP协议是因特网工程任务组IEIF在1992年制定的。经过1993年和1994年的修订,现在的PPP协议已成为因特网的正式标准[RFC1661,RFC1662]
PPP协议为在点对点链路传输各种协议数据报中提供了一个标准办法,主要由三部分组成:
共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control)。
随着技术大发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全取代了共性式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术。
信道复用
频分复用FDM
接收端通过相应的分用其通过滤波将各路信号分开。将合成的服用信号恢复成原始的多路信号。
分复用TDM
波分复用(WDM)
波分复用就是光的频分复用。
光信号传输一段距离后会衰减,所以要用掺铒光纤放大器放大光信号
码分复用(CDM):
码分复用CDM是另一种共享信道的方法。实际上,由于该技术主要用于多址接入,人们更常用的名词时码分多址CDMA(Code Division Multiple Access)
同理,频分复用FDM和时分复用TMD都可用于多址接入,相应的名词是频分多址FDMA(Frequency Division Multiple Access)和时分多址TMDA(Time Division Multiple Access)
复用与多址:
与FDM和TDM不同,CMD的每一个用户可以在同样的时间使用同样的频带进行通信。
由于个用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。
CMD最初是用于军事通信的,因此这种系统发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易于被敌人发现。
随着技术的进步,CDMA设备的价格和体积都大幅度下降,因而现在已广泛用于民用的移动通信中。
计算机网络码分多址CDMA及计算例题(简单易懂)
当多个主机连接再同一个广播信道上,想要实现两个主机之间的通信,则每个主机必须有一个唯一的标识,即一个数据链路层地址;
在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制MAC(Medium Access Contr),因此这类地址被称为MAC地址。
MAC地址一般被固化在网卡中(网络适配器)的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址;
MAC地址有时也被称为物理地址。但这并不意味着MAC地址属于网络体系结构中的物理层!
一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网路接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口个唯一标识,而不是对网络上各设备的唯一标识。
在ieee官网中,可以根据MAC地址查询到地址的相关信息,例如厂商,生产地址等等。
对于使用EUI-48空间的应用程序,IEEE的目标寿命为100年(直到2080年),但是鼓励采用EUI-64作为替代。
IP地址是因特网(Internet)上的主机和路由器所使用的地址,用于标识两部分信息:
很显然,之前介绍的MAC地址不具备区分 不同网络的功能
地址解析协议ARP,可以实现由IP地址寻求到MAC地址
ARP高速缓存表中每条记录都有其类型:
由于ARP协议的适用是逐段链路进行的,因此ARP协议只能在一段链路或一个网络上使用,而不能跨网络使用。
以太网交换机自学习和转发帧的流程:
帧交换表中的每条记录都有自己的有效时间,到期删除。原因如下:
如何提高以太网的可靠性?
以太网交换机使用生成树协议STP(Spanning Tree Protocol),可以在增加冗余链路来提高网络可靠性的同时又避免网络环路带来的各种问题。
以太网交换机工作在数据链路层(也包括物理层)
使用一个或多个以太网交换机互联起来的交换式以太网, 其所有站点都属于同一个广播域。
随着交换式以太网规模的扩大,广播域相应扩大。
巨大的广播域会带来很多弊端:
网络中会频繁出现广播信息
TCP/IP协议栈中的很多协议都会使用广播:
- 地址解析协议ARP(已知IP地址,找出其相应的MAC地址)
- 路由信息协议PIP(一种小型的内部路由协议)
- 动态主机配置协议DHCP(用于自动配置IP协议)
NetBEUI:Windows下使用的广播型协议
IPX/SPX:Novell网络的协议栈
Apple Talk:Apple公司的网络协议栈
分割广播域的方法
使用路由器可以隔离广播域
路由器的成本较高
虚拟局域网VLAN(Virtual Local Area Network)是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求。
IEEE 802.1Q帧
交换机的端口类型
网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。
要实现网络层任务,需要解决一下主要问题:
因特网(Internet)是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈。
由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层。
综上所述,我们通过学习TCP/IP协议栈的网际层来学习网络层的理论知识和实践技术。
面向连接的虚电路服务
可靠通信由网络来保证
必须建立网络层的连接——虚电路VC(Virtual Circuit)
通信双方沿着已建立的虚电路发送分组
目的主机的地址仅在连接建立阶段使用,之后每个分组的首部只需携带一条虚电路的编号(构成虚电路的每一段链路都有一个虚电路编号)。
这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组最终正确到达接收方(无差错按序到达、不丢失、不重复)。
通信结束后,需要释放之前所建立的虚电路。
很多广域分组交换网都是用面向连接诶的虚电路服务。例如,曾经的X.25和逐渐过时的帧中继FR、异步传输模式ATM等。
无连接的数据报服务
在TCP/IP体系中,IP地址是一个最基本的概念,也是网络层最重要的概念之一。
IPv4地址就是给因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符。
IP地址由因特网名字和数字分配机构ICANN(Internet Corporation for Assigned Names and Numbers)进行分配。
32比特的IPv4地址不方便阅读、记录以及输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用。
为新增网络申请新的网络号会带来一下弊端:
从主机号部分借用一部分作为子网号
32比特的子网掩码可以表名分类IP地址的主机号部分被借用了几个比特作为子网号
划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其他地址空间太小并没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁。
为此,因特网工程任务组IETF又提出了采用无分类编址的方法来解决IP地址紧张的问题,同时还专门成立IPv6工作组负责研究新版本IP以彻底解决IP地址耗尽问题。
1993年,IETF发布了无分类域间路由选择CIDR(Classless Inter-Domain Routing)的RFC文档:RFC1517~1519和1520.
CIDR使用“斜线记法”,或称CIDR记法。即在IPv4地址后面加上斜线“/”,在斜线后面写上网络前缀所占的比特数量。
CIDR实际上是将网络前缀都相同的连续的IP地址组成一个“CIDR地址块”。
我们只要知道CIDR地址块中任何一个地址,就可以知道该地址块的全部细节:
路由聚合(构造超网)
定长的子网掩码FLASM (Fixed Length Subnet Mask)
子网划分方式不灵活:只能划分出2ⁿ个子网(n是从主机号部分借用的用来作为子网号的比特数量)
变长的子网掩码VLSM (Variable Length Subnet Mask)
子网划分方式灵活:可以按需分配
每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费
IP数据包的发送和转发过程包含两个部分:
主机发送IP数据报
判断目的主机是否与自己在同一个网络
若在同一个网络,则属于直接交付;
若不在同一个网络,则属于间接交付,传输给主机所在网络的默认网络(路由器),由默认网关帮忙转发;
路由器转发IP数据
检查IP数据包首部是否出错:
若出错,则直接丢弃该IP数据报并通告源主机;
若没有出错,则进行转发;
根据IP数据报的目的地址在路由表中查找匹配的条目
若找到匹配的条目,则转发给条目中指示的下一跳;
若找不到,则丢弃该IP数据报并通告源主机;
主机C如何知道路由器R得存在?
路由器是隔离广播域的,也就是广播只能在自己网络范围内传播
静态路由配置指的是用户或者网络管理员使用路由器的相关命令给路由器人工配置路由表
使用静态路由配置可能会出现以下导致产生路由环路的错误:
在需要考虑某种安全问题或者网络管理人员对网络的管理和测试的情况下,可以针对某台特定主机设定一个特定路由,在路由表中为该主机设置一个路由条目。
路由条目的类型
特殊的静态路由条目
为了防止IP数据报在路由环路中永久兜圈,在IP数据报首部设有生存时间TTL字段。
IP数据报进入路由器后,TTL字段的值减1。若TTL的值不等于0,则被路由器转发,否则被丢弃。
对于这种数据环路的情况,可以通过设置黑洞路由,将路由器聚合存在,但是实际不存在的路由设置一个NULL0接口(路由器内部的虚拟接口,就像是一个黑洞,IP数据报转发进去后有进无出)
针对这种情况,可以添加针对该直连网络的黑洞路由
假设一段时间后,故障消失了,R1可以自动得出其直连网络的接口0,并将之前设置的黑洞路由条目设置为失效状态
静态路由选择
动态路由选择
因特网所采用的路由选择协议的主要特点:
自治系统之间称为域间路由选择,自制系统内称为域内路由选择。
路由器的工作流程:
信号从某个端口进入路由器,物理层将信号转换为比特流,送交数据链路层处理;
数据链路层从比特流中识别出帧,去掉帧头和帧尾后,送交网络层处理;
如果送交网络层的分组是普通数据分组,
如果送交网络层的分组是路由器之间交换路由信息的路由报文
则把这种分组送交路由选择处理机
路由选择处理机根据分组的内容更新自己的路由表
路由表一般仅包含从目的网络到下一跳的映射
路由表需要对网络拓扑变化的计算最优化
转发表是从路由表得出的
转发表的结果应当使查找过程最优化
路由选择处理机除了处理收到的路由报文外,还会周期性的给其他路由器发送自己所知道的路由信息
路由器的各端口还应有输入缓冲区和输出缓冲区
路由器的端口一般都具有输入和输出的功能
路由信息协议RIP(Routing Information Protocol)是内部网关协议LGP中最先得到广泛使用的协议之一,其相关标准文档为RFC 1058
RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量D-V(Distance-Vector)”
RIP使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离。
RIP认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由。
当到达同一目的网络有多条“距离相等”的路由时,可以进行等价负载均衡。
RIP包含以下三个要点:
RIP协议存在“坏消息传得慢”的问题:
“坏消息传播得慢”又称为路由环路或距离无穷计数问题,这是距离向量算法的一个固有问题。可以采取多种措施减少出现该问题的概率或减小该问题带来的危害。
版本
首部长度
可选字段
填充字段
区分服务
总长度
标识、标志、片偏移
这三个字段共同用于IP数据报分片
标识
标志
片偏移
生存时间TTL
协议
首部检验和
源IP地址和目的IP地址
为了更有效地转发IP数据报和提高交付成功的机会,在网际层是用了网际控制报文协议ICMP(Internet Control Message Protocol)。
主机或路由器使用ICMP来发送差错报告报文和询问报文。
ICMP报文被封装在IP数据报中发送。
ICMP差错报告报文共有以下五种:
时间超过
当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值减1。
若结果不为0,则将该IP数据报转发出去;若结果为0,除丢弃该IP数据报外,还要向源点发送时间超过报文。
另外,当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文。
以下情况不应该发送ICMP差错报告报文:
常用的ICMP询问报文有以下两种:
Virtual Private Network
利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网。
由于IPv4地址的紧缺,一个机构能够申请到的IPv4地址数量往往小于本机构所拥有的主机数量。因此,虚拟专用网中的各主机所分配的地址应该是本机构可自由分配的专用地址,而不是需要申请的、在因特网上使用的公有地址。
同一机构内不同部门的内部网络所构成的虚拟专用网VPN又称为内联网VPN。
有时一个机构的VPN需要有某些外部机构(通常就是合作伙伴)参加进来。这样的VPN就称为外联网VPN。
在外地工作的员工需要访问公司内部的专用网络时,只要在任何地点接入到因特网,运行驻留在员工PC中的VPN软件,在员工的PC和公司的主机之间建立VPN隧道,即可访问专用网络中的资源。这种VPN称为远程接入VPN。
虽然因特网采用了五分类编址方式来减缓IPv4地址空间耗尽的速度,但由于因特网用户数目的激增, 特使是大量小型办公室网络和家庭网络接入因特网的需求不断增加,IPv4地址空间即将面临耗尽的危险仍然没有被解除。
1994年提出来一种网络地址转换NAT的方法再次缓解了IPv4地址空间即将耗尽的问题。
NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。
该转换方法存一个问题:如果NAT路由器具有N个全球IP地址,那么至多只能有N个内网主机能够同时和因特网上的主机通信。
由于绝大多数的网路应用都是使用运输层协议TCP或UDP来传送数据,因此可以利用网络层的端口号和IP地址一起来进行转换。
这样,用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。这种将端口号和IP地址一起进行装换的技术叫作网络地址与端口号转换NAPT(Network Address and Port Tanslation)。
运行在计算机上的进程使用进程标识符PID来标志。
因特网上的计算机并不是使用统一的操作系统,不同操作系统(windows,Linux,MacOS)又使用不同格式的进程标识符。
为了使运行不同操作系统的计算机的应用进程之间能够进行网络通信,就必须使用同一的方法对TCP/IP体系的应用进程进行标识。
TCP/IP体系的运输层使用端口号来区分应用层的不同应用进程。
流程:
一般来说,我们总是希望数据传输得更快一些。
所谓流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。
利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。
零窗口探测报文段也有重传计时器,重传计时器超时后,零窗口探测报文段会被重传
TCP中规定不论接收方有没有空间,都必须接收发送方的3种报文:零窗口检测报文段、确认报文段、携带有紧急数据的报文段。
在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。这种情况就叫拥塞(congestion)。
若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。
为了介绍四种拥塞控制算法的基本原理,假定以下条件:
慢开始和拥塞避免算法是1988年提出的TCP拥塞控制算法(TCP Tahoe版本)。
1990年又增加了两个新的拥塞控制算法(改进TCP的性能),这就是快重传和快恢复(TCP Reno版本)。
采用快重传算法可以让是发送方尽早知道发生率个别报文段的丢失。
所谓快重传,就是使发送方尽快进行重传,而不是等超时重传计时器超时再重传。
发送方一旦收到3个重复确认,就知道现在只是丢失了个别的报文段。于是不启动慢开始算法,而执行快恢复算法;
TCP超时重传时间的选择是TCP最复杂的问题之一
虽然发送方的发送窗口是根据接收方的接收窗口设置的,但在同一时刻,发送发的发送窗口并不总是和接收方的接收窗口一样大。
对于不按序到达的数据应如何处理,TCP并无并且规定。
TCP要求接收方必须有累计确认和捎带确认机制,这样可以减小传输开销。接收方可以在合适的时候发送确认,也可以在自己有数据要发送时把确认信息顺便捎带上。
接收方不应过分推迟发送确认,否则会导致发送方不必要的超时重传,这反而浪费了网路的资源。
TCP标准规定,确认推迟的时间不应超过0.5秒。若收到一连串具有最大长度的报文段,则必须每隔一个报文段就发送一个确认[RFC 1122]
捎带确认实际上并不经常发生,因为大多数应用程序很少同时在两个方向上发送数据。
TCP的通信是全双工通信。通信中的每一方都在发送和接收报文段。因此,每一方都有自己的发送窗口和接收窗口。在谈到这些窗口时,一定要弄清楚是哪一方的窗口。
TCP是面向连接的协议,它基于运输连接来传送TCP报文段
TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程
TCP运输连接建立有以下三个阶段:
TCP的运输连接管理就是使运输连接的建立和释放都能正常的进行。
TCP的连接建立要解决以下三个问题:
使TCP双方都能确知对方的存在;
使TCP双方能够协商一些参数(如窗口最大值、是否使用窗口扩大选项和时间戳选项和服务质量等等);
使TCP双方能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。
为什么TCP客户端进行最后还要发送一个普通的TCP确认报文段呢?是否多余?
答案是否定的。
例如,下面采用两次握手就建立连接:
为什么不发送报文段后直接关闭,而是要等待2MSL个时间后才关闭?,是否有必要?
为了实现可靠传输,TCP采用了面向字节流的方式。
但TCP在发送数据时,是从发送缓存取出一部分或全部字节并给其添加一个首部使之成为TCP报文段后进行发送。
源端口:占16比特, 写入源端口号,用来标识发送该TCP报文段的应用进程。
目的端口:占16比特,写入目的端口号,用来标识接收该TCP报文段的应用进程。
序号:占32比特,取值范围[0, 2^32 -1],序号增加到最后一个后,下一个序号就又回到0。
确认号:占32比特,取值范围[0, 2^32 -1],确认号增加到最后一个后,下一个确认号就又回到0。
指出期望收到对象下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认。
若确认号=n,则表明到序号n-1为止的所有数据都已正确接收,期望接收序号为n的数据。
确认标志位ACK:取值为1时确认号字段才有效;取值为0时确认号字段无效
数据偏移:占4比特,并以4字节为单位。
用来指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处有多远。
这个字段实际上是指出了TCP报文段的首部长度。
保留:占6比特,保留为今后使用,但目前应置为0。
校验和:占16比特, 检查范围包括TCP报文段的首部和数据载荷两部分。
在计算校验和时,要在TCP报文段的前面加上12字节的伪首部。
同步标志位SYN:在TCP连接建立时用来同步序号。
终止标志位FIN:用来释放TCP连接。
复位标志位RST:用来复位TCP连接。
当RST=1时,表明TCP连接出现了异常,必须释放连接,然后再重新建立连接。
RST置1还用来拒绝一个非法的报文段或拒绝打开一个TCP连接。
推送标志位PSH:接收方的TCP收到该标志位为1的报文段会尽快上交应用进程,而不必等到接收缓存都填满后再向上交付。
紧急标志位RUG:取值为1时紧急指针字段有效;取值为0时紧急指针字段无效。
紧急指针:占16比特,以字节为单位,用来指明紧急数据的长度。
当发送方有紧急数据时,可将紧急数据插队到发送缓存的最前面,并立刻封装到一个TCP报文段中进行发送。紧急指针会指出本报文段数据载荷部分包含了多长的紧急数据,紧急数据之后是普通数据。
选项(长度可变):
**填充:**由于选项的长度可变,因此使用填充来确保报文段首部能被4整除(因为数据偏移字段,也就是首部长度字段,是以4字节为单位的)。
应用层是计算机网络体系解耦股的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分。
客户/服务器(Client/Server,C/S)方式
C/S方式是因特网上传统的、同时也是最成熟的方式,很多我们熟悉的网络应用采用的都是C/S方式。包括万维网WWW、电子邮件、文件传输TFP等。
基于C/S方式的应用服务通常是服务集中性的,即应用服务集中在网络中比客户计算机少得多的服务器计算机上。
对等(Peer-toPeer,P2P)方式
目前,在因特网上流行的P2P应用主要包括P2P文件共享、即时通信、P2P流媒体、分布式存储等。
基于P2P的应用是服务分散型的,因为服务不是集中在烧水壶服务器计算机中,而是分散在大量对等计算机中,这些计算机并不为服务提供商所有,而是为个人控制的左面计算机和笔记本电脑,他们通常位于住宅、校园和办公室中。
P2P方式的最突出特性之一就是它的可扩展性,因为系统没增加一个对等方,不仅增加的是服务的请求者,同时也增加了服务的提供者,系统性能不会因规模的增大而降低。
P2P方式具有成本上的优势,因为它通常不需要庞大的服务器设施和服务器带宽。为了降低成本,服务提供商对于P2P方式用于应用的兴趣越来越大。
因特网采用层次树状结构的域名结构
域名的结构由若干个分量租场,各分量之间用“点”隔开,分别代表不同级别的域名。
域名系统既不规定一个域名需要包含多少个下级域名,也不对顶每一级的域名代表什么意思。
各级域名右其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构ICANN进行管理。
顶级域名TLD(TOP Level Domain)分为以下三类:
在国家顶级域名下注册的二级域名均由该国家自行确定。例如,顶级域名为jp的日本,将其教育和企业机构的二级域名定为ac和co,而不是edu和com。
我国则将二级域名划分为以下两类:
域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。显然不能将所有信息都储存在一台域名服务器中。DNS使用分布在各地的域名服务器来实现域名到IP地址的转换。
域名服务器可以划分为以下四种不同的类型:
根域名服务器
根域名服务器是最高层次的域名服务器。每个根域名服务器都知道所有的顶级域名服务器的域名及其IP地址。因特网上共有13个不同IP地址的根域名服务器。尽管我们将13个根域名服务器中的每一个都视为单个的服务器,但“每台服务器”实际上是由许多分布在世界各地的计算机构成的服务器群集。当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器。这就加快了DNS的查询过程,同时也更合理地利用率因特网的资源。根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址。
顶级域名服务器
这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时就给出相应的回答(可能是最后的结果,也可能是下一级权限域名服务器的IP地址)。
权限域名服务器
这些域名服务器负责管理某个区的域名。每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与IP地址的映射关系。另外,权限域名服务器还知道其下级域名服务器的地址。
本地域名服务器
本地域名服务器不属于上述的域名服务器的等级结构。当一个主机发出DNS请求报文时,这个报文就首先被送往该主机的本地域名服务器。本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中。每一个因特网服务提供者ISP,一个大学,甚至一个大学里的学院,都可以拥有一个本地域名服务器,它有时也称为默认域名服务器。本地域名服务器离用户较近,一般不超过几个路由器的距离,也有可能就在同一个局域网中。本地域名服务器的IP地址需要直接配置在需要域名解析的主机中。
为了提供DNS的查询速率,并减轻根域名服务器的符合和减少因特网上的DNS查询报文数量,在域名服务器汇总广泛使用了高速缓存。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
由于域名与IP地址的映射关系并不是永久不变,为保持告诉缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项(例如,每个项目只存放两天)。
不但在本地域名服务器中需要告诉缓存,在用户主机中也很需要。许多用户主机在启动时从本地域名服务器下载域名和IP地址的全部数据库,维护存放在自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。同理,主机也需要保持告诉缓存中内容的正确性。
将某台计算中的文件通过网络传送到可能相距很远的另一台计算机中,是一项基本的网络应用,即文件传送。
文件传送协议FTP(File Transfer Protocol)是因特网上使用得最广泛的文件传送协议。
在因特网发展的早期阶段,用FTP传送文件约占整个因特网的通信量的三分之一,而由电子邮件和域名系统所产生的通信量还要小于FTP所产生的通信量。只是到了1995年,万维网WWW的通信量才首次超过了FTP。
FTP客户和服务器之间要建立以下两个并行的TCP连接:
电子邮件(E-mail)是因特网上最早流行的一中应用,并且仍然是当今因特网上最重要、最实用的应用之一。
传统的电话通信属于实时通信,存在以下两个缺点:
而电子邮件与邮政系统的寄信相似。
电子邮件使用方便、传递迅速而且费用低廉。它不仅可以传送文字信息,而且还可附上声音和图像。
由于电子邮件的广泛使用,现在许多国家已经正式取消了电报业务。在我国,电信局的电报业务也因电子邮件的普及而濒临消失。
电子邮件系统采用客户/服务器方式。
电子邮件系统的三个主要组成构件:用户代理,邮件服务器,以及电子邮件所需的协议。
电子邮件个信息格式并不是由SMTP定义的,而是RFC 822中单独定义的。这个RFC文档已在2008年更新为RFC 5322。这个RFC文档已在2008年更新为RFC 5322.一个电子邮件有信封和内容两部分。而内容又由首部和主体两部分构成。
SMTP协议只能传送ASCII码文本数据,不能传送可执行文件或其他的二进制对象。
SMTP不能满足传送多媒体邮件(例如带有图片、音频和视频数据)的需要。并且许多其他非英语国家的文字(例如中文、俄文、甚至带有重音符号的法文或德文)也无法用SMTP传送。
为解决SMTP传送非ASCII码文本的问题,提出来多用途因特网邮件扩展MIME(Multipurpose Internet Mail Extensions)。
实际上,MIME不仅仅用于SMTP,也用于后面的同样面向ASCII字符的HTTP。
常用的邮件读取协议有以下两个:
邮局协议POP(Post Office Protocol),POP3是其第三个版本,是因特网正式标准。
非常简单、功能有限的邮件读取协议。用户只能以下载并删除方式或下载并保留方式从邮件服务器下载邮件到用户方计算机。不允许用户在邮件服务器上管理自己的邮件。(例如创建文件夹,对邮件进行分类管理等)。
因特网邮件访问协议IMAP(Internet Message Access Protocol),IMAP4是其第四个版本,目前还只是因特网建议标准。
功能比POP3强大的邮件读取协议。用户在自己的计算机上就可以操控邮件服务器中的邮箱,就像在本地操控一样,因此IMAP是一个连接协议。
POP3和IMAP4都采用基于TCP连接的用户/服务器方式。POP3使用熟知端口110,IMAP4使用熟知端口143。
基于万维网的电子邮件
万维网WWW(World Wide Web)并非某种特殊的计算机网络。它是一个大规模的、联机式的信息储藏所,是运行在因特网上的一个分布式应用。
万维网利用网页之间的超链接将不同网站的网页链接成一个逻辑上的信息网。
万维网是欧洲粒子物理实验室的Tim Berners-Lee最初于18989年3月提出的。
1993年2月,第一个图形界面的浏览器Mosaic
1995年著名的Netscape Navigator浏览器上市。
浏览器最重要的部分是渲染引擎,也就是浏览器内核。负责对网页内容进行解析和显示。
为了方便地访问在时间范围的文档,万维网使用同一资源定位符URL来指明因特网上任何种类“资源”的位置。
URL的一般形式由以下四个部分组成:
超文本传输协议HTTP(HyperText Transfer Portocol)
HTTP定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传送给浏览器。
HTTP/1.0采用非持续连接方式。该方式下,每次浏览器要请求一个文件都要与服务器建立TCP连接,当收到响应后就立即关闭连接。
HTTP/1.1采用持续连接方式。该方式下,万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和相应报文。这并不局限于传送同一个页面上引用的对象,而是只要这些文档都在同一个服务器上就行。
使用Cookie在服务器上记录用户信息
万维网缓存与代理服务器
若Web缓存的命中率比较高,可以大大减少链路上的通信量,因而大大减少了访问因特网的时延。