本文介绍: TCP是Transmission Control Protocol的简称,中文名是传输控制协议。它是一种面向连接的、可靠的、基于IP的传输层协议两个TCP应用之间在传输数据的之前必须建立一个TCP连接,TCP采用数据流的形式在网络传输数据。TCP为了保证报文传输的可靠性,会对每一个包进行编号,同时序号也能保证接收端接收数据时候可以按序接收接收端在接到数据后会返回一个相应的应答信号,如果发送端在合理的往返延时内未接收到应答信号,那么对应数据将会重传。在数据确认无误后才会将数据传递应用层。

1. TCP协议简介

        TCP是Transmission Control Protocol的简称,中文名是传输控制协议。它是一种面向连接的、可靠的、基于IP的传输层协议。两个TCP应用之间在传输数据的之前必须建立一个TCP连接,TCP采用数据流的形式在网络传输数据。TCP为了保证报文传输的可靠性,会对每一个包进行编号,同时序号也能保证接收端接收数据时候可以按序接收接收端在接到数据后会返回一个相应的应答信号,如果发送端在合理的往返延时内未接收到应答信号,那么对应数据将会重传。在数据确认无误后才会将数据传递应用层。

2. TCP的特性

2.1 连接机制

        TCP是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一个连接,否则将无法发送数据,一个TCP连接必须有双方IP地址端口号

2.2 确认重传

        一个完整的TCP传输必须有数据的交互接收方在接收到数据之后必须正面进行确认,向发送方报告接收的结果,而发送方在发送数据之后必须等待接收方的确认,同时发送时候启动一个定时器,在指定超时时间内没收到确认,发送方就会认为发送失败然后进行重发操作,这就是重传报文

        TCP提供可靠传输层,但它依赖的是IP层的服务,IP数据报的传输是无连接、不可靠的,因此它要通过确认来知道接收方确实已经收到数据了。但数据和确认都有可能丢失,因此TCP通过在发送时设置一个超时机制(定时器)来解决这种问题,如果当超时时间到达的时候没有收到对方的确认,它就重传该数据。

2.3 缓冲机制

        在发送方想要发送数据时候,由于应用程序的数据大小类型都是不可预估的,而TCP协议提供了缓冲机制来处理这些数据,如在数据量很小的时候,TCP会将数据存储在一个缓冲空间中,等到数据量足够大的时候在进行发送数据,这样子能提高传输的效率并且减少网络中的通信量,而且在数据发送出去的时候并不会立即删除数据,还是让数据保存缓冲区中,因为发送出去的数据不一定能被接收方正确接收,它需要等待到接收方的确认再将数据删除。同样的,在接收方也需要有同样的缓冲机制,因为在网络中传输的数据报到达的时间是不一样的,而且TCP协议还需要把这些数据报组装成完整的数据,然后再递交到应用层中。

2.4 全双工通讯

        在TCP连接建立后,那么两个主机就是对等的,任何一个主机可以向另一个主机发送数据,数据是双向流通的,所以TCP协议是一个全双工的协议,这种机制为TCP协议传输数据带来很大的方便,一般来说,TCP协议的确认是通过捎带的方式实现,即接收方把确认信息放到反向传来的是数据报文中,不必单独为确认信息申请一个报文,捎带机制减少了网络中的通信流量。由于双方主机是对等的存在,那么容易一方都可以断开连接,此时这个方向上的数据流就断开了,但是另一个 方向上的数据仍是连通状态,这种情况就称之为半双工。

2.5 流量控制

        TCP提供了流量控制服务flowcontrol service)以消除发送方使接收方缓冲区溢出可能性。流量控制是一个速度匹配服务,即发送方的发送速率与接收方应用程序读取速率匹配,TCP通过让发送方维护一个称为接收窗口receive window)的变量来提供流量控制,是的,你没看错,是接收窗口(rwnd),它用于给发送方一个指示:接收方还能接收多少数据,接收方会将此窗口值放在TCP报文的首部中的窗口字段然后传递给发送方,这个窗口大小是在发送数据时候动态调整的。当接收方主机的接收窗口为0时,发送方继续发送只有一个字节的报文段,这些报文段将被接收方接收,直到缓存清空,并在确认报文中包含一个非0的接收窗口值。

2.6 差错控制

        除了确认与重传之外,TCP协议也会采用校验和的方式来检验数据的有效性,主机在接收数据的时候,会将重复的报文丢弃,将乱序的报文重组,发现某段报文丢失了会请求发送方进行重发,因此在TCP往上层协议递交的数据是顺序的、无差错的完整数据。

2.7 拥塞控制

        当数据从一个大的管道(如一个快速局域网)向一个较小的管道(如一个较慢的广域网)发送时便会发生拥塞。当多个输入流到达一个路由器,而路由器输出流小于这些输入流的总和时也会发生拥塞,这种是网络状况的原因。如果一个主机还是以很大的流量给另一个主机发送数据,但是其中间的路由器通道很小,无法承受这样大的数据流量的时候,就会导致拥塞的发生,这样子就导致了接收方无法在超时时间内完成接收(接收方此时完全有能力处理大量数据),而发送方又进行重传,这样子就导致了链路上的更加拥塞,延迟发送方必须实现一直自适应的机制,在网络中拥塞的情况下调整自身的发送速度,这种形式对发送方的控制被称为拥塞控制(congestion control)。

3. 常见端口号

        常见的TCP协议端口号有21、53、80等等,更多端口描述具体见下图,其中80端口号我们日常生活中最常见的一个端口号,它也是HTTP服务器默认开放端口

原文地址:https://blog.csdn.net/heyangge/article/details/134734169

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_29692.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注