传输控制协议
1.什么是传输控制协议[1]
传输控制协议是实现计算机之间的通信、网络系统资源共享所必不可少和非常重要的协议。它实现的功能不仅仅是弥补物理层和数据链路层协议中通信功能的缺陷,保证相同计算机系统之间、相同计算机网络系统之间信息的可靠传输,通过传输控制协议还要实现不同计算机系统之间、不同计算机网络系统之间信息的可靠传输。虽然目前传输控制协议的种类很多,但最典型的传输控制协议是TCP/IP协议。
2.TCP最主要的特点[2]
(1)TCP提供的是面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。面向连接的协议在任何数据传输前就已建立好点到点的连接。ATM和帧中继是面向连接的协议,但它们工作在数据链路层,而不是在传输层。普通的音频电话也是面向连接的。
(2)TCP的目的是提供可靠的数据传输,并在相互进行通信的设备或服务之间保持一个虚拟连接。TCP在数据包接收无序、丢失或在交付期间被破坏时,负责数据恢复。它通过为其发送的每个数据包提供一个序号来完成此恢复。较低的网络层会将每个数据包视为一个独立的单元,因此,数据包可以沿完全不同的路径发送,即使它们都是同一消息的组成部分。这种路由与网络层处理分段和重新组装数据包的方式非常相似,只是级别更高而已。为确保正确地接收数据,TCP要求在目标计算机成功收到数据时发回一个确认(即ACK)。如果在某个时限内未收到相应的ACK,则将重新传送数据包。如果网络拥塞,这种重新传送将导致发送的数据包重复。但是,接收计算机可使用数据包的序号来确定它是否为重复数据包,并在必要时丢弃它。
(3)TCP的鲁棒性要求。TCP的设计应当能够自动地适应各种不同的物理网络状况,为了实现这一点,TCP使用了一系列流量控制和拥塞控制机制,在TCP中,应用数据被分割为TCP认为最适合发送的数据块,这和UDP完全不同。在UDP中,应用程序产生的数据报长度将保持不变,TCP的发送端使用了一个滑动窗口来控制发送的速率,使得不会出现发送端发送速率过快导致接收端无法处理的情况,而接收端也维持了一个滑动窗口来进行数据的接收,TCP的拥塞控制是保证TCP鲁棒性的一个重要因素,拥塞控制假定数据报丢弃是由网络拥塞造成的,通过控制拥塞窗口的大小,使TCP的发送速度能够自动地适应网络拥塞的状况。
3.TCP的连接
TCP连接的建立主要是通过三次握手来建立的。所谓三次握手,就是通过客户端首先向服务器发送连接请求,服务器确认这一连接请求,再经客户端确认后,建立连接。在连接建立后,客户端和服务器才开始正常的数据通信,在通信结束后,由于TCP连接的双向性,在连接关闭时,每个方向需要单独地进行关闭,因此TCP使用四次握手来关闭一个连接。