【好书精读】网络是怎样连接的 之 客户端与服务器之间是如何收发数据

 ( 该图由AI制作 学习AI绘图 )

目录

将 HTTP 请求消息交给协议栈

对较大的数据进行拆分

使用 ACK 号确认网络包已收到

根据网络包平均往返时间调整 ACK 号等待时间

返回 ACK 号的等待时间(这个等待时间叫超时时间)

使用窗口有效管理 ACK 号

接收 HTTP 响应消息


将 HTTP 请求消息交给协议栈

当控制流程从 connect 回到应用程序之后 (图中的②结束)
进入数据收发阶段( 从应用程序调用 write 将要发送的数据交给协议栈 开始
协议栈收到数据后执行发送操作

协议栈收到数据

会将数据存放在内部的发送 缓冲区
等待应用程序的下一段数据
要积累多少数据才能发送 不同种类和版本的操作系统会有所不同

补充:如何判断何时发送

1:是每个网络包能容纳的数据长度

根据一个叫作 MTU 的参数来进行判断 MTU 表示一个网络包的最大长度 在以太 网中一般是 1500 字节 MTU 是包含头部的总长度 因此需要从 MTU 减去头部的长度 然后得到的长度就是一个网络包中所能容纳的最大 数据长度 这一长度叫作 MSS 当从应用程序收到的数据长度超过或者接 MSS 时再发送出去 就可以避免发送大量小包的问题了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值