一、TCP (传输控制协议)
TCP 是一种 面向连接的、可靠的、基于字节流 的传输层通信协议。它像打电话一样,需要先建立连接,确保数据准确无误、按顺序地送达。
1.核心特点
面向连接:在数据传输前,必须通过“三次握手”建立稳定的连接,传输结束后通过“四次挥手”断开连接。
三次握手过程
假设客户端(C)想要主动连接服务器(S)。
第一次握手:SYN
a.发起方:客户端
b.动作:客户端向服务器发送一个特殊的TCP数据包。
c.包内容关键标志:
SYN = 1(同步标志位,表示这是一个连接请求)
seq = m(客户端的初始序列号,m是一个随机生成的数字)
客户端状态变化:从 CLOSED 进入 SYN-SENT(同步已发送)状态。
此时的意义:客户端对服务器说:“你好,我想和你建立连接。我这边起始的编号是 x,你能听到我吗?”
第二次握手:SYN + ACK
a.发起方:服务器
b.动作:服务器收到客户端的SYN包后,如果同意建立连接,则回复一个特殊的TCP数据包。
c.包内容关键标志:
SYN = 1(同样,表示这也是一个连接请求/确认)
ACK = 1(确认标志位)
seq = x(服务器的初始序列号,x是另一个随机生成的数字)
ack = m + 1(确认号。它的值是客户端的初始序列号 m + 1,表示“我成功收到了你的序列号为m的包,期待你下一个发序号为m+1的包给我”)
服务器状态变化:从 LISTEN 进入 SYN-RCVD(同步已收到)状态。
此时的意义:服务器对客户端说:“我听到你了!我同意建立连接。我这边起始的编号是 y,并且我确认收到了你的 x 号包。” 这一步同时完成了两件事:应答了客户端的请求,并发起了自己方向的连接。
第三次握手:ACK
a.发起方:客户端
b.动作:客户端收到服务器的SYN-ACK包后,需要再次向服务器发送确认。
c.包内容关键标志:
ACK = 1
seq = m + 1(此时客户端的序列号变为 m+1,因为第一次握手的SYN包消耗了一个序列号)
ack = x+ 1(确认号。它的值是 服务器的初始序列号 x + 1,表示“我成功收到了你的序列号为 x 的包”)
双方状态变化:
客户端:从 SYN-SENT 进入 ESTABLISHED(连接已建立) 状态。
服务器:收到此ACK后,从 SYN-RCVD 进入 ESTABLISHED(连接已建立) 状态。
此时的意义:客户端对服务器说:“好的,我也收到你的确认了,连接现在正式建立,我们可以开始传输数据了!”

可靠传输:
确认和重传:接收方收到数据后会发送确认报文。如果发送方未收到确认,会重新发送数据。
数据排序:为每个数据包编号,确保接收方能按正确顺序重组数据。
流量控制:通过滑动窗口机制,根据接收方的处理能力动态调整发送速率,防止接收方被淹没。
拥塞控制:通过慢启动、拥塞避免等算法探测网络状况,防止网络过载。
基于字节流:数据被视为无结构的字节流,没有固定的“消息”边界。应用程序需要自己处理边界问题(如添加长度前缀或分隔符)。
优点
数据绝对可靠:不丢失、不重复、按序到达。
适合重要数据传输:如网页浏览、文件传输、电子邮件、金融交易等。
缺点
开销大:由于需要建立连接、确认、重传等机制,首部信息更多(通常20字节),占用更多带宽和系统资源。
速度相对慢:建立连接有延迟,并且拥塞控制机制在复杂网络下可能降低传输速度。
实时性较差:重传机制会导致延迟,不适合对延迟极其敏感的应用。
典型应用
HTTP/HTTPS(网页)、FTP(文件传输)、SMTP/POP3(邮件)、SSH(远程登录)等。
二、UDP (用户数据报协议)
UDP 是一种 无连接的、不可靠的、基于数据报 的传输层通信协议。它像寄明信片,写好地址就发出,不保证对方一定能收到,也不保证按顺序收到。
核心特点
(1)无连接:无需事先建立连接,直接发送数据。通信开销小。
(2)不可靠传输:
不保证数据包能到达目的地。
不保证数据包的到达顺序。
不提供流量控制和拥塞控制。
(3)基于数据报:每个UDP数据包(数据报)都是一个独立的、有明确边界的信息单元。接收方一次接收一个完整的数据报。
(4)首部开销小:只有8个字节(源端口、目标端口、长度、校验和)。
优点
速度快、延迟低:没有连接建立和复杂控制机制,直接发送,实时性极高。
开销小:协议头简单,网络负担轻。
支持广播和多播:可以向一个网络内的多个主机同时发送数据。
缺点
数据可能丢失、重复或乱序:网络状况不佳时,数据质量无法保证。
需要应用层处理可靠性:如果应用需要可靠性,必须在应用程序自身实现确认、重传和排序逻辑。
典型应用:
实时音视频流:视频会议(Zoom, Teams)、在线直播、网络电话(VoIP)。丢失几帧数据比延迟卡顿体验更好。
DNS查询:请求域名解析,快速简单,一次请求一个应答。
三、TCP和UCP核心区别表
四.UDP和TCP常用端口查询
TCP常用端口
UDP常用端口
UDP和TCP 53端口区分:
DNS日常查询用小数据包走快速的UDP 53端口,大数据传输和服务器同步走可靠的TCP 53端口。