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

相关推荐
顶点多余14 分钟前
9.18 面试题总结 --- 绿盟
linux·面试
^Rocky19 分钟前
IT 疑难杂症诊疗室:复杂技术问题解决实录
运维·bug
Ivanqhz25 分钟前
Slope One 算法详解:与矩阵分解、共现矩阵的异同
java·服务器·网络·人工智能·深度学习
挖掘狂人41 分钟前
当生产环境"变慢",我用这套 perf + strace 30 分钟定位瓶颈
linux·运维·性能优化
王六米。1 小时前
RAG知识库建设 文档解析 切分与索引如何衔接
服务器·前端·网络·企业数字化转型·智钳智能盒子
wuyk5552 小时前
【Socket 进阶之路】第 7 章 IO 多路复用 select & poll 完整实战|多 fd 监听、超时等待、优缺点横向对比
服务器·开发语言·网络·数据库·物联网
傲世仙尊2 小时前
IO流起步-从fopen到文件描述符fd
linux
Rabitebla2 小时前
【Linux系统编程】 指令(二):一条路径是怎么定位到文件的
linux·c++·笔记·学习·算法
人工智能培训2 小时前
大语言模型:从语言理解到通用智能的跃迁
linux·服务器·前端·人工智能
顶点多余2 小时前
9.20 知识点查漏补缺
linux·面试·职场和发展