什么是TCP连接

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接、可靠、基于字节流的传输层协议。它是互联网上最核心的通信协议之一,用于保障数据在网络中完整、有序且可靠地传输


一、什么是 TCP 连接?

简单定义:

TCP 连接是一个由客户端与服务器之间通过三次握手建立起来的双向通信通道,用于可靠的数据传输。

当你在浏览器访问一个网站,或使用 App 发送消息时,背后大概率都用了 TCP 连接进行数据通信。


二、TCP 连接的关键特性

特性描述
面向连接通信双方必须先建立连接,才能进行数据传输
可靠性高通过序列号、确认应答、重传机制等保证数据不丢、不重复、不乱序
双向通信双方都可以发送和接收数据
有序传输接收端收到的数据顺序与发送端发送顺序一致
流量控制防止发送方发送速度太快导致接收方处理不过来
拥塞控制避免网络拥塞,控制发送速度
基于字节流数据没有消息边界,像流一样连续传输,应用层负责划分消息

三、TCP 连接的建立过程(三次握手

建立连接的过程叫做 “三次握手”(Three-Way Handshake)

时序图:

客户端                             服务端
   | ---------- SYN ------------>  |  // 第一次握手:客户端发送连接请求(SYN)
   | <-------- SYN-ACK ----------  |  // 第二次握手:服务端应答并同步(SYN + ACK)
   | ---------- ACK ------------>  |  // 第三次握手:客户端确认连接建立

三次握手详解:

  1. SYN(synchronize):客户端发起请求,告诉服务端要建立连接,并携带客户端初始序列号 Seq=x

  2. SYN+ACK:服务端收到请求后同意连接,并返回一个确认(ACK)和它自己的初始序列号 Seq=y

  3. ACK:客户端收到后再发一个确认包(ACK),连接建立成功。


四、TCP 连接的断开过程(四次挥手

断开连接过程叫 “四次挥手”(Four-Way Handshake)

客户端                             服务端
   | -------- FIN ------------->  |  // 客户端请求断开连接
   | <------- ACK --------------  |  // 服务端确认
   | <------- FIN --------------  |  // 服务端也请求断开连接
   | -------- ACK --------------> |  // 客户端确认,连接完全断开

为什么断开要四次?

因为 TCP 是全双工通信,每一方都需要单独发一个 FIN 表示自己关闭“发送”通道。


五、TCP 连接状态(常见状态图)

TCP 连接会经历多个状态:

状态描述
CLOSED初始状态,没有连接
SYN_SENT客户端已发送连接请求
SYN_RECEIVED服务端收到连接请求
ESTABLISHED连接建立完成,可以通信
FIN_WAIT_1一方请求断开连接
FIN_WAIT_2等待对方关闭连接
TIME_WAIT等待对方确认,防止旧包影响
CLOSE_WAIT对方断开,我方还未关闭
LAST_ACK等待最后一个确认
LISTEN服务器监听中,等待连接

可用 netstat -an 命令查看当前系统 TCP 连接的状态。


六、TCP 与 UDP 的区别(快速了解)

项目TCPUDP
是否连接有连接(三次握手)无连接
可靠性可靠(保证顺序和完整性)不可靠
是否有序
速度较慢快速
应用场景HTTP、FTP、SSH、邮件DNS、视频流、VoIP、游戏

七、TCP 应用举例

  • 浏览网页(HTTP/HTTPS)

  • 文件传输(FTP)

  • 邮件协议(SMTP/POP3/IMAP)

  • 远程登录(SSH)

  • 聊天、社交应用(如微信、QQ)


八、可视化:三次握手 + 四次挥手图

客户端                    服务端
  |     SYN (Seq=x)       |
  |---------------------->|
  |     SYN+ACK (Seq=y)   |
  |<----------------------|
  |     ACK               |
  |---------------------->|
  |    连接已建立         |

  |     FIN               |
  |---------------------->|
  |     ACK               |
  |<----------------------|
  |     FIN               |
  |<----------------------|
  |     ACK               |
  |---------------------->|
  |   连接断开完成         |

九、总结一句话

TCP连接 = 一条可靠、双向的通信通道,保障客户端与服务端之间的数据“完整、按顺序”送达,是现代网络通信的核心。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值