TCP - Transmission Control Protocol 有连接端到端可靠 传输控制协议 TCP 是 Transmission Control Protocol 的缩写,中文译为传输控制协议。 TCP 是为在不可靠互联网上提供可靠端到端字节流,而专门设计的传输层通信协议。而 UDP 为不用先建立连接的不可靠多目标端口、多应用程序的用户数据报传输协议。 TCP 旨在适应支持多网络应用的,分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间,依靠 TCP 提供可靠通信服务。 智能编辑重构 批处理式 "数字 Python IDE" 集成开发环境 (集成高效 Cython PyInstaller 批处理小程序) http://dt.digitser.cn/zh-CN/ide/idepy/index.html 发展历程 TCP 由 1981 年 9 月的 IETF RFC 793 定义。 之后的 RFC793plus 澄清了说明,RFC1122 修复了 bug、RFC1323 做了高性能扩展,RFC2018 定义了选择性确认,RFC2581 说明了拥塞控制、RFC2873 定义了为服务质量而重用的头字段,RFC2988 改进了重传计时器,RFC3168 定义了显式拥塞通知。 完整协议集合很大,因而专门发布了针对许多 RFC 的指南,它就是作为另一个 RFC 文档公布的 RFC4614。
互联网与单个网络有很大不同,因为互联网的不同部分可能有截然不同的拓扑结构、带宽、延迟、数据包大小和其它参数。TCP 的设计目标是能够动态地适应互联网的这些特性,且具备面对各种故障时的健壮性。 TCP 假设它可以从较低级别的协议获得简单,可能不可靠的数据报服务。 原则上,TCP 应该能够操作从硬线连接到分组交换 (或电路交换) 网络的各种通信系统。 不同主机的应用层之间经常需要可靠、像管道一样的连接,但 IP 层不提供这种流机制,而是提供不可靠的包交换。 IP 层并不保证数据报一定会被正确地递交给接收方,也不指示数据报的发送速度有多快。TCP 负责既要足够快地发送数据报,使用网络容量,但又不可以引起网络拥塞。 当 TCP 超时后,要重传未递交成功的数据报。即使被正确递交的数据报,也可能存在错序问题,这也是 TCP 的责任,它必须把接收到的数据报重新装配成正确次序。 总之,TCP 必须提供性能可靠、良好的网络传输,这是大多数用户所期望的而 IP 未提供的功能。 工作原理 应用层向 TCP 层发送用于网间传输、用 8 位字节表示的数据流,然后 TCP 把数据流分成适当长度的报文段,该计算机连接的网络数据链路层的 MTU (最大传输单元) 通常是有限制的。 TCP 把结果包传给 IP 层,由它通过网络将包传送给接收端实体 TCP 层。TCP 为保证不发生丢包,会给每个包赋值一个序号,同时序号也保证了传送到接收端实体的包的按序接收。 接收端实体对已成功收到的包发回相应确认 ACK (Acknowlegement);若发送端实体在合理的往返时延 RTT (Round Trip Time) 内未收到确认,那么将假定对应数据包已丢失且会进行重传。 TCP 用校验和函数检验数据是否有误,且在发送和接收时都会计算校验和。 TCP 传输实体 支持 TCP 的每台机器都有 TCP 传输实体。 TCP 传输实体可以是库例程、用户进程、或内核程序,TCP 传输实体用于管理 TCP 流、和与 IP 层之间的接口。 TCP 传输实体接受本地进程的用户数据流,将它们分割成不超过 64KB (实际去掉 IP 和 TCP 头,通常不超过 1460 数据字节) 的段,每段以单独 IP 数据报形式发送。 当包含 TCP 数据的数据报到达一台机器时,它们会被递交给 TCP 传输实体,TCP 传输实体再重构出原始字节流。为简化起见,有时仅仅用 TCP 来代表 TCP 传输实体 (一段软件) 或 TCP 协议 (一组规则)。 根据上下文语义应该能很消楚地推断出其实际含义。例如,在 "用户将数据交给 TCP" 这句话中,很显然这里指的是 TCP 传输实体。 扫一扫关注 德云社区 微信公众号 版权声明: 本文为独家原创稿件,版权归 德云社区,未经许可不得转载。 |