您的位置 首页 java

TCP-面向连接的传输层协议

传输控制协议(TCP,Transmission Control Protocol)是一种 面向连接 的、 可靠的 基于字节流 传输层 通信协议。许多高层应用协议(包括HTTP、FTP)都是以它为基础的,TCP非常适合数据的连续传输。

TCP-面向连接的传输层协议


传输控制协议TCP是为了在
不可靠的互联网络 上提供 可靠 的端到端字节流而专门设计的一个传输协议。
主要特点:
TCP是一种面向广域网的通信协议,目的是
在跨越多个网络通信 时,为两个通信端点之间提供一条具有下列特点的通信方式:

  1. 基于流的方式;(流就是指不间断的数据结构)TCP不像UDP一样那样一个个报文独立地传输,而是在不保留报文边界的情况下以字节流方式进行传输。
  2. 面向连接;面向连接,是指发送数据之前必须在两端建立连接。建立连接的方法是“三次握手”,这样能建立可靠的连接。建立连接,是为数据的可靠传输打下了基础。
  3. 可靠通信方式;对于可靠传输,判断丢包,误码靠的是TCP的段编号以及确认号。TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。
  4. 在网络状况不佳的时候尽量降低系统由于重传带来的带宽开销;当网络出现拥塞的时候,TCP能够减小向网络注入数据的速率和数量,缓解拥塞
  5. 通信连接维护是面向通信的两个端点的,而不考虑中间网段和节点。TCP允许通信双方的应用程序在任何时候都能发送数据,因为TCP连接的两端都设有缓存,用来临时存放双向通信的数据。当然,TCP可以立即发送一个数据段,也可以缓存一段时间以便一次发送更多的数据段(最大的数据段大小取决于MSS)

TCP能够为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地送达网络上的其他计算机。因此,对可靠性要求高的数据通信系统往往使用TCP传输数据,但在正式收发数据前,通信双方必须首先建立连接。

TCP-面向连接的传输层协议

TCP-面向连接的传输层协议

工作方式

建立连接

TCP是因特网中的传输层协议,使用 三次握手 协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN+ACK,并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。

TCP-面向连接的传输层协议

  • 第一次握手
    客户端向服务端发送连接请求报文段。该报文段中包含自身的数据通讯初始序号。请求发送后,客户端便进入 SYN-SENT 状态。
  • 第二次握手
    服务端收到连接请求报文段后,如果同意连接,则会发送一个应答,该应答中也会包含自身的数据通讯初始序号,发送完成后便进入 SYN-RECEIVED 状态。
  • 第三次握手
    当客户端收到连接同意的应答后,还要向服务端发送一个确认报文。客户端发完这个报文段后便进入 ESTABLISHED 状态,服务端收到这个应答后也进入 ESTABLISHED 状态,此时连接建立成功。

为什么 TCP 建立连接需要三次握手,而不是两次?
这是因为这是为了防止出现
失效 的连接请求报文段被服务端接收的情况,从而产生错误。

问题的核心在于 保证信道数据传输的可靠性,避免资源浪费

TCP-面向连接的传输层协议

连接终止

TCP 是全双工的,在断开连接时两端都需要发送 FIN 和 ACK。

  • 第一次握手
    若客户端 A 认为数据发送完成,则它需要向服务端 B 发送连接释放请求。
  • 第二次握手
    B 收到连接释放请求后,会告诉应用层要释放 TCP 链接。然后会发送 ACK 包,并进入 CLOSE_WAIT 状态,此时表明 A 到 B 的连接已经释放,不再接收 A 发的数据了。但是因为 TCP 连接是双向的,所以 B 仍旧可以发送数据给 A。
  • 第三次握手
    B 如果此时还有没发完的数据会继续发送,完毕后会向 A 发送连接释放请求,然后 B 便进入 LAST-ACK 状态。
  • 第四次握手
    A 收到释放请求后,向 B 发送确认应答,此时 A 进入 TIME-WAIT 状态。该状态会持续 2MSL(最大段生存期,指报文段在网络中生存的时间,超时会被抛弃) 时间,若该时间段内没有 B 的重发请求的话,就进入 CLOSED 状态。当 B 收到确认应答后,也便进入 CLOSED 状态。

性能

UDP

TCP

是否连接

无连接

面向连接

是否可靠

不可靠传输,不使用流量控制和拥塞控制

可靠传输,使用流量控制和拥塞控制

连接对象个数

支持一对一,一对多,多对一和多对多交互通信

只能是一对一通信

传输方式

面向报文

面向字节流

首部开销

首部开销小,仅8字节

首部最小20字节,最大60字节

适用场景

适用于实时应用(IP电话、视频会议、直播等)

适用于要求可靠传输的应用,例如文件传输

文章来源:智云一二三科技

文章标题:TCP-面向连接的传输层协议

文章地址:https://www.zhihuclub.com/179392.shtml

关于作者: 智云科技

热门文章

网站地图