1.tcp
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的传输层协议。它确保数据包按顺序且无误地传送到接收方。TCP的主要特性包括:
- 连接建立:TCP是面向连接的协议,这意味着在发送数据之前,通信双方需要先建立一个连接。这通常通过"三次握手"机制完成。
- 可靠性:每个数据包都有一个序列号,接收方会发送确认包(ACK)确认收到数据。TCP通过序列号和确认机制确保数据包按顺序传输,并使用重传机制处理丢失的数据包。
- 流量控制:TCP使用流量控制机制,确保发送方不会淹没接收方,避免网络拥塞。
- 拥塞控制:TCP采用各种拥塞控制算法(如慢启动、拥塞避免、快速重传和快速恢复)来管理网络拥塞。
a.三次握手
为了准确无误地将数据送达目标处,TCP 协议采用了三次握手(three-way handshaking)策略。用 TCP 协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。握手过程中使用了 TCP 的标志(flag)------SYN(synchronize)和 ACK(acknowledgement)。

发送端首先发送一个带 SYN 标志的数据包给对方。接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。最后,发送端再回传一个带 ACK 标志的数据包,代表"握手"结束。若在握手过程中某个阶段莫名中断,TCP 协议会再次以相同的顺序发送相同的数据包。
b.四次挥手

- 第一次挥手:发送方发送一个FIN包,表示不再发送数据。
- 第二次挥手:接收方收到FIN包后,发送一个ACK包确认。
- 第三次挥手:接收方准备断开连接时,发送一个FIN包。
- 第四次挥手:发送方收到FIN包后,发送一个ACK包确认。此时,连接断开。
b,重传机制
TCP的重传机制确保丢失的数据包能够被重新发送。发送方在发送数据后,会启动一个定时器。如果在定时器超时前没有收到确认包,TCP会重新发送数据包。
c.滑动窗口机制
TCP的滑动窗口机制用于控制数据流的传输速度。发送方根据接收方的窗口大小调整发送的数据量,确保接收方能够处理接收到的数据。
d.拥塞控制算法
TCP采用了多种拥塞控制算法,以避免网络拥塞:
- 慢启动:在连接建立初期,TCP以指数速度增加发送速率,直到检测到网络拥塞。
- 拥塞避免:当网络拥塞迹象出现时,TCP减少发送速率,避免进一步拥塞。
- 快速重传与快速恢复:当TCP检测到数据包丢失时,立即重传数据包,并通过调整拥塞窗口大小恢复传输速度。
e.TCP的应用场景
TCP适用于需要高可靠性和数据顺序保证的场景:
- 远程登录:如SSH和Telnet,远程登录需要保证命令的顺序执行和响应的正确性,TCP能够提供这种保障。
- HTTP(超文本传输协议)和HTTPS(安全超文本传输协议)都基于TCP协议。用户在访问网页时,浏览器与服务器建立连接使用的就是TCP协议,并且会在建立连接后进行数据传输,三次握手机制保证了网页访问的准确性。
- SMTP(简单邮件传输协议)、IMAP(互联网邮件访问协议)以及POP3(邮局协议)等电子邮件协议也都基于TCP协议。TCP协议确保电子邮件的稳定传输,避免在传输过程中导致数据丢失或损坏。
- FTP(文件传输协议)和SFTP(安全文件传输协议)也都是基于TCP的文件传输协议,保证客户端和服务器之间进行稳定的文件传输,保证文件的完整性。
2.udp
UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、简单的传输层协议。与TCP不同,UDP不提供数据包的顺序保证或重传机制。UDP的主要特性包括:
- 无连接性:UDP是无连接的协议,发送方和接收方之间不需要建立连接就可以传输数据。
- 不可靠性:UDP不提供数据包的顺序保证,也不处理丢失的数据包。
- 低延迟:由于UDP的简化机制,它的传输延迟较低,非常适合实时应用。
- 数据报分组:UDP将数据分割成小的数据报,每个数据报独立传输。
a.无连接传输
UDP的无连接特性使得数据可以快速传输。发送方无需等待接收方的响应,可以直接发送数据报。这种机制减少了延迟,但也带来了数据包丢失的风险。
b.数据报分组与组装
UDP将数据分割成独立的数据报,每个数据报包含源端口、目标端口、长度和校验和。接收方接收到数据报后,负责将其组装成完整的数据。如果数据报丢失或顺序错乱,接收方无法自动恢复。
c.简单校验和机制
UDP使用简单的校验和机制来检测数据报在传输过程中的错误。校验和覆盖了UDP头部和数据部分,但它的错误检测能力有限,无法像TCP那样确保数据的完整性。
d.UDP的应用场景
UDP适用于对传输速度要求较高、容忍一定数据丢失的场景:
- 视频流媒体:如YouTube和Netflix,视频流媒体对数据传输的实时性要求高,UDP能够减少延迟,提高用户体验。
- 在线游戏:游戏中的实时交互对延迟非常敏感,UDP的低延迟特性使其成为在线游戏的首选。
- DNS查询:DNS查询需要快速响应,UDP的简单机制能够满足这一需求。
3.TCP与UDP的优缺点对比
TCP的优点
-
高可靠性:TCP通过重传机制和序列号保证数据的完整性和顺序性。
-
流量控制和拥塞控制:TCP能够动态调整传输速率,避免网络拥塞。
-
面向连接:TCP在数据传输前建立连接,确保通信双方准备就绪。
TCP的缺点
-
较高的延迟:由于TCP的连接建立、重传和拥塞控制机制,它的传输延迟较高。
-
较大的开销:TCP的头部较大,包含序列号、确认号、窗口大小等字段,增加了传输开销。
UDP的优点
-
低延迟:UDP的无连接特性和简单机制使得它的传输延迟非常低。
-
较低开销:UDP的头部仅包含源端口、目标端口、长度和校验和,结构简单,传输开销小。
-
灵活性:UDP允许应用程序自行处理错误恢复和流量控制,使得它可以适应多种应用场景,尤其是那些对延迟敏感或需要广播/多播传输的场合。
UDP的缺点
-
不可靠性:UDP不保证数据包的传输成功率,也不保证数据包的顺序。丢包和乱序问题可能在传输过程中出现,这要求应用层协议自行处理这些问题。
-
无流量控制:UDP不具备TCP的流量控制机制,无法根据接收方的处理能力调整数据传输速率,可能导致数据包的丢失或网络拥塞。
-
无拥塞控制:UDP不具备TCP的拥塞控制机制,当网络拥塞时,UDP不会自动减少传输速率,可能加剧网络拥塞。