linux网络编程(2)

什么是多线程服务器?

先认识什么是单线程服务器

就是服务器只处理一个客户端信息。

多线程服务器类似的,就是处理很多个客户端的信息。

多进程服务器的核心理念

使用while循环,让服务器一直处于接收状态,每接收到一个客户端,就fork一个子进程,让子进程负责于客户端通信 。

父进程只受理客户端的连接,不与客户端通讯

子进程负责于客户端通讯,不受理客户端连接

认识TCP缓冲区

系统为每个socket创建了发送缓冲区和接收缓冲区,应用程序调用send()/write()函数发送数据的时候,内核把数据从应用进程拷贝socket的发送缓冲区中;应用程序调用recv()/read()函数接收数据的时候,内核把数据从socket的接收缓冲区拷贝应用进程中。

发送数据即把数据放入发送缓冲区中。

接收数据即从接收缓冲区中取数据。

Nagle 算法

Nagle就是停等式协议,只有收到上一个字段确认后,才会继续发送下一个字段

举个例子:发送端调用send()函数将一个int型数据(称之为A数据块)写入到socket中,A数据块会被马上发送到接收端,接着,发送端又调用send()函数写入一个int型数据(称之为B数据块),这时候,A块的ACK没有返回(已经存在了一个未被确认的小段),所以B块不会立即被发送,而是等A块的ACK返回之后(大概40ms)才发送。

Nagle算法也是为了尽可能发送大块的数据MSS(Maximum Segment Size,最大报文长度),避免网络中充斥着小数据块。

相关推荐
云栖梦泽15 小时前
Linux内核与驱动:5.并发与竞争
linux·c++
九伯都15 小时前
云效-流水线-简单部署
运维·阿里云·持续部署
牢七15 小时前
CVE-2022-37202 nday 研究 sql
linux·windows·microsoft
打工人1379号15 小时前
2K3000常见问题合集
linux·运维·服务器
冰冷的希望15 小时前
【系统】非虚拟机,物理机安装Ubuntu教程,Windows与Linux(Ubuntu)双系统共存!
linux·windows·ubuntu·系统架构·vmware·双系统·pe系统
OPHKVPS15 小时前
Anthropic CMS配置错误泄露新旗舰模型:Claude Mythos(Capybara)即将到来
网络·人工智能·安全·ai
Agent产品评测局15 小时前
集团型企业智能自动化解决方案选型核心要点:2026架构深度与业务闭环实测指南
运维·人工智能·ai·chatgpt·架构·自动化
lyshensir15 小时前
网络打印机无法打印的诡异问题记录
网络
wanderist.15 小时前
【故障复盘】VS Code Remote-SSH 连接失败:ZeroTier 链路异常与 GLIBC 版本冲突双重坑
运维·ssh
minji...15 小时前
Linux 进程信号(四)内核态&&用户态,sigaction,可重入函数,volatile,SIGCHLD信号
linux·运维·服务器