TCP:传输控制协议(TCP:Transmission Control Protocol)
传输控制协议是一个 TCP/IP 组中能够实现可靠数据传送的传输层协议,并通过顺序响应能实现对应用程序的的虚拟连接服务,在必要的时候进行包转发。与 IP 协议相结合,TCP 代表了网络协议的核心。
大多数网络应用程序是在相同的机器上运行的,计算机上必须能确保目的地的正确软件应用程序从源地址处获得数据包,以及源计算机上的正确应用程序的回复获得选择路经。这一过程是通过使用 TCP 的“端口号”完成的。网络IP地址和端口号的连接要达到唯一的标识,我们称之为“套接字”或“端点”。为了可靠通信,TCP 在端点间建立了连接或虚拟电路。
TCP 服务提供了数据流传输、可靠行、有效流控制、全双工操作和多路复用技术等。
关于数据流传输,TCP 发送一个由序列号定义的无结构的字节流。这对应用程序有利,因为在被送出 TCP 之前应用程序不需要划分成块,TCP 可以将字节整合成字段,然后发送给IP。
TCP 是面向连接的端到端的可靠协议,并保证传送数据包的顺序,而顺序是用一个响应序号来保证的,这个响应序号告诉接收者发送者期望的下一个包。如果在规定时间内,没有收到关于这个包的确认响应,则需要重新发送此包。TCP 的可靠机制允许设备处理丢失、删除及读错的包。暂停机制允许设备监测丢失包并请求重发。
TCP 提供了有效流控制。当向发送者返回发送确认响应,接收 TCP 进程就会暗示最高序列号,它能接收并保证不会发生溢出。
全双工操作:TCP 进程能够同时发送和接收包。
TCP 中的多路技术:大量上层同时会话在单连接时进行多路复用。
|
协议结构 |
16bit |
32bit |
Source port |
Destination port |
Sequence number |
Acknowledgement number |
Offset |
Reserved |
U |
A |
P |
R |
S |
F |
Window |
Checksum |
Urgent pointer |
Option + Padding |
Data |
Source Port – 识别上层源处理器接收 TCP 服务的点。
Destination Port – 识别上层目标处理器接收 TCP 服务的点。.
Sequence Number – 通常指定分配到当前信息中的数据首字节的序号。在连接建立阶段,该字段用于设别传输中的初始序列号。
Acknowledgment Number – 包含数据包发送端期望接收的数据下一字节的序列号.一旦连接成功,该值会一直被发送。
Data Offset – 4 位。TCP 协议头中的32位字序号表示数据开始位置。
Reserved – 6位。预留以备用。必须设置为0。
Control Bits (Flags) – 6位。传送各种控制信息。控制位可以是:
U (URG) |
Urgent pointer field significant. |
A (ACK) |
Acknowledgment field significant. |
P (PSH) |
Push function. |
R (RST) |
Reset the connection. |
S (SYN) |
Synchronize sequence numbers. |
F (FIN) |
No more data from sender. |
Window – 16位。指定发送端接收窗口的大小,也就是说,数据可用的八位缓存区大小。
Checksum – 16 位。指出协议头在传输中是否遭到破坏。
Urgent Pointer – 16 位。指向数据包中的第一个重要数据字节。
Option + Padding – 指定各种 TCP 选项。可选项有两种可能形式:单个八位可选类型和八位可选类型,八位可选长度和实际可选数据八位位组。
Data – 包含上层信息。