TCP协议概述

概述

TCP协议概述

TCP(TRANSMISSION CONTROL PROTOCOL,即传输控制协议),它位于TCP/IP协议簇中的传输层。可以不夸张的说它是当今网络中使用得最为广泛的协议。与 UDP不同,TCP 提供了一种 面向连接(connection-oriented) 的、可靠的字节流服务。“面向连接”,是指使用 TCP 的两个应用程序 必须在它们可以交换数据之前,通过相互联系建立起一个 TCP 连接。建立起连接的两端称为两个端点(endpoint) 。因为 TCP 是面向连接的,所以没有广播和组播这样的概念。“可靠的字节流服务”是指TCP传输的数据会保证安全送达,不会出现丢包,乱序等问题,字节流则是指应用程序可以将任意大小的数据交给 TCP而不用关心如何发送。

TCP头部

一个 TCP 块包含了 TCP头和应用程序数据,称之为 报文段(segment) 。
TCP头的格式如下:

TCP协议概述

字段解释:

1. 源端口(source port)
2个字节,表示发送该报文的应用程序端口号,最大为65535。

2. 目的端口(destination port)
2个字节,表示接收该报文的应用程序端口号,最大为65535。

3. ***(sequence number)
4个字节,定义了指派给本报文段第一个数据字节的编号。

4. 确认号(acknowledgment number)
4个字节,定义了报文段的接收方期望从对方接收的字节编码。

5. 头部长度(data offset)
4个bit位,TCP头的实际长度 = data offset >> 2。因此TCP头的最大长度是60字节(options最大长度为40字节),不包含options的TCP头为20字节。

6. 保留位(reserved)
6个bit位,保留备用,必须都为0。

7. 标志位()
6个bit位。

  • URG:紧急指针
  • ACK:确认序号有效
  • PSH:接收方应该尽快将这个报文段交给应用层
  • RST:重建连接
  • SYN:建立连接
  • FIN:关闭连接

8. 窗口大小(window size)
2个字节,窗口大小主要用于流量控制,后面会讲解原理。

9. TCP校验和(checksum)
2个字节,校验和覆盖了整个的TCP报文段:TCP首部和TCP数据。

10. 紧急指针(urgent pointer)
2个字节,只有URG标志置为1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。