TCP 是用于在不可靠的因特网上提供可靠的、端到端的字节流通信的协议。
一 TCP服务模型
TCP 提供的服务具有以下主要特征:
(1)面向连接的传输、传输数据前需要先建立连接, 数据传输完毕要释放连接。
(2)端到端通信, 不支持广播通信。
(3)高可靠性,确保传输数据的正确性,不出现丢失或乱序。
(4)全双工方式传输。
(5)采用字节流方式,即以字节为单位传输字节序列。如果字节流太长, 将其分段。
(6)提供紧急数据传送功能,即当有紧急数据需要发送时,发送进程会立即发送,接收方收到后会暂停当前工作,读取紧急数据并做相应处理。
TCP数据传输机制
1. TCP的段结构
源端口 | 目标端口 |
序列号 | |
确认号 | |
头长度 | | 标志 | 窗口 |
校验和 | 紧急数据指针 |
选项(可变长度) | |
数据 |
因为TCP是应用于大数据量传输的情况,所以需要将长的数据流分段。
TCP地址与IP地址不同,IP地下是字节地址,一个节点可以运行多个应用, TCP的地址是节点的某个应用的地址, 这种应用在计算机内部是进程。 多个进程的数据传递通过不同的端口完成, 因此在TCP段结构中,以 “端口” 表示地址的。
- 源端口: 16bit, 源节点进程端口
- 目标端口: 16bit, 目标节点端口
- 序列号: 32bit, TCP对字节流中的每个字节都编号
- 确认号: 32bit
- 头长度:4bit
- 标志: 6bit, 该字段包含对其它字段的说明或对控制功能的标志。 具体的设置如下:
ACK 说明确认字段中的数据有意义
URG 说明紧急数据指针字段中的数据有意义
FIN 标志是最后的TCP数据段, FIN也称为"完成"
PSH 指出接收方不必等待一定量的数据再向应用提供数据, 而是立即提供该数据段, PSH也称为“推”
RST 在有异常情况发生时,发送方通知接收方暂时终止连接,释放与连接有关的缓冲区, 中断TCP传输, RST也称为"复位"
SYN 在建立初始连接时,允许双方共同确定初始序列号, SYN 也称为"同步"。
7. 窗口: 16bit
8. 校验和: 16bit
9. 紧急数据指针: 16bit
10. 选项: 可变长度, 选项一般包含两个内容, 一是在通信双方容量相差很大时,必须在初始建立连接时, 确定可接收的段的最大尺寸; 另一个是在使用高带宽线路传输大型文件时,允许用 16 bit来代替 32bit的窗口字段
11. 数据: 可变大小, 用户提供的数据。
2 TCP端口号
端口号可以在0~65535范围内的端口号。对于这65536个端口号有以下的使用规定
(1) 端口号小于256的定义为常用端口,服务器一般都是通过常用端口号来识别的,端口号由Internet端口号分配机构(Internet Assigned Numbers Authority IANA) 来管理;
(2) 客户端通常对所使用的端口号不关心,只面保证该端口号在本机上是唯一的;
(3)大多数 TCP/IP实现给临时端口分配1024~5000之间的端口号。大于5000的端口号为其它服务器预留的。
常用的TCP协议所使用的端口
协议名称 | 协议内容 | 使用的端口号 |
FTP(控制) | 文件传输服务 | 21 |
20 | ||
TELNET | 远程登录 | 23 |
GOPHER | 菜单驱动信息检索 | 70 |
HTTP | 超文本传输协议 | 80 |
SMTP (发) | 简单邮件传送协议 | 25 |
POP3 (收) | 接收邮件(与SMTP对应) | 110 |