contents
下一主题: 用户数据报协议 向上: TCP/IP 网络 前一主题: IP 串行线路

传输控制协议

当然,现在,从一台主机向另一台主机发送数据报并不是全部内容。如果您登录到 quark,您希望在您在 erdos 上的 rlogin 进程和 quark 上的 shell 进程之间建立可靠的连接。因此,发送和接收的信息必须由发送方拆分成数据包,并由接收方重新组装成字符流。尽管这看起来很简单,但这涉及到许多棘手的任务。

关于 IP 非常重要的一点是,按照设计,它是不可靠的。假设您以太网上有十个人开始从 GMU 的 FTP 服务器下载最新版本的 XFree86。由此产生的流量可能对于网关来说太大了,因为它速度太慢,而且内存紧张。现在,如果您碰巧向 quark 发送一个数据包,sophus 可能只是暂时没有缓冲区空间,因此无法转发它。IP 通过简单地丢弃它来解决这个问题。数据包不可挽回地丢失了。因此,通信主机的责任是检查数据的完整性和完整性,并在发生错误时重新传输它。

这是由另一种协议 TCP,或传输控制协议执行的,它在 IP 之上构建了一个可靠的服务。TCP 的本质特性是它使用 IP 为您提供主机上两个进程与远程机器之间简单连接的错觉,这样您就不必关心您的数据实际上是如何以及沿着哪条路径传输的。TCP 连接的工作方式本质上像一个双向管道,两个进程都可以写入和从中读取。把它想象成电话交谈。

TCP 通过所涉及的两台主机的 IP 地址以及每台主机上所谓的端口号来标识此类连接的端点。端口可以被视为网络连接的连接点。如果我们稍微延伸一下电话的例子,可以将 IP 地址比作区号(号码映射到城市),将端口号比作本地号码(号码映射到个人的电话)。

在 rlogin 示例中,客户端应用程序 (rlogin) 在 erdos 上打开一个端口,并连接到 quark 上的端口 513,rlogind 服务器已知在该端口上监听。 这就建立了 TCP 连接。 使用此连接,rlogind 执行授权过程,然后派生 shell。 shell 的标准输入和输出被重定向到 TCP 连接,因此您在机器上键入 rlogin 的任何内容都将通过 TCP 流传递,并作为标准输入提供给 shell。


contents
下一主题: 用户数据报协议 向上: TCP/IP 网络 前一主题: IP 串行线路

安德鲁·安德森
1996 年 3 月 7 日星期四 23:22:06 美国东部标准时间