1.3 TCP/IP模型的分层
如下所示,TCP/IP模型中包含了4层,每一层均包含了一系列对应的协议。每个协议都自己的作用,这些协议也都是通过这个模型来对接业界标准的。
第一层是应用层,这一层直接和用户及其他网络层协议进行互动;这一层的重点在于将数据通过用户可以理解的方式呈现给用户。应用层也会追踪用户连接的Web会话,并且使用一系列的协议帮助应用层连接到TCP/IP模型中的其他各层。在本书当中,我们会介绍下面几种非常常用的应用层协议:
超文本传输协议(HTTP);
文件传输协议(FTP);
简单网络管理协议(SNMP);
简单邮件传输协议(SMTP)。
第二次是传输层。这一层唯一的作用是创建两台主机通信时使用的套接字(读者应该已经意识到网络套接字对于通信的重要性了),这是在两台设备之间创建出一条独立连接的关键。
两台主机对于同一个通信实例可以建立多条连接,这是将IP地址和端口号结合起来实现的。在广域网通信中需要使用IP地址(而在局域网通信中,数据传输实际上是通过MAC地址来实现的),而一台设备之所以可以与多台设备通过多条信道进行通信,这完全是借助端口号来实现的。除了某些限制使用的端口号之外,每个系统都可以在通信的过程中使用一个随机的端口号。
这一层也会充当两台主机之间通信的骨干。这一层中最常用的协议是TCP和UDP,它们的概念分别如下所示。
TCP:这是一种面向连接的协议,常常称为可靠协议。首先,这种协议会在两台主机之间创建一条专用的通信信道,然后再开始传输数据。接下来,发送方会通过这条信道发送等分的数据段,而接收方则会针对每个接收到的数据段发送确认消息。一般来说,发送方会等待一段时间,然后再次发送同一个数据段,以确保接收方能够接收这个数据段。比如,在用户下载文件的时候,就是由TCP进行管理,并且确保每个比特位都能成功传输的。
UDP:这是一种无连接的协议,术语中常常称之为不可靠通信协议。不过这种协议十分简单,因为它不会创建专用的信道,发送方只负责向目的设备发送数据段,但并不关心接收方是不是接收到了数据。这种通信的形式其实并不会影响通信的质量;因为这种通信形式都满足了发送方向接收方传输数据的需求。比如,当用户在玩局域网游戏时,有几个比特位丢失其实并不会影响用户的游戏体验,因此用户体验也不会因此而降低。
第三层是互联网层,这一层关注的重点是数据的往返传输。这一层最主要的协议就是IP(互联网协议),它同时也是这一层最重要的协议。IP可以给数据提供路由功能,正是因为IP协议提供的路由功能,很多数据包才能最终到达自己的目的地。这一层还包括一些其他的协议,如ICMP和IGMP。
最后一层是链路层(这一层常常被人们称为网络接口层),这一层与网络硬件相连。虽然TCP/IP协议栈中并没有在这一层定义任何协议,但这一层其实实施了很多协议,如地址解析协议(ARP)和点到点协议(PPP)。这一层关注的是信息的比特数据如何在物理线缆中进行传输。这一层会建立并终结连接,会将信号由模拟信号转化为数字信号,反之亦然。网桥和交换机这类设备就工作在这一层。
客户端和服务器将IP地址和MAC地址结合起来使用是通信过程的核心。在这两个地址中,IP地址是网关分配给设备或者由管理员静态分配的,而MAC地址则来自于网络接口卡(NIC),每一个参与主机通信的设备都拥有MAC地址。在数据从应用层向链路层处理的过程中,会有很多数据以数据包头部或数据包尾部的形式添加到传输的数据上,这需要TCP/IP模型中的不同分层相互协调。添加数据包头部的处理过程称为数据封装,网络模型会在这个过程中的最后创建出协议数据单元(PDU)。
协议数据单元中包括要发送的信息,以及各个协议以头部或尾部的形式向数据包添加的信息。在PDU到达最底层的时候,它就已经封装好了要进行传输所必须具备的所有信息。当数据到达目的设备的时候,封装的头部和尾部的信息就会在TCP/IP模型自底向上的处理过程中,被目的设备逐个摘除。
图1-1所示为封装的过程。