29-TCP 协议(持续定时器)

1. 持续定时器 在我们学习滑动窗口协议的时,遇到过窗口大小为 0 的情况。接收方通告一个 0 窗口给接收方,可以用来阻止发送方继续发送数据。 如果在某个时候,接收方缓冲区有空间了,于是发送了一个...
焦点IT 2018/03/31 472

28-TCP 协议(超时与重传)

TCP 超时与重传应该是 TCP 最复杂的部分之一了。Windows 和 Linux 对这部分的实现还有所不同,但是算法基本上还是差不多的。 超时重传是 TCP 保证可靠传输的基础。当 TCP 在...
焦点IT 2018/03/31 768

27-TCP 协议(快重传与快恢复)

很遗憾的是,这里一节我没办法用实验演示给你看,但是我尽量用文字和图叙述清楚。 慢启动和拥塞避免算法是在 1988 年提出的,而快重传和快恢复是 1990 年提出的。既然这两个新算法是时隔两年后才提出...
焦点IT 2018/03/31 435

23-TCP 协议(紧急标志)

1. 紧急标志 当你再次看到图 1 时,相信你已经无比的亲切,再观察下面彩色的 6 个标志位,有 5 个你已经熟知了,还剩下最后一个 URG,对,就是图 1 中那个鲜红的,醒目的那个位置。 ...
焦点IT 2018/03/31 882

34-异常处理(accept 返回前连接中止)

网络编程的难度在于异常状况的处理。 在前面学习 TCP 协议的时候,我们就分析过各种连接异常,断开异常等等,大家要把各种情况烂记于心。本文我们探讨一种比较特殊的情况,即客户端连接建立成功后(进入 E...
焦点IT 2018/03/31 614

33-基于 TCP 的回射服务器

有些同学可能没有完成上一节留下的任务。所以,还是有必要在浏览一下整个程序的结构,不然大家可能看看文章也就过去了。 如果你还没有 git clone,赶紧的把下面命令输入到你的机器中执行。 gi...
焦点IT 2018/03/31 457

36-多进程并发服务器(僵尸进程与信号处理)

在上一篇文章中,最后遗留了一个僵尸进程的问题。一旦客户端关闭连接,服务器子进程就会退出,然而父进程仍然存在,就产生了“白发人送黑发人”的场景。如果父进程没有主动回收(wait)子进程,或者没有忽略 S...
焦点IT 2018/03/31 475

35-并发服务器(多进程)

待你进一步完善了前面的 echo 服务器后,也处理了对端发送而来的 RST 段而导致的错误。现在,我们遇到了一个新问题,即客户端在关闭退出后,服务器也关闭退出了。 1. 让服务器永远运行 解决...
焦点IT 2018/03/31 358

37-多进程并发服务器(并发测试)

因为我们没有大量的测试机器,所以只能在单机上模拟大量客户端去连接服务器。 代码托管在 gitos 上,请使用下面的命令获取: git clone https://git.oschina.net...
焦点IT 2018/03/31 460

友情链接