发布时间:2013-01-09 09:27:34
. 前言 TCP是具备流控和可靠连接能力的协议,为防止TCP发生拥塞或为提高传输效率,在网络发展早期就提出了一些相关的TCP流控和优化算法,而且也被RFC2581规定是每个TCP实现时要实现的。 本文中,为求方便把将“TCP分组段(segment)”都直接称为“包”。 2. 慢启动(slow start)和拥塞避免(Congestion Avoidance) 慢启动和拥塞避免是属于TCP发送方必须(MUST)要实现的,防止TCP发送方向网络传入大量的突发数据造成网络阻塞。 先介绍几个相关参数,是在通信双方中需要考虑但不在TCP包中体现的一些参数: 拥塞窗口(cong......【阅读全文】
发布时间:2013-01-08 16:50:56
首先以socket和send两个系统调用为例,来回顾一下协议栈是如何工作的,在这过程中可以找到如何在协议栈中增加对UDP协议的支持。socket系统调用的原型是int socket(int domain, int type, int protocol);domain是协议域,对于ipv4协议来说,其值是PF_INET(ipv4因特网协议),对于我们自己实现的ipv4协议模块,我们为其新增MY_PF_INET。所有的协议域在include/linux/socket.h被定义,如下:#define AF_UNSPEC 0#define AF_UNIX 1 // Unix域的socket......【阅读全文】
发布时间:2012-12-27 14:13:00
加速网络应用程序的 4 种方法M. Tim Jones ,资深软件工程师,Emulex2006 年 2 月 13 日使用 SocketsAPI,我们可以开发客户机和服务器应用程序,它们可以在本地网络上进行通信,也可以通过 Internet 在全球范围内进行通信。与其他 API一样,您可以通过一些方法使用 Sockets API,从而提高 Socket 的性能,或者限制 Socket 的性能。本文探索了 4 种使用Sockets API 来榨取应用程序的最大性能并对 GNU/Linux® 环境进行优化从而达到最好结果的方法。在开发 socket 应用程序时,首要任务通常是确保可......【阅读全文】
发布时间:2012-12-26 17:41:01
Ø 为什么TCP存在重传 TCP是一种可靠的协议,在网络交互的过程中,由于TCP报文是封装在IP协议中的,IP协议的无连接特性导致其可能在交互的过程中丢失,在这种情况下,TCP协议如何保障其传输的可靠性呢? T C P通过在发送数据报文时设置一个超时定时器来解决这种问题,如果在定时器溢出时还没有收到来自对端对发送报文的确认,它就重传该数据报文。 Ø 导致重传的常见状况 1 数据报传输中途丢失 发送端的数据报文在网络传输的过程中,被中间链路或中间设备丢弃,这个过程如下图所示: 2 接收端的ACK确认报文在传输中途丢失 发送端发送的......【阅读全文】
发布时间:2012-12-24 16:50:19
说明:1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的3).针对对象:对TCP已经有了全面了解的人。因为本文不会解析TCP头里面的每一个字段或者3次握手的细节,也不会解释慢启动和快速重传的定义4).除了《TCP/IP详解》(卷一,卷二)以及《Unix网络编程》以及Linux源代码之外,学习网络更好的资源是RFC 5).本文给出一个提纲,如果想了解细节,请直接查阅RFC 6).翻来覆去,终于找到了这篇备忘,本文基于这篇备忘文档修改。 1.网络协议设计ISO提出了OSI分层网络模型,这种分......【阅读全文】