尽管 TCP 和 UDP 都使用相同的网络层协议 — IP 协议,但他们却提供着完全不同的服务。
TCP 是一种面向连接、可靠的字节流服务,一个 TCP 连接中仅有两方进行彼此通信,因此广播和多播不能作用于 TCP。
1. 应用数据被分割成 TCP 认为最合适的数据块进行发送,而 UDP 则不会,TCP 传递给 IP 的信息被称为“报文段”或“段”,即 TCP 首部与 TCP 数据构成的一个片段 2. TCP 发出报文段后会启动定时器,等待接收端的确认,如果超时则重发这个报文段 3. TCP 接收端接收到数据后,会先确认检验和,如果有差错则丢弃报文段并期待发送端的重发,否则在几毫秒的延迟后会发送一个确认 4. TCP 接收端对于接收到的若干个报文段会进行重新排序,丢弃重复的数据 5. TCP 的每一端都有固定大小的缓冲空间,用于提供流量控制,TCP 接收端只允许另一端发送接收端缓冲区所能容纳的数据,以防止较慢主机的缓冲区溢出
TCP 首部中包含了:
TCP 首部中还包含以下六个标志位:
标识 | tcpdump 中的缩写 | 介绍 |
---|---|---|
URG | | 紧急指针 |
ACK | . | 确认序号 |
PSH | P | 尽可能快的将数据送往接收进程 |
RST | R | 重新连接 |
SYN | S | 同步序号,用来发起一个连接 |
FIN | F | 完成发送任务 |
通常,TCP 在接收到数据时并不立即发送。 ACK,他推迟发送,与需要沿相同方向发送的数据一起发送,来减少发包的数量,也被称为“数据捎带ACK”。 绝大多数实现采用时延为 200ms。