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,最大报文长度),避免网络中充斥着小数据块。

相关推荐
智能运维指南5 分钟前
2026年企业自动化运维选型:从场景反推架构,四类产品的边界在哪
运维·架构·自动化
wdfk_prog17 分钟前
大型 Docker 镜像导出导入工程化:可靠性、磁盘与压缩
运维·docker·容器
隐擎fox21 分钟前
网络传输安全剖析:WebRTC 本地真实 IP 泄漏机制(STUN/TURN)与 Python 防护检测实战
网络·网络协议·tcp/ip·安全·webrtc
回忆2012初秋28 分钟前
DBX:一个现代化的轻量级、跨平台的开源数据库管理工具
大数据·服务器·网络
对讲机数码科普34 分钟前
# 室内弱覆盖场景专网通信优化方案:建筑结构、频段适配与组网布局的系统分析
网络
郝开40 分钟前
Docker Compose 模块化多环境配置规范指南:示例搭建Alf Tengine MD2DOC 1.1.1
运维·docker·容器
为思念酝酿的痛1 小时前
应用层协议HTTP
网络·网络协议·http
2601_962063231 小时前
THPX信号源:服务支持系统与品牌运营节奏带来的平台印象
运维
JeJe同学1 小时前
Linux远程服务器网络访问优化:使用SSH反向端口转发共享本地HTTP代理
服务器·网络·ssh
光电笑映1 小时前
Linux 线程同步与互斥:锁的本质、条件变量与信号量的底层原理
linux·运维·服务器·开发语言·c++