TCP

基于字节流的传输层通信协议
TCP(中文:传输控制协议,英文:Transmission Control Protocol),是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义,[1]旨在适应支持多网络应用分层协议层次结构,为点到点通信提供一条全双工逻辑信道。[4]
1968年,美国成立了远景研究规划局(ARPA),开发高速数据包交换通信网络。[2]1974年,温顿·瑟夫(Vinton Cerf)和罗伯特·卡恩(Robert Kahn)推出了一组新的核心协议,详细规范了TCP。1981年,IP协议在RFC791中做了具体的定义。[2]
1983年9月,Berkley Sofware Distribution(BSD)推出的Unix4.2版最早将TCP/IP纳入了通用操作系统中,最终TCP/IP被纳入了Unix操作系统的商用版本。[2]1984年,美国国防部保留MInet供它自己使用,该网络是与ARPAnet相并行的TCP/IP网络。ARPAnet转入了公共应用领域,变成了因特网,而TCP/IP协议栈则被全球所接受。[2]
20世纪90年代初,微软公司开始实施一项计划,以便建立一个TCP/IP协议栈和服务系统,来提高它的网络的伸缩性。[2]2001年的RFC3168描述了对明显拥塞的报告,提出一种拥塞避免的信号量机制。[1]2022年的RFC 9293把过去四十几年针对TCP协议的各种修补全部合订到了一起,此外整体替换了RFC 1122中关于TCP的全部内容。[3]
TCP的工作方式包括创建通路、数据传输、可靠传输、重传策略、流量控制、拥塞控制、连接终止。[1]应用程序在使用TCP之前,必须先建立TCP连接。传送数据结束,必须释放已经建立的TCP连接;每一条TCP连接只能有两个端点;通过TCP连接传送的数据,无差错、不丢失、不重复、按序抵达;TCP允许通信双方的应用进程在任何时候都能发送和接收数据;TCP以字节为单位传输字节序列。[5]主要应用包括电子邮件、文件传输、远程登录、即时通讯、数据库访问等。[6][7][8][9][10]