计算机网络是由端系统、通信线路和交换设备组成的。计算机网络是由硬件设备和线路组成的,但仅有硬件是无法完成有效的通信的。
网络通信双方必须对通信中可能出现的各种情况进行明确的商定,遵守相同的规则,这些规则称为协议,网络中的主机、设备必须要遵循相同的协议才能完成通信,协议可以通过软件实现,也可以通过硬件来完成。硬件提供了网络通信的物理基础,网络协议才是实现有效网络通信的关键。
网络协议
网络协议是网络中双方为了实现有效的通信而商定的规则。例如:人与人的语言,动物之间的语言。
图上是网络协议,客户端和web服务器的协议执行过程如下
- 客户端首先向服务器发出连接请求(connect request)
- 服务器响应连接应答(connect response)
- 客户发出请求GET/HTTP1.1。“GET/”的含义是要获取网站的主页“HTTP/1.1”表明用的是HTTP1.1协议
- 服务器给出应答HTTP/1.1 200 OK……
网络协议规定了通信双方所交换消息的格式和含义以及收到消息后要采取的动作,网络协议定义了以下内容:
- 语法:双发交换消息的格式
- 语义:双方交换消息的含义
- 时序:通信如何发起,在收到一个消息后,要采取什么样的动作,回复什么样的消息。
协议分层
网络通信的复杂性,决定了网络协议的复杂性,单个协议无法解决通信中的所有问题,网络通信中需要多个协议分层是解决复杂问题的一个基本方法
- 不同主机上的同一层次称为对等层(例如主机1的第3层和主机2的第三层),对等层之间运行相同的协议(实现协议的元素称为实体,可以是软件也可以是硬件,对等层内的实体称为对等实体)。
- 每一层都通过协议实现具体的功能。
- 下层为上层提供服务,上层使用下层的服务。
- 层与层之间由接口来传递数据和控制信息。
- 协议是水平的,服务是垂直的。
利用协议分层,可以将复杂的网络通信任务分解为若干个比较容易处理的子问题,降低了复杂度,易于实现和维护,每个层次都可以单独实现,只要提供的服务和实现的功能不变,与相邻层次的接口也不变,那么采用何种技术实现也是每个层次内部的事情,更有利于采用新的技术去解决问题。同时,层次明确也更有利于标准化。
优点
- 各层之间是独立的
- 灵活性好
- 结构上可分割开
- 易于实现和维护
- 能促进标准化工作
数据封装和传递
在数据传递过程中,一个最基本的概念是数据封装。在收到数据的前面加上首部,就称为封装。首部中包含了实现协议和传递数据的一些必要信息。
水平通信:对等层之间的通信
垂直通信:相邻层之间的通信
发送端层层封装,层层向下传递,直到第一层,第一层与物理链路相连,执行数据传输任务,不论高层交给第一层的是什么样的数据,第一层都将其看成0,1比特流。依据第一层的协议,第一层将0,1比特流转换为特定的电磁信号,通过物理链路传递到接受端的第一层,在接受端第一层,依照协议信号会被还原成数据,层层向上传递每上传一层,就剥去一层首部获取首部里的信息,依照协议采取相应的动作。
数据需要经过一系列的封装(发送端)和解封装(接收端)的过程才能由发送端到达接收端,发送端某一层次添加的首部,只会被接受端的对等层次读取。对等层通过交换首部内的信息来实现协议。
封装:在数据的前面加上首部。首部中包含了实现协议和传递数据的一些必要信息(高层到低层)。
解封装:也称去封装,就是将首部去掉(低层到高层)。
服务访问点
在分层结构中,低层为高层提供服务(Service)称为服务提供者,高层使用低层服务称为服务用户,两者的信息交换是通过服务访问点(service access point , SAP)进行的。
服务访问点的一个逻辑接口,在这个接口上服务用户和服务提供者之间传递两类信息,一类是协议数据单元PDU(Protocol Data Unit),一类是接口控制信息ICI(Interface Control Information),这两类信息共同组成了 接口数据单元IDU(Interface Data Unit).
第n层的PDU是第n-1层的服务数据单元SDU(Service Data Unit)
服务 协议 接口
- 服务:定义了该层次的功能,即该层应该做什么
- 接口:定义了上一层应该如何访问它,应该传递什么样的参数以及预期的结果
- 协议描述了如何实现该层次的功能
服务是在相邻层之间的是垂直的;协议是在对等层之间的,是水平的。服务不变的前提下,对等层可以更改协议和实现,这些对于服务用户是透明的。
网络体系结构
计算机网络的各个层次即每个层次协议的集合称为计算机网络体系结构,各个层次的所有协议被称为协议栈。
- OSI参考模型:理论模型
- TCP/IP参考模型:因特网标准
OSI参考模型
OSI参考模型是ISO提出的网络体系结构模型,共分为七层,从上往下依次是应用层、表示层、运输层、网络层、数据链路层、物理层。
1.应用层
应用层直接面向用户,用来实现特定的应用(如网页浏览,文件传输,发送电子邮件等),每一种应用都对应一个协议或者多个协议。随着应用的不断增多,应用层协议也不断增多。应用层从用户那里接收数据,生成应用层报文,发送给对端的应用层。报文是应用层的传输单元。
2.表示层
表示层为应用层提供服务,表示层的功能包括
- 格式转换:不同的计算机系统采用不同的编码系统,表示层要负责不同的转换工作。发送方将发送方使用的数据格式转换城公共的格式,接收发将公共的格式转换成接收方使用的数据格式。
- 加密和解密:在考虑传递数据的安全性时,需要在发送放对应用层数据加密,在接收方对数据解密。
- 压缩和解压:对于媒体数据(音频,视频)经过解压后可以减少数据的传输量,提高传输效率。
3.会话层
会话层用来管理会话过程,包括会话的建立、维持和结束。网络里面的一次通信过程(如一次远程登录,一次文件传输)类型于人们的一次对话,称为会话。会话层要约定的内容包括:如何开始会话;双发如何交互数据,是轮流发送数据还是同时发送数据;会话中断后如何恢复;会话何时结束等。
4.运输层
运输层接收会话层的数据,添加首部后形成段(Segment),段是运输层的数据传输单位。运输层负责将数据从源端发送到目的端。这里的“端”指的是信息传输的两个端点,即正在通信的两个应用进程。运输层要为两端的应用进程提供可靠的端到端的数据传服务。
- 应用进程寻址:一台主机上运行有多个进程,运输层要提供一种编址的方法,能够区分每个应用的进程,从而将数据交给正确的应用进程。
- 差错控制:运输层要检测端到端数据传输中的错误,并纠正错误,为应用进程提供一条无错的数据传输通道。
- 流量控制:运输层还防止发送端过快的向接收端发送数据,从而造成接收端数据来不及接收而丢失的现象。
- 连接控制:为了提供可靠的端到端的通信,在传输数据前,运输层需要在两个端点间建立一个连接,在连接上传输数据,传输完毕时,关闭连接。
5.网络层
网络层接收运输层的数据,在数据前面添加首部后形成分组(Packet)。分组是网络层的数据传输单位,网络层的主要功能是为分组选路,发送方和接收方之间会间隔其他的网络,网络层要为分组找到一条合适的路径,使得分组能够到达目的地。
6.数据链路层
数据链路层接收网络层传递下来的分组,在分组前面加上自己的首部,封装成一个帧(Frame),帧是数据链路层的传输单位,数据链路层的任务是在同一物理网络的两个相邻结点间传输帧。
- 成帧:封装网络分组
- 物理寻址:物理网络中的每个主机都有一个唯一的物理地址,在帧首部中应该包含具体的地址信息,从而保证帧发送给正确的站点
- 流量控制:发送方高速传输的数据将低速的接收方“淹没”
- 差错控制:检查帧传输中的错误,并设法纠正
- 访问控制:当有多个主机共享一条物理链路时,数据链路层要解决在任意时刻由哪个主机使用物理链路的问题
7.物理层
物理层是计算机网络体系结构中的最低层,直接和物理链路打交道。数据链路层将帧交给物理层,物理层将其看成一长串的0,1比特流。物理层的任务就是将0,1比特流从物理链路的一端发送到另一端。物理层涉及如何在物理链路上传递比特流的问题(如,如何表示0,1;比特之间的间隔是多少;如何开始通信和终止通信;网络接口有多少个帧及每一帧的用途等)。
TCP/IP模型
TCP/IP协议体系源自实际的连网需求。随着ARPANET的不断扩大,各种不同的网络需要和ARPANET互连互通,这时人们发现原有的网络协议无法达到这个要求,于是TCP/IP协议应运而生,随之就有了TCP/IP模型。TCP/IP模型共分为四层,从上到下分别是应用层、运输层、互联网层、网络接口层。
1.应用层
TCP/IP模型的应用层和OSI参考模型的应用层类似,包含的应用层协议有文件传输协议(File Transfer Protocol,FTP)、简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)、邮局第三版协议(Post Office Protocol 3,POP3)、超文本传输协议(Hyper Text Transfer Protocol,HTTP)等。FTP协议能够在两台机器之间传输文件,SMTP协议用来发送电子邮件,POP3用来接收电子邮件,HTTP协议用来访问web网站。TCP/IP模型中没有表示层和会话层,具体的连网实践证明会话层和表示层对于多数的应用程序没有用处。
2.运输层
TCP/IP模型的运输层同样也提供端到端的通信服务。TCP/IP体系的运输层里包含两个协议:TCP协议和UDP协议。
TCP协议提供可靠的端到端通信,可以保证接收方收到的数据与发送方发送的数据完全相同,能够保证数据不丢失、无差错,同时还有流量控制和拥塞控制的功能。所以TCP/IP协议比较复杂,能够为要求可靠性的应用层协议提供服务,如文件传输、邮件收发。
UDP协议不能保证数据不丢失、无差错,也不能保证接收方收到数据的顺序和发送方发送的顺序是一样的。UDP协议比较简单,但效率比较高,能对可靠性要求不高,对实时性要求比较高的应用提供服务,如传输音频和视频。
3.互联网层
互联网层相当于OSI参考模型中的网络层,它负责将运输层交给他的数据送到目的地,中间可能会有跨越多个网络,互联网层要为数据找到一条正确的路。互联网层是整个TCP/IP协议体系的关键部分,主要的协议是IP协议。正是有了IP协议,才实现了多个不同网络的互连。IP协议提供的是无连接的数据服务,数据报服务的特点决定了IP协议是不可靠的,交给IP协议发送的数据可能会丢失、乱序和出错,但IP协议不负责去解决这些问题,IP协议只会尽自己最大的努力将数据送到目的地,但它不保证可靠性。数据传输的可靠性由TCP协议来提供。
4.网络接口层
网络接口层相当于OSI参考模型中的数据链路层和物理层。TCP/IP模型没有明确描述网络接口层,只是指出主机要使用某种协议与具体的网络连接,能够传递IP数据报。
OSI参考模型与TCP/IP模型的比较
OSI | TCP/IP | |
---|---|---|
层数 | 七 | 四 |
应用层 | 有 | 有 |
表示层 | 有 | 无,功能包含在应用层 |
会话层 | 有 | 无,功能包含在应用层 |
运输层 | 只提供面向连接的可靠的数据传输服务 | 提供两类服务:面向连接的可靠的数据传输服务,无连接的不可靠的数据传输服务 |
网络层 | 提供无连接和面连接的两种服务 | 只提供无连接的数据报服务 |
数据链路层 | 有 | 功能包含在网络接口层 |
物理层 | 有 | 功能包含在网络接口层 |
市场应用 | 理论模型,无市场应用 | 网络互连的事实标准 |
OSI参考模型是由ISO提出来的,具体浓厚的通信背景,强调服务质量,强调对差错的控制。它先定义了一套完整的框架,然后才在这个框架内发展相应的协议。TCP/IP协议则不同,它产生于因特网的联网需求,是先有了具体协议的基础上,进一步完善其框架体系,从而也更适合计算机网络的特点。
数据在网络中的传递过程
发送端主机
用户再终端生成数据,数据交给应用层封装为应用层报文。应用层报文向下传递,交给运输层封装,生成报文段;报文段交给网络层封装为分组、分组交给数据链路层,链路层添加首部和尾部,封装为帧。帧交给物理层,物理层将帧看做比特流,通过链路发送出去。
转发设备(路由器)
数据帧到达路由器,进入路由器接口,数据链路层去掉帧的首部和首部和尾部,将器封装的分组交给网络层,网络层根据分组首部中的地址信息,为分组选路,确定转发接口。分组从转发接口发出时,会再次被封装为新的帧转发给下一站。下一站路由器进行类似的操作,直到分组被转发到目的地。
目的主机
封装分组的数据帧到达目的主机后,从数据链路层依次往上传递,经过网络层、运输层、应用层,每层上传时都丢掉自己的首部,将封装的内容上传,最后数据交给用户。