大话TCP:TCP的自律动(Self-clocking)

TCP是一个基于应答(ACK)的协议。当发送端发送完一批数据之后,要等到接受端的应答之后才能发送下一批数据。如果把发送端看做一个时钟(clock),这个时钟的走动是通过发送端主动发送数据和获得应答来推进的,这个过程英文叫做self-clocking。受限于我的英文和中文水平,我把self-clocking做了一个蹩脚的翻译,叫“自律动”。 ...

September 5, 2017

从IPv4到IPv6

RFC 8200:Internet Protocol, Version 6 (IPv6) Specification在上个月(七月份)刚刚发布,趁热打铁来学习一下IPv6。你可能会问IPv6不是早就有了吗?没错,IPv6最早在1995年的时候发布于RFC 1883。但标准就是这样,旧的RFC不符合实践的地方不断被更新,于是有新的RFC出来替换旧的RFC,这是一个取其精华去其糟粕的过程。 ...

August 27, 2017

大话TCP:TCP的协议头以及其固化问题

这篇讨论TCP的协议头,以及网络对TCP协议头产生的固化效果。 ...

August 14, 2017

学点HTTP:HTTP对应的架构

HTTP是Hyper Text Transfer Protocol的缩写。这是一个既古老又现代的协议,完全可以用历久弥新这个词来形容。根据维基百科记载的HTTP History,它最早的文档化的版本是在1991年发布的HTTP v0.9。随后在1996念,正式在IETF发布了RFC 1945,标准化了HTTP/1.0。随后在1999年发布的RFC 2616,对HTTP/1.0做了一个小修改,增加了持久性链接等功能呢,版本升级为HTTP/1.1。 ...

August 11, 2017

大话TCP:TCP的流控

TCP带有流控功能,英文叫flow control。这是因为在现实情况下,TCP接收端处理数据的能力是有限的,所以TCP发送的数据最好不要超过接收端的处理能力,否则会有悲剧发生。轻则多余的无法处理的数据会被丢弃,重则会导致接收端的TCP协议栈崩溃。 ...

August 7, 2017

大话TCP:TCP的连接管理

在能够使用TCP收发数据前,有一些状态需要同步(比如双方的起始发送序列号ISN)。当双方发送信令,同步完这些状态后,就可以认为TCP连接建立了。所以建立TCP连接的过程也就是同步这些状态的过程,在建立连接的过程中,TCP协议栈要管理的,也就是这些状态。 ...

July 7, 2017

大话TCP:TCP的可靠性机制

通常在介绍TCP的时候,都会介绍说TCP是一个面向连接的、可靠的、基于字节流的传输协议,这三个特性其实都和TCP的可靠性机制相关。这篇文章来深入了解一下TCP的可靠性机制。 ...

June 21, 2017

大话TCP:简述TCP协议的模型

从一个相对粗略的角度,每种协议大概可以认为由模型、机制和算法三部分构成。模型是协议对自己运行环境的假设;机制是协议应对问题的办法;算法作用于模型和机制,用于改进协议的运行效率。我们也可以从这三方面看TCP协议,这篇文章简述TCP协议的模型。 ...

June 17, 2017

大话TCP:从RFC793说起

一切要从RFC793说起。TCP之所以能被广泛应用,首先是因为它是一个标准化的协议。TCP协议由RFC793定义,虽然在那之后不断有新的RFC对TCP进行扩展和修补,但是从来没有一份新的RFC能顶替RFC793的地位。所以,要学习TCP协议,RFC793是一个绕不过去的经典。 ...

May 14, 2017