计算机网络  TCP协议
传输控制协议(Transmission Control Protocol,TCP)是重要的传输层协议,它能够提供可靠的端到端的数据传输。TCP协议也是TCP/IP最具代表性的协议。
1TCP协议功能特点
尽管IP协议提供了一种使计算机能够发送和接收数据的方法,将分组从发送端传送到接收端。但是必须通过TCP协议才能解决数据报在传输过程中出现的各种差错,如数据报丢失、重复等差错。TCP协议具有以下功能特点:
面向连接的服务
发送端和接收端分别利用服务原语创建一个称为套接字的连接端点。也就是为了进行数据传输,首先必须在发送端和接收端之间建立相应的连接。
面向数据流
两个应用程序相互传输大量数据时,可以将数据划分为字节流。在传输过程中,接收端应用程
序收到的字节流顺序同发送端送出的字节流顺序一样。
缓冲传输
当应用程序将数据发送给TCP实体时,TCP可能将其缓存起来,待累加到一定量后,作为一个数据片发送出去,以便提高数据传输效率。
 
对于急于发送出去的数据,例如键盘命令等,TCP协议提供了一种PUSH机制。应用程序用PUSH标志来通知TCP协议把当前在缓冲区中的数据立即发送出去。
提供可靠性
TCP协议采用带重传的肯定确认机制来进行差错控制和流量控制。TCP协议能够对不按序到达的数据片进行整理,组装成原报文。
全双工连接
TCP协议允许在两个方向上,同时进行数据传输。数据流服务允许在一个方向上结束数据传
输,而在另一个方向上,数据仍在继续传输。因为全双工连接,所以可以在一个方向的数据流中附带对相反方向数据流的控制信息,以便减轻网络负载。
2TCP协议报文格式
TCP协议在两台计算机之间,以数据段为数据单元进行传输。通过报文段的交互来建立连接、传输数据、发出确认、通告窗口大小以及关闭连接。TCP协议的报文格式如图4-1所示。
图4-1  TCP报文格式
TCP报文格式可以分为报头区和数据区两部分。其中,数据区包括高层需要传输的数据,而
报头区是为了正确传输高层数据而增加的控制信息,这些控制信息包括源端口、目的端口等。
源端口和目的端口
这两个字段分别标识出本地和远地用于通信的连接端口,并且连接端口对应于高层应用程序。
序号
数据段中第一个数据字节的序号(除含有SYN的数据段外)。在含有SYN的数据段中,序号字段为SYN的序号,即建立本次连接的初始序号,在该连接上发送的第一个数据字节序号为初始序号加1。
数据偏移
该字段指出当前报文段中数据的起始位置,以4字节为单位。
控制位
该字段指出了报文段的应用目的和内容,共有6个控制位。各控制位字段的含义如表4-1所示。
表 4-1  TCP报头的控制位字段含义
位(从左到右)的标识
该位置的含义
URG
紧急指针字段可用
ACK
确认字段可用
PSH
请求急迫操作
RST
连接复位
SYN
同步序号
FIN
发送端字节流结束
确认号
当报头控制位字段中ACK置位时,该字段才有效。它表示本地希望接收的下一个数据字节的序号。对于收到有效确认号的发送端来说,其值表示接收端已经正确接收到了该序号以前的
数据。
窗口
该字段表示当前报文段发送端能够接收从确认号开始的最大数据长度,该字段值主要向对方通告本地接收缓冲区的使用情况。
校验和
该字段用于校验协议伪头、TCP报头,以及数据的正确性。
紧急指针
当报头控制位字段中URG置位时,该字段才有效。它表示从当前报文段序号开始的一个正向位移,指向紧急数据的最后一个字节。tcp ip协议技术
选项
该字段位于TCP报头的尾部。它分为单字节和多字节两种格式,单字节格式只标明选项类型,
而多字节格式由一个字节的选项类型、多字节的实际选项数据和一个字节的选项长度组成。
3TCP协议连接管理
连接管理包括建立连接和关闭连接两个方面。TCP协议是面向连接的协议,为建立连接,其中一方被动等待连接请求到来,进程通过被动打开命令通知准备接受来自另一方的连接请求。而请求方的用户进程向TCP软件发出主动打开命令,表明向对方请求连接。
TCP协议采用三次握手操作来建立一条连接,如图4-2所示。如果计算机A为客户方,计算机B为服务方,则计算机B通过LISTEN原语,被动等待连接请求的到来;而计算机A通过CONNECT原语指明需要连接的IP地址和端口号及能够接收的最大数据片等参数。TCP软件发送控制位字段SYN被置为1,ACK被置为0的报文,并选一个初始序号X。
计算机B的TCP软件收到连接请求报文后,将查看有无进程在听指定端口。如果没有,就发送一个控制位字段RST被置为1的应答报文,拒绝连接。否则,就将该报文交给听的进程,如果该进程同意建立连接,就发送一个确认报文,在确认报文中,控制位字段SYN被置为1,确认序号为X+1,并选择一个初始序号Y。此时,计算机A的TCP软件接收到计算机B发送
来的确认报文后,需要向计算机B发送确认报文,其确认序号为Y+1。至此计算机A和计算机B的TCP软件分别通知应用进程,连接已经建立。
图4-2  三次握手过程
当计算机A应用进程向TCP软件通知关闭连接时,TCP软件将剩余的数据发送完毕,然后发送一个关闭连接报文,其控制位字段FIN被置为1,序号X为最后字节号加1。计算机B接收关闭连接报文后,发出确认报文,序号为X+1。然后通知应用进程,使计算机A到计算机B方向上的连接被关闭,此时只关闭了一个方向上的连接,而另一方向的连接可以继续传输数据,直到另一方向连接关闭为止,整个连接才全部关闭。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。