TCP/IP协议——TCP/IP协议栈及框架

时间:2023-01-03 17:21:52

TCP/IP协议同ISO/OSI模型一样,也可以安排成栈形式。但这个栈不同于ISO/OSI版本,比ISO/OSI栈少,所以又称之为短栈。另外,需要知道的是:TCP/IP协议栈只是许多支持ISO/OSI分层模型协议栈的一种,是一个具体的协议栈。

对于TCP/IP协议栈划分为几层更合适,多年来专家们一直未达成共识,大部分对TCP/IP协议栈的描述都假定它占据了协议结构的4到5个功能层。下面我们对这两种主流的分层方法分别进行描述。

1  基于4层的TCP/IP协议栈基本描述

基于4层的TCP/IP协议栈最具说服力的是:这一观点是由TCP/IP原始标准的创立者——美国国防部提出的,它与ISO/OSI参考模型的对应关系如下图:

图1  TCP/IP协议栈层次结构与ISO/OSI参考模型的对应关系

如图1所示,TCP/IP协议栈从低层开始,依次为网络存取层、网络互连层、传输层和应用层,具体描述如下:

1.1  网络存取层(Network Access Layer)

网络存取层(又称网络层),位于TCP/IP协议栈的最低层,该层中的协议提供了数据传送的方法,使得系统可以通过连接的网络将数据传送到其它设备,并定义了如何利用网络来传送IP数据报。它基本上包括了ISO/OSI模型中的数据链路层和物理层的所有功能。TCP/IP网络存取层定义了网络传送IP数据报的方式(即流与分组),使得系统能够把数据传送给与网络直接相连的设备。

网络存取层的协议与较高层协议不一样,它必须知道物理网络的各种细节,以便准确地格式化传输的数据,使其遵守网络规定。因此,网络存取层的协议种类繁多,每一个协议都对应一种物理网络标准。这些协议常常由设备驱动程序和相关的程序结合而成,其内含的API除将IP数据封装成能在网络中传送的单元——帧外,还能将IP地址转换成为网络使用的物理地址。典型的协议实例有RFC 826(地址转换协议 ARP)、RFC 894(以太网上IP数据报传输标准)等。

1.2  网络互连层 (Internet Layer)

网络互连层(又称网际层)位于网络存取层之上,由互连网协议(IP)、互连网控制报文协议(ICMP)和互连网组管理协议(IGMP)等协议组成。IP是TCP/IP的核心,也是网络互连层中最重要的协议,它提供基本的分组传送服务,是构建TCP/IP网络的基础。因为,无论是IP上层还是IP下层的协议,也不管数据是输入还是输出,目的地在何方,它们都使用IP来传递数据。概括起来,IP主要完成以下任务:

  • 定义数据报,数据报是Internet中传输的基本单元。
  • 定义Internet地址系统。
  • 把数据报分解或重组成易于在网络中传输的结构。
  • 在网络存取层和传输层之间传递数据。
  • 给远端主机的数据报指定路由。
  • 完成数据报的拥挤控制和信息控制。

IP是一个“无连接协议”,它在传输数据之前不交换控制信息来建立端到端的连接,而且还要依靠其它层的协议提供错误检测和错误恢复。但这并不能说明IP协议是不可信赖的,事实上,它可以正确的将数据传送到已连接的网络,只是它并不能检验数据是否被正确地接收。

1.3  传输层( Transport Layer)

传输层也称主机到主机的传输层,位于TCP/IP栈的第3层,它为应用层提供可靠的或不可靠的端到端服务。TCP(传输控制协议)和UDP(用户数据报协议)是传输层中两个最重要的协议。它们都为应用层和网络互连层传送数据,二者的区别在于:TCP是一种可靠的、面向连接的、字节流协议,它利用端到端错误检测与纠正功能提供可靠的数据传输服务,因为它能验证数据在网络上是否以合适的序列正确地传输;而UDP是一个不可靠的无连接数据报协议,就像IP一样,它能为应用程序提供低开销的无连接数据报传输服务。

总之,TCP的优势在于可靠,但开销大;而UDP比较适合于传输的数据量少及使用“查询——响应”方式的应用程序的服务。

1.4  应用层(Application Layer)

应用层位于TCP/IP协议栈的顶层,它为用户提供各种网络服务,如文件传输、远程登录、电子邮件等。同时,应用层包含与具体应用程序相关的所有细节。

对于网络软件工程师而言,你在应用层的工作是将信息传到协议栈的下一合适层。协议栈的每一层要完成各自的功能。也就是说,TCP/IP协议将共同工作,完成地址转换、寻址和数据传输工作。为了和协议栈上的协议通信,必须知道有哪些协议可用,并知道它们在协议栈中的位置和功能。正常情况下应用程序将和传输协议的某一个协议(TCP或UDP)进行通信,或不使用传输层服务,直接与网络互连层的IP打交道(如外部网关协议 EGP)。

2  基于5层的TCP/IP协议栈基本描述

相对于ISO/OSI模型,基于5层的TCP/IP协议比基于4层的TCP/IP协议更容易理解,具体的分层方案如下图2:

图2   TCP/IP协议栈层次结构与ISO/OSI参考模型的对应关系

比较图2和图1可以看出,从顶层向下三层(应用层、传输层和网络互连层)对于基于5层的TCP/IP和基于4层的TCP/IP其功能都是一样的,这里不在赘述。除此之外,基于5层的TCP/IP在低层比基于4层的TCP/IP分层更详细,即用物理层和链路层两层来表示上面讲到的网络存取层。

2.1  物理层

TCP/IP协议栈的物理层与ISO/OSI模型的物理层相同——它包括携带网络数据的传输媒体介质,这种介质通常是双绞线、同轴电缆或标准串口线等,网络设计人员必须知道网络介质的传输特性。

2.2  链路层

链路层包括一个硬件接口和两个协议模块:地址解析协议(ARP)和反向地址解析协议(RARP)。链路层处理物理层和网络互连层的数据交换,并向网络互连层隐藏物理层的执行细节。当链路层完成其工作时,网络互连层的协议不关心网络是使用以太网技术还是令牌环技术,网络互连层只是简单地将数据传给链路层,然后由链路层处理所有进一步的数据传输。

综上所述,不论采用哪种分层方式,其核心和功能是一样的,特别是在应用层。应用层的初级网络用户对分层几乎不感兴趣,但要进行网络编程的人必须清楚这一点:当用户启动了某个应用层服务之后,该应用要首先建立一个到某特定机器的连接,随后告诉目的机器本次连接的操作意图,并控制整个操作过程。在源计算机系统中,应用层将要发送的信息交给服务层的TCP(或UDP),TCP通过增加TCP协议所规定的报头来确保信息正确地传输到目的地。然后,TCP把包括目的地址在内的报头和用户数据交给网络互连层的IP,IP负责为信息选择路由。由于 TCP和IP处理与网络有关的细节,所以应用层协议可以将一个网络连接看成一个简单的字节流,而不必描述与通信有关的任何细节。

对网络通信软件设计者而言,一个网络连接可由两对元素完全刻画:源主机的IP地址和应用程序端口号;目的主机的IP地址和应用程序端口号。为了保证使用TCP/IP 协议的网络中两台主机的正常连接,应禁止使用相同的IP地址和端口号,特别是IP地址。