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

相关推荐
91刘仁德9 小时前
传输层协议深度拆解:端口寻址、UDP 报文与 TCP 可靠性机制全解析
linux·网络·c++·网络协议·tcp/ip·udp·c
AIgorithmGEEK9 小时前
[Linux]HTTP 应用层协议全解(中篇)
linux·网络·网络协议·http
玖石书9 小时前
linux 安装uv(python虚拟环境管理)
linux·python·uv
91刘仁德9 小时前
HTTPS 加密原理与 CA 数字证书:从对称加密到完整通信流程
网络·笔记·网络协议·http·https
奈落249 小时前
【RAG 深度修炼】专栏 · 第 9 期(收官):安全专题与生产 Checklist 总集——从能跑的 Demo 到睡得着觉的生产系统
大数据·网络·人工智能·安全·ai编程
皓月盈江10 小时前
Hexo博客Butterfly5.7.0主题网站信息:本站访客数和本站总浏览量的数据一直加载不显示的解决方法
linux·hexo·butterfly·busuanzi·vercount·本站访客数·本站总浏览量
程序猿老A10 小时前
云服务器怎么配置视频存储?
运维·服务器·音视频
H.莓飛10 小时前
【数据结构】堆_OJ题
linux·数据结构·算法
程序员老陆10 小时前
Docker 命令全景指南:从镜像构建到生产运维
运维·docker·容器
sogw-三叶草️10 小时前
HITCON CTF 2014 — stkof · Unsafe Unlink
网络·安全·web安全·pwn·堆·二进制安全·堆漏洞