摘要:
2.4 从服务器断开并删除套接字 2.4.1 数据发送完毕后断开连接 收发数据结束的时间点应该是应用程序判断所有数据都已经发送完毕的时候。 这时,数据发送完毕的一方会发起断开过程,但不同的应用程序会选择不同的断开时机。 以 Web 为例,浏览器向 Web 服务器发送请求消息,Web 服务器再返回响应 阅读全文
摘要:
2.3.4 根据网络包平均往返时间调整 ACK 号等待时间 网络堵塞后TCP会重传网络包 前面说的只是一些基本原理,实际上网络的错误检测和补偿机制非常复杂。 首先是返回 ACK 号的等待时间,这个等待时间叫超时时间。 当网络传输繁忙时就会发生拥塞,ACK 号的返回会变慢。 这时我们就必须将等待时间设 阅读全文
摘要:
2.3 收发数据 2.3.1 将 HTTP 请求消息交给协议栈 当控制流程从 connect 回到应用程序之后,接下来就进入数据收发阶段了。 数据收发操作是从应用程序调用 write 将要发送的数据交给协议栈开始的,协议栈收到 数据后执行发送操作,这一操作包含如下要点。 协议栈并不关心应用程序传来的 阅读全文
摘要:
2.2 连接服务器 2.2.1 连接是什么意思 连接时发生了什么 客户端创建套接字告知服务器我要通信 创建套接字之后,应用程序就会调用 connect。随后协议栈会将本地的套接字与服务器的套接字进行连接。 在调用 socket 创建套接字时,我们需要把服务器的 IP 地址和端口号等信息告知协议栈,这 阅读全文