了解计算机网络原理知识(总览)

作为一名程序猿,基础自然非常重要,那么就在这里总结一下计算机网络原理的一些知识,和大家一起探讨学习

计算机网络的应用

21世纪的一些重要特征是数字化网络化信息化,它是一个以网络为核心的信息时代。所谓的网络是指“三网”,也就是电信网络有线电视网络计算机网络

电信网络:可向用户提供电话、电报(现在电报业务已基本上取消了)及传真等服务
有线电视网络:可向用户提供各种电视节目
计算机网络:可使用户能够迅速传送数据文件,以及从网络上查找并获取各种有用资料,包括图像和视频文件

计算机网络向用户提供的最重要的两个功能有两个:连通性共享

连通性:计算机网络使上网用户之间都可以交换信息,好像用户的计算机都可以彼此直接连通一样
共享:指资源共享。可以是信息共享、软件共享、硬件共享等

因特网概述

网络由若干结点和连接这些结点的链路组成。网络中的结点可以是计算机、集线器、交换机和路由器等。多数情况下,用一朵云表示一个网络。因特网是世界上最大的互连网络。习惯上,把连接在因特网上的计算机称为主机。可初步建立这样的概念:网络把许多计算机连接在一起,而因特网则把许多网络连接在一起。可参看下图进行理解

简单的网络a和由网络构成的互联网b

因特网发展的三个阶段

第一阶段:从单个网络ARPANET向互联网发展的过程

以小写字母i开头的internet(互联网或互连网)是一个通用名词,它泛指由多个计算机网络互连而成的网络。在这些网络之间的通信协议(即通信规则)可以是任意的
以大写字母I开头的Internet(因特网)则是一个专用名词,它指当前全球最大的、开放的、由众多网络相互连接而成的计算机网络,它采用TCP/IP协议族作为通信的规则,且其前身是美国的ARPANET

第二阶段:建成了三级结构的因特网(美国国家科学基金会NSF建成的国家科学基金会网NSFNET),分为主干网、地区网和校园网(或企业网)

第三阶段:逐渐形成了多层次ISP结构的因特网,继而出现了新名词:因特网服务提供者ISP(Internet Service Provider),也就是因特网服务提供商。我国有名的ISP是中国电信、中国联通和中国移动。下图说明了用户通过ISP进行上网(有线接入或无线接入)

了解计算机网络原理知识(总览)_第1张图片
用户通过ISP接入因特网

根据提供服务的覆盖面积大小以及所拥有的IP地址数目的不同,ISP也分为不同的层次:主干ISP、地区ISP和本地ISP。

主干ISP:由几个专门的公司创建和维持,服务面积最大(一般能覆盖国家范围),并且还拥有高速主干网(例如10Gb/s或更高)。有一些地区ISP网络也可直接与主干ISP相连
地区ISP:是一些较小的ISP,这些地区ISP通过一个或多个主干ISP连接起来,它们位于等级中的第二层,数据率也低一些
本地ISP:给端用户提供直接的服务

从原理上讲,只要每一个本地ISP都安装了路由器连接到某个地区ISP,而每一个地区ISP也有路由器连接到主干ISP,那么在这些相互连接的ISP的共同合作下,就可以完成因特网中的所有的分组转发任务。随着因特网上的数据流量的急剧增长,人们开始研究如何更快地转发分组,以及如何更加有效的利用网络资源。于是,因特网交换点IXP(Internet eXchange Point)就应运而生了。可参考下图帮助理解

因特网交换点IXP主要作用:允许两个网络直接相连并交换分组,而不需要再通过第三个网络来转发分组
了解计算机网络原理知识(总览)_第2张图片
基于ISP的多层结构的因特网的概念示意图

因特网的组成

边缘部分:由所有连接在因特网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享
核心部分:有大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)

了解计算机网络原理知识(总览)_第3张图片
因特网的边缘部分与核心部分
边缘部分

处在因特网边缘的部分就是连接在因特网上的所有的主机,又称为端系统主机A的某个进程和主机B上的另一个进程进行通信通常可以简称为计算机之间通信

在网络边缘的端系统之间的通信方式可划分为两大类:客户-服务器方式(C/S方式)对等方式(P2P方式)

客户-服务器方式

主要特征:客户是服务请求方,服务器是服务提供方
服务请求方和服务提供方都要使用网络核心部分所提供的服务

客户程序:
(1)被用户调用后运行,在通信时主动向远地服务器发起通信(请求服务)。因此,客户程序必须知道服务器程序的地址
(2)不需要特殊的硬件和很复杂的操作系统
服务器程序:
(1)是一种专门用来提供某种服务的程序,**可同时处理**多个远地或本地客户的请求
(2)系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。因此,服务器程序不知道客户程序的地址
(3)一般需要有强大的硬件和高级的操作系统支持
需要注意的是,客户和服务器本来都指的是计算机进程(软件)
了解计算机网络原理知识(总览)_第4张图片
客户-服务器工作方式
对等连接方法

对等连接(peer-to-peer,简写P2P)是指两个主机在通信时并不区分哪个是服务请求方还是服务提供方只要两个主机都运行了对等连接软件(P2P软件),它们就可以进行平等的,对等连接通信。这时,双方都可以下载对方已经存储在硬盘中的共享文档。因此这种工作方式也称为P2P文件共享

了解计算机网络原理知识(总览)_第5张图片
对等连接工作方式
核心部分

网络核心部分是因特网中最复杂的部分,因为网络中的核心部分要向网络边缘中的大量主机提供连通性,使边缘部分中的任何一台都能够向其他主机通信。在网络核心部分起特殊作用的是路由器,它是一种专用计算机(但不是主机)。路由器是实现分组交换(packet switching)的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能

1、首先来了解一下电路交换

从通信资源的分配角度来看,交换就是按照某种方式动态地分配传输线路的资源。在使用电路交换之前,必须先拨号请求连接。当被叫用户听到交换机送来的振铃音并摘机后,从主叫端到被叫端就建立了一条连接,也就是一条专用的物理通路。通话完毕挂机后,交换机释放刚才使用的这条专用的物理通路(即把刚才占用的所有通信资源归还给电信网)。这种必须经过“建立连接”(占用通信资源)->通话(一直占用通信资源)->释放连接(归还通信资源)三个步骤的交换方式称为电路交换。电路交换的重要特点就是在通话的全部时间内,通话的两个用户始终占用端到端的通信资源

了解计算机网络原理知识(总览)_第6张图片
电路交换的用户始终占用端到端的通信资源
2、分组交换

分组交换采用存储转发技术,把一个报文划分为几个分组的概念,把要发送的整块数据称为一个报文,发送报文前,把较长的报文划分为一个个更小的等长数据段,然后在每一个数据段前面,加上一些必要的控制信息组成的首部后,就构成了一个分组。分组又称为包,分组的首部也可称为包头。分组是因特网中传送的数据单元,正是由于分组的首部包含了诸如目的地址和源地址等重要控制信息,每一个分组才能在因特网中独立地选择传输路径,并被正确地交付到分组传输的终点

了解计算机网络原理知识(总览)_第7张图片
划分分组的概念

位于网络边缘的主机和位于网络核心部分的路由器都是计算机。但主机是为用户进行信息处理的,并可以和其他主机通过网络交换信息。路由器则是用来转发分组的,即进行分组交换

路由器收到一个分组,先暂时存储一下,检查其首部,查找转发表,按照首部中的目的地址,找到合适的接口转发出去,把分组交给下一个路由器。这样一步步(有时会经过几十个不同的路由器)以存储转发的方式,把分组交付最终的目的主机。各路由器之间必须经常交换彼此掌握的路由信息,以便创建和维持在路由器中转发表,使得转发表能够在整个网络拓扑发生变化时及时更新
3、报文交换

20世纪40年代,电报通信也采用了基于存储转发原理的报文交换。在报文交换中心,一份份电报被接收下来,并穿成纸带,操作员以每份报文为单位,撕下纸带,根据报文的目的站地址,拿到相应的发报机转发出去。时延较长,从几分钟到几小时不等。

对比上面三种交换的主要特点

电路交换:整个报文的比特流连续地从源点直达终点,好像在一个管道中传送
报文交换:整个报文先传送到相邻结点,全部存储下来后查找转发表,转发到下一个结点
分组交换:单个分组(整个报文的一部分)传送到相邻点,存储下来后查找转发表,转发到下一个结点
了解计算机网络原理知识(总览)_第8张图片
三种交换的比较(P1 - P4表示4个分组)

计算机网络的类别

按作用范围分
1、广域网WAN(Wide Area Network)

广域网的作用范围通常为几十到几千公里,因而有时也称为远程网,是因特网的 核心部分,其任务是通过长距离运送主机所发送的数据。连接广域网各结点交换机的链路一般都是高速链路,具有较大的通信容量

2、城域网MAN(Metropolitan Area Network)

城域网的作用范围一般是一个城市,可跨越几个街区甚至整个城市,其作用距离约为5 ~ 50km。城域网可以为一个或几个单位所拥有,但也可以是一种公用设施,用来将多个局域网进行互连。目前,很多城域网采用的是以太网技术,因此城域网有时也常纳入局域网的范围进行讨论

3、局域网LAN(Local Area Network)

局域网一般用微型计算机或工作站通过高速通信线路相连(速率通常在10Mb/s以上),现在局域网已非常广泛地使用,一个学校或企业大都有许多个互连的局域网(常称为校园网或企业网)

4、个人区域网PAN(Personal Area Network)

个人区域网就是在个人工作的地方把属于个人使用的电子设备(如便携电脑)用无线技术连接起来的网络,也常称无线个人区域网

顺便指出,若中央处理机之间的距离非常近(如仅1米的数量级或甚至更小些),则一般就称之为多处理机系统而不称为计算机网络

中央处理机:计算机系统中具有解释指令、执行指令和控制运行等重要功能的器件。主要包括控制器和运算器。中央处理器用于集中控制,通常包括一个或多个处理机,一个或多个存储器,可能还有转换设备的单元
多处理机系统:广义上说,使用多台计算机协同工作来完成所要求的任务的计算机系统都是多处理机系统。传统的狭义多处理机系统是指利用系统内的多个CPU并行执行用户多个程序,以提高系统的吞吐量或用来进行冗余操作以提高系统的可靠性
按使用者分
1、公用网(public network)

电信公司(国有或私有)出资建造的大型网络。“公用”的意思就是所有愿意按电信公司的规定交纳费用的人都可以使用这种网络,也可称为“公众网”

2、专用网(private network)

某个部门、某个行业为各自的特殊业务工作需要而建造的网络,不对外人提供服务。例如:政府、军队等

用来把用户接入到因特网的网络

这种网络就是接入网,又称为本地接入网居民接入网

计算机网络的性能指标

1、速率:计算机发送出的信号都是数字形式的,比特是计算机中数据量的单位。网络技术中的速率指的是连接在计算机网络上的主机在数字信道上传送数据的速率,也称为数据率(data rate)或比特率(bit rate)。速率的单位是b/s(比特每秒)(或bit/s)。当数据率较高时,就可以用kb/s(k = 10³ = 千)、Mb/s(M = 10³ x 10³ = 兆)、Gb/s(G = 10³x10³x10³ = 吉)或Tb/s(T = 10³x10³x10³ x10³ = 太)。上面所说的速率往往是指额定速率标称速率
2、带宽
(1)、带宽本来是指某个信号具有的频带宽度,指信号所包含的各种不同频率成分所占据的频率范围
(2)、在计算机网络中,带宽用来表示网络的通信线路传送数据的能力,因此网络带宽表示在单位时间内从网络中的某一点到另一点所能通过的“最高数据率”
3、吞吐量:表示在单位时间内通过某个网络(或信道、接口)的数据量
4、时延:指数据(一个报文或分组,甚至比特)从网络(或链路)的一段传送到另一端所需的时间,也成为延迟迟延
(1)、发送时延:主机或路由器发送数据帧所需要的时间
(2)、传播时延:电磁波在信道中传播一定的距离需要花费的时间
(3)、处理时延:主机或路由器收到分组后花费一定时间进行处理
(4)、排队时延:分组在经过网络传输时,要经过许多路由器。但分组在进入路由器后要先在输入队列中排队等待处理
总时延为上述四个时延之和。

了解计算机网络原理知识(总览)_第9张图片
几种时延产生的地方不一样

5、时延带宽积:它等于传播时延和带宽的乘积,又称为以比特为单位的链路长度

了解计算机网络原理知识(总览)_第10张图片
链路像一条空心管道

6、往返时间RTT(Round-Trip-Time):表示从发送发发送数据开始,到发送方收到来自接收方的确认(接收方收到数据后便立即发送确认)总共经历的时间

7、利用率:分为信道利用率和网络利用率
(1)、信道利用率:某信道有百分之几的时间是被利用的(有数据通过)
(2)、网络利用率:全网络的信道利用率的加权平均值

计算机网络的非性能指标

费用、质量、标准化、可靠性、可扩展性和可升级性、易于管理和维护

计算机网络体系结构

计算机网络体系结构的形成

计算机网络是非常复杂的系统,现在设想一种最简单的情况:连接在网络上的两台计算机要互相传送文件,除了在这两台计算机之间必须有一条传送数据的通路外,至少还有以下几项工作需要去完成:

(1)发起通信的计算机必须将数据通信的通路进行激活。所谓激活就是要发出一些信令,保证要传送的计算机数据能在这条通路上正确发送和接收
(2)要告诉网络如何识别接收数据的计算机
(3)发起通信的计算机必须查明对方计算机是否已开机,并且与网络连接正常
(4)发起通信的计算机的应用程序必须弄清楚,在对方计算机中的文件管理程序是否已做好接收文件和存储文件的准备工作
(5)若计算机的文件格式不兼容,则至少其中的一台计算机应完成格式转换功能
(6)对出现的各种差错和意外事故,如数据传送错误、重复或丢失,网络中某个结点交换机出故障等,应当有可靠的措施保证对方计算机最终能够收到正确的文件

由此可见,互相通信的两个计算机系统必须高度协调工作才行

1974年,美国的IBM公司宣布了系统网络体系结构SNA(System Network Architecture),这个著名的网络标准就是按照分层的方法制定的

为了使不同体系结构的计算机网络都能互连,国际标准化组织ISO于1977年成立了专门机构研究该问题,不久,他们就提出一个试图使各种计算机在世界范围内互连成网的标准框架,即著名的开发系统互连基本参考模型OSI/RM(Open Systems Interconnection Reference Model),简称为OSI。在1983年形成了开发系统互连基本参考模型的正式文件,即著名的ISO 7498国际标准,也就是所谓的七层协议的体系结构。然而到了20世纪90年代初期,虽然整套的OSI国际标准都已经制定出来了,但由于因特网已抢先在全世界覆盖了相当大的范围,与此同时却几乎找不到有什么厂家生产出符合OSI标准的商用产品。最后得到最广泛应用的不是法律上的国际标准OSI,而是非国际标准TCP/IP,因此,TCP/IP常称为事实上的国际标准

协议与划分层次

在计算机网络中要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则。这些规则明确规定了所交换的数据的格式以及有关的同步问题。这里所说的同步不是狭义的(即同频或同频同相)而是广义的,即在一定的条件下应当发生什么事件(如发送一个应答信息),因而同步含有时序的意思。这些为进行网络中的数据交换而建立的规则、标准或约定称为网络协议,简称协议,主要由以下三个要素组成:

(1)语法:即数据与控制信息的结构或格式
(2)语义:即需要发出何种控制信息,完成何种动作以及做出何种相应
(3)同步:即事件实现顺序的详细说明
```
举个例子来说明划分层次的概念。现在假定主机1和主机2之间通过一个通信网络传送文件
```
(1)第一类工作与传送文件直接有关:发送端的文件传送应用程序应当确信接收端的文件管理程序已做好接收和存储文件的准备,若两个主机所用的文件格式不一样,则至少其中的一个主机应完成文件格式的转换,这两件工作可用一个文件传送模块来完成
(2)第二类工作设立一个通信服务模块:用来保证文件和文件传送命令可靠地在两个系统之间交换。也就是说,让位于上面的文件传送模块利用下面的通信服务模块所提供的服务
(3)第三类工作构造一个网络接入模块:负责做与网络接口细节有挂的工作,并向上层提供服务,使上面的通信服务模块能够完成可靠通信的服务
```

参考下图进行理解

![划分层次的举例](http://upload-images.jianshu.io/upload_images/428088-0b08136d83463546.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

从上述简单例子可以更好地理解分层的诸多好处,比如
```
(1)各层之间是独立的
(2)灵活性好
(3)结构上可分隔开
(4)易于实现和维护
(5)能促进标准化工作
```

通常各层所要完成的功能主要有以下一些(可以只包括一种,也可以包括多种)
```
(1)差错控制:使得和网络对等端的相应层次的通信更加可靠
(2)流量控制:使得发送端的发送速率不用太快,要使接收端来得及接收
(3)分段和重置:发送端把要发送的数据块划分为更小的单位,在接收端将其还原
(4)复用和分用:发送端几个高层会话复用一条低层的连接,在接收端再进行分用
(5)连接建立和释放:交换数据前先建立一条逻辑连接,数据传送结束后释放连接
```

我们把**计算机网络的各层及其协议的集合**称为网络的**体系结构**,换种说法,**计算机网络的体系结构就是这个计算机网络及其构件所应完成的功能的精确定义**

总之,**体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件**

#####具有五层协议的体系结构
OSI的七层协议体系结构(下图(a))的概念清楚,理论也较完整,但它既复杂又不实用。TCP/IP体系结构则不同,它现在已经得到了非常广泛的应用。TCP/IP是一个四层的体系结构(下图(b)),它包含应用层、运输层、网际层和网络接口层(用网际层这个名字是强调这一层是为了解决不同网络的互连问题)。从实质上讲,TCP/IP只有最上面的三层,因为最下面的网络接口层基本上和一般的通信链路在功能上没有多大差别,对于计算机网络来说,这一层并没有什么特别新的具体内容,因此在学习计算机网络的原理时往往采取折中的办法,即综合OSI和TCP/IP的优点,采用一种只有五层协议的体系结构(下图(c))。

![计算机网络体系结构](http://upload-images.jianshu.io/upload_images/428088-13035749eab62f17.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

下面介绍五层协议中各层的主要功能:
(1)、**应用层**
体系结构中的最高层,它的任务是**通过应用进程间的交互来完成特定网络应用**,应用层协议定义的是**应用进程间通信和交互的规则**,这里的**进程**指**正在运行的程序**。在因特网中的应用层协议很多,例如:支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,支持文件传送的FTP协议等。我们将应用层交互的数据单元称为**报文**
(2)、**运输层**
运输层的任务就是负责向**两个主机进程之间的通信**提供**通用的数据传输**服务。应用进程利用该服务传送应用层报文。所谓通用,是指并不针对某个特定网络应用,而是多种应用可以使用同一个运输层服务。由于一台主机可同时运行多个进程,因此运输层有复用和分用的功能。复用就是多个应用层进程可同时使用下面运输层的服务,分用与复用相反,是运输层把收到的信息分别交付上面应用层中的相应进程。
```
运输层主要使用以下两种协议:
(1)传输控制协议TCP(Transmission Control Protocol)------提供面向连接的、可靠的数据传输服务,其数据传输的单位是报文段(segment)
(2)用户数据报协议UDP(User Datagram Protocol)------提供无连接的、尽最大努力的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报
```
(3)、**网络层**
网络层负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成**分组**或**包**进行传送。在**TCP/IP**体系中,由于网络层使用IP协议,因此分组也叫作**IP数据报**,或**数据报**。另外,**无论在哪一层传送的数据单元,都可笼统地用“分组”来表示**

网络层的另一个任务就是要选择合适的路由,使源主机运输层所传下来的分组能够通过网络中的路由器找到目的主机。这里要强调指出,网络层中的**网络**二字,已不是我们通常谈到的具体的网络,而是在计算机网络体系结构模型中的专用名词

因特网由大量的**异构**网络通过**路由器**相互连接起来,因特网主要的网络层协议是无连接的**网际协议IP**和许多种路由选择协议,因此因特网的网络层也叫作**网际层**或**IP层**
(4)、**数据链路层**
数据链路层常简称**链路层**。我们知道,两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报**组装成帧**,在两个相邻结点间的链路上传送**帧**。每一帧包括数据和必要的**控制信息**(如同步信息、地址信息、差错控制等)

在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束。这样,数据链路层在收到一个帧后,就可从中提取出数据部分,上交给网络层

控制信息还使接收端能够检测到所收到的帧中有无差错。如发现有差错,数据链路层就简单地**丢弃**这个出了差错的帧,以免继续在网络中传送下去白白浪费网络资源。如果需要改正数据在数据链路层传输时出现的差错(这就是说,数据链路层不仅要检错,而且要纠错),那么就要采用可靠传输协议来纠正出现的差错。这种方法会使数据链路层的协议复杂些
(5)、**物理层**
在物理层上所传数据的单位是**比特**。发送方发送1(或0)时,接收方应当受到1(或0)而不是0(或1)。因此物理层要考虑用多大的电压代表“1”或“0”,以及接收方如何识别出发送方所发送的比特。物理层还要确定连接电缆的插头应当有多少根引脚以及各条引脚应如何连接。当然,解释比特代表的意思,就不是物理层的任务。**请注意**,传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆、无线信道等,并不在物理层协议之内而是在物理层协议的下面。因此也有人把物理媒体当做第0层

在因特网所使用的各种协议中,最重要的和最著名的就是**TCP**和**IP**两个协议。现在人们经常提到的TCP/IP并不一定是单指TCP和IP这两个具体的协议,而往往是表示因特网所使用的整个**TCP/IP协议族**

下图说明应用进程的数据在各层之间的传递过程中所经历的变化,假定两台主机通过一台路由器连接起来

![数据在各层之间的传递过程](http://upload-images.jianshu.io/upload_images/428088-3be1274a79b2dcb8.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

OSI参考模型把对等层次之间传送的数据单位称为该层的**协议数据单元PDU**

#####实体、协议、服务和服务访问点
实体:表示任何可发送或接收信息的硬件或软件进程。许多情况下,实体就是一个特定的软件模块

协议:控制两个对等实体(或多个实体)进行通信的规则的集合

服务:在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下面一层所提供的服务

使用本层服务的实体只能看见服务而无法看见下面的协议,也就是说,下面的协议对上面的实体是透明的。其次,协议是“水平的”:协议是控制对等实体之间通信的规则;服务是“垂直的”:服务是由下层向上层通过层间接口提供的。另外,并非在一个层内完成的全部功能都称为服务。只有那些能够被高一层实体“看得见”的功能才能称之为“服务”。上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令在OSI中称为**服务原语**

在同一系统中相邻两层的实体进行交互(即交换信息)的地方,通常称为**服务访问点SAP**(Service Access Point)。服务访问点SAP是一个抽象的概念,它实际上就是一个逻辑接口,有点像邮政信箱(可以把邮件放入信箱和从信箱中取走邮件),但这种层间接口和两个设备之间的硬件接口(并行的或串行的)并不一样。OSI把层与层之间交换的数据的单位称为**服务数据单元SDU**(Service Data Unit),它与协议数据单元PDU不一样。例如,可以是多个SDU合成为一个PDU,也可以是一个SDU划分为一个PDU

下图展示了任何相邻两层之间的关系

![相邻两层之间的关系](http://upload-images.jianshu.io/upload_images/428088-6350cba04cc3a826.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

计算机网络的协议还有一个很重要的特点:协议必须把所有不利的条件事先都估计到,而**不能假定一切都是正常的和非常理想的**。因此,看一个计算机网络协议是否正确,不能只看在正常情况下是否正确,而且还必须**非常仔细地检查这个协议能否应付各种异常情况**

#####TCP/IP的体系结构
TCP/IP体系结构比较简单,只有四层。下图给出了用这四层协议表示方法的例子,图中的路由器在转发分组时最高只用到网络层而没有使用运输层和应用层

![TCP/IP四层协议的表示方法举例](http://upload-images.jianshu.io/upload_images/428088-9110f5eff17b5e96.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

实际上现在的因特网使用的TIP/IP体系结构有时已经演变成下图那样,即某些应用程序可以直接使用IP层,或直接使用最下面的网络接口层。在下图中,网络接口层有时也称为子网层,这里的子网是指一些局域网和某些广域网(如ATM网),但从IP层来看,这些网络属于数据链路层,也就是属于网络接口层

![TCP/IP体系结构另一种表示方法](http://upload-images.jianshu.io/upload_images/428088-df43f2c051dfc6d1.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

还有一种方法,就是分层次画出具体的协议来表示TCP/IP协议族,如下图。它的特点是上下两头大而中间小:应用层和网络接口层都有多种协议,而中间的IP层很小,上层的各种协议都向下汇聚到一个IP协议中。这种很像沙漏计时器形状的TCP/IP协议组表明:TCP/IP协议**可以为各式各样的应用提供服务(所谓的everything over IP)**,同时TCP/IP协议也**允许IP协议在各式各样的网络构成的互联网上允许(所谓的IP over everything)**。正因为如此,因特网才会发展到今天的这种全球规模

![沙漏计时器形状的TCP/IP协议族示意图](http://upload-images.jianshu.io/upload_images/428088-a4fd4feb8217999c.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

下面利用协议栈的概念,说明在因特网中常用的客户-服务器工作方式
1、下图表示主机A和主机B都各有自己的协议栈

![在应用层的客户进程和服务器进程的交互](http://upload-images.jianshu.io/upload_images/428088-86f865a2b1fcff73.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

2、下图表示三个主机的协议栈

![主机C的两个服务器进程分别向A和B的客户进程提供服务](http://upload-images.jianshu.io/upload_images/428088-899826127af67ed5.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

你可能感兴趣的:(了解计算机网络原理知识(总览))