当前位置: 首页 > news >正文

深入 TCP 核心:握手、挥手、滑动窗口与并发服务器实战

一、 连接的诞生与消亡

1. 三次握手 (The 3-Way Handshake)

发生时机connect()调用时。
本质:双方确认对方的发送和接收能力正常,并同步初始序列号 (ISN)。

  • 第一次:客户端发送SYN=1, seq=J。(我想连你)
  • 第二次:服务器回复SYN=1, ACK=1, ack=J+1, seq=K。(收到,我也想连你)
  • 第三次:客户端回复ACK=1, ack=K+1。(收到,连接建立!)

程序表现:当三次握手在内核层面全部完成后,客户端的connect函数才会返回 0 (成功)。此时双方状态变为ESTABLISHED

2. 四次挥手 (The 4-Way Wave)

发生时机close()调用时。
本质:TCP 是全双工的,断开需要双向分别关闭。

  • 第一次:主动方发FIN。(我没数据发了,申请关闭发送通道)
  • 第二次:被动方回ACK。(知道了,但我可能还有数据没发完,你先等着)
    • 此时处于半关闭状态 (Half-Close)
  • 第三次:被动方发FIN。(我的数据也发完了,申请关闭)
  • 第四次:主动方回ACK。(好的,再见)。

为什么是四次?
握手时,服务器的 SYN 和 ACK 可以合并在一个包里发。但在挥手时,服务器收到 FIN 后,可能还需要发送未处理完的数据,所以先回 ACK,等数据发完了再发自己的 FIN。


二、 流量控制的秘密:滑动窗口

在 TCP 头部中有一个字段叫Window

  • 误区:它不是屏幕上的窗口,而是一个数值。
  • 本质告诉我你还能吃多少(接收缓冲区的剩余容量)。

工作机制

  1. 接收方在回复 ACK 时,会带上自己的Win大小。
  2. 发送方根据这个数值调整发送速度。
  3. 如果Win=0,发送方就会停止发送(阻塞),直到窗口变大。

这实现了流量控制,防止发送方把接收方“撑死”。


三、 突破瓶颈:多进程并发服务器

1. 问题背景

我们之前写的服务器是迭代服务器(Iterative Server):

while(1){accept();// 接一个process();// 处理完}// 才能接下一个

如果有客户端连上后一直不说话(挂机),process()就会一直阻塞,导致后续的客户端无法连接。

2. 解决方案:多进程模型

利用fork()创建子进程。

  • 父进程:只负责accept(即“迎宾小姐”),一有客人来就 fork 一个子进程。
  • 子进程:负责具体的通信(即“服务员”),服务完一个客人就退出。

3. 代码实战 (tcp_mp_server.c)

为了避免僵尸进程(Zombie Process),我们需要通过信号机制回收子进程。

#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<string.h>#include<arpa/inet.h>#include<sys/socket.h>#include<signal.h>#include<sys/wa
http://www.jsqmd.com/news/273038/

相关文章:

  • 10个秘密:软件开发者的晋升路径大揭秘
  • 不仅仅是浏览器渲染:揭秘 Botasaurus 高效的 HTTP 请求封装
  • 如何打开命令提示符
  • 网络安全学习路线图:从零基础到全栈工程师
  • 如何避免职业倦怠:软件测试工程师的终极自救手册
  • nginx的JavaScript魔力:njs简介与实践
  • 网络安全学习路线图(2026版详解)
  • 建站知识:域名/ 空间/ IP/ 端口之间的关系
  • 【全网最全】网络安全自学路线图:从零到专家,附资源清单与避坑指南
  • 2026年职业蓝图:从码农到CTO的加速计划
  • 耐达讯自动化Profibus总线光纤中继器在连接测距仪中的应用
  • 精:C# 的四种委托实现详解
  • 震惊!90%的AI从业者忽略了这些职业发展技巧
  • 国产DevSecOps工具崛起:安全左移战略下的技术创新与市场重构
  • 耐达讯自动化Profibus总线光纤中继器:光伏逆变器通讯的“稳定纽带”
  • ‌软件测试员如何年薪翻倍的5个策略
  • 多商户+多端一体化:商城系统的核心功能架构与源码实现
  • AI技术分析股票财报
  • 开源商用级的多端多商户万能DIY商城系统全功能源码指南
  • 5个步骤:从软件测试新手到行业专家的2026指南
  • 全维度拆解!长沙AI搜索优化公司实力排行 - 亿仁imc
  • 2026年天津婚姻纠纷律师联系电话推荐:高效解决婚姻难题 - 品牌推荐
  • GPT-5.2 与 Sora 2 震撼发布:Python 开发者如何用“上帝视角”构建下一代多模态应用?(附全链路源码)
  • 为什么AI开发者必须规划职业转型?2026年生存法则
  • 护眼台灯怎么选?7款实测对比推荐—学生护眼闭眼入专业读写榜首 - 资讯焦点
  • 如何为不同拍摄场景选存储卡?2026年CFexpress B卡品牌全面评测与推荐 - 品牌推荐
  • 2026年天津继承诉讼律师电话推荐:解决继承纠纷指南 - 品牌推荐
  • 目标检测数据集 - 老虎检测数据集下载
  • 上海作品集机构哪家专业?交互设计专项测评 - 野良本杰明
  • 长沙GEO优化公司实测!本地企业选对才不浪费钱 - 亿仁imc