文章目录
- 计算机网络
-
- 一、概述
-
- 1.1、计算机网络在信息时代的作用
- 1.2、因特网概述
-
- 1.2.1、网络、互联网和因特网
- 1.2.2、因特网发展的三个阶段
- 1.2.3、因特网的标准化工作
- 1.2.4、因特网的组成
- 1.3、三种交换方式
-
- 1.3.1、电路交换(Circuit Switching)
- 1.3.2、分组交换(Packet Switching)
- 1.3.3、报文交换
- 1.3.4、对比
- 1.4、计算机网络的定义与分类
-
- 1.4.1、计算机网络的定义
- 1.4.2、计算机网络的分类
- 1.5、计算机网络的性能指标
- 1.6、计算机网路体系结构
-
- 1.6.1、常见的计算机网路体系结构
- 1.6.2、计算机网络体系结构分层的必要性
- 1.6.3、计算机网络体系结构分层思想举例
- 1.6.4、计算机网络体系结构中的专用术语
-
- 实体
- 协议
- 服务
- 1.7、章节小结
- 1.8、练习题
- 二、物理层
-
- 2.1、物理层的基本概念
- 2.2、物理层下面的传输媒体
-
- 2.2.1、导引型传输媒体
-
- 同轴电缆
- 双绞线
- 光纤
- 电力线
- 2.2.2、非导引型传输媒体
-
- 无线电波
- 微波
- 红外线
- 可见光
- 2.3、传输方式
- 2.4、编码与调制
- 2.5、信道的极限容量
- 三、数据链路层
-
- 3.1、数据链路层概述
- 3.2、封装成帧
- 3.3、差错检测
- 3.4、可靠传输
-
- 3.4.1、可靠传输的基本概念
- 3.4.2、停止-等待协议
- 3.4.3、回退N帧协议GBN
- 3.4.4、选择重传协议SR
- 3.5、点对点协议PPP
- 3.6、媒体接入控制
-
- 3.6.1、媒体接入控制的基本概念
- 3.6.2、静态划分信道
- 3.6.3、随机接入——CSMA/CD协议
- 3.6.4、随机接入——CSMA/CA协议
- 3.7、MAC地址、IP地址以及ARP协议
-
- 3.7.1、MAC地址
- 3.7.2、IP地址
- 3.7.3、ARP协议
- 3.8、集线器与交换机的区别
- 3.9、以太网交换机自学习和转发帧的流程
- 3.10、以太网交换机的生成树协议STP
- 3.11、虚拟局域网VLAN概述
-
- 3.11.1、概述
- 3.11.2、实现机制
- 四、网络层
-
- 4.1、网络层概述
- 4.2、网络层提供的两种服务
- 4.3、IPv4地址
-
- 4.3.1、IPv4地址概述
- 4.3.2、分类编址的IPv4地址
- 4.3.3、划分子网的IPv4地址
- 4.3.4、无分类编址的IPv4地址
- 4.3.5、IPv4地址的应用规划
- 4.4、IP数据报的发送和转发过程
- 4.5、静态路由配置及其可能产生的路由环路问题
- 4.6、路由选择协议
-
- 4.6.1、路由选择协议概述
- 4.6.2、路由信息协议RIP的基本工作原理
- 4.6.3、 开发最短路径有限OSPF的基本工作原理
- 4.6.4、边界网关协议BGP的基本工作原理
- 4.7、IPv4数据报的首部格式
- 4.8、网际控制报文协议ICMP
- 4.9、虚拟专用网VPN与网络地址转换NAT
-
- 4.9.1、虚拟专用网VPN
- 4.9.2、网络地址转换NAT(Network Address Translation)
- 五、运输层
-
- 5.1、运输层概述
- 5.2、运输层端口号、复用与分用的概念
- 5.3、UDP和TCP的对比
- 5.4、TCP的流量控制
- 5.5、TCP的拥塞控制
- 5.6、TCP超时重传时间的选择
- 5.7、TCP可靠传输的实现
- 5.8、TCP的运输连接管理
-
- 5.8.1、TCP的连接建立
- 5.8.2、TCP的连接释放
- 5.9、TCP报文段的首部格式
- 六、应用层
-
- 6.1、应用层概述
- 6.2、客户/服务器方式(C/S)和对等方式(P2P)
- 6.3、动态主机配置协议DHCP
- 6.4、域名系统DNS(Domain Name System)
- 6.5、文件传送协议FTP
- 6.6、电子邮件
- 6.7、万维网WWW
参考视频:https://www.bilibili.com/video/BV1c4411d7CQ
计算机网络
一、概述
1.1、计算机网络在信息时代的作用
计算机网络已由一种通信基础设施发展成为一种重要的信息服务基础设施。
计算机网络已经成为像水、电这些基础设时一样,成为我们生活重不可或缺的一部分。
查看:http://www.cnnic.net.cn/
1.2、因特网概述
1.2.1、网络、互联网和因特网
网络(Network)由若干结点(Node)和连接这些结点的链路(Link)组成。
多个网络还可以通过路由器互联起来,这样就构成了一个覆盖范围更大的网络,即互联网(或互联网)。因此 ,互联网是“网络的网络”(Network of Networks)。
因特网(Internet)是世界上最大的互联网络(用户数以万计,互联的网络数以百万计)。
区分:
-
internet:(互联网或互连网)这是一个通用名词,泛指由多个计算机网络互联而成的网络,网络之间的通信协议可以是任意的。
-
Internet:(因特网)是一个专有名词,指当前全球最大的、开放的、由众多网络相互连接而成的特定计算机网络,是采用TCP/IP协议族作为通信的规则,其前身是美国的APPNET。
1.2.2、因特网发展的三个阶段
因特网服务提供者ISP(Internet Service Provider)
ISP可以从新特网管理机构申请到成块的IP地址,同时拥有通信线路以及路由器等联网设备,任何机构和个人只要向ISP缴纳费用,就可以从ISP得到ip地址,这一点很重要,因为因特网上的主机都必须有ip地址才能进行通信,这样就可以通过ISP接入Internet
基于ISP的三层结构的因特网
1.2.3、因特网的标准化工作
1.2.4、因特网的组成
-
边缘部分:由所有连接在因特网的主机组成,是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
-
核心部分:由大量网络和连接这些网络的路由器组成,这部分是为边缘服务提供服务的(提供连通性交换)。
1.3、三种交换方式
1.3.1、电路交换(Circuit Switching)
电话交换机接通电话线的方式称为电路。
从通信资源的分配角度来看,交换就是按照某种方式动态的分配传输线路的资源。
在图中,每个电路交换都需要建立一条物理通路,每条连接都是不可抢占,一直存在的。
电路交换的步骤:
-
1、建立连接(分配通信资源)
-
2、通话(一直占用通信资源)
-
3、释放连接(归还通信资源)
在建立连接后不论通信资源有没有使用,都不会进行中断,除非用户中断。
当使用电路交换来传送计算机数据时,其线路的传输效率往往很低
1.3.2、分组交换(Packet Switching)
把整块数据/信息分为多个数据段(相对于报文传输而言),数据段分开传输。在数据段前面加上首部后,成为一个分组。以分组为单位传输。各个分组交换机会把分组先存储下来,然后根据其头部信息的目的地地址,发送给下一个交换机。各个交换机进行对分组信息的储存转发后,最终到达主机H2。接收方去除分组首部,还原出原始报文。
在转发过程中有两个特点:
1、各分组从源站到达目的地可以走不同的路径。
2、分组到达目的站的顺序不定,可能出现顺序变化。
在分组传输中各个角色主要功能:
1.3.3、报文交换
与分组交换类似,报文交换中的交换结点也采用 存储-转发方式,但报文交换对报文的大小没有限制,这就要求交换及结点要有较大的存储空间,需要注意的是,报文交换主要用于早期的电报通信网,现在较少使用,通常被先进的分组方式替换
1.3.4、对比
1.4、计算机网络的定义与分类
1.4.1、计算机网络的定义
- 计算机网络的精确定义并未统一
- 计算机网络的最简单的定义是:一些互相连接的、自治的计算机的集合。
- 互联:是指计算机之间可以通过有线或无线的方式进行数据通信;
- 自治:是指独立的计算机,它有自己的硬件和软件,可以单独运行使用;
- 集合:是指至少需要两台计算机;
- 计算机网络的较好的定义是:计算机网络主要是由一些通用的、可编程的硬件互联而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用。
- 计算机网络所连接的硬件,并不限于一般的计算机,而是包括了智能手机等只能硬件。
- 计算机网络并非专用传送数据,而是能够支持很多种的应用(包括今后可能出现的各种应用)。
1.4.2、计算机网络的分类
公用网:指的是电信公司构建的大型网络,面对公众开放,只要交钱既可使用,又叫公众网。
专用网:指的是某个部门为本单位的特殊业务工作需要而建造的网络。例如铁路部门、电信部门专门为自己构建的,不对外开放的网络
有线网络:主要双绞线(日常使用网线)、光纤。
无线网络:主要是WIFI。
广域网WAN:覆盖面积通常为几十公里到几千公里,可以覆盖国家范围、洲际范围,有时也成为远程网。负责互连分布在不同区域的城域网和局域网,是最大范围的网络。
城域网MAN:覆盖范围一般是一个城市。作用距离为5到50公里。通常作为城市骨干网,互连大量企业、机构、学校。
局域网LAN:局域网一般是微信计算机或工作站通过告诉线路相连,范围一般是一个实验室、一栋楼或一个校园。通常由某个单位单独拥有、使用和维护。
个域网PAN:个人区域网络。非用来连接普通计算机,耳式在个人工作的地方把个人使用的电子设备,鼠标、键盘、耳机等用无线的方式连接起来形成的个人网络系统。
总线型网络:用单根传输线把计算机连接起来。
-
优点:建网容易,增减节点方便,节省线路。
-
缺点:重负载时通信效率不高,任意一处出现故障后全网瘫痪。
星型网络:是将每个计算机都以单独的线路与中央设备相连。中央设备现在一般是交换机。
-
优点:便于网络的集中控制和管理。
-
缺点:成本高,中央设备对故障敏感。
环形网络:是将所有计算机网络接口连接成一个环。环可以是单环或者双环,环中信号是单项传输的。
在网状结构中,每个节点至少由两条路径与其他节点相连接,多用在广域网中。
-
优点:可靠性高。
-
缺点:控制复杂,线路成本高。
在以上四种结构中可以组合任意的更加复杂有效的结构。
1.5、计算机网络的性能指标
性能指标可以从不同的方面来度量计算机网络的性能。
常用的计算机网络的性能指标有以下8个:
-
速率
-
带宽
-
吞吐量
- 吞吐量表示在单位时间内通过某个网络(或信道、接口)的数据量。
- 吞吐量被经常用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络。
- 吞吐量受网络的带宽或额定速率的限制。
- 带宽1GB/s 的以太网,吞吐量最大能达到1Gb/s、通常在700Mb/s。
-
时延
-
时延带宽积
-
往返时间
- 在许多情况下,因特网上的信息不仅仅单方向传输,而是双向交互;
- 我们有时很需要知道双向交互一次所需的时间;
- 因此,往返时间RTT(Round-Trip Time)也是一个重要的性能指标
-
利用率
-
丢包率
1.6、计算机网路体系结构
1.6.1、常见的计算机网路体系结构
能够占领市场的就是标准
TCP/IP体系结构相当于: 将OSI结构的物理层和数据链路层合并成为网络接口层,去掉了会话层和表示层。
TCP/IP协议为了将不同的网络接口互联,因此网络接口层并没有规定什么内容
所以了为了便于计算机网络的原理学习,将体系结构划分成了5层
1.6.2、计算机网络体系结构分层的必要性
- 计算机网络是个非常复杂的系统。早在最初的APPANET设计时就提出来分层的设计理念。
- “分层”可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理
解决以上问题后就可以实现01信号在计算机之间的传输。
解决此问题后可以实现分组在一个网络上传输。
解决此问题后可以实现分组在网络间传输。
解决此问题后可以实现进程之间基于网络的通信。
解决此问题后可以实现计算机网络所解决的所有问题。
1.6.3、计算机网络体系结构分层思想举例
应用层:按照http请求的协议,构建报文。
**运输层:**给http请求加上一个首部,使其成为一个TCP报文段。其首部的作用是区分应用进程和实现可靠传输。
网络层:给TCP报文段加上一个IP首部,使其成为IP数据报。其首部作用是为了使该数据报可以在互联网上传输(被路由器转发)。
数据链路层:给IP数据报添加一个首部和一个尾部,使其成为帧(按帧传输)。其首部的作用是使其能够在一段链路或者网络上传输,能够被相应的目的主机接收。其尾部的作用是为了让目的主机检查是否有误码。
物理层:将帧看作是比特流(01编码),由于是在以太网传输,因而给其加上前导码,便于传输。并且将其变成相应的信号发送到传输媒体。
接收端的过程就是发送端的逆过程
1.6.4、计算机网络体系结构中的专用术语
实体
- 实体 任何可发送或接收信息的硬件或软件进程
- 对等实体 收发双发相同层次中的实体
协议
- 协议 控制两个对等实体进行逻辑通信的规则的集合
-
协议的三要素 语法 语义 同步
-
语法 定义所交换信息的格式
-
语义 定义收发双方所要完成的操作
-
同步 定义收发双方的时序关系
-
服务
- 在协议的控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务
- 要实现本层协议,还需要使用下面一层所提供的服务
- 协议是“水平的”,服务是“垂直的”
- 实体看得见相邻下层所提供的服务,但并不知道实现该服务的具体协议。也就是说,下面的协议对上面的实现是“透明”的
-
服务访问点 在同一系统中相邻两层的实体交换信息的逻辑接口,用于区分不同的服务类型。
- 数据链路层的服务访问点为帧的“类型”字段。
- 网络层的服务访问点为IP数据报首部中的“协议字段”。
- 运输层的服务访问点为“端口号“
-
服务原语 上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令称为服务原语。
-
协议数据单元PDU 对等层次之间传送的数据包称为该层的协议数据单元。
-
服务数据单元SDU 同一系统内,层与层之间交换的数据包称为服务数据单元。
-
多个SDU可以合成一个PDU;一个SDU也可以划分为几个PDU
1.7、章节小结
1.8、练习题
二、物理层
2.1、物理层的基本概念
- 物理层考虑的是怎么才能在连接各种计算机的传输媒体上传输数据比特流。
- 物理层为数据链路层屏蔽了各种传输媒体的差异,使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体是什么。
2.2、物理层下面的传输媒体
2.2.1、导引型传输媒体
在导引型传输媒体中,电磁波被导引沿着固体传播媒体传播。
同轴电缆
模拟传输,主要用于有线电视
同轴电缆价格较贵且布线不投灵活和方便,随着集线器的出现,在局域网领域基本上都是采用双绞线作为传输媒体。
双绞线
双绞线是最古老又常用的传输媒体。也就是生活中最常见的网线。
绞合的作用:
- 抵御部分来自外界的电磁波干扰
- 减少相邻导线的电磁干扰
光纤
每一根光纤是非常细的,因此需要将他做成很结实的光缆,一根光缆少则只有一根光纤,多则可能有数十根甚至数百跟光纤。 光纤的芯非常细。
光纤的优点:
- 通信容量大(25000~30000GHz的带宽)
- 传输损耗下,远距离传输时更加经济
- 抗雷电和电磁干扰性能好。这在大电流脉冲干扰的环境下尤为重要
- 无串音干扰,保密性好,不易被窃听
- 体积小,重量轻
光纤的缺点:
- 割接需要专用设备
- 光电接口价格较贵
光在光纤中传输的原理
- 当光从高折射率的媒体射向低折射率的媒体时,其折射角将大于入射角。
- 因此,如果入射角足够大,就会出现全反射,即光碰到包层使,就会反射会纤芯。
电力线
2.2.2、非导引型传输媒体
常见的非导引型传输媒体
无线电波
无线电波用于国际广播、海事和航空通讯等。
微波
红外线
-
利用红外线传输数据,例如电视遥控等。
-
点对点无线传输。
-
直线传输,中间不能有障碍物,传输距离短,传输速率低。
可见光
LIFI,可以实现使用可见光通信,但是目前还在实验室阶段。
2.3、传输方式
2.4、编码与调制
-
编码:在不改变信号性质的情况下仅对数字基带信号的波形进行变换
-
调制:把数据基带信号的频率范围,搬移到较高的频段,并转换为模拟信号
常用编码
基本调制方法
调幅: 对基带信号的波幅进行调整,例如将上图的1信号波幅进行改变,在接收方读取时有载波输出为1.
调频: 对基带信号频率进行调整,例如将0信号调制为频率f1,1信号调制为频率f2。
**调相: **对基带信号相位进行调制,例如将0信号的初相位调整为0度,1信号的初相位调整为180度。
使用基本调制方法,1个码元只能包含1个比特信息。
如何能使1个码元包含更多比特信息?
混合调制
因为频率和相位是相关的,即频率是相位岁时间的变化率。所以一次只能调制频率和相位两个中的一个。
通常情况下,相位和振幅可以结合起来一起调制,称为正交振幅调制QAM。
QAM-16
- 12种相位
- 每种相位有1或2种振幅可选
- 可以调制出16种码元(波形),每种码元可以相应表示4个比特
- 码元与4个比特的对应关系采用格雷码,即任意两个相邻码元只有1个比特不同
2.5、信道的极限容量
- 在信道带宽一定的情况下,根据奈式准则和香农公式,要想提高信息的传输速率就补习采用多元制(更好的调制方法)和努力提高信道中的信噪比。
- 自从香农公式发表后,各种新的信号处理和调制方法就不断出现,其目的都是为了尽可能地接近香农公式给出的传输速率极限。
三、数据链路层
3.1、数据链路层概述
-
链路:就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。
-
数据链路:是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路
-
数据链路层已帧为单位传输和处理数据
使用点对点信道的数据链路层的三个重要问题
- 封装成帧
封装成帧是把网络层交付的协议数据单元,添加帧头和帧尾的操作,称为封装成帧,主要目的是为了在链路上以帧为单元传输数据,从而实现数据链路层本身的功能。
- 差错检测
-
在传输过程中可能会产生比特差错
-
发送方会基于发送的数据和检错算法计算出检错码,并放在帧尾。
-
接收方主机根据帧尾中的检错码和检错算法来判断帧中是否有误码。
-
- 可靠传输
尽管误码是不能完全避免的,但若能实现发送方发送什么,接收方就能收到什么,就称为可靠传输。
使用广播信道的数据链路层
- 在发送信号过程中,如何知道收到的帧是发送给自己的?
以太网V2的MAC帧,在其帧头就有目的地地址和发送主机源地址。
- 数据碰撞:在数据发送过程中可能出现有两个主机同时发送数据,就会造成数据碰撞。
数据链路层的互连设备
随着技术的发展,交换技术的成熟,在有线(局域网)领域 使用点对点链路和链路层交换机的交换式局域网取代了共享式局域网
在无线局域网中仍然使用的是共享信道技术
3.2、封装成帧
封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。
- 帧头和帧尾中包含有重要的控制信息
- 帧头和帧尾的作用之一就是帧定界
透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。
- 面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输
- 面向比特的物理链路使用比特填充的方法实现透明传输。
为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大些。
考虑到 差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTU(Maximum Transfer Unit)
3.3、差错检测
实际的通信链路都不是理想的,比特在传输过沉重可能会产生差错:1可能会变成0,而0也可能变成1。这称为比特差错。
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)。
在使用差错检测码来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一。
奇偶校验
- 在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中 ”1“的个数为奇数(奇校验)或偶数(偶校验)。
- 如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码;
- 如果有偶数个位发生误码,则奇偶性不发生变化,不能检查出误码(漏检)。
循环冗余校验
- 收发双发约定好一个生成多项式G(x)
- 发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输;
- 接收方通过生成多项式来计算收到的数据是否产生了误码
检错码只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。
要想纠正传输中的差错,可以使用冗余信息更多的纠错码进行前向纠错。但纠错码的开销比较大,在计算机网络中较少使用。
循环冗余校验CRC有很好的检错能力(漏检率非常低),虽然计算比较复杂,但非常易于用硬件实现,因此被广泛应用于数据链路层。
在计算机网络中通常采用我们后续课程中将要讨论的检错重传方式来纠正传输中的差错,或者仅仅是丢弃检测到差错的帧,这取决于数据链路层向其上传提供的是可靠传输服务还是不可靠传输服务。
3.4、可靠传输
3.4.1、可靠传输的基本概念
使用差错检测技术(例如循环冗余校验CRC),接收方的数据链路层就可检测出帧在传输过程中是否产生了误码(比特错误)。
数据链路层向上层提供的服务类型
- 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做;
- 可靠传输服务:想办法实现发送端发送什么,接口端就收到什么。
一般情况下, 有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。
无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务。
比特差错只是传输差错中的一种。
从整体计算机网络体系结构来看,传输差错还包括分组丢失、分组失序以及分组重复。
可靠传输服务并不仅局限于数据链路层,其他各层可选择实现可靠传输。
可靠传输的实现比较复杂,开销也比较大,是否使用可靠传输取决于应用需求。
3.4.2、停止-等待协议
停止-等待协议SW(Stop-and-Wait)
注意事项
-
接收端检测到数据分组有误码时,将其丢弃并等待发送方的超时重传。但对于误码率较高的点对点链路,为使发送方尽早重传,也可给发送方发送NAK分组。
-
为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的停等性,只需1个比特编号就够了,即编号0和1。
-
为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号,所用比特数量与数据分组编号所用比特数量一样。数据链路层一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号。
-
超时计时器设置的重传时间应仔细选择。一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”。
- 在数据链路层点对点的往返时间比较确定,重传时间比较好设定。
- 然而在运输层,由于端到端往返时间非常不确定,设置合适的重传时间有时并不容易。
3.4.3、回退N帧协议GBN
回退N帧协议在流水线传输的基础上利用发送窗口来限制发送方连续发送数据分组的数量,是一种连续ARQ协议。
在协议的工作过程中发送窗口和接口窗口不断向前滑动,因此这类协议又称为滑动窗口协议。
由于回退N帧协议的特性,当通信线路质量不好时,其信道利用率并不比停止-等待协议高。
回退N帧协议的缺点:
- 回退N帧协议的接收窗口尺寸WR只能等于1,因此接收方只能按序接收正确到达的数据分组。
- 一个数据分组的误码就会导致其后续多个数据分组不能被接收方按序接收而丢弃(尽管他们无乱序和误码)。这必然会造成发送方对这些数据分组的超时重传,显然这是对通信资源的极大浪费。
3.4.4、选择重传协议SR
为了进一步提供性能,可设法只重传出现误码的数据分组。因此,接收窗口的尺寸WR不应再等于1(而应大于1),以便接收方先收下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交上层。这就是选择重传协议。
3.5、点对点协议PPP
点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议
PPP协议是因特网工程任务组IEIF在1992年制定的。经过1993年和1994年的修订,现在的PPP协议已成为因特网的正式标准[RFC1661,RFC1662]
PPP协议为在点对点链路传输各种协议数据报中提供了一个标准办法,主要由三部分组成:
- 对各种协议数据报的封装方法(封装成帧)
- 链路控制协议LCP —— 用于建立、配置以及测试数据链路的连接
- 一套网络控制协议NCPs —— 其中的每一个协议支持不同的网络层协议
3.6、媒体接入控制
3.6.1、媒体接入控制的基本概念
共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control)。
随着技术大发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全取代了共性式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术。
3.6.2、静态划分信道
信道复用
- 复用(Multiplexing)是通信技术中的一个重要概念,复用就是通过一条物理线路同时传输多路用户的信号。
- 当网络中传输媒体的传输容量大于多条单一信道的总通信量时,就可以利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽。
频分复用FDM
- 将整个带宽分为多份,用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。
- 频分复用的所有用户在同样的时间占用不同的带宽资源(请注意,这里的“带宽”是频率带宽而不是数据的发送速率)。
接收端通过相应的分用其通过滤波将各路信号分开。将合成的服用信号恢复成原始的多路信号。
分复用TDM
- 将时间划分成一个个的时间间隙
- 时分复用技术将传输线路的带宽资源按一个个的时间间隙轮流分配给不同的用户。
- 每个用户只在所分配的时隙里使用线路传输数据。
波分复用(WDM)
波分复用就是光的频分复用。
光信号传输一段距离后会衰减,所以要用掺铒光纤放大器放大光信号
码分复用(CDM):
码分复用CDM是另一种共享信道的方法。实际上,由于该技术主要用于多址接入,人们更常用的名词时码分多址CDMA(Code Division Multiple Access)
同理,频分复用FDM和时分复用TMD都可用于多址接入,相应的名词是频分多址FDMA(Frequency Division Multiple Access)和时分多址TMDA(Time Division Multiple Access)
复用与多址:
- 复用是将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分。
- 多址(更确切地应该成为多点接入)处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道的应用中是必须的, 而所有的移动系统基本上都需要这种情况。相反,在信道永久性地分配给用户的应用中,多址是不需要的(对于无线广播或电视广播站就是这样)。
- 某种程度上,FDMA、TDMA、CDMA可以分别看成是FDM、TDM、CDM的应用。
与FDM和TDM不同,CMD的每一个用户可以在同样的时间使用同样的频带进行通信。
由于个用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。
CMD最初是用于军事通信的,因此这种系统发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易于被敌人发现。
随着技术的进步,CDMA设备的价格和体积都大幅度下降,因而现在已广泛用于民用的移动通信中。
计算机网络码分多址CDMA及计算例题(简单易懂)
3.6.3、随机接入——CSMA/CD协议
3.6.4、随机接入——CSMA/CA协议
3.7、MAC地址、IP地址以及ARP协议
3.7.1、MAC地址
当多个主机连接再同一个广播信道上,想要实现两个主机之间的通信,则每个主机必须有一个唯一的标识,即一个数据链路层地址;
在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制MAC(Medium Access Contr),因此这类地址被称为MAC地址。
-
MAC地址一般被固化在网卡中(网络适配器)的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址;
-
MAC地址有时也被称为物理地址。但这并不意味着MAC地址属于网络体系结构中的物理层!
一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网路接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口个唯一标识,而不是对网络上各设备的唯一标识。
在ieee官网中,可以根据MAC地址查询到地址的相关信息,例如厂商,生产地址等等。
对于使用EUI-48空间的应用程序,IEEE的目标寿命为100年(直到2080年),但是鼓励采用EUI-64作为替代。
3.7.2、IP地址
IP地址是因特网(Internet)上的主机和路由器所使用的地址,用于标识两部分信息:
- 网络编号:标识因特网上数以百万计的网络
- 主机编号:标识同一网络上不同主机(或路由器个接口)
很显然,之前介绍的MAC地址不具备区分 不同网络的功能
- 如果只是一个单独的网络,不接入因特网,可以只使用MAC地址(这不是一般用户的应用方式)。
- 如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用。
3.7.3、ARP协议
地址解析协议ARP,可以实现由IP地址寻求到MAC地址
ARP高速缓存表中每条记录都有其类型:
- 动态:自动获取,生命周期默认为两分钟
- 静态:手动设置,不同操作系统下的生命周期不同,例如系统重启后不存在或系统重启后依然有效。
由于ARP协议的适用是逐段链路进行的,因此ARP协议只能在一段链路或一个网络上使用,而不能跨网络使用。
3.8、集线器与交换机的区别
3.9、以太网交换机自学习和转发帧的流程
- 以太网交换机工作在数据链路层(也包括物理层)
- 以太网交换机收到帧后,在帧交换表汇总查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧。
- 以太网交换机是一种即插即用设备,刚上电启动时其内部的帧交换表是空的。随着网络中各主机间的通信,以太网交换机通过自学习算法自动逐渐建立起帧交换表。
以太网交换机自学习和转发帧的流程:
- 收到帧后进行登记。登记的内容为帧的源MAC地址及进入交换机的接口号;
- 根据帧的目的MAC地址和交换机的帧交换表对帧进行转发,有以下三种情况:
- 明确转发:交换机知道应当从哪个(或哪些)接口转发该帧(单播,多播,广播)
- 盲目转发:交换机不知道应当从哪个端口转发帧,只能将其通过除进入交换机的接口外的其他所有接口转发(也称泛洪)。
- 明确丢弃:交换机知道不应该转发该帧,将其丢弃。
帧交换表中的每条记录都有自己的有效时间,到期删除。原因如下:
- 交换机的接口改接了另一台主机;
- 主机更换了网卡。
3.10、以太网交换机的生成树协议STP
如何提高以太网的可靠性?
- 添加冗余链路可以提高以太网的可靠性
- 但是,冗余链路也会带来负面效应——形成网络环路
- 网络环路会带来一下问题:
- 广播风暴:大量消耗网络资源,使得网络无法正常转发其他数据帧
- 主机收到重复的广播帧,大量消耗主机资源
- 交换机的帧交换表震荡(漂移)
以太网交换机使用生成树协议STP(Spanning Tree Protocol),可以在增加冗余链路来提高网络可靠性的同时又避免网络环路带来的各种问题。
- 不论交换机之间采用怎样的物理连接,交换机都能够自动计算并构建一个逻辑上没有环路的网络,其逻辑拓扑结构必须是树型的(无逻辑环路);
- 最终生成的树型逻辑拓扑要确保连通整个网络;
- 当首次连接交换机或网络物理拓扑发生变化时(有可能是人为改变或故障),交换机都将进行生成树的重新计算。
3.11、虚拟局域网VLAN概述
3.11.1、概述
以太网交换机工作在数据链路层(也包括物理层)
使用一个或多个以太网交换机互联起来的交换式以太网, 其所有站点都属于同一个广播域。
随着交换式以太网规模的扩大,广播域相应扩大。
巨大的广播域会带来很多弊端:
- 广播风暴
- 难以管理和维护
- 潜在的安全问题
网络中会频繁出现广播信息
TCP/IP协议栈中的很多协议都会使用广播:
- 地址解析协议ARP(已知IP地址,找出其相应的MAC地址)
- 路由信息协议PIP(一种小型的内部路由协议)
- 动态主机配置协议DHCP(用于自动配置IP协议)
NetBEUI:Windows下使用的广播型协议
IPX/SPX:Novell网络的协议栈
Apple Talk:Apple公司的网络协议栈
分割广播域的方法
-
使用路由器可以隔离广播域
路由器的成本较高
- 虚拟局域网VLAN技术
虚拟局域网VLAN(Virtual Local Area Network)是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求。
3.11.2、实现机制
IEEE 802.1Q帧
交换机的端口类型
四、网络层
4.1、网络层概述
网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。
要实现网络层任务,需要解决一下主要问题:
- 网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”)
- 网络层寻址问题
- 路由如何选择问题(路径选择问题)
因特网(Internet)是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈。
由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层。
综上所述,我们通过学习TCP/IP协议栈的网际层来学习网络层的理论知识和实践技术。
4.2、网络层提供的两种服务
面向连接的虚电路服务
-
可靠通信由网络来保证
-
必须建立网络层的连接——虚电路VC(Virtual Circuit)
-
通信双方沿着已建立的虚电路发送分组
-
目的主机的地址仅在连接建立阶段使用,之后每个分组的首部只需携带一条虚电路的编号(构成虚电路的每一段链路都有一个虚电路编号)。
-
这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组最终正确到达接收方(无差错按序到达、不丢失、不重复)。
-
通信结束后,需要释放之前所建立的虚电路。
很多广域分组交换网都是用面向连接诶的虚电路服务。例如,曾经的X.25和逐渐过时的帧中继FR、异步传输模式ATM等。
无连接的数据报服务
- 可靠通信应当有用户主机来保证
- 不需要建立网络层连接
- 每个分组可走不同的路径
- 每个分组的首部必须携带目的主机的完整地址
- 这种通信方式所传送的分组可能误码、丢失、重复和失序。
- 由于网络本身不提供端到端的可靠传输服务,这就使网络中的路由器可以做的比较简单,而且价格低廉(与电信网的交换机相比较)。
- 因特网采用了这种设计思想,也就是将复杂的网络处理工能置于因特网的边缘(用户主机和其内部的运输层),而将相对简单的尽最大努力的分组交付功能置于因特网核心。
4.3、IPv4地址
4.3.1、IPv4地址概述
在TCP/IP体系中,IP地址是一个最基本的概念,也是网络层最重要的概念之一。
IPv4地址就是给因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符。
IP地址由因特网名字和数字分配机构ICANN(Internet Corporation for Assigned Names and Numbers)进行分配。
- 我国用户可向亚太网信中心APNIC(Aisa Pacific Network Information Center)申请IP地址,需要缴费。不对个人开放
- 2011年2月3日,互联网号码分配局IANA(由ICANN行使职能)宣布,IP地址已经分配完毕。
- 我过在2014至2015年也逐步停止了向新用户和应用分配IPv4地址,同时全面开展商用部署IPv6。
32比特的IPv4地址不方便阅读、记录以及输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用。
4.3.2、分类编址的IPv4地址
4.3.3、划分子网的IPv4地址
为新增网络申请新的网络号会带来一下弊端:
- 需要等待时间和花费更多的费用
- 会增加其他路由器中路由表记录的数据量
- 浪费原有网络中剩余的大量IP地址
从主机号部分借用一部分作为子网号
32比特的子网掩码可以表名分类IP地址的主机号部分被借用了几个比特作为子网号
- 子网掩码使用连续的比特1来对应网络号和子网号
- 子网掩码使用连续的比特0来对应主机号
- 将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可得到IPv4地址所在子网的网络地址
4.3.4、无分类编址的IPv4地址
划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其他地址空间太小并没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁。
为此,因特网工程任务组IETF又提出了采用无分类编址的方法来解决IP地址紧张的问题,同时还专门成立IPv6工作组负责研究新版本IP以彻底解决IP地址耗尽问题。
1993年,IETF发布了无分类域间路由选择CIDR(Classless Inter-Domain Routing)的RFC文档:RFC1517~1519和1520.
- CIDR消除了传统的A类、B类和C类地址,以及划分子网的概念;
- CIDR可以更加有效地分配IPv4的地址空间,并且可以在新的IPv6使用之前允许因特网的规模继续增长。
CIDR使用“斜线记法”,或称CIDR记法。即在IPv4地址后面加上斜线“/”,在斜线后面写上网络前缀所占的比特数量。
CIDR实际上是将网络前缀都相同的连续的IP地址组成一个“CIDR地址块”。
我们只要知道CIDR地址块中任何一个地址,就可以知道该地址块的全部细节:
- 地址块的最小地址
- 地址块的最大地址
- 地址块中的地址数量
- 地址块聚合某类网络(A类、B类或C类)的数量
- 地址掩码(也可继续称为子网掩码)
路由聚合(构造超网)
4.3.5、IPv4地址的应用规划
定长的子网掩码FLASM (Fixed Length Subnet Mask)
- 使用同一个子网掩码来划分子网
- 每个子网所分配的IP地址数量相同,造成IP地址的浪费
子网划分方式不灵活:只能划分出2ⁿ个子网(n是从主机号部分借用的用来作为子网号的比特数量)
变长的子网掩码VLSM (Variable Length Subnet Mask)
- 使用不同子网掩码来划分子网
子网划分方式灵活:可以按需分配
每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费
4.4、IP数据报的发送和转发过程
IP数据包的发送和转发过程包含两个部分:
-
主机发送IP数据报
判断目的主机是否与自己在同一个网络
若在同一个网络,则属于直接交付;
若不在同一个网络,则属于间接交付,传输给主机所在网络的默认网络(路由器),由默认网关帮忙转发;
-
路由器转发IP数据
-
检查IP数据包首部是否出错:
若出错,则直接丢弃该IP数据报并通告源主机;
若没有出错,则进行转发;
-
根据IP数据报的目的地址在路由表中查找匹配的条目
若找到匹配的条目,则转发给条目中指示的下一跳;
若找不到,则丢弃该IP数据报并通告源主机;
-
主机C如何知道路由器R得存在?
路由器是隔离广播域的,也就是广播只能在自己网络范围内传播
4.5、静态路由配置及其可能产生的路由环路问题
静态路由配置指的是用户或者网络管理员使用路由器的相关命令给路由器人工配置路由表
- 这种人工配置方式简单、开销小,但是不能及时适应网络状态(流量、拓扑等)的变化
- 一般只在小规模网络中使用
使用静态路由配置可能会出现以下导致产生路由环路的错误:
- 配置错误
- 聚合了不存在的网络
- 网络故障
在需要考虑某种安全问题或者网络管理人员对网络的管理和测试的情况下,可以针对某台特定主机设定一个特定路由,在路由表中为该主机设置一个路由条目。
路由条目的类型
- 直连网络
- 静态路由(人工配置)
- 动态路由(路由选择协议)
特殊的静态路由条目
- 默认路由(目的网络0.0.0.0,地址掩码为0.0.0.0)
- 特定主机路由(目的网路欧威特定主机的IP地址,地址掩码为255.255.255.255)
- 黑洞路由(下一跳为null0)
为了防止IP数据报在路由环路中永久兜圈,在IP数据报首部设有生存时间TTL字段。
IP数据报进入路由器后,TTL字段的值减1。若TTL的值不等于0,则被路由器转发,否则被丢弃。
对于这种数据环路的情况,可以通过设置黑洞路由,将路由器聚合存在,但是实际不存在的路由设置一个NULL0接口(路由器内部的虚拟接口,就像是一个黑洞,IP数据报转发进去后有进无出)
针对这种情况,可以添加针对该直连网络的黑洞路由
假设一段时间后,故障消失了,R1可以自动得出其直连网络的接口0,并将之前设置的黑洞路由条目设置为失效状态
4.6、路由选择协议
4.6.1、路由选择协议概述
静态路由选择
- 由人工配置的网络路由、默认路由、特定主机路由、黑洞路由等都属于静态路由。
- 这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化。
- 一般只在小规模网络中采用
动态路由选择
- 路由器通过路由选择协议自动获取路由信息。
- 比较复杂、开销比较大。能较好地适应网络状态的变化。
- 适用于大规模网络
因特网所采用的路由选择协议的主要特点:
- 自适应:动态路由选择,能将较好地适应网络状态的变化
- 分布式:路由器之间交换路由信息
- 分层次:将整个因特网划分为许多较小的自治系统AS(Autonomous System)
自治系统之间称为域间路由选择,自制系统内称为域内路由选择。
路由器的工作流程:
-
信号从某个端口进入路由器,物理层将信号转换为比特流,送交数据链路层处理;
-
数据链路层从比特流中识别出帧,去掉帧头和帧尾后,送交网络层处理;
-
如果送交网络层的分组是普通数据分组,
- 则根据分组首部中的目的地址进行查表转发,若找不到匹配的转发条目,则丢弃该分组,否则按照匹配条目中所指示的端口进行转发;
- 网络层更新数据分组中首部某些字段的值,例如将数据分组的生存时间减1,然后送交数据链路层进行封装;
- 数据链路层将数据封装成帧,送交物理层处理;
- 物理层将帧看做是比特流,将其变换成相应的电信号进行发送
-
如果送交网络层的分组是路由器之间交换路由信息的路由报文
-
则把这种分组送交路由选择处理机
-
路由选择处理机根据分组的内容更新自己的路由表
路由表一般仅包含从目的网络到下一跳的映射
路由表需要对网络拓扑变化的计算最优化
转发表是从路由表得出的
转发表的结果应当使查找过程最优化
-
路由选择处理机除了处理收到的路由报文外,还会周期性的给其他路由器发送自己所知道的路由信息
-
路由器的各端口还应有输入缓冲区和输出缓冲区
- 输入缓冲区:用于暂存新进入路由器但还来不及处理的分组
- 输出缓冲区:用来暂存已经处理完毕但是还来不及发送的分组
路由器的端口一般都具有输入和输出的功能
4.6.2、路由信息协议RIP的基本工作原理
路由信息协议RIP(Routing Information Protocol)是内部网关协议LGP中最先得到广泛使用的协议之一,其相关标准文档为RFC 1058
RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量D-V(Distance-Vector)”
RIP使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离。
- 路由器到直连网络的距离定义为1
- 路由器到非直连网络的距离定义为所经过的路由器数加1
- 允许一条路径最多只能包含15个路由器。“距离”等于16时相当于不可达。因此,RIP只适用于小型互联网。
RIP认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由。
当到达同一目的网络有多条“距离相等”的路由时,可以进行等价负载均衡。
RIP包含以下三个要点:
- 和谁交换信息 仅和相邻路由器交换信息
- 交换什么信息 自己的路由表
- 何时交换信息 周期性交换(例如每30秒)
RIP协议存在“坏消息传得慢”的问题:
“坏消息传播得慢”又称为路由环路或距离无穷计数问题,这是距离向量算法的一个固有问题。可以采取多种措施减少出现该问题的概率或减小该问题带来的危害。
- 限制最大路径距离为15(16表示不可达)
- 当路由表发生变化时就立即发送更新报文(即“触发更新”),而不仅是周期性发送
- 让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送(即“水平分割”)
4.6.3、 开发最短路径有限OSPF的基本工作原理
4.6.4、边界网关协议BGP的基本工作原理
4.7、IPv4数据报的首部格式
版本
- 占4比特,表示IP协议的版本。
- 通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)
首部长度
- 占4比特, 表示IP数据报首部的长度。该字段的取值以4字节为单位。
- 最小十进制取值为5,表示IP数据报首部只有20字节固定部分;
- 最大十进制取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分。
可选字段
- 长度从1个字节到40个字节不等。用来支持排错、测量及安全等措施。
- 可选字段增加了IP数据报的功能,但这同时也使得IP数据报的首部长度称为可变的。这就增加了每一个路由器处理IP数据报的开销。实际上可选字段很少被使用。
填充字段
- 确保首部长度为4字节的整数倍,使用全0进行填充。
区分服务
- 占8比特,用来获得更好的服务。
- 该字段在旧标准中叫作服务类型,但实际上一直没有被使用过。
- 1998年,因特网工程任务组IETF把这个字段改名为区分服务。
- 利用该字段的不同数据可提供不同等级的服务质量。
- 只有在使用区分服务时,该字段才起作用。一般情况下都不使用该字段。
总长度
- 占16比特,表示IP数据报的总长度(首部+数据载荷)。
- 最大取值为十进制的65535,以字节为单位
标识、标志、片偏移
这三个字段共同用于IP数据报分片
标识
- 占16比特,属于同一个数据报的各分片数据报应该具有相同的标识。
- IP软件维持一个计数器,每产生一个数据报,计数器值加1,并将此值赋给标识字段。
标志
- 占3个比特, 各比特含义如下:
- DF位:1表示不允许分片;0表示允许分片
- MF位:1表示“后面还有分片”;0表示“这是最后一个分片”
- 保留位:必须为0
片偏移
- 占13比特, 指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位。
- 片偏移以8个字节为单位。
生存时间TTL
- 占8比特,最初以秒为单位,最大生存周期为255秒;路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器上所耗费的时间,若不为0就转发,否则就丢弃。
- 现在以“跳数”为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃。
协议
- 占8比特, 指明IPv4数据报的数据部分是何种协议数据单元。
- 常用的一些协议和相应的协议字段值如下
首部检验和
- 占16比特,用来检测首部在传输中是否出现差错。比RCR检验码简单, 称为因特网检验和
- IP数据报每经过一个路由器, 路由器都要重新计算首部检验和,因为某些字段(生存时间、标志、片偏移等)的取值可能发生变化
- 由于IP层本身并不提供可靠传输的服务,并且计算首部校验和是一项耗时的操作,因此在IPv6中,路由器不再计算首部校验和,从而更快转发IP数据报。
源IP地址和目的IP地址
- 各占32比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址。
4.8、网际控制报文协议ICMP
为了更有效地转发IP数据报和提高交付成功的机会,在网际层是用了网际控制报文协议ICMP(Internet Control Message Protocol)。
主机或路由器使用ICMP来发送差错报告报文和询问报文。
ICMP报文被封装在IP数据报中发送。
ICMP差错报告报文共有以下五种:
- 终点不可达
- 当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种错误。
- 源点抑制
- 当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。
-
时间超过
-
当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值减1。
若结果不为0,则将该IP数据报转发出去;若结果为0,除丢弃该IP数据报外,还要向源点发送时间超过报文。
-
另外,当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文。
-
- 参数问题
- 当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文。
- 改变路由(重定向)
- 路由器把改变路由器报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)
以下情况不应该发送ICMP差错报告报文:
- 对ICMP差错报告报文不再发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
- 对具有多播地址的数据报都不发送ICMP差错报告报文
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文
常用的ICMP询问报文有以下两种:
- 回送请求和回答
- ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。
- 收到此报文主机必须给源主机或路由器发送ICMP回送回答报文。
- 这种询问报文用来测试目的站是否可达及了解其有关状态。
- 时间戳请求和回答
- ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间。
- 在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一种有多少秒。
- 这种询问报文用来进行时钟同步和测量时间。
4.9、虚拟专用网VPN与网络地址转换NAT
4.9.1、虚拟专用网VPN
Virtual Private Network
利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网。
由于IPv4地址的紧缺,一个机构能够申请到的IPv4地址数量往往小于本机构所拥有的主机数量。因此,虚拟专用网中的各主机所分配的地址应该是本机构可自由分配的专用地址,而不是需要申请的、在因特网上使用的公有地址。
同一机构内不同部门的内部网络所构成的虚拟专用网VPN又称为内联网VPN。
有时一个机构的VPN需要有某些外部机构(通常就是合作伙伴)参加进来。这样的VPN就称为外联网VPN。
在外地工作的员工需要访问公司内部的专用网络时,只要在任何地点接入到因特网,运行驻留在员工PC中的VPN软件,在员工的PC和公司的主机之间建立VPN隧道,即可访问专用网络中的资源。这种VPN称为远程接入VPN。
4.9.2、网络地址转换NAT(Network Address Translation)
虽然因特网采用了五分类编址方式来减缓IPv4地址空间耗尽的速度,但由于因特网用户数目的激增, 特使是大量小型办公室网络和家庭网络接入因特网的需求不断增加,IPv4地址空间即将面临耗尽的危险仍然没有被解除。
1994年提出来一种网络地址转换NAT的方法再次缓解了IPv4地址空间即将耗尽的问题。
NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。
该转换方法存一个问题:如果NAT路由器具有N个全球IP地址,那么至多只能有N个内网主机能够同时和因特网上的主机通信。
由于绝大多数的网路应用都是使用运输层协议TCP或UDP来传送数据,因此可以利用网络层的端口号和IP地址一起来进行转换。
这样,用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。这种将端口号和IP地址一起进行装换的技术叫作网络地址与端口号转换NAPT(Network Address and Port Tanslation)。
五、运输层
5.1、运输层概述
5.2、运输层端口号、复用与分用的概念
运行在计算机上的进程使用进程标识符PID来标志。
因特网上的计算机并不是使用统一的操作系统,不同操作系统(windows,Linux,MacOS)又使用不同格式的进程标识符。
为了使运行不同操作系统的计算机的应用进程之间能够进行网络通信,就必须使用同一的方法对TCP/IP体系的应用进程进行标识。
TCP/IP体系的运输层使用端口号来区分应用层的不同应用进程。
- 端口号使用16比特表示,取值范围0~65535;
- 熟知端口号:0~1023,IANA把这些端口号指派给了TCP/IP体系中最重要的一些应用协议,例如:FTP使用21/20,HTTP使用80,DNS使用53。
- 登记端口号:1024~49151,为没有熟知端口号的应用程序使用。使用这类端口号必须在IANA按照规定的手续登记,以防止重复。例如:Microsoft RDP 微软远程桌面使用的端口是3389.
- 短暂端口号:49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。
- 端口号只具有本地意义,即端口号只是为了标识本计算机应用层中的各进程,在因特网中,不同计算机中的相同端口号是没有联系的。
流程:
- 构建DNS请求报文
- 将该UDP请求数据报通过以太网发送给DNS服务器
- DNS服务器解析后,将UDP用户响应数据报封装在IP数据报中发送给发送方
- 知道域名对应的IP地址后,可以开始构建HTTP请求,并发送该请求
- Web服务器发送响应报文回用户PC
5.3、UDP和TCP的对比
5.4、TCP的流量控制
一般来说,我们总是希望数据传输得更快一些。
- 但如果发送方把数据发送的过快,接收方就可能来不及接收,这就会造成数据的丢失。
所谓流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。
利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。
零窗口探测报文段也有重传计时器,重传计时器超时后,零窗口探测报文段会被重传
TCP中规定不论接收方有没有空间,都必须接收发送方的3种报文:零窗口检测报文段、确认报文段、携带有紧急数据的报文段。
5.5、TCP的拥塞控制
在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。这种情况就叫拥塞(congestion)。
- 在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。
若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。
为了介绍四种拥塞控制算法的基本原理,假定以下条件:
慢开始和拥塞避免算法是1988年提出的TCP拥塞控制算法(TCP Tahoe版本)。
1990年又增加了两个新的拥塞控制算法(改进TCP的性能),这就是快重传和快恢复(TCP Reno版本)。
采用快重传算法可以让是发送方尽早知道发生率个别报文段的丢失。
所谓快重传,就是使发送方尽快进行重传,而不是等超时重传计时器超时再重传。
- 要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认;
- 及时收到了失序的报文段也要立即发出对已收到的报文段的重复确认。
- 发送方一旦收到3个连续的重复确认,就将相应的报文段立即重传,而不是等该报文段的超时重传计时器超时再重传。
- 对于个别丢失的报文段,发送方不会出现超时重传,也就不会误认为出现了拥塞(进而降低拥塞窗口cwnd为1)。使用快重传可以使整个网络的吞吐量提高约20%。
发送方一旦收到3个重复确认,就知道现在只是丢失了个别的报文段。于是不启动慢开始算法,而执行快恢复算法;
- 发送方将慢开始门限ssthresh值和拥塞窗口cwnd值调整为当前窗口的一半;开始执行拥塞避免算法。
- 也有的快恢复实现是把快恢复开始时的拥塞窗口cwnd值再增大一些,即等于新的ssthresh + 3。
- 既然发送方收到3个重复的确认,就表名有3个数据报文段已经离开了网络;
- 这3个报文段不在消耗网络资源而是停留在接收方的接收缓存中;
- 可见现在网络中不是堆积了报文段而是减少了3个报文段。因此可以适当吧拥塞窗口扩大些。
5.6、TCP超时重传时间的选择
TCP超时重传时间的选择是TCP最复杂的问题之一
- 不能直接用某次测量得到的RTT样本值来计算超时重传时间RTO
- 要利用每次的量得到的RTT样本,计算加权平均往返时间RTTs(又称为平滑的往返时间)
5.7、TCP可靠传输的实现
虽然发送方的发送窗口是根据接收方的接收窗口设置的,但在同一时刻,发送发的发送窗口并不总是和接收方的接收窗口一样大。
- 网络传送窗口值需要经历一定的时间滞后,并且这个时间还是不确定的。
- 发送发还可根据网路当时的拥塞情况适当减小自己的发送窗口尺寸。
对于不按序到达的数据应如何处理,TCP并无并且规定。
- 如果接收方把不按需到达的数据一律丢弃,那么接收窗口的管理将会比较简单,但这样做对网路资源的利用不利,因为发送方会重复传送较多的数据。
- TCP通常对不按需到达的数据是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。
TCP要求接收方必须有累计确认和捎带确认机制,这样可以减小传输开销。接收方可以在合适的时候发送确认,也可以在自己有数据要发送时把确认信息顺便捎带上。
-
接收方不应过分推迟发送确认,否则会导致发送方不必要的超时重传,这反而浪费了网路的资源。
TCP标准规定,确认推迟的时间不应超过0.5秒。若收到一连串具有最大长度的报文段,则必须每隔一个报文段就发送一个确认[RFC 1122]
-
捎带确认实际上并不经常发生,因为大多数应用程序很少同时在两个方向上发送数据。
TCP的通信是全双工通信。通信中的每一方都在发送和接收报文段。因此,每一方都有自己的发送窗口和接收窗口。在谈到这些窗口时,一定要弄清楚是哪一方的窗口。
5.8、TCP的运输连接管理
5.8.1、TCP的连接建立
TCP是面向连接的协议,它基于运输连接来传送TCP报文段
TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程
TCP运输连接建立有以下三个阶段:
TCP的运输连接管理就是使运输连接的建立和释放都能正常的进行。
TCP的连接建立要解决以下三个问题:
-
使TCP双方都能确知对方的存在;
-
使TCP双方能够协商一些参数(如窗口最大值、是否使用窗口扩大选项和时间戳选项和服务质量等等);
-
使TCP双方能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。
为什么TCP客户端进行最后还要发送一个普通的TCP确认报文段呢?是否多余?
答案是否定的。
- 三次握手建立连接是为了防止已经失效的连接请求报文段突然又传到服务端,产生错误。
例如,下面采用两次握手就建立连接:
5.8.2、TCP的连接释放
为什么不发送报文段后直接关闭,而是要等待2MSL个时间后才关闭?,是否有必要?
5.9、TCP报文段的首部格式
为了实现可靠传输,TCP采用了面向字节流的方式。
但TCP在发送数据时,是从发送缓存取出一部分或全部字节并给其添加一个首部使之成为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报文段的首部长度。
- 首部固定长度为20字节,因此数据偏移字段的最小值为(0101)₂
- 首部最大长度为60字节,因此数据偏移字段的最大值为(1111)₂
保留:占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报文段中进行发送。紧急指针会指出本报文段数据载荷部分包含了多长的紧急数据,紧急数据之后是普通数据。
选项(长度可变):
- 最大报文段长度MSS选项:TCP报文段数据载荷部分的最大长度。
- 窗口扩大选项:为了扩大窗口(提高吞吐率)。
- 时间戳选项:
- 用来计算往返时间RTT
- 用于处理序号超范围的情况,又称为防止序号绕回PAWS。
- 选择确认选项:用来实现选择确认功能
**填充:**由于选项的长度可变,因此使用填充来确保报文段首部能被4整除(因为数据偏移字段,也就是首部长度字段,是以4字节为单位的)。
六、应用层
6.1、应用层概述
应用层是计算机网络体系解耦股的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分。
- 早期基于文本的应用(电子邮件、远程登录、文件传输、新闻组)
- 20实际90年代将因特网带入千家万户的万维网www
- 当今流行的即时通信、P2P文件共享及各种音视频应用
- 计算设备的小型化和“无处不在”,宽带住宅接入和无线接入的日益普及和迅速发展,为未来更多的新型应用提供了广阔的舞台。
6.2、客户/服务器方式(C/S)和对等方式(P2P)
客户/服务器(Client/Server,C/S)方式
- 客户和服务器是指通信中所涉及的两个应用进程。
- 客户/服务器方式所描述的是进程之间服务和被服务的关系。
- 客户数服务请求放,服务器是服务提供方。
- 服务器总是处于运行状态,并等待客户的服务请求。服务器具有固定端口号(例如HTTP服务器的默认端口号为80),而运行服务器的主机也具有固定的IP地址。
C/S方式是因特网上传统的、同时也是最成熟的方式,很多我们熟悉的网络应用采用的都是C/S方式。包括万维网WWW、电子邮件、文件传输TFP等。
基于C/S方式的应用服务通常是服务集中性的,即应用服务集中在网络中比客户计算机少得多的服务器计算机上。
- 由于一台服务器计算机要为多个客户机提供服务,在C/S应用中,常会出现服务器计算机跟不上众多客户机请求的情况。
- 为此,在C/S应用中,常用计算机群集(或服务器场)构建一个强大的虚拟服务器。
对等(Peer-toPeer,P2P)方式
- 在P2P方式中,没有固定的服务请求者和服务提供者,分布在网络边缘各端系统中的应用进程是对等的,被称为对等方。对等方相互之间直接通信,每个对等方既是服务的请求者,又是服务的提供者。
目前,在因特网上流行的P2P应用主要包括P2P文件共享、即时通信、P2P流媒体、分布式存储等。
基于P2P的应用是服务分散型的,因为服务不是集中在烧水壶服务器计算机中,而是分散在大量对等计算机中,这些计算机并不为服务提供商所有,而是为个人控制的左面计算机和笔记本电脑,他们通常位于住宅、校园和办公室中。
P2P方式的最突出特性之一就是它的可扩展性,因为系统没增加一个对等方,不仅增加的是服务的请求者,同时也增加了服务的提供者,系统性能不会因规模的增大而降低。
P2P方式具有成本上的优势,因为它通常不需要庞大的服务器设施和服务器带宽。为了降低成本,服务提供商对于P2P方式用于应用的兴趣越来越大。
6.3、动态主机配置协议DHCP
6.4、域名系统DNS(Domain Name System)
因特网采用层次树状结构的域名结构
域名的结构由若干个分量租场,各分量之间用“点”隔开,分别代表不同级别的域名。
- 每一级的域名都由英文字母和数字组成,不超过63个字符,不区分大小写字母。
- 级别最低域名写在最左边,而级别最高的顶级域名写在最右边。
- 完整的域名不超过255个字符
域名系统既不规定一个域名需要包含多少个下级域名,也不对顶每一级的域名代表什么意思。
各级域名右其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构ICANN进行管理。
顶级域名TLD(TOP Level Domain)分为以下三类:
- 国家顶级域名nTLD:采用ISO 3166的规定。如CN表示中国,us表示美国,uk表示英国,等等
- 通用顶级域名gTLD:最常见的通用顶级域名有七个,即:com(公司企业)、net(网络服务架构)、org(非盈利组织)、int(国际组织)、edu(美国教育机构)、gov(美国政府部门)、mil(美国军事部门)。
- 反向域arpa:用于反向域名解析,即IP地址反向解析为域名。
在国家顶级域名下注册的二级域名均由该国家自行确定。例如,顶级域名为jp的日本,将其教育和企业机构的二级域名定为ac和co,而不是edu和com。
我国则将二级域名划分为以下两类:
- 类别域名:共七个:ac(科研机构)、com(工、商、金融等企业)、edu(教育机构)、gov(政府部门)、net(提供网络服务的机构)、mil(军事机构)和org(非盈利性组织)。
- 行政区域名:共34个,适用于我国的各省、自治区、直辖市。例如:bj为北京市、sh为上海市、js为江苏省,等等
域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。显然不能将所有信息都储存在一台域名服务器中。DNS使用分布在各地的域名服务器来实现域名到IP地址的转换。
域名服务器可以划分为以下四种不同的类型:
-
根域名服务器
根域名服务器是最高层次的域名服务器。每个根域名服务器都知道所有的顶级域名服务器的域名及其IP地址。因特网上共有13个不同IP地址的根域名服务器。尽管我们将13个根域名服务器中的每一个都视为单个的服务器,但“每台服务器”实际上是由许多分布在世界各地的计算机构成的服务器群集。当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器。这就加快了DNS的查询过程,同时也更合理地利用率因特网的资源。根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址。
-
顶级域名服务器
这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时就给出相应的回答(可能是最后的结果,也可能是下一级权限域名服务器的IP地址)。
-
权限域名服务器
这些域名服务器负责管理某个区的域名。每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与IP地址的映射关系。另外,权限域名服务器还知道其下级域名服务器的地址。
-
本地域名服务器
本地域名服务器不属于上述的域名服务器的等级结构。当一个主机发出DNS请求报文时,这个报文就首先被送往该主机的本地域名服务器。本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中。每一个因特网服务提供者ISP,一个大学,甚至一个大学里的学院,都可以拥有一个本地域名服务器,它有时也称为默认域名服务器。本地域名服务器离用户较近,一般不超过几个路由器的距离,也有可能就在同一个局域网中。本地域名服务器的IP地址需要直接配置在需要域名解析的主机中。
为了提供DNS的查询速率,并减轻根域名服务器的符合和减少因特网上的DNS查询报文数量,在域名服务器汇总广泛使用了高速缓存。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
由于域名与IP地址的映射关系并不是永久不变,为保持告诉缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项(例如,每个项目只存放两天)。
不但在本地域名服务器中需要告诉缓存,在用户主机中也很需要。许多用户主机在启动时从本地域名服务器下载域名和IP地址的全部数据库,维护存放在自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。同理,主机也需要保持告诉缓存中内容的正确性。
6.5、文件传送协议FTP
将某台计算中的文件通过网络传送到可能相距很远的另一台计算机中,是一项基本的网络应用,即文件传送。
文件传送协议FTP(File Transfer Protocol)是因特网上使用得最广泛的文件传送协议。
- FTP提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用ASCII码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)。
- FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
在因特网发展的早期阶段,用FTP传送文件约占整个因特网的通信量的三分之一,而由电子邮件和域名系统所产生的通信量还要小于FTP所产生的通信量。只是到了1995年,万维网WWW的通信量才首次超过了FTP。
FTP客户和服务器之间要建立以下两个并行的TCP连接:
- 控制连接,在整个回话期间一直保持打开,用于传送FTP相关控制命令。
- 数据连接,用于文件传输,在每次文件传输时才建立,传输结束就关闭。
- 默认情况下,FTP使用TCP 21端口进行控制连接,TCP 20端口进行数据连接。但是,是否使用TCP 20端口建立数据连接与传输模式有关,主动方式使用TCP 20 端口,被动方式由服务器和客户端自行协商决定。
6.6、电子邮件
电子邮件(E-mail)是因特网上最早流行的一中应用,并且仍然是当今因特网上最重要、最实用的应用之一。
传统的电话通信属于实时通信,存在以下两个缺点:
- 电话通信的主叫和被叫双方必须同时在场;
- 一些不是十分紧迫的电话也常常不必要地打断人们的工作和休息。
而电子邮件与邮政系统的寄信相似。
- 发件人将邮件发送到自己使用的邮件服务器;
- 发件人的邮件服务器将收到邮件按其目的地址转发到收件人邮件服务器中的收件人邮箱;
- 收件人在方便的时候访问收件人邮件服务器中自己的邮箱,获取收到的电子邮件。
电子邮件使用方便、传递迅速而且费用低廉。它不仅可以传送文字信息,而且还可附上声音和图像。
由于电子邮件的广泛使用,现在许多国家已经正式取消了电报业务。在我国,电信局的电报业务也因电子邮件的普及而濒临消失。
电子邮件系统采用客户/服务器方式。
电子邮件系统的三个主要组成构件:用户代理,邮件服务器,以及电子邮件所需的协议。
- 用户代理是用户与电子邮件系统的接口,又称为电子邮件客户端软件。
- 邮件服务器是电子邮件系统的基础设施。因特网上所有的ISP都有邮件服务器。其功能是发送和接收邮件,同时还要负责维护用户的邮箱。
- 协议包括邮件发送协议(例如SMTP)和邮件读取协议(例如POP3,IMAP)。
电子邮件个信息格式并不是由SMTP定义的,而是RFC 822中单独定义的。这个RFC文档已在2008年更新为RFC 5322。这个RFC文档已在2008年更新为RFC 5322.一个电子邮件有信封和内容两部分。而内容又由首部和主体两部分构成。
SMTP协议只能传送ASCII码文本数据,不能传送可执行文件或其他的二进制对象。
SMTP不能满足传送多媒体邮件(例如带有图片、音频和视频数据)的需要。并且许多其他非英语国家的文字(例如中文、俄文、甚至带有重音符号的法文或德文)也无法用SMTP传送。
为解决SMTP传送非ASCII码文本的问题,提出来多用途因特网邮件扩展MIME(Multipurpose Internet Mail Extensions)。
- 增加了5个新的邮件首部字段,这些字段提供了有关邮件主题的信息。
- 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
- 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
实际上,MIME不仅仅用于SMTP,也用于后面的同样面向ASCII字符的HTTP。
常用的邮件读取协议有以下两个:
-
邮局协议POP(Post Office Protocol),POP3是其第三个版本,是因特网正式标准。
非常简单、功能有限的邮件读取协议。用户只能以下载并删除方式或下载并保留方式从邮件服务器下载邮件到用户方计算机。不允许用户在邮件服务器上管理自己的邮件。(例如创建文件夹,对邮件进行分类管理等)。
-
因特网邮件访问协议IMAP(Internet Message Access Protocol),IMAP4是其第四个版本,目前还只是因特网建议标准。
功能比POP3强大的邮件读取协议。用户在自己的计算机上就可以操控邮件服务器中的邮箱,就像在本地操控一样,因此IMAP是一个连接协议。
-
POP3和IMAP4都采用基于TCP连接的用户/服务器方式。POP3使用熟知端口110,IMAP4使用熟知端口143。
基于万维网的电子邮件
- 通过浏览器登录(提供用户名和口令)邮件服务器万维网网站就可以撰写、收发、阅读和管理电子邮件。这种工作模式与IMAP很类似,不同的是用户计算机无需安装专门的用户代理程序,只需要使用通用的万维网浏览器。
- 邮件服务器网站通常都提供非常强大和方便的邮件管理功能,用户可以在邮件服务器网站上管理和处理自己的邮件,而不需要将邮件下载到本地进行管理。
6.7、万维网WWW
万维网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连接,当收到响应后就立即关闭连接。
- 每请求一个文档就要有两倍的RTT的开销。若一个网页上有很多引用对象(例如图片等),那么请求每一个对象都需要花费2RTT的时间。
- 为了减小时延,浏览器通常会建立多个并行的TCP连接同时请求多个对象。但是,这会大量占用万维网服务器的资源,特别是万维网服务器往往要同时服务于大量客户的请求,这会使其负担很重。
HTTP/1.1采用持续连接方式。该方式下,万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和相应报文。这并不局限于传送同一个页面上引用的对象,而是只要这些文档都在同一个服务器上就行。
- 为了进一步提供效率,HTTP/1.1的持续连接还可以使用流水线方式工作,即浏览器在收到HTTP的响应报文之前就能够连续发送多个请求报文。这样的一个接一个的请求报文到达服务器后,服务器就发回一个接一个的响应报文。这样就节省了很多歌RTT时间,使TCP连接中的空闲时间减少,提高了下载文档的效率。
使用Cookie在服务器上记录用户信息
- 早期的万维网应用非常简单,仅仅是用户查看存放在不同服务器上的各种静态的文档。因此HTTP被设计为一种无状态的协议。这样可以简化服务器的设计。
- 现在,用户可以通过万维网实现各种复杂的应用,如网上购物、电子商务等。这些应用往往需要万维网服务器能能够识别用户。
- Cookie提供了一种机制使得万维网服务器能够“记住”用户,而无需用户主动提供用户表示信息。也就是说,Cookie是一种对无状态的HTTP进行状态化的技术。
万维网缓存与代理服务器
- 在万维网中还可以使用缓存机制以提供万维网的效率。
- 万维网缓存又称为Web缓存(Web Cache),可位于客户机,也可位于中间系统上,位于中间系统上的Web缓存又称为代理服务器(Proxy Server)。
- Web缓存把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址去因特网访问该资源。
若Web缓存的命中率比较高,可以大大减少链路上的通信量,因而大大减少了访问因特网的时延。