首页 理论教育 TCP连接:建立端到端通信通道,保证数据完整性

TCP连接:建立端到端通信通道,保证数据完整性

时间:2023-11-05 理论教育 版权反馈
【摘要】:TCP连接并没有真正建立一条连接通道,没有让沿途路由器预先为其数据的传输保留带宽与内存。TCP也是一种进程到进程的通信,但它是有连接的端到端的通信。由于TCP使用两个端点来识别不同的连接,所以在TCP中同一个端口可为不同连接所用。为保证数据完整,TCP规定发送端必须重传有错或丢失的数据段。

TCP连接:建立端到端通信通道,保证数据完整性

1.TCP连接

TCP面向连接。TCP传输数据前必须先在发送者和接收者之间通过“握手”机制建立一个连接,即所谓的“虚电路”连接,在发送端和接收端建立一条数据通道。

TCP连接并没有真正建立一条连接通道,没有让沿途路由器预先为其数据的传输保留带宽与内存。这种连接是事先发送方和接收方交换信息的一种方式,使得双方在传输数据前都做好准备。

TCP也是一种进程到进程的通信,但它是有连接的端到端的通信。这种连接由两个端点定义,端点包含IP地址端口号。例如,由主机A的IP地址192.168.46.103和其上的21端口定义的端点(192.168.46.103:21)。另外,如另一主机B(172.16.16.3使用端口50021)正与A传送数据,则它们的连接用端点对(192.168.46.103:21)与(172.16.16.3:50021)表示。由于TCP使用两个端点来识别不同的连接,所以在TCP中同一个端口可为不同连接所用。上述例子中,如第三台主机C(202.116.45.5,端口49000与主机A的端口21的应用进程通信,(如FTP),那么A和C的连接表示为:192.168.46.103:21与202.116.45.5:49000。显然这与上面A和B的连接可以区分开来。

TCP端口分配方法与UDP的一样。TCP常用的端口号见表6-3。

表6-3 常用TCP端口号示例

978-7-111-43162-6-Chapter06-10.jpg(www.xing528.com)

2.数据流传输

TCP为上层应用提供统一的数据服务接口,应用进程的数据通过此接口交付给TCP。TCP将数据缓存起来,并在适当的时候取出合适的数据长度来组成数据段发送出去。TCP并不知道所传送的数据是什么格式和表示什么意义,也不对数据进行任何处理,只是把应用程序要传输的数据当成无结构的可分成字节的比特流,这也是TCP的灵活性所在。而对数据的解释则由相应的应用程序完成。如传输没有出错,接收端接收到的数据与发送端发送的完全一致。

3.可靠传输

TCP使用多种技术保证数据的可靠交付。其中最重要的是确认和重传。TCP头部中的校验和字段只能检测数据有无损坏,而不能纠错。为保证数据完整,TCP规定发送端必须重传有错或丢失的数据段。然而,发送端又如何知道数据在中途丢失或损坏呢?回答是应有一个反馈信息。TCP采用确认机制,对正确接收的报文段都向发送端发回一个确认报文(借捎带确认以提高利用率,而非专门确认报文),对于有损的或丢失了的报文段,发送端将收不到确认。此时发送端已有定时器(发送报文同时启动)工作,如超过一定时限,定时器溢出而还没有接收到确认信息,发送端即判断有错发生,则重传此报文。

TCP使用IP层传送数据,而IP层是无连接的,每个IP数据报独立发送,沿途路由器为其选择不同路由,从而导致数据报可能不按顺序到达;另一种情况,由于某种原因报文在中途被延时过长导致发送端重发,接收端在此时就可能收到重复的数据。为解决这些问题,TCP的每个报文段头部都记录有序号,接收端就可根据这个序号来重组数据和确定数据是否重复。

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

我要反馈