【发布时间】:2014-08-07 11:29:40
【问题描述】:
我是网络编程的新手,我正在尝试了解诸如 send 和 recv 之类的函数如何在 TCP 连接的底层工作。我知道在客户端和服务器之间的连接中,例如,当客户端设法向服务器发送消息,消息被拆分为不同的包,并且在到达时,服务器部分检查包的总和是否与发送前相同,如果正常则发送消息作为批准返回给客户。如果出现问题,客户会重新发送消息。
我不明白的是,如果你从客户端发送消息并且你让服务器休眠 10 秒,你仍然可以在客户端做你想做的事情,就像发送函数在另一个线程中执行,或者如果您在这 10 秒内使用多次发送功能,则消息将作为该时间使用的消息的组合到达。
如果有人能解释一下情况,我将非常感激!
【问题讨论】:
-
仔细看完整的TCP/IP栈的实现,从上到下,看看能不能找到TCP/IP Illustrated series的副本,尤其是第2卷,它经历了实际的实现4.4BSD 的堆栈(据称微软最初基于他们的实现)。即使 4.4BSD 堆栈陈旧过时,它也可以让您对幕后发生的事情有相当多的了解。
-
操作系统级别的 TCP 缓冲