深入理解TCP协议及其源代码
深入理解TCP协议及其源代码 本文参考了《TCP/IP协议族》第四版 进程到进程的通信 与UDP一样,TCP也是使用端口号提供进程到进程之间的通信。下表是我们常见的TCP使用的熟知端口号。 端口 协议 说明 7 Echo 把收到的数据报回送到发送方 9 Discard 丢弃收到的任何数据报 11 Users 活跃的用户 20和21 FTP 文件传输协议 23 TELNET 终端网络 25 SMTP 简单邮件传送协议 53 DNS 域名服务器 80 HTTP 超文本传输协议 面向字节流 TCP创造了一个环境使得两个进程之间好像有一个 管道 连接,而中间流动着的,就是 字节流 。在发送进程写入字节流,而在另一端的接收进程则读取字节流。 因为在发送进程和接收进程的读取和写入的速度可能不一样,那么可能存在发送进程发送的太快,而接收进程来不及接收就使得一些数据丢失。那么在这里就设置了TCP缓存。这种协调发送者和接收者之间速度的控制方式也叫做流量控制。在发送方有发送缓存,接收方有接收缓存。 在发送方,缓存有三种类型的槽,白色区域是空槽,也就是可以让发送进程填入数据的地方,深灰色区域保存的是已经发送出去但是没有接收到ACK的字节,发送TCP的缓存中还需要保存这些字节,在必要的时候进行重传。灰色区域表示发送进程即将发送的字节。在深灰色的槽中的字节被确认后,这些位置就可以被回收并且被发送进程再次利用