TCP/UDP简介
TCP和UDP是两种常见的互联网传输协议,它们都是在IP网络上运行的传输层协议。
TCP(Transmission Control Protocol:传输控制协议)是一种面向连接的可靠协议。
它提供数据传输的有序性、完整性、流量控制和拥塞控制。
TCP的通信过程包括三次握手建立连接和四次挥手断开连接。
使用TCP时,数据按顺序发送和接收,确保数据可靠地到达目的地。
TCP适用于需要准确可靠传输的应用,如网页浏览、文件传输、电子邮件和远程登录。
UDP(User Datagram Protocol:用户数据报协议)则是一种无连接的不可靠协议。
它提供了一种简单的、不可靠的传输方式。
UDP不保证数据传输的有序性、完整性、流量控制和拥塞控制。
使用UDP时,数据以数据包的形式发送,接收方不需建立连接,直接接收。
UDP适用于实时应用,如音频、视频流传输、在线游戏和广播。
TCP/UDP的特点
TCP/UDP有什么相同点?
都是在IP网络上运行的传输层协议;
都使用端口号来标识不同的应用程序;
都可以用于客户端和服务器之间的通信。
TCP/UDP有什么不同点?
TCP是面向连接的,UDP是无连接的;
TCP提供可靠的数据传输服务,UDP不提供可靠性保证;
TCP具有流量控制和拥塞控制功能,UDP没有;
TCP需要进行三次握手建立连接,UDP不需要。
TCP的错误检测和纠正:
TCP使用校验和来检测传输过程中是否发生了数据损坏或错误。发送方在发送数据时计算校验和,并将其包括在TCP头部中。接收方在接收到数据后重新计算校验和,并将其与接收到的校验和进行比较。如果两者不匹配,则表明数据在传输过程中发生了错误,接收方会请求发送方重新发送丢失或损坏的数据。
TCP主要通过以下几个字段进行错误检测和纠正
(1)校验和——每个TCP报文段都包括检验和字段,校验和用来检查报文段是否出现传输错误,如果报文段出现传输错误,TCP检查出错就丢弃该报文段。
(2)确认——接收端检查报文是否出错,发现出错时就丢弃,不发确认;而发送端TCP就通过检查接收端的确认,判断发送的报文段是否已经正确到达目的地。
(3)超时——发送端根据发出的报文段在超时规定的时间内是否收到确认,从而来判断该报文段是否丢失或传输出错。TCP使用了4种计时器:重传计时器、坚持计时器、保持计时器和时间等待计时器来保证了传输的可靠性。
TCP的流量控制:
流量控制是一种机制,确保数据发送方和接收方之间的数据传输速度保持匹配。TCP使用滑动窗口机制实现流量控制。发送方在发送数据时,接收方会向发送方通告其可接收的数据量,即窗口大小。发送方根据接收方通告的窗口大小控制发送数据的速度,以确保不会发送过多的数据导致接收方无法及时处理。如果接收方无法及时处理数据,它可以调整窗口大小以限制发送方的数据流量。
TCP的拥塞控制:
拥塞控制是一种机制,用于避免过多的数据注入到网络中导致网络拥塞。TCP使用一些算法来识别和应对网络拥塞。其中最常用的算法是拥塞避免算法和拥塞控制算法。拥塞避免算法通过动态调整拥塞窗口大小来控制发送方的数据发送速率。拥塞控制算法使用拥塞检测和拥塞恢复来减少拥塞出现时的数据流量。
TCP的三次握手:
(图片取自互联网,侵权请联系删除)
在建立TCP连接时,使用三次握手(three-way handshake)来确保双方都同意建立连接。下面是三次握手的步骤:
1. 客户端向服务器发送一个连接请求报文(SYN)并指定初始序列号。
2. 服务器收到连接请求后,回复一个确认报文(ACK)作为响应,同时也发送一个连接请求报文(SYN)。
3. 客户端收到服务器的回复后,再向服务器发送确认报文(ACK)作为响应。此时,连接建立,双方可以开始进行数据传输。
TCP的四次挥手:
(图片取自互联网,侵权请联系删除)
当TCP连接不再需要时,使用四次挥手(four-way handshake)来正常关闭连接。下面是四次挥手的步骤:
1. 客户端向服务器发送一个连接释放报文(FIN),表示客户端不再发送数据。
2. 服务器收到连接释放报文后,发送一个确认报文(ACK)作为响应,表示已收到客户端的连接释放请求。
3. 服务器继续传输可能仍在传送的数据,然后发送连接释放报文(FIN)给客户端。
4. 客户端收到服务器的连接释放报文后,发送一个确认报文(ACK)作为响应,表示已收到服务器的连接释放请求。此时,双方的连接断开。
总结
TCP的优势
可靠性:TCP提供可靠的数据传输,确保数据的完整性和顺序性。
错误检测和纠正:TCP具备检测和纠正传输中发生的错误的能力。
流量控制:TCP通过流量控制避免了接收方因来不及处理大量数据而导致的问题。
TCP的劣势
较慢:因为TCP提供可靠传输,它需要进行复杂的握手和确认过程,这导致了相对较高的延迟。
处理负载:TCP的控制机制增加了系统的负载,对处理能力有一定要求。
UDP的优势
较快:UDP不需要进行连接建立和握手,以及其他传输保障机制,因此传输速度相对较快。
简单轻量:UDP的头部开销较小,资源占用较少。
UDP的劣势
不可靠:UDP没有提供可靠性保证,传输过程中可能丢包或乱序。
不具备流控制和拥塞控制:UDP不包含流控制和拥塞控制机制,可能导致数据的丢失和网络拥塞。