TCP/IP协议原理( 二 )


2.2 TCP协议(传输控制协议)
2.2.1 TCP协议概述
TCP协议位于OSI-RM第四层———传输层,是一个端对端、面向连接的协议 。该协议弥补了IP协议的某些不足,其中比较突出的有两个方面:一是TCP协议能够保证在IP数据包丢失时进行重发,能够删去重复收到的IP数据包,还能保证准确地按原发送端的发送顺序重新组装数据;二是TCP协议能区别属于同一应用报文的一组IP数据包,并能鉴别应用报文的性质 。这一功能使得某些具有四层协议功能的高端路由器可以对IP数据包进行流量、优先级、安全治理、负荷分配和复用等智能控制 。
2.2.2 TCP协议的功能
(1) 保证传输的可靠性
TCP协议是面向连接的 。所谓连接,是指在进行通信之前,通信双方必须建立连接才能进行通信,而在通信结束后终止其连接 。相对于面向无连接的IP协议而言,TCP协议具有高度的可靠性 。
当目的主机接收到由源主机发来的IP包后,目的主机将向源主机回送一个确认消息,这是依靠目的主机的TCP协议来完成的 。TCP协议中有一个重传记时器(RTO),当源主机发送IP包即开始记时 。如在超时之前收到确认信号,则记时器回零;假如记时器超时,则说明该IP包已丢失,源主机应进行重传 。对于重传记时器,确定合适的记时时长是十分重要的,它由往返时间来决定 。TCP协议能够根据不同情况自动调节记时时长 。
需要说明的是,TCP协议所建立的连接是端到端的连接,即源主机与目的主机间的连接 。internet中每个转接节点(路由器)对TCP协议段透明传输 。
总之,IP协议不提供差错报告和差错纠正机制,而TCP协议向应用层提供了面向连接的服务,以确保网络上所传送的数据包被完整、正确、可靠地接收 。一旦数据有损伤或丢失,则由TCP协议负责重传,应用层不参与解决 。
(2) 提供部分应用层信息的功能
在TCP协议之上是应用层协议(如FTP、SMTP、TELNET等),最终需依靠它们实现主机间的通信 。TCP协议携带了部分应用层信息,可用来区别同一报文数据流的一组IP包及其性质 。
TCP协议对这些应用层协议规定了整数标志符,称为端口序号 。被规定的端口序号成为保留端口,其值在0~1 023范围内(如端口序号23,用于远程终端服务) 。此外还有自由端口序号,供个人程序使用,或者用来区分两台主机间相同应用层协议的多个通信,即两台主机间复用多个用户会话连接 。
进行通信的每台主机的每个用户会话连接都有一个插口序号,它由主机的IP地址和端口序号组成 。在internet中插口序号是惟一的,一对插口序号惟一地标识了一个端口的连接(发端插口序号=源主机IP地址+源端口序号,收端插口序号=目的主机IP地址+目的端口序号) 。利用插口序号可在目的主机中区分不同源主机对同一个目的主机相同端口序号的多个用户会话连接 。
在TCP协议段的头部各域中具有码位项 。其中,SYN码位为应用数据流的开始位(当SYN置1,表示该IP数据包为某一应用报文的第一份数据包),FIN码位为应用数据流的结束位(当FIN置1时,表示此时数据包为某应用报文的最后一份数据包) 。因此可利用SYN/FIN两个码位来规定某一应用报文(或某一应用数据流)的开始与结束 。
TCP协议就是利用端口序号和SYN/FIN码位来区分应用数据流并判定其性质的,从而使具有四层功能的高端路由器具有某些对应用数据流的控制功能 。
3 TCP/IP 的工作原理
下面以采用TCP/IP协议传送文件为例,说明TCP/IP的工作原理,其中应用层传输文件采用文件传输协议(FTP) 。

推荐阅读