首页 理论教育 《计算机网络基础》中的TCP连接及数据段结构

《计算机网络基础》中的TCP连接及数据段结构

时间:2023-11-01 理论教育 版权反馈
【摘要】:TCP 提供的连接是由软件实现的,因此又称为虚连接。当接收方TCP 收到数据时,要回发给发送方一个确认。图3.14TCP 数据段结构TCP 数据段中各字段的含义如下:源端口号:指出发送数据的应用程序的端口号。TCP 首部长度最多可以有60 字节。

《计算机网络基础》中的TCP连接及数据段结构

TCP 是TCP/IP 协议簇中主要的传输协议,工作在传输层,完成传输层所指定的功能。TCP 是一种面向连接的、可靠的、基于字节流的传输层通信协议。

1.TCP 的作用

TCP 层是位于IP 层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP 层不提供这样的机制,而是提供不可靠的包交换。

应用层向TCP 层发送用于网间传输的、用8 位字节表示的数据流,然后TCP 把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元MTU的限制),之后TCP 把结果包传给IP 层,由它来通过网络将包传送给接收端实体的TCP 层。为了保证不发生丢包,TCP 就给每字节一个序号,同时这些序号也保证了传送到接收端实体的包能按序接收。

之后接收端实体对已成功收到的字节发回一个相应的确认(ACK),如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。TCP用一个校验和函数来检验数据是否有错误,在发送和接收时都要计算校验和。

2.TCP 的特点

(1)端到端服务。TCP 被称为端到端(end-to-end)协议,作用范围为一台计算机(终端)上的应用进程到另一台远程计算机(终端)上的应用进程。应用进程请求TCP 创建一个连接、发送并接收数据以及撤销连接。TCP 提供的连接是由软件实现的,因此又称为虚连接。

在TCP 连接中,底层的互联网系统并不对连接提供硬件或软件支持,只是两台计算机上的TCP 软件通过交换消息来实现连接。

(2)可靠传输与自动重发。为了实现可靠传输,TCP 采用了多种技术,其中一个最重要的技术叫作重发。源主机在传输数据前需要先和目标主机建立连接,然后在此连接上,被编号的数据段按顺序收发。当接收方TCP 收到数据时,要回发给发送方一个确认。当发送方发送数据时,TCP 启动一个定时器,在定时器到点之前,如果未收到一个确认,则发送方重发数据,从而保证数据传输的可靠性

传统的传输协议使用一个固定的重发延时时间,而TCP 的重发时间设计成自适应。TCP监视每一个连接中的当前延迟,并改变重发定时器来适应条件的变化。目前,采用较多的算法是Jacobson 于1988年提出的一种不断调整超时时间间隔的动态算法,其工作原理是:对每条连接TCP 都保持一个变量RTT,用于存放当前到目的端往返所需要时间的最接近的估计值。当发送一个数据段时,同时启动连接的定时器,如果在定时器超时前确认到达,则记录所需要的时间(M),并修正RTT 的值,如果定时器超时前没有收到确认,则将RTT 的值增加一倍。

(3)流量控制。TCP 使用一种窗口机制来控制数据流。当建立一个连接时,连接的每一端分配一个缓冲区来保存输入的数据,并将缓冲区的大小发送给另一端。当数据到达时,接收方发送确认,其中包含了自己剩余的缓冲区大小。剩余的缓冲区空间大小被称为窗口,指出窗口大小的通知为窗口通知。接收方在发送的每一个确认中包含有一个窗口通知。如果发送方发送速率比接收方快,则接收到的数据最终将充满接收方缓冲区,导致接收方通知一个零窗口。发送方收到一个零窗口通知时,必须停止发送,直到接收方重新通知一个正窗口为止。

3.端口号

TCP 通过使用“端口号”来标识源端和目标端的应用进程。端口地址为16 位二进制标识,可以使用0~65 535 的任何数字。发送数据时,操作系统动态地为客户端的应用程序分配端口号。在服务器端,每种服务具有确定的服务端口,例如,WWW 服务的默认端口为80,FTP 服务的默认端口为21 等。

端口号可分为以下3 类:

(1)公认端口:0~1 023,它们紧密绑定于一些服务。通常这些端口的通信明确表明了某种服务的协议。例如,80 端口实际上总是进行HTTP 通信。

(2)注册端口:1 024~49 151,它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。例如,许多系统处理动态端口从1 024 左右开始。

(3)动态/私有端口:152~65 535。理论上,不应为服务分配这些端口。实际上,机器通常从1 024 起分配动态端口。但也有例外,SUFI 的RPC 端口从32 768 开始。

4.TCP 数据段格式

TCP 对所有的消息采用一种简单的格式,包括携带数据的消息、确认以及3 次握手中用于创建和终止一个连接的消息。TCP 使用段来表示一个消息,TCP 数据段包括12 个字段,段结构如图3.14所示。

图3.14 TCP 数据段结构

TCP 数据段中各字段的含义如下:

(1)源端口号:指出发送数据的应用程序的端口号。

(2)目的端口号:指出接收方计算机上哪一个端口对应的应用程序负责接收数据。

(3)序号:发送方将应用层数据进行分段,序号字段给出了段中携带数据的序号。接收方利用这一序号来重新按顺序排列各个段并利用这一序号计算确认号。

(4)确认号:对接收数据的一种确认,发送方根据收到的段序号进行确认,一般在收到的段序号基础上加1。表示上一个段已经收到,期待接收序号加1 的段。

(5)首部长度:首部长度给出TCP 首部的长度,以4 字节为单位进行计数。没有任何选项字段时,首部长度为5,即TCP 首部长度为5 个4 字节,即20 字节。TCP 首部长度最多可以有60 字节。

(6)保留域:可设置为0。

(7)标识位:置1 表示有效。(www.xing528.com)

URG:和紧急指针配合使用,发送紧急数据。

ACK:确认号是否有效。

PSH:指示发送方和接收方不缓存数据,立刻发送或接收。

RST:由于不可恢复的错误重置连接。

SYN:用于连接建立指示。

FIJI:用于连接释放指示。

(8)窗口:用于基于可变滑动窗口的流控,指示发送方从确认号开始可以再发送窗口大小的字节流。

(9)校验和:为增加可靠性,对TCP 整个报文进行校验和计算,并由接收端进行验证。

紧急指针:紧急指针是一个偏移量,与序号字段中的值相加表示紧急数据最后一字节的序号。

(10)选项:可能包括窗口扩大因子、时间戳等选项。

(11)数据:上层协议数据,即要传输的用户数据。

5.TCP 连接的建立与释放

TCP 传输控制协议是面向连接的控制协议,即在传输数据前要先建立逻辑连接,传输结束还要释放连接。这种建立、维护和释放连接的过程,就是连接管理。TCP 连接的建立和释放都是通过3 次握手来实现的。

1)建立连接

建立连接时,3 次握手的过程,如图3.15所示。

图3.15 TCP 建立连接时3 次握手报文序列

(1)源主机发送一个同步标志位SYN-1 的数据段。此段中同时表明初始序号,它是一个随时间变化的随机值。

(2)目标主机发回确认数据段,其中SYN=1,ACK=1,同时在确认序号字段标明目标主机期待接收源主机下一个数据段的序号,此段中还包括目标主机的段初始序号。

(3)源主机回送一个数据段,同样携带递增的发送序号和确认序号。

至此,TCP 建立连接的3 次握手完成。此后,源主机和目的主机就可以互相收发数据了。

2)释放连接

释放连接时,3 次握手的过程如图3.16所示。

图3.16 TCP 释放连接时3 次握手报文序列

(1)源主机的应用程序通知TCP 已无数据需要发送时,TCP 关闭此方向的连接。即源主机发送一个结束标志位FIJI=1 的数据段。源主机只能接收数据,不再发送数据了。

(2)目标主机返回应答,但目标主机可以继续发送数据。目标主机数据发送完成后,返回FIJI=1,表示目标主机也没有数据发送。

(3)源主机返回应答数据段,最终释放整个连接。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈