网络基础 - 传输控制协议 (Transmission Control Protocol, TCP)
1.1 什么是 TCP
1.1.1 TCP 的作用和特点
TCP(传输控制协议)是一种在计算机网络中广泛使用的协议,它提供了可靠的、面向连接的数据传输服务。 TCP 的主要作用是确保数据的可靠传输,以及维护数据传输的顺序和完整性。以下是 TCP 的一些特点和作用:
可靠性:TCP 使用确认和重传机制来确保数据的可靠性。当发送方发送数据时,它会等待接收方的确认,如果未收到确认,就会重新发送数据。
面向连接:TCP 在数据传输之前需要建立连接,这个连接是双向的,数据可以在两端自由传输。连接建立后,数据的传输是可控的。
数据流控制:TCP 可以根据接收方的处理能力来控制数据的发送速率,以避免数据丢失或堆积。
有序性:TCP 确保数据按照发送的顺序到达接收端,这样数据不会混乱或错乱。
错误检测和纠正:TCP 使用校验和和序列号来检测和纠正数据传输中的错误。
1.2 TCP 的基本功能
1.2.1 建立连接
TCP 连接的建立是一个三步握手的过程。 客户端首先向服务器发送一个连接请求,服务器收到请求后回复一个确认,并分配资源以准备接收数据,然后客户端发送最后的确认,建立连接。
1.2.2 数据传输
一旦连接建立,数据可以在客户端和服务器之间双向传输。数据被分割成小的数据段,每个数据段都有序号,接收方会按顺序组装这些数据段。
1.2.3 断开连接
TCP 连接的断开是一个四步挥手的过程。 其中一方发送一个连接关闭请求,另一方回复确认,然后双方各自发送一个确认来确认连接的关闭。这个过程确保数据的完整性和有序性。
1.3 TCP 的特点和可靠性
1.3.1 数据分段
TCP 将数据分割成小的数据段,每个数据段都有序号和确认号。 这样可以确保数据在传输过程中可以按照正确的顺序重新组装,同时还可以检测和纠正传输中的错误。
1.3.2 序列号和确认号
TCP 使用序列号来标识每个数据段的顺序,同时使用确认号来确认已接收的数据。这两个机制有助于维护数据的顺序和完整性。
1.3.3 拥塞控制
TCP 具有拥塞控制机制,它可以根据网络的拥塞情况来动态调整数据的发送速率,以避免数据丢失或堆积。
1.4 C 语言中的 TCP 编程
- 创建套接字 在 C 语言中,可以使用 Socket API 来创建 TCP 套接字,套接字是网络通信的端点,用于建立连接和数据传输。
- 绑定和监听 一旦创建套接字,可以将套接字绑定到本地地址和端口,并使用 listen 函数监听连接请求,等待客户端的连接。
- 建立连接 使用 accept 函数来接受客户端的连接请求,建立 TCP 连接。一旦连接建立,可以使用套接字来进行数据传输。
- 数据传输 数据传输可以使用 send 和 recv 函数来发送和接收数据。发送方将数据分割成小的数据段并发送,接收方按顺序接收和组装数据段。
- 断开连接 使用 close 函数来关闭 TCP 连接,这将触发四步挥手的过程,确保连接的正确关闭。
这些是关于 TCP 的基本概念、功能和在 C 语言中的编程实现。 TCP 作为一种可靠的协议,在网络通信中扮演着重要的角色,确保了数据的可靠传输和顺序传递。