在地球上,人类是很渺小的个体,分布在全世界的各个角落。随着科技的发展,人们现在可以非常容易的同远在千里之外的亲人、朋友进行实时联络,获得和分享世界另一端正在发生的事情,这是多么令人难以置信的事情,但是互联网改变了这一切,让这些不可思议的想法成为现实,使得地球变成了一个小村庄,而TCP/IP便是实现互联网通信的纽带。
在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用。只有把它们联合起来,电脑才会发挥出它最大的潜力。于是人们就想方设法的用电线把电脑连接到了一起。但是简单的连到一起是远远不够的,就好像语言不同的两个人互相见了面,完全不能交流信息。因而他们需要定义一些共通的东西来进行交流,TCP/IP 就是为此而生。TCP/IP不是一个单一协议,而是一个协议族的统称。里面包括了IP协议,IMCP协议,TCP协议,以及我们更加熟悉的HTTP、FHP协议等等。电脑有了这些,就好像学会了外语一样,就可以和其他的计算机终端做自由的交流了。简单地说,PC就实现了网络互联。
那先学习下TCP/IP协议的结构,它是如何分层的呢?如图1所示:
图1 TCP/IP层次结构图
TCP(Transmission Control Protocol)是传输控制协议的简称,它是网络中各层协议的综合,反映了一个网络中文件传输的过程,由上层协议到底层协议,再由底层协议到上层协议。如图1所示,TCP/IP协议族按照层次由上到下,层层封装,属于核心组件不能卸载或删除,但可以重置。最上面的就是应用层Application,这里面有http、smtp、telnet、TFTP、DNS、E-mail、ftp等我们熟悉的协议。第二层是传输层Transport,TCP和UDP协议就在这个层次。传输层仅用于彼此通信,可以提供流量控制,可检测数据段,及对数据段排序,不对字节流作解释。第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其他的数据以确定传输的目标。第四层是叫数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。最后是硬件物理层,负责网络的传输,这个层次的定义包括网线的制式,网卡的定义等等。发送协议的主机从上自下将数据按照协议封装,而接收数据的主机则按照协议
从得到的数据包解开,最后拿到需要的数据。这种结构非常有栈的味道,所以也把TCP/IP协议族称为TCP/IP协议栈。
一、应用层
应用层直接和应用程序接口并提供常见的网络应用服务。应用层是开放系统的最高层,是直接为应用进程提供服务的。其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务。应用层使用最为广泛,需要的协议标准也是最多的。在应用层可以实现运输、访问和管理,收发电子邮件以及虚拟终端目录服务远程作业录入信息通信等等。例如DNS、HTTP、FTP等协议都是应用在这一层。
二、传输层
传输层是最关键的一层,也是唯一负责总体的数据传输和数据控制的一层。传输层提供端到端的交换数据的机制。传输层对应用层提供可靠的传输服务,对网络层提供可靠的目的地站点信息。TCP是最常用的的传输层协议,它的主要功能是:对一个进行的对话或连接提供可靠的传输服务,在通向网络的单一物理连接上实现该连接的复用,在单一连接上提供端到端的序号与流量控制、差错控制及恢复等服务。
1、TCP连接建立
(a)连接建立 (b)连接终止
图2 TCP协议的建立与终止过程
TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN+ACK,并最终对对方的 SYN 执行 ACK 确认。如图2(a)所示,TCP三次握手的过程如下:
客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入
SYN_RECV状态。
客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入
Established状态。
三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。
2、TCP连接终止
建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。具体过程如图2(b)所示。
(1) 某个应用进程首先调用close,称该端执行“主动关闭”(active close)。该端的TCP于是发送一个FIN分节,表示数据发送完毕。
(2) 接收到这个FIN的对端执行 “被动关闭”(passive close),这个FIN由TCP确认。
(3) 一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。
(4) 接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN。
三、网络层
TCP/IP协议体系中的网络层功能由IP协议规定和实现,故又称IP层。网络层介于运输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。
网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。IP定义了在TCP/IP互联网上数据传送的基本单元和数据格式,完成路由选择功能,选择数据传送的路径并且包含了一组不可靠分组传送的规则,指明了分组处理、差错信息发生以及分组的规则。IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制。与IP协议配套使用实现其功能的还有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP。
四、数据链层
数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。为达到这一目的,数据链路必须具备一系列相应的功能,主要有:如何将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。
五、物理层
物理层(Physical Layer)是TCP/IP协议栈中最低的一层,它直接面向实际承担数据传输的物理媒体(即通信通道),物理层的传输单位为比特(bit),即一个二进制位(“0”或“1”)。实际的比特传输必须依赖于传输设备和物理媒体,但是,物理层不是指具体的物理设备,也不是指信号传输的物理媒体,而是指在物理媒体之上为上一层(数据链路层)提供一个传输原始比特流的物理连接。物理层规定:为传输数据所需要的物理链路创建、维持、拆除,而提供具有机械的,电子的,功能的和规范的特性。简单的说,物理层确保原始的数据可在各种物理媒体上传输。包括网线的制式,网卡的定义等,这一层无协议的编写。
By David