参考教材:计算机网络 第七版(谢希仁 版本)
21世纪的一些重要特征就是数字化、网络化和信息化,它是一个以网络为核心的信息时代。
“三网”指的是:电信网络、广播电视网络(有线电视网络)、计算机网络。
Internet的中文译名并不统一,现有译名有两种:
Internet是由数量极大的各种计算机网络互连起来的,互联网能够体现出Internet最主要的特征。
计算机网络(简称为网络)是由若干结点和连接这些结点的链路组成。
网络中的结点可以是计算机、集线器、交换机或路由器等。
网络和网络还可以通过路由器互连起来,这样就构成了一个覆盖范围更大的网络,即互联网(或互连网),因此互联网是“网络的网络”。
网络把许多计算机连接在一起,而互连网则把许多网络通过路由器连接在一起。
与网络相连的计算机常称为主机。
[RFC 1208] Internet 与 internet 的区别:
以小写字母 i 开始的internet (互连网)是一个通用名词,泛指由多个计算机网络互连而成的计算机网络。
以大写字母 I 开始的Internet (互联网,或因特网)是一个专用名词,指当前全球最大的、开放的、由众多网络相互连接而成的特定互连网,它采用 TCP/IP 协议族作为通信的规则,且前身是美国的APRANET。
因特网拓扑结构从其工作方式上看可以划分为两大块:
1. 边缘部分:由所有连接在互联网上的主机组成,这部分是用户直接使用的,用于进行通信(传送数据、音频或视频)和资源共享。
2. 核心部分:由大量网络和连接这些网络的路由器组成,这部分是为边缘部分提供服务的(提供连通性和交换)。
处在互联网边缘的部分就是连接在互联网上的所有的主机,这些主机又称为端系统(end system),“端” 就是 “末端” 的意思。
由于“进程” 就是 “运行着的程序” ,因此这也就是指:“主机A的某个进程和主机B上的另一个进程进行通信。” 这种比较严密的说法通常可以简称为 “计算机之间通信”
网络边缘的端系统之间的通信方式可划分为两类:客户—服务器方式(C/S方式)、对等方式(P2P方式)。
这种方式在互联网上是最常用的,也是最传统的方式。
客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。
此方式描述的是进程之间服务和被服务的关系。
主要特征为:客户是服务的请求方,服务器时服务提供方。
服务请求方和服务提供方都要使用网络核心部分所提供的服务。
客户程序:
1. 被用户调用后运行,在通信时主动向远地的服务器发起通信(请求通信)。
因此,客户程序必须知道服务器程序的地址。
2. 不需要特殊的硬件和很复杂的操作系统。
服务器程序:
1. 一种专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。
2. 系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。
不需要知道客户程序的地址。
3. 一般需要有强大的硬件和高级的操作系统支持。
客户和服务器指的是计算机进程(软件)。
两台主机在通信时并不区分哪一个是服务请求方,哪一个是服务提供方。
只要两台主机都运行了对等连接软件(P2P软件),就可以进行平等的、对等连接通信。
本质上仍可看做是使用客户—服务器方式,只是对等连接中的每一台主机既是客户又同时是服务器。
路由器是一种专用计算机,实现分组交换的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。
从通信资源的分配角度来看,交换就是按照某种方式动态地分配传输线路的资源。
此过程必须经过 “建立连接(占用通信资源)—— 通话(一直占用通信资源)—— 释放连接(归还通信资源)”
电路交换的一个重要特点是:在通话的全部时间内,通话的两个用户始终占用端到端的通信资源。(面向连接的)
分组交换采用存储转发技术,其主要特点是面向无连接。
- 通常把要发送的整块数据成称为一个报文。在发送报文之前,先把较长的报文分成一个个更小的等长数据段,每个数据段加上一些由必要的控制信息组成的首部,就构成了一个分组。
- 分组又称为 “包”,而分组的首部也可以称为 “包头”。
主机是为用户进行信息处理的,并且可以和其他主机通过网络交换信息。
路由器则是用来转发分组的,即进行分组交换的。
分组交换的优点有:高效、灵活、迅速、可靠。
数据传送阶段的主要特点:
电路交换——整个报文的比特流连续地从原点到达终点,好像在一个管道中传送;
报文交换——整个报文先传送到相邻结点,全部存储下来后查找转发表,转发到下一个结点;
分组交换——单个分组(这只是整个报文的一部分)传送到相邻结点,存储下来后查找转发表,转发到下一个节点。
1994年4月20日中国用 64 kbit/s 专线正式连入互联网。
规模最大的几个公用计算机网络:
- 中国电信互联网 CHINANET (原来的中国公用计算机互联网)
- 中国联通互联网 UNINET
- 中国移动互联网 CMNET
- 中国教育和科研计算机网 CERNET
- 中国科学技术网 CSTNET
[ PETE11] 计算机网络的定义:由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现特定目的。这些可编程的硬件用来传送多种不同类型的数据,并能支持广泛的日益增长的应用。
“可编程的硬件” 表明这种硬件一定包含有中央处理器 CPU。
广域网WAN:作用范围通常为几十到几千公里,也称为远程网,是互联网的核心部分。
城域网MAN:作用范围一般是一个城市,距离约为5 ~ 50 km。
局域网LAN:一般采用微型计算机或者工作站通过高速通信线路相连(速率通常在 10 Mbit/s 以上),但地理上局限在较小的范围(如 1 km左右)
个人区域网PAN:将属于个人使用的电子书设备用无线技术连接起来的网络,也称为无线个人局域网WPAN(Wireless PAN),作用范围大约在10 m 左右。
若中央处理机之间的距离非常近(如仅1米的数量级或者甚至更小),则一般称为多处理机系统。
公用网:所有愿意按电信公司的规定交纳费用的人都可以使用这种网络。也称为公众网。
专用网:为满足本单位的特殊业务工作的需要而建造的网络。这种网络不向本单位以外的人提供服务。
接入网(AN Access Network)又称为本地接入网或居民接入网。
性能指标
- 速率:网络技术中速率指的是数据的传送速率,也称为数据率或比特率。
- 带宽:(本是指某个信号具有的频带宽度,即该信号所包含的各种不同频率成分所占据的频率范围,单位为赫)
- 吞吐量:表示单位时间内通过某个网络(或信道、接口)的实际的数据量。(受到网络的带宽或网络的额定速率的限时)
- 时延:指数据(一个报文或分组,甚至是比特)从网络(或链路)的一端传送到另一端所需的时间。也称为 延迟 或 迟延,有发送时延、传播时延、处理时延和排队时延几种分类。
- 时延带宽积:表示某个链路可以容纳的比特数,单位为 bit。
公式: 时延带宽积 = 传播时延 X 带宽- 往返时间RTT:指双向交互一次所需的时间,包括处理时延、排队时延和转发数据时的发送时延。
- 利用率:有信道利用率与网络利用率两种。信道利用率指出某信道有百分之几的时间是被利用的(有数据通过)。网络利用率则是全网络的信道利用率的加权平均值。
为进行网络中的数据交换而建立的规则、标准或约定称为网络协议,简称协议,其三个要素是:语法、语义,同步。
协议通常有两种不同的形式:一种是使用便于人来阅读和理解的文字的描述,另一种是使用让计算机能够理解的程序代码。
分层带来的好处:各层之间是独立的、灵活性好、结构上可分割开、易于实现和维护、能促进标准化工作。
计算机网络的各层及其协议的集合,称为网络的体系结构。
五层协议的体系结构包括:物理层、数据链路层、网络层、运输层、应用层。
用户数据报协议UDP,面向无连接的,数据传输的单位是用户数据报,不保证提供可靠交付,但尽最大努力交付;传输控制协议TCP,面向连接的,数据传输的单位是报文段,能够提供可靠交付。
协议是控制两个对等实体(或多个实体)进行通信的规则的集合。
OSI把层与层之间的交换的数据的单位称为服务数据单元(SDU)。
OSI把对等层次之间传送的数据的单位称为该层的协议数据单元(PDU)。
物理层考虑的是怎样在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。
尽可能地屏蔽这些传输媒体和通信手段的差异。
用于物理层的协议也称为物理层规程。
将物理层的主要任务描述为确定与传输媒体的接口有关的一些特性:
数据在计算机内部多采用并行传输方式,但数据在通信线路(传输媒体)上的传输方式一般都是串行传输,即逐个比特按照时间顺序传输。因此物理层还有完成传输方式的转换。
一个数据通信系统可划分为三大部分:源系统、传输系统、目的系统。
源系统(发送端或发送方)一般包括以下两个部分:
1.源点:源点设备产生要传输的数据。(也称为源站,信源)
2.发送器:通常源点生成的数字比特流要通过发送器编码后才能够在传输系统中进行传输。
典型的发送器就是调制器。
目的系统(接受端或接收方)一般也包括两个部分:
1.接收器:接受传输系统传送过来的信号,并转换为能够被目的系统处理的信息。
典型的接收器就是解调器。
2.终点:终点设备从接收器获取传送过来的数字比特流,然后将信息输出。(也称为目的站,信宿)
通信的目的是传送消息;数据是运送消息的实体;信号则是数据的电气或电磁的表现。
根据信号中代表的消息的参数的取值方式不同,信号可以分为两大类:模拟信号(连续信号)、数字信号(离散信号)。
代表不同离散数值的基本波形就成为码元。
从通信的双方信息交互的方式来看可以有以下几种基本方式:单向通信(单工通信)、双向交替通信(半双工通信)、双向同时通信(全双工通信)。
来自信源的信号通常称为基带信号,即基本频带信号。经过载波调制的信号称为带通信号。
调制可分为两大类:
限制码元在信道上的传输速率的因素有两个:信道能够通过的频率范围、信噪比。
在任何信道中,码元传输的速率是有上限的,传输速率超过此上限,就会出现严重的码间串扰的问题,使接收端对码元的判决(即识别)成为不可能。
ADSL(非对称数字用户线 Asymmetric Digital Subscriber Line)
ADSL技术是用数字技术对现有的模拟电话用户线进行改造,使它能够承载宽带数字业务。其中,“非对称”是指ADSL的下行(从ISP到用户)带宽远远大于上行(从用户到ISP)带宽。
传统的微波通信主要有两种方式:即地面微波接力通信和卫星通信。
复用:通信技术中的基本概念,在计算机网络中的信道广泛地使用各种复用技术。
统计时分复用(STDM)
1.集中器常使用这种统计时分复用。
2.统计时分复用使用STDM帧来传送复用发数据。
3.统计时分复用也称为异步时分复用。
普通的时分复用也称为同步时分复用。
波分复用(WDM)
也就是光的频分复用。
密集波分复用(DWDM)
掺铒光纤放大器(EDFA),一种光放大器。
码分复用(CDM)
人们常用名字为码分多址(CDMA)
各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。
有很强的的抗干扰能力,其频谱类似于白噪声,不易被敌人发现。
脉码调制PCM、同步光纤网SONET和同步数字系列SDH
SONET的层次自下而上为:光子层、段层、线路层、路径层。
XDSL技术
DMT(离散多音调)调节技术采用频分复用的方法,把40kHz以上一直到1.1MHz的高端频谱划分为许多的子信道。
光纤同轴混合网(HFC网)
HFC网的最大优点是它具有很宽的频带,并且能够利用已经有相当大的覆盖面的有线电视网。
HFC网主要特点有:其主干线采用光纤、采用结点体系结构(提高网络的可靠性)、具有比CATV更宽的频谱,且具有双向传输功能、每个家庭要安装一个用户接口盒UIB。
FTTx技术
光配线网(ODN)、无源光网络(PON)、光线路终端(OLT)、光分路器(splitter)、光网路单元(ONU)、通用封装方法(GEM)
FTTH:光纤到户
数据链路层的三个基本问题
封装成帧: 在一段数据的前后分别添加首部和尾部,这样构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
透明传输: 由于帧的开始和结束的标记使用专门指明的控制字符,因此,所传输的数据中的任何 8 比特的组合一定不允许和用帧定界的控制字符的比特编码一样,否则就会出现帧界定的错误。
差错检验:现实的通信链路都不会是理想的,比特在传输过程中可能会出现差错。因此,为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检验措施。
数据链路层的差错检验:在数据链路层若仅仅使用循环冗余检验CRC差错检验技术,则只能做到对帧的无差错接收(即无比特差错)。但可能出现帧丢失、帧重复或帧失序。
最常用的方法是使用网络适配器,一般的适配器包括了数据链路层与物理层两层的功能。
1. 封装成帧
封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。
分组交换的一个重要概念:所有在因特网上传送的数据都是以分组(即IP数据报)为传送单位的。
一个帧的帧长等于帧的数据部分长度加上帧首部和帧尾部的长度,首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。
为了提高帧的传输速率,应当使帧的数据部分长度尽可能地大于首部和尾部的长度,而每一种链路层协议都规定了所能传送的帧的数据部分长度上限 —— 最大传送单元 MTU。
当数据是由可打印的 ASCII 码组成的文本文件时,帧定界可以可以使用特殊的帧定界符。
由于ASCII是 7 位编码,一共可组合成 128 个不同的 ASCII 码,其中可打印的有 95 个,不可打印的控制字符有 33 个。
2. 透明传输
- 透明:某一个实际存在的事务看起来却好像不存在一样。
- 为解决透明传输的问题,必须设法使数据中可能存在的控制字符 “SOH” 和 “EOT” 在接收端不被解释为控制字符。
- 解决方法为在控制字符前加上一个转义字符 “ESC”,而在接收端的数据链路层把数据送往网络层之前删除这个插入的转义字符,这种方法叫做字节填充或字符填充。
3. 差错检测
- 现实的通信链路都不会是理想的,就是说,比特在传输过程中可能会产生差错:1可能变成 0,0也可能变成 1,这就叫做比特差错。
- 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER。
- 目前在数据链路层广泛使用了循环冗余检测CRC的检错技术。
CRC 循环冗余检测:
一种较为方便的方法就是使用多项式来表示循环冗余检验的过程,多项式 P ( X ) P(X) P(X) 称为生成多项式。
目前使用较为广泛的生成多项式 P ( X ) P(X) P(X) 有以下几种:
- CRC-16 = X 16 X^{16} X16 + X 15 X^{15} X15 + X 2 X^{2} X2 + 1
- CRC-CCITT = X 16 X^{16} X16 + X 12 X^{12} X12 + X 5 X^{5} X5 + 1
- CRC-32 = X 32 X^{32} X32 + X 26 X^{26} X26 + X 23 X^{23} X23 + X 22 X^{22} X22 + X 16 X^{16} X16 + X 12 X^{12} X12 + X 11 X^{11} X11 + X 10 X^{10} X10 + X 8 X^{8} X8 + X 7 X^{7} X7 + X 5 X^{5} X5 + X 4 X^{4} X4 + X 2 X^{2} X2 + 1
在数据链路层可以近似地认为:凡是接收端数据链路层接受的帧均无差错。
过去OSI的观点是:必须把数据链路层做成是可靠传输,因此在CRC检错的基础上,增加了帧编号、确认和重传机制。
PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议。
RFC明确了PPP协议不需要的功能:纠错、流量控制、多点线路、半双工或单工链路。
2.2 字节填充
异步传输
RFC 1662 规定了如下的填充方法:
2.3 PPP的零比特填充
在发送端,只要有5个连续的1,则立即填入一个0。
在接收端,只要发现5个连续的1时,就把这5个连续1后的一个0删除。
以太网物理层数据
以太网发送的数据都使用曼彻斯特编码的信号。
局域网最主要的特点是:网络为一个单位所拥有,且地理范围和站点数目均有限。
CSMA/CD协议
多点接入:说明这是总线型网络,许多计算机以多点接入的方式连接在一根总线上。
载波监听:就是用电子技术检测总线上有没有其他计算机也在发送。
碰撞检测:也就是“边监听边发送”,即适配器边发送数据边检测信道上的信号电压变化情况,以便判断自己在发送数据时其他站是否也在发送数据。
截断二进制指数退避:
k = [重传次数,10]
重传时间 = k * 2 \ tau
最小帧长度: l = v_{发送速度}2 \ tau = v_{发送速度}2S_{端到端距离}/v_{传播速度}
MAC地址(媒体访问控制)
硬件地址又称为物理地址或MAC地址,由48位二进制作为标识,其中前24位由IEEE分配(生成适配器的厂家需购买),后24位由厂家自行分配。
16.局域网的优点有:1.具有广播功能,从一个站点可很方便地访问全网。2.便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。3.提高了系统的可靠性、可用性和生存性。
17.共享通信媒体资源在技术上的两种方法:静态划分信道、动态媒体接入控制(又称多点接入,包括随机接入和受控接入)。
18.计算机与外界局域网的连接是通过通信适配器。
19.适配器的重要功能:1.进行数据串行传输和并行传输的转换2.对数据进行缓存3.设备驱动程序安装在计算机的操作系统中。
20.为了通信的简便,以太网采用了两种措施:第一,采用较为灵活的无连接的工作方式。第二,以太网发送数据都使用曼彻斯特编码的信号。
21.以太网采用的协调方法是使用一种特殊的协议载波监听多点接入/碰撞检测(CSMA/CD)。
22.在使用CSMA/CD协议时,一个站不可能同时进行发送和接收,因此使用CSMA/CD协议的以太网不可能进行全双工通信而只能进行双向交替通信(半双工通信)。
23.以太网使用截断二进制指数退避算法来解决碰撞问题。
24.以太网把争用期定位51.2us,帧间最小间隔为9.6us。凡长度小于64字节的帧都是由于冲突而异常中止的无效帧。
25.10BASE-T以太网的出现,是局域网发展史上的一个非常重要的里程碑。
26.“发往本站的帧”包括以下三种:单播帧、广播帧、多播帧。
27.数据链路层使用以太网要使用网桥,其工作在数据链路层,它根据MAC帧的目的地址对收到的帧进行转发和过滤。
28.网桥可以带来一下好处:1.过滤通信量,增大吞吐量。2.扩大了物理范围。3.提高了可靠性。4.可互连不同物理层、不同MAC子层和不同速率的以太网。
29.网桥的缺点有:1.对接收的帧要先存储和查找转发表,然后才转发,而转发之前,还必须执行CSMA/CD算法,增加了时延。2.MAC子层没有流量控制功能。3.网桥只适用于用户不太多和通信量不太大的以太网,否则还可能会由于传播过多的广播而产生网络拥塞,即广播风暴。
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
对比 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机来保证 |
连接的建立 | 必须有 | 不需要 |
终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有终点的完整地址 |
分组的转发 | 属于同一条虚电路的分组均按照同一路由进行转发 | 每个分组独立选择路由进行转发 |
当节点出故障时 | 所有通过故障的结点的虚电路均不能工作 | 出故障的结点可能会丢失分组,一些路由可能会发生变化 |
分组的顺序 | 总是按发送顺序到达终点 | 到达终点的时间不一定按发送顺序 |
端到端的差错处理和流量控制 | 可以由网络负责,也可以由用户主机负责 | 由用户主机负责 |
中间设备
物理层使用的中间设备叫做转发器
数据链路层使用的中间设备叫做网桥或桥接器
网络层使用的中间设备叫做路由器
在网络层以上使用的中间设备叫做网关。用网关连接两个不兼容的系统需要在高层进行协议的转换
与IP协议配套使用的还有四个协议:地址解析协议(ARP)、逆地址解析协议(RARP)、网际控制报文协议(ICMP)、网际组管理协议(IGMP)。
1. 分类的 IP 地址
IP地址及其表示方法
整个的互联网就是一个单一的、抽象的网络。
IP地址现在由互联网名字和数字分配机构 ICANN进行分配:
IP地址的编址方法共经历了三个历史阶段:
1. 分类的IP地址(最基本的编址方法)
2. 子网的划分(最基本的编址方法的改进)
3. 构成超网(无分类编址CIDR方法)
一个IP地址在整个互联网范围内是唯一的。
这种两级的 IP 地址可以记为:
IP 地址 : : = {<网络号> , <主机号>}
IP地址分类
3. A类地址(0):8位网络号,24位主机号
4. B类地址(10):16位网络号,16位主机号
5. C类地址(110):24位网络号,8位主机号
6. D类地址(1110):用于多播
7. E类地址(1111):保留为今后使用
IP地址的指派范围
网络类别 | 最大可指派网络数 | 第一个可指派网络号 | 最后一个可指派网络号 | 每个网络中的最大主机数 |
---|---|---|---|---|
A | 126 ( 2 7 − 2 2^7-2 27−2) | 1 | 126 | 2 24 − 2 2^{24}-2 224−2 |
B | 16384 ( 2 14 2^{14} 214) | 128.0 | 191.255 | 2 16 − 2 2^{16}-2 216−2 |
C | 2097152 ( 2 21 2^{21} 221) | 192.0.0 | 223.255.255 | 2 8 − 2 2^8-2 28−2 |
仅用于内部通信地址,禁止转发
10.0.0.0 ~ 10.255.255.255
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255
表 4 - n 一般不使用的特殊IP地址
网络号 | 主机号 | 源地址使用 | 目的地址使用 | 代表的意思 |
---|---|---|---|---|
0 | 0 | √ | X | 在本网络上的本主机 |
0 | host-id | √ | X | 在本网络上的某台主机host-id |
全1 | 全1 | X | √ | 只在本网络上进行广播(各路由器均不转发) |
net-id | 全1 | X | √ | 对net-id上的所有主机进行广播 |
127 | 非全0或全1的任意数 | √ | √ | 对于本地软件环回测试 |
由于使用MAC地址寻址通讯没有一个很好的方式在全球范围内寻址,数据量非常大。
3. IP 地址与硬件地址
从层次角度看,物理地址是数据链路层和物理层使用的地址,而 IP 地址是网络层和以上各层使用的地址,是一种逻辑地址(使用软件实现的)。
源 IP 地址不会发生变化,源 MAC 发生变化。
4. 地址解析协议ARP
ARP协议解决的是从网络层使用的IP地址解析出在数据链路层使用的硬件地址。
在实际网络上传送数据帧时,实际应用的还是该网络的硬件地址。
IP地址和硬件地址由于格式不同而不存在简单的映射关系,此外,网络也上可能会有新的主机加进来,也可能会撤走一些主机,更换网络适配器也会改变主机的地址。ARP解决这个问题的办法是在主机的ARP高速缓存中存放一个从IP地址到硬件地址的映射表,这个映射表还可以动态更新(新增或超时删除)
单播:从一个源地址发送到一个目的地址
假设A要向B发数据,而且A的ARP中没有B的IP地址,那A就会在本局域网上广播一个ARP请求分组(这个分组中包含A的IP地址到硬件地址的映射),然后B的ARP进程收到该请求分组后,由于B的IP地址和A发出来的请求分组中的IP地址一致,所以B就把自己的硬件地址写入响应分组中,然后单播回A主机;A收到响应分组后,把B的IP地址和硬件地址写入ARP中,就完事了。
ARP高速缓存的内容:本局域网上的各主机和路由器的IP地址到硬件地址的映射表。
ARP高速缓存还会为每个项目设置生存时间。
ARP解决的是同一个局域网上的主机或路由器的IP地址和硬件地址的映射。如果源主机和目的主机不在同一个局域网上,那就需要通过路由器进行转发,这时候路由器也需要通过ARP解析出下一跳的IP地址对应的硬件地址。
5. IP数据报的格式
版本 占4位,指 IP 协议的版本,IP协议版本号一般为 4,IPv6 版本为 6。
首部长度 IP数据报首部的固定字段中的首部长度最小值是5,最大值是15。另外要注意,这个数的单位是32位bit,即4字节。
区分服务 占 8 位,用于获得更好的服务。在旧标准中叫做服务类型,但一直未被使用,直到1998年改名为 区分服务 DS。只有在使用区分服务时,这个字段在起作用。
总长度 总长度指首部与数据的长度之和的长度,单位为字节。因长度为16位二进制,所以数据报的长度为 2 16 2^{16} 216 - 1 = 65535 字节。
(数据字段的最大长度)MTU:最大传送单元,指一个数据帧中的数据字段的最大长度,这时候的数据字段,指的是首部+数据部分。如果所传送的数据报长度超过了数据链路层的MTU值,就必须把过长的数据报进行分片处理。
IP协议规定,在互联网中的所有主机和路由器,必须能够接受长度不超过 576 字节的数据报。
在进行分片时,总长度是指分片后的每一个分片的首部长度与改分片的数据长度之和。
标识 占16位, 每产生一个数据报,计数器就加一;分片后,该字段的值就被复制到所有数据报片的标识字段中,从而保证各数据报片最后能被正确地重装为原来的数据报。
标志(flag) 占 3 位,目前只有两位有意义。
片偏移 占13位,它指出较长的分组在分片后,某片在原分组中的相对位置。片偏移以8个字节为偏移位,也就是说,每个分片的长度一定是8字节的整数倍。
关于片偏移有1个注意点,就是比方说A是需要分片,分成A1,A2,A3;然后A2也需要接着分片,分成A21,A22,那这时候A22的片偏移字段的值就是它在A中的相对位置,而不是在A2中的相对位置。
生存时间 占8位,该字段的英文缩写为 TTL(Time To Live), 表示数据报在网络中的寿命,由数据报的源点设置的。如果设置为1,那表示该数据包只能在本局域网中传送。TTL 的功能为 跳数限制,路由器在转发每一个数据报之前,都会将 TTL 的值减一。减到 0 时,就丢弃此数据报。单位为 跳数。
协议 占 8 位,协议字段指出此数据报携带的数据是使用的何种协议,以便于使目的主机的 IP 层知道应将数据部分上交给哪个协议进行处理。
常用的一些协议和相应的协议字段值
协议名 | ICMP | IGMP | IP | TCP | RGP | IGP | UDP | IPv6 | ESP | OSPF |
---|---|---|---|---|---|---|---|---|---|---|
协议字段值 | 1 | 2 | 4 | 6 | 8 | 9 | 17 | 41 | 50 | 89 |
IPv4首部校验和的计算
IP数据报的首部按每16位分组,然后相加。最后结果取反,得到最终的首部校验和。
首部校验和 占 16 位,这个字段只检验数据报的首部,但不包括数据部分。
源地址 占 32 位。
目的地址 占 32 位。
1. 无分类编址CIDR(构造超网)
1.CIDR把32位的IP地址划分为前后两个部分:网络前缀(或简称为“前缀”)+主机号
2.斜线记法/CIDR记法:在IP地址后加上斜线“/”,然后写上网络前缀所占的位数,比如:212.56.132.0/24
3.CIDR地址掩码:使用地址掩码是为了更方便地进行路由选择,也可以继续称为子网掩码.在斜线记法中,斜线后面的数字就是地址掩码中1的个数
4.CIDR地址块:CIDR把网络前缀相同的连续的IP地址组成一个“CIDR地址块”
5.10/10:是10.0.0.0/10的简写
6.0000 1010 00*:星号之前是网络前缀,而星号*表示IP地址中的主机号,可以是任意值
静态路由
特定主机路由:制定特定的目的主机,而非网络
下一跳(递归)路由:配下一跳地址
直连路由:配置接口
完全制定静态路由:配置下一跳和接口
默认路由
无分类编制CIDR
正式名称:无分类域间路由选择(Classless Inter-Domain Routing)
路由聚合
在路由表中利用CIDR地址块来查找目的网络,这种地址的聚合常称为路由聚合。路由聚合也称为构成超网。
IPv4向IPv6过渡的方式有两种
双协议栈
隧道技术
IPv6的地址分类
地址类型 二进制前缀
未指明地址 00…0(128位),可记为 ::/128
环回地址 00…1(128位),可记为 ::1/128
多播地址 11111111(8位),可记为 FF00::/8
本地链路单播地址 1111111010(10位),可记为 FE80::/10
全球单播地址 (除上述四种外,所有其他的二进制前缀)
为更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制协议 ICMP [RFC 792]。
ICMP差错报文类型及产生条件
目标不可到达: 如果在IP数据报的传送过程中,路由器发现网络出现拥塞,则路由器将向源主机发出“目标不可到达”的ICMP报文。
时间超时: 一个IP包从源节点出发时,其TTL值被设定一个初始值(比如255),经过一跳一跳的传输,如果这个IP包的TTL降低到零,路由器就会丢弃此包。此时,该路由器上的ICMP便会发出一个 “ 超时(time exceeded) ” 的ICMP报文。
改变路由(重定向): 当一台主机向自己的缺省网关发送一个需要转发的数据包时,如果该网关路由器查找路由表发现有更好的路由,就会向源主机发出“重定向”的ICMP报文。
源抑制: 若路由器或目的主机缓冲资源耗尽而必须丢弃数据报,则每丢弃一个数据报就向源主机发送一个ICMP源抑制报文,此时,源主机必须减小发送速度。另外一种情况是系统的缓冲区已用完,并预感到将发生拥塞,则发送源抑制报文。但是与前一种情况不同,涉及的数据报尚能提交给目的主机。
4.发送“端口不可达”差错报文:接收方接收到报文后,如果它的UDP发现收到的报文中的目的端口号不正确(即目的主机上不存在对应于该端口号的应用进程),就会由ICMP给发送方发送端口不可达报文
有关路由选择协议的几个基本概念
1.路由算法:路由算法是路由选择协议的核心,即需要何种算法来获得路由表中的各项目。
2.从路由算法能否随网络的通信量或拓扑自适应地进行调整变化来划分,则只有两大类,静态路由选择策略和动态路由选择策略。前者适用于简单的小网络,后者适用于复杂的大网络。
3.自治系统AS是在单一技术管理下的一组路由器,这些路由器使用一种自治系统内部的路由选择协议和共同的度量。
4.域间路由选择:自治系统之间的路由选择
域内路由选择:自治系统内部的路由选择
5.IGP:interior gateway protocol,内部网关协议,具体的协议有多种,如RIP和OSPF
EGP:externel gateway protocol,外部网关协议,目前使用的就是BGP
4.5.2 内部网关协议RIP
1.RIP(routing information protocol):是一种分布式路由选择协议。
2.RIP允许一条路径最多只能包含15个路由器,距离等于16时即相当于不可达。由此可见RIP只适用于小型互联网。
3.RIP协议的特点是:
1)仅和相邻的路由器交换信息
2)交换的信息是当前路由器所知道的全部信息,即自己现在的路由表
3)按固定的时间间隔交换路由信息
4.RIP协议的工作过程:路由器刚刚开始工作时,路由表是空的,然后路由器会获得直接相连的网络的距离(定义为1)。接着,路由器开始和数目有限的相邻路由器交换并更新路由信息,经过若干次更新后,所有的路由器都会知道到达本自治系统的中任何一个网络的最短距离和下一跳地址。
5.路由表中最主要的信息就是到某个网络的距离。
6.路由表更新的原则是:找出到每个目的网络的最短距离。
12.从路由算法能否随网络的通信量或拓扑自适应地进行调整变化来划分,则只有两大类,即静态路由选择策略与动态路由选择策略。
13.因特网把路由选择协议划分为两大类:内部网关协议IGP(具体的协议多种如RIP、OSPF)、外部网关协议EGP(目前使用的协议就是边界网关协议BGP)。
14.RIP协议是一种分布式的基于距离向量的路由选择协议,和OSPF(分布式基于链路状态协议)共同特点就是每一个路由器都要不断地和其他一些路由器交换路由信息。RIP协议的最大优点是实现简单,开销较小。OSPF的更新过程收敛的快是其重要的优点。OSPF不用UDP,而直接用IP数据报传送。
15.边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。BGP采用了路径向量路由选择协议。
16.路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。
17.转发分组由三个部分组成:交换结构(根据转发表对分组进行处理)、一组输入端口和一组输出端口(这里的端口就是硬件接口)。
18.IP多播需要两种协议:网际组管理协议IGMP和多播路由选择协议。
19.在因特网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。
20.利用公共的因特网作为本机构各专用网之间通信的载体,这样的专用网又称为虚拟专用网VPN。
21.网络地址转换NAT需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的的外部全球IP地址。
1. 进程之间的通信
从通信和信息处理的角度来看,运输层向它上面的应用层提供通信服务。
属于面向通信部分的最高层,同时也是用户功能中的最底层。
注:运输层增加了第三种协议,即流控制传输协议SCTP,具有TCP与UDP的共同优点。
从运输层的角度来看,通信的真正端点并不是主机而是主机中的进程,即端到端的通信是应用进程之间的通信。
传输层的复用和分用
逻辑通信:从应用层看,只要把应用层报文交给下面的运输层,运输层就可以把这报文传送到对方的运输层,好像通信是沿着水平方向直接传送数据,但事实上着两个运输层之间没有一条水平方向的物理连接。
实际上数据的传送是沿着图中的虚线方向(经过多个层次)传送的。
- 网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。
- 同时运输层向高层屏蔽了下面网络核心的细节,使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。
2. 运输层的两个主要协议
TCP / IP 运输层的两个主要协议都是互联网的正式标准,即:
用户数据报 UDP (User Datagram Protocol)[RFC 768]
传输控制协议 TCP (Transmission Control Protocol)[RFC 793]
运输层的端口
1. 服务器端使用的端口号
这里分为两类,最重要的一类是叫做 熟知端口号(well-known port number)或系统端口号,数值为 0 ~ 1023。(可以在 www.iana.org 找到详细资料)
表 5 - 2 常用的熟知端口号
应用程序 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP | SNMP(trap) | HTTPS |
---|---|---|---|---|---|---|---|---|---|
熟知端口号 | 21 | 23 | 25 | 53 | 69 | 80 | 161 | 162 | 443 |
另一类叫做登记端口号,数值为 1024 ~ 49151。使用这类端口号需要在 IANA 按照规定进行手续登记。
1. 客户端使用的端口号
数值为 49152 ~ 65535。也称为 短暂端口号,这类端口号留给客户进程选择暂时使用。
表 5 - 1 使用UDP和TCP协议的各种应用和应用层协议
应用 | 应用层协议 | 运输层协议 |
---|---|---|
名字转换 | DNS(域名系统) | UDP |
文件传送 | TFTP(简单文件传送协议) | UDP |
路由器选择协议 | RIP(路由信息协议) | UDP |
IP地址配置 | DHCP(动态主机配置协议) | UDP |
网络管理 | SNMP(简单网络管理协议) | UDP |
远程文件服务器 | NFS(网络文件系统) | UDP |
IP电话 | 专用协议 | UDP |
流式多媒体通信 | 专用协议 | UDP |
多播 | IGMP(网际组管理协议) | UDP |
电子邮件 | SMTP(简单邮件传送协议) | TCP |
远程终端接入 | TELNET(远程终端协议) | TCP |
万维网 | HTTP(超文本传送协议) | TCP |
文件传送 | FTP(文件传送协议) | TCP |
R T T S RTT_S RTTS 加权平均往返时间
R T T D RTT_D RTTD RTT的偏差的加权平均值
TCP的拥塞控制方法
四种方法
满开始
拥塞避免
快重传
快恢复
原则:只要网络没有出现拥塞,拥塞窗口就可以再增大一些,一遍把更多的分组发送出去,这样就可以提高网络的利用率
详细参数变化,参考P236 图5-27 TCP的拥塞控制的流程图
发送窗口的上限值 = M i n [ r w n d , c w n d ] Min [rwnd, cwnd] Min[rwnd,cwnd]
第一次握手(C->S):SYN=1, seq=x
第二次握手(S->C):SYN=1, ACK=1, seq=y, ack=x+1
第三次握手(C->S):ACK=1, seq=x+1, ack=y+1
TCP的连接释放(四次挥手)
第一次挥手(C->S):FIN=1, seq=u
第二次挥手(S->C):ACK=1, seq=v, ack=u+1
第三次挥手(S->C):FIN=1, ACK=1, seq=w, ack=u+1
第四次挥手(C->S):ACK=1, seq=u+1, ack=w+1
1.虽然通信的终点是应用进程,但只要把所传送的报文交到目的主机的某个合适端口,剩下的工作(即最后交付的进程)就由TCP/UDP来完成。也就是说,端口是主机的一个属性,报文首先通过端口进入主机,然后才是通过协议进入进程。所以,两个计算机中的进程要通信,就要知道对方的IP地址+端口号
2.软硬件端口的区别:
硬件端口:不同硬件设备进行交互的接口
软件端口:应用层各种协议进程与运输实体进行层间交互的一种地址。简单来说,就是进程与实体进行交互的一种地址;再简单一点,就是一种地址
UDP的主要特点:
1)无连接
2)尽最大努力交付
3)面向报文
4)没有拥塞控制(这个特点对很多实时应用,如IP电话、实时视频会议等很友好)
5)支持一对一、一对多、多对一和多对多的交互通信
6)首部开销小(只有8个字节)
使用UDP时,应用进程可以在不影响应用的实时性的前提下,增加一些提高可靠性的措施,如采用前向纠错或重传已丢失的报文。
UDP的首部格式
用户数据报 UDP 有两个字段:数据字段与首部字段。首部字段有 8 个字节 4 个字段组成,每个字段的长度都是两个字节。各字段意义如下:
1.源端口 源端口号,不需要时可以全为 0 。
2.目的端口 目的端口号,在终点交付报文时必须使用。
3.长度 UDP用户数据报的长度,最小值为 8(仅有首部) ,单位为 字节。
4.检验和 检测 UDP 用户数据报在传输中是否有错。
UDP 用户数据报首部中的校验和的计算方法有些特殊,在计算时,要在 UDP 用户数据报之前增加 12 个字节的伪首部(并不是UDP数据报的真正首部),只在计算校验和时有效。
UDP的校验和是把首部和数据部分一起都检验。
TCP的主要特点:
1)TCP是面向连接的运输层协议
2)每一条TCP连接只能是两个端点(这个端点,我们称为套接字或插口)。每一条TCP连接只能是点对点的
3)提供可靠交付的服务:无差错,不丢失,不重复,并且按序到达
4)TCP提供全双工通信
5)面向字节流:TCP和应用程序的交互是一次一个数据块(大小不等)。TCP不保证每次接收方应用程序所收到的数据块和每次发送方应用程序所发出的数据块具有对应大小的关系,即发送方把数据打包成数据块后,接收方会把这个数据块割成什么样,或者和其它数据块合并是说不准的。但是呢,发送出去的字节流应该和接收方的字节流一致。
关于发送报文时,TCP和UDP所采用方式的不同之处:
1)UDP发送报文的长度由应用进程给出
2)TCP会根据对方窗口给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节
TCP的连接
TCP 把 连接 作为最基本的抽象。
TCP 连接的端点叫做 套接字(socket) 或插口。
根据 RFC 793 的定义:端口号拼接到 IP地址即构成了套接字。
套接字 socket = (IP地址 : 端口号)
每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定,即
T C P 连 接 : : = s o c k e t 1 , s o c k e t 2 = ( I P 1 : p o r t 1 ) , ( I P 2 : p o r t 2 ) TCP连接 ::= {socket1 , socket2} = { ( IP_1 : port_1), ( IP_2 : port_2) } TCP连接::=socket1,socket2=(IP1:port1),(IP2:port2)
2. 连续ARQ协议
发送窗口的前后沿变化
后沿:不动(没有收到新的确认)和前移(收到了新的确认)
前沿:前移、不动(没有收到新的确认)和收缩(对方通知的窗口缩小了,TCP标准强烈不赞成这样做)
发送窗口里的内容
已发送的数据
未被发送的数据
接收窗口里的内容
期望接收的数据
未按序到达的数据
未到达的数据
RTO(超时重传时间)的计算
$ 新的RTT_S = (1-\alpha)(旧的RTT_S)+\alpha(新的RTT样本) $
$ 新的RRT_D = (1-\beta)(旧的RTT_D)+\beta(RTT_S-新的RTT样本) $
$ RTO = RTT_s + 4*RTT_D $
1.发送窗口表示:在没有收到接收方的确认的情况下,发送方可以连续把窗口内的数据都发送出去。而凡是已经发送过的数据,在未收到确认前都必须暂时保留,以便在超时重传时使用
2.接收方只能对按序收到的数据中的最高序号给出确认
3.TCP通常对不按序到达的数据先临时存放在接收窗口中,等到字节流缺少的字节收到后,再按序交付给上层的应用进程
4.TCP标准规定,确认推迟的时间不应超过0.5秒
5.值得强调的是,通信中的每一方都有自己的发送窗口和接收窗口,谈到这些窗口时一定要弄清是哪一方的窗口
6.发送方的应用进程把字节流写入TCP的发送缓存,然后接收方的应用程序再从TCP的接收缓存中读取字节流
5.6.2 超时重传时间的选择
1.报文段的往返时间RTT:一个报文段发出的时间,以及收到相应的确认的时间,这两个时间之差就是报文段的往返时间
2.加权平均往返时间RTTs
TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段。一个TCP报文段分为首部和数据两部分,而TCP的全部功能体现在它首部中的各字段的作用。因此,我们需要详细了解一下TCP首部各字段的作用。
TCP报文段首部的前20个字节是固定的(下图),后面有4n字节是根据需要而增加的选项(n是整数), 因此TCP首部的最小长度是20字节。
首部固定部分各字段意义如下:
1) 源端口和目的端口 各占2个字节,分别写入源端口和目的端口。
2) 序号 占4字节。序号范围是【0,2^32 - 1】,共232(即4294967296)个序号。序号增加到232-1后,下一个序号就又回到0。也就是说,序号使用mod 2^32运算。TCP是面向字节流的。在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。整个要传送的字节流的起始序号必须在连接建立时设置。首部中的序号字段值则是指的是本报文段所发送的数据的第一个字节的序号。例如,一报文段的序号是301,而接待的数据共有100字节。这就表明:本报文段的数据的第一个字节的序号是301,最后一个字节的序号是400。显然,下一个报文段(如果还有的话)的数据序号应当从401开始,即下一个报文段的序号字段值应为401。这个字段的序号也叫“报文段序号”。
3) 确认号 占4字节,是期望收到对方下一个报文段的第一个数据字节的序号。例如,B正确收到了A发送过来的一个报文段,其序号字段值是501,而数据长度是200字节(序号501~700),这表明B正确收到了A发送的到序号700为止的数据。因此,B期望收到A的下一个数据序号是701,于是B在发送给A的确认报文段中把确认号置为701。注意,现在确认号不是501,也不是700,而是701。
总之:若确认号为= N,则表明:到序号N-1为止的所有数据都已正确收到。
4) 数据偏移 占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。这个字段实际上是指出TCP报文段的首部长度。由于首部中还有长度不确定的选项字段,因此数据偏移字段是必要的,但应注意,“数据偏移”的单位是32位字(即以4字节的字为计算单位)。由于4位二进制数能表示的最大十进制数字是15,因此数据偏移的最大值是60字节,这也是TCP首部的最大字节(即选项长度不能超过40字节)。
5) 保留 占6位,保留为今后使用,但目前应置为0 。
下面有6个控制位,用来说明本报文段的性质。
6) 紧急URG(URGent) 当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快发送(相当于高优先级的数据),而不要按原来的排队顺序来传送。例如,已经发送了很长的一个程序要在远地的主机上运行。但后来发现了一些问题,需要取消该程序的运行,因此用户从键盘发出中断命令。如果不使用紧急数据,那么这两个字符将存储在接收TCP的缓存末尾。只有在所有的数据被处理完毕后这两个字符才被交付接收方的应用进程。这样做就浪费了很多时间。
当URG置为1时,发送应用进程就告诉发送方的TCP有紧急数据要传送。于是发送方TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍然是普通数据。这时要与首部中紧急指针(Urgent Pointer)字段配合使用。
7) 确认ACK(ACKnowledgment) 仅当ACK = 1时确认号字段才有效,当ACK = 0时确认号无效。TCP规定,在连接建立后所有的传送的报文段都必须把ACK置为1。
8) 推送 PSH(PuSH) 当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能收到对方的响应。在这种情况下,TCP就可以使用推送(push)操作。这时,发送方TCP把PSH置为1,并立即创建一个报文段发送出去。接收方TCP收到PSH=1的报文段,就尽快地(即“推送”向前)交付接收应用进程。而不用再等到整个缓存都填满了后再向上交付。
9) 复位RST(ReSeT) 当RST=1时,表名TCP连接中出现了严重错误(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立传输连接。RST置为1还用来拒绝一个非法的报文段或拒绝打开一个连接。
10)同步SYN (SYNchronization) 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1,因此SYN置为1就表示这是一个连接请求或连接接受报文。
11) 终止FIN(FINis,意思是“完”“终”) 用来释放一个连接。当FIN=1时,表明此报文段的发送发的数据已发送完毕,并要求释放运输连接。
12)窗口 占2字节。窗口值是【0,2^16-1】之间的整数。窗口指的是发送本报文段的一方的接受窗口(而不是自己的发送窗口)。窗口值告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量(以字节为单位)。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。总之,窗口值作为接收方让发送方设置其发送窗口的依据。
例如,发送了一个报文段,其确认号是701,窗口字段是1000.这就是告诉对方:“从701算起,我(即发送方报文段的一方)的接收缓存空间还可接受1000个字节数据(字节序号是701~1700),你在给我发数据时,必须考虑到这一点。”
总之:窗口字段明确指出了现在允许对方发送的数据量。窗口值经常在动态变化。
13) 检验和 占2字节。检验和字段检验的范围包括首部和数据这两部分。和UDP用户数据报一样,在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。伪首部的格式和UDP用户数据报的伪首部一样。但应把伪首部第4个字段中的17改为6(TCP的协议号是6);把第5字段中的UDP中的长度改为TCP长度。接收方收到此报文段后,仍要加上这个伪首部来计算检验和。若使用TPv6,则相应的伪首部也要改变。
14) 紧急指针 占2字节。紧急指针仅在URG=1时才有意义,它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据) 。因此,在紧急指针指出了紧急数据的末尾在报文段中的位置。当所有紧急数据都处理完时,TCP就告诉应用程序恢复到正常操作。值得注意的是,即使窗口为0时也可以发送紧急数据。
15) 选项 长度可变,最长可达4字节。当没有使用“选项”时,TCP的首部长度是20字节。
TCP最初只规定了一种选项,即最大报文段长度MSS(Maximum Segment Szie)。注意MSS这个名词含义。MSS是每一个TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个的TCP报文段。所以MSS并不是整个TCP报文段的最大长度,而是“TCP报文段长度减去TCP首部长度”。
为什么要规定一个最大报文长度MSS呢?这并不是考虑接受方的接收缓存可能存放不下TCP报文段中的数据。实际上,MSS与接收窗口值没有关系。我们知道,TCP报文段的数据部分,至少要加上40字节的首部(TCP首部20字节和IP首部20字节,这里还没有考虑首部中的可选部分)才能组装成一个IP数据报。若选择较小的MSS长度,网络的利用率就降低。设想在极端情况下,当TCP报文段只含有1字节的数据时,在IP层传输的数据报的开销至少有40字节(包括TCP报文段的首部和IP数据报的首部)。这样,对网络的利用率就不会超过1/41。到了数据链路层还要加上一些开销。但反过来,若TCP报文段非常长,那么在IP层传输时就有可能要分解成多个短数据报片。在终点要把收到的各个短数据报片组成成原来的TCP报文段,当传输出错时还要进行重传,这些也都会使开销增大。
因此,MSS应尽可能大些,只要在IP层传输时不需要分片就行。由于IP数据报所经历的路径是动态变化的,因此在这条路径上确定的不需要的分片的MSS,如果改走另一条路径就可能需要进行分片。因此最佳的MSS是很难确定的。在连接过程中,双方都把自己能够支持的MSS写入这一字段,以后就按照这个数值传输数据,两个传送方向可以有不同的MSS值。若主机未填写这一项,则MSS的默认值是536字节长。因此,所有在互联网上的主机都应该接受的报文段长度是536+20(固定首部长度)=556字节。
后来又增加了几个选项如窗口扩大选项、时间戳选项等。
窗口扩大选项是为了扩大窗口。我们知道,TCP首部中窗口字段长度是16位,因此最大的窗口大小为64K字节。虽然这对早期的网络是足够用的,但对于包含卫星信道的网络,传播时延和宽带都很大,要获得高吞吐量需要更大的窗口大小。
窗口扩大选项占3字节,其中有一个字节表示移位值S。新的窗口值等于TCP首部中的窗口位数从16增大到(16+S)。移位值允许使用的最大值是14,相当于窗口最大值增大到2(16+14)-1=230-1。
窗口扩大选项可以在双方初始建立TCP连接时进行协商。如果连接的某一端实现了窗口扩大,当它不再需要扩大其窗口时,可发送S=0选项,使窗口大小回到16。
时间戳选项占10字节,其中最主要的字段是时间戳字段(4字节)和时间戳回送回答字段(4字节)。时间戳选项有以下两个概念:
第一、 用来计算往返时间RTT。发送方在发送报文段时把当前时钟的时间值放入时间戳字段,接收方在确认该报文段时把时间戳字段复制到时间戳回送回答字段。因此,发送方在收到确认报文后,可以准确地计算出RTT来。
第二、 用于处理TCP序号超过 2 32 2^{32} 232 的情况,这又称为防止序号绕回PAWS。我们知道,TCP报文段的序号只有32位,而每增加2^32个序号就会重复使用原来用过的序号。当使用高速网络时,在一次TCP连接的数据传送中序号很可能被重复使用。例如,当使用1.5Mbit/s的速度发送报文段时,序号重复要6小时以上。但若用2.5Gbit/s的速率发送报文段,则不到14秒钟序号就会重复。为了使接收方能够把新的报文段和迟到很久的报文段区分开,则可以在报文段中加上这种时间戳。
5.7.1 TCP利用滑动窗口实现流量控制
1.TCP的窗口单位是字节,不是报文段
2.只有在ACK=1时确认号字段才有意义
拥塞控制的一般原理
5.8.2 TCP的拥塞控制方法
1.发送方如何知道网络发生了拥塞:只要发送方没有收到应当到达的确认报文,也就是说,只要出现了超时,就可以猜想网络可能出现了拥塞。
2.拥塞窗口是由发送方来维持的,发送方会让自己的发送窗口等于拥塞窗口
3.SMSS:(sender message segment size)发送方的最大报文段
4.传输轮次:把拥塞窗口cwnd所允许发送的报文段都发送出去,并收到了对已发送的最后一个字节的确认
5.网络出现超时后,发送方就会重新设置拥塞窗口为1,再次进入慢开始阶段
6.快重传算法要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认,即使收到了失序的报文段也要立即发出对已收到报文段的重复确认。
(所谓的失序报文段,就是比如本来该是M1M2M3的报文段,但是M2丢失了,收到的就是M1M3,这就叫做失序报文段)
7.出现3个重复的ACK后,门限值(ssthresh)和cwnd都要减小为当前cwnd的一半
8.发送方窗口的上限值=min[接收方窗口,拥塞窗口],也就是说,rwnd和cwnd中值较小的那一个控制了发送方发送数据的速率
9.必须强调指出,必须强调指出,必须强调指出,“拥塞避免”并不能完全避免拥塞,只是它能够是网络拥塞不那么容易出现
1.从通信和信息处理角度来看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。
2.两个主机进行通信就是两个主机中的应用进程相互通信。也就是说,端到端的通信是应用进程之间的通信。
3.运输层有一个很重要的功能:复用(不同应用进程都可以使用同一个运输层协议传送数据)和分用。
4.运输层还要对收到的报文进行差错检测。在网络层,IP数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分。
5.运输层需要有两种不同的运输协议,即面向连接的TCP(传输控制协议)和无连接的UDP(用户数据报协议)。
6.在协议栈层间的抽象的协议端口是软件端口,软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。
7.两个计算机中的进程要实现相互通信,不仅必须知道对方的IP地址,而且要知道对方的端口号。
8.运输层的端口号分为以下两类:服务器端使用的端口号(熟知端口号、系统端口号)、登记端口号/短暂端口号。
9.UDP的主要特点:1.无连接的;2.尽最大努力交付;3.面向报文的;4.没有拥塞控制;5.支持一对一、一对多、多对一和多对多的交互通信;6.首部开销小。
10.IP数据报的检验和只检验IP数据报的首部,但UDP的检验和是把首部和数据部分一起都检验。
11.TCP的主要特点:1.面向连接的运输层协议2.每一条TCP连接只能有两个端点(点对点,一对一)3.提供可靠交付服务4.面向字节流。
12.TCP连接的端点叫做套接字/插口。端口号拼接到IP地址即构成了套接字。(套接字SOCKET=(IP地址:端口号))。每一条TCP连接唯一地被通信的两端的两个端点所确定。
13.理想的传输条件有以下两个特点:1.传输信道不产生差错2.不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据。
14.使用确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。像这种可靠传输协议常称为自动重传请求ARQ。
15.TCP利用滑动窗口实现流量控制,所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。
16.几种拥塞控制方法:慢开始、拥塞避免、快重传、快恢复。
17.拥塞避免算法的思路是让拥塞窗口CWAND缓慢地增大,即每经历一个往返时间RTT就把发送方的拥塞窗口CWND加1。
18.运输连接三个阶段:连接建立、数据传送、连接释放。
基于UDP(用户数据报)进行通信
语法要求:
每一个域名都是由标号序列组成,而各标号之间用 点(英文.) 隔开
域名中的标号都由英文字母和数字组成
不区分大小写
标号中除连字符(-)外不能使用其他的标点符号
由多个标号组成的完整域名总共不超过255个字符
HTTP获取万维网文档的方式及其时间
非持续连接:每请求一个文档就要有两倍的RTT
持续连接
非流水线方式:建立TCP连接后,客户每访问一次对象都要用去一个RTT
流水线方式:建立TCP连接后,客户访问所有资源只需花费一个RTT
Base64编码
将二进制代码划分为一个个24位长的单元,然后把每一个24位单元划分为4个6位组。6位的二进制代码共有64种不同的值。64种值依次由大写字母、小写字母、0-9、+、/表示,最后用连在一起的等号“==”和一个等号“=”分别表示最后一组的代码只有8位或16位。
(回车、换行都忽略,他们可以出现在任何地方)
1.应用层许多协议都是基于客户服务器方式,即使是对等通信方式,实质上也是一种特殊的客户服务器方式。
2.域名系统DNS是因特网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。
3.DNS规定,域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符。由多个标号组成的完整的域名总共不超过255个。
4.顶级域名分为三大类:1.国家顶级域名2.通用顶级域名3.基础结构域名(反向域名)。我国把二级域名划分为类别域名和行政区域名两大类。
5.一个服务器所负责的管辖的(或有权限的)范围叫做“区”,区可能等于或小于域,但一定不可能大于域。
6.域名服务器分为四种类型: 1.根域名服务器2.顶级域名服务器3.权限域名服务器4.本地域名服务器(默认域名服务器)。
7.域名解析过程需注意的两点:
8.文件传送协议FTP是因特网上使用得最广泛的文件传送协议。
9.网络文件系统NFS允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据。
10.简单文件传送协议TFTP主要有两个优点:1.TFTP可用于UDP环境2.TFTP代码所占的内存较小。
万维网是一个分布式的超媒体系统,它是超文本系统的扩充。简单来说,它不是所谓的网络,而是一个大规模的、联机式的信息储藏所。
万维网是一个分布式的超媒体系统,它是超文本系统的扩充。
万维网使用统一资源定位符URL来标志万维网上的各种文档。
超文本传送协议HTTP是一个应用层协议它使用TCP连接进行可靠的传送。
HTTP/1.0协议的持续连接工作有两种工作方式:非流水线方式、流水线方式。
HTTP状态码
分类 描述
1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误
URL(统一资源定位符 Uniform Resource Locator)
组成部分:<协议>://<主机>:<端口>/<路径>
代理服务器是一种网络实体,它又称为万维网高速缓存。
HTTP两类报文:请求报文、响应报文。其都是由三部分组成:开始行、首部行、实体主体。
超文本标记语言HTML是一种制作万维网页面的标准语言,它消除了不同计算机之间信息交流的障碍。
用户代理至少应当具有以下四个功能:撰写、显示、处理、通信。
万维网浏览器就是一个HTTP客户,而在万维网服务器等待HTTP请求的进程常称为HTTP daemon,有的文献将它缩写为HTTPD。
1.SMTP(simple mail transfer protocol):简单邮件传送协议
2.MIME(multipurpose Internet mail extension):通用因特网邮件扩充
3.UA(user agent):用户与电子邮件系统的接口。它的功能是撰写、显示和处理。
4.邮件服务器需要使用两个不同的协议:SMTP协议用于发送邮件,邮局协议(POP)用于接收邮件。
5.电子邮件由信封和内容两部分组成。在邮件的信封上,最重要的就是收信人的地址。
6.SMTP规定了14条命令和21种应答信息,每条命令用4个字母组成,而每一种应答信息一般只有一行信息,由1个3位的代码开始。
7.IMAP是按客户服务器方式工作,是一个联机协议。
8.MIME相比SMTP,增加了邮件主体的结构,并定义了传送非ascii码的编码规则。
9.MIME标准定义了7个基本内容类型和15种子类型
连接到互联网的计算机的协议软件需要配置的项目包括:
1. IP地址
2. 子网掩码
3. 默认路由器的IP地址
4. 域名服务器的IP地址
网络管理的内容:
对硬件、软件和人力的使用、综合与协调,以便对网络资源进行监视、测试、配置、分析、评价和控制,这样就能可以合理的价格满足网络的一切需求,如实时运行性能、服务质量等。
简称为网管。
1.LAN:local area network,局域网
2.WAN:wide area network,广域网
3.AS:autonomous system,自治系统
4.ISP:Internet service provider,互联网服务提供商
5.IGP:interior gateway protocol,内部网关协议
6.EGP:externel gateway protocol,外部网关协议
7.UDP:User Datagram Protocol,用户数据报协议(传数据前不需要建立连接)
8.TCP:transmission control protocol,传输控制协议(提供面向连接服务)
9.OSI:open system interconnection reference model,开放式系统互联通信参考模型
10.TPDU:transport protocol data unit,运输协议数据单元(两对等实体在通信时传送的数据单位,这是OSI的标准,TCP/IP体系中的则根据所使用的协议是TCP或UDP分别称之为TCP报文段或者UDP用户数据报)
11.RTO(Retransmission Time-Out):超时重传时间
12.RTT:round-trip time,往返时延
13.cwnd:congestion window,拥塞窗口,是用于拥塞控制的一个状态变量
14.SAP:服务访问点
15.CDMA:code division multiple access,码分多址,是码分复用的一种方式
16:CSMA:carrier sense multi access,载波多点接入
17.MAC:medium access control,数据链路层的一个子层,用于决定广播信道中信道分配的协议,比如静态划分信道协议(也称信道划分介质访问控制)、随机访问介质访问控制协议(也称动态分配信道)
18.UTP:unshielded twisted pair非屏蔽双绞线
19.NIC:network interface card,网络接口卡,也叫网络适配器,是主机箱内的一块网络接口板,实现计算机与外界局域网的连接