1. TCP/IP协议:定义与发展历史

📌 定义

TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/因特网互联协议,又名网络通讯协议,是互联网最基本的协议。它由一系列用于在网络中进行数据通信和远程计算机通信的规则组成。TCP/IP协议的发展始于20世纪70年代末,最初是由美国国防部高级研究计划局(ARPA)为了实现不同类型的计算机网络之间的互连而开发的。随着互联网的普及,TCP/IP逐渐成为全球网络通信的标准。

⏳ 发展历史

  • 1969年:ARPANET诞生,使用NCP协议(仅支持单一网络)。
  • 1973年:Vint Cerf与Bob Kahn提出TCP协议雏形。
  • 1978年:TCP拆分为TCP(可靠传输)IP(路由寻址),形成现代TCP/IP架构。
  • 1983年:ARPANET正式切换至TCP/IP,互联网时代开启。
  • 21世纪:IPv6应对地址枯竭,QUIC(基于UDP)优化现代网络需求。

2. TCP协议:可靠传输的守护者 🔒

TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在数据传输之前,TCP需要通过三次握手建立连接,确保双方准备好进行数据传输。TCP提供了错误检查、重传丢失的数据包以及顺序化数据等功能,保证了数据的准确性和完整性。

📌 核心特性

  • 面向连接:通过三次握手建立可靠通道。
  • 可靠传输:序列号、确认应答、超时重传确保数据完整。
  • 流量控制:滑动窗口动态调整发送速率。
  • 拥塞控制:慢启动、拥塞避免算法防止网络过载。

🔧 典型应用

  • Web浏览(HTTP/HTTPS)
  • 文件传输(FTP)
  • 电子邮件(SMTP)

3. UDP协议:速度至上的自由派 🚀

UDP(User Datagram Protocol)是一种无连接的协议,提供面向事务的简单不可靠信息传送服务。与TCP相比,UDP减少了建立连接的过程,因此具有更低的延迟和更快的速度,但不保证数据的可靠传输,也不处理数据包的顺序或重传丢失的数据包。UDP通常用于对速度要求较高且能容忍少量数据丢失的应用,如视频会议、在线游戏等。

📌 核心特性

  • 无连接:直接发送数据报,无需握手。
  • 不可靠传输:无重传、无排序,可能丢包。
  • 低开销:头部仅8字节(TCP至少20字节)。
  • 支持广播/多播:可同时向多个目标发送数据。

🔧 典型应用

  • 实时视频/音频(Zoom)
  • 在线游戏(如王者荣耀)
  • DNS查询

4. TCP vs UDP:区别与应用场景 🆚

对比维度 TCP UDP
连接方式 面向连接(三次握手) 无连接
可靠性 可靠传输,确保数据完整 尽力交付,可能丢包
速度 慢(需确认、重传) 快(无控制开销)
适用场景 文件传输、网页访问 实时流媒体、在线游戏

✅ 选择建议

  • 用TCP:需数据100%可靠(如银行交易)。
  • 用UDP:容忍丢包但追求低延迟(如视频通话)。

5. TCP三次握手与四次挥手 🤝✋

🖼️ 三次握手建立连接

Client          Server  
  |----SYN----->|  
  |<--SYN+ACK---|  
  |----ACK----->|
  1. 第一次握手:客户端发送SYN报文(含初始序列号seq=x),进入SYN_SENT状态。
  2. 第二次握手:服务器收到SYN后,发送SYN+ACK报文(seq=yack=x+1),进入SYN_RECV状态。
  3. 第三次握手:客户端收到SYN+ACK后,发送ACK报文(ack=y+1),双方进入ESTABLISHED状态,连接建立。

形象描述版

你(Client)                        女神(Server)
 "在吗?(SYN)" ---------------> 
                          <--------------- "在的哦~ (SYN+ACK)" 
"那我们聊天吧!(ACK)" ------->

🖼️ 四次挥手释放连接

Client          Server  
  |----FIN----->|  
  |<---ACK------|  
  |<---FIN------|  
  |----ACK----->|

为什么是四次?
TCP全双工需独立关闭两个方向的数据流,Server的ACK和FIN通常分开发送。

⏳ TIME_WAIT状态

  • 等待2MSL(报文最大生存时间×2),确保最后一个ACK到达。
  1. 第一次挥手:客户端发送FIN报文(seq=a),进入FIN_WAIT_1状态。
  2. 第二次挥手:服务器收到FIN后,发送ACK报文(ack=a+1),进入CLOSE_WAIT状态;客户端进入FIN_WAIT_2状态。
  3. 第三次挥手:服务器处理完数据后,发送FIN报文(seq=b),进入LAST_ACK状态。
  4. 第四次挥手:客户端收到FIN后,发送ACK报文(ack=b+1),进入TIME_WAIT状态;服务器收到ACK后关闭连接。客户端等待2MSL(最大段生命周期)后关闭连接。

形象描述版

你(Client)                 女神(Server)
"分手吧(FIN)" -----------> 
                 <----------- "知道了(ACK)"  
                 (女神收拾你给的礼物中...)  
                 <----------- "我也要分手(FIN)"  
"保重(ACK)" ----------->  
(你含泪等待2MSL才彻底死心)
因为TCP是"双向恋爱",需要分别关闭"你说"和"她说"两个通道!
声明:欢迎大家光临本站,学习IT运维技术,转载本站内容,请注明内容出处”来源刘国华教育“。如若本站内容侵犯了原著者的合法权益,请联系我们进行处理。