Crab213's Blog.

TCP/IP详解阅读笔记1:TCP报文结构

2016/03/18

TCP协议

TCP协议是一个基于IP协议的传输层协议,补全了IP协议的各种缺陷,实现了一个基于流的传输协议。协议解决了IP协议在网络层的不稳定性,如丢包,包重复接受,接收包的顺序的不确定性,实现了错误检测,实现了基于流的稳定收发,提供了流控制和阻塞控制机制,为应用层通信提供了可靠连接。

TCP段的原理

TCP的收发单位为TCP段(segment),由于TCP需要实现稳定的顺序收发,需要对每一个段提供一个单独的序号,称为序列数(sequence number)。同时,为了确定传输的数据确确实实被对面收到了,需要一个确认(acknowledgement)信号,告知对方我已收到数据。为了实现多应用程序共享本地网络连接,TCP提供了端口(port)的概念。由双方IP地址及端口号组成的四元组可以唯一地确定一个TCP连接。

TCP使用一个简单的策略实现稳定的连接,即重发(retransmission)。如果发出一个段后没有收到对面的确认信息就会重发这个段。这种策略简单粗暴,如果不好好处理协议细节就会严重影响传输效率。如果每发一个段都需要等待确认信息,那么传输效率将会低的无法接受。因此TCP使用了一个巧妙的方法实现全双工的传输。TCP段中有两个字段,序列数和确认序列数(acknowledgement sequence number),这个是实现全双工的关键。序列数代表当前发送的字节数,确认序列数代表的是发给对面的确认信号,因此发送数据和发送接受到对方数据的确认信号可以结合在一起。TCP段中确认序列数的值是收到对面发送的最大连续完整的序列数+1。

而传输效率的问题可以用窗口(window)的概念解决。做传输的时候,明显不能一个一个段的收发,而是需要发送一整段的数据,这个一整段的数据的段的长度就是窗口的概念。比如长度为500的窗口,TCP会一次发送五百个连续的段,如果对面确认收到200个,那么我们接着发200个,亦即TCP维持一个固定的收发平衡,提升了传输效率。很明显,窗口的大小可以控制发送方发送数据的速度,由此TCP可以实现两种机制的速度控制。

第一种是流控制(flow control),这种控制机制是解决接受方由于网络,及自身硬件的限制无法跟上发送方的发送速度的问题。显然而然接受方可以告诉发送方我能接受的窗口大小是多少,也就是说接受方可以设定发送方的窗口大小,因此TCP段中存在一个Window Size域。

第二种称作阻塞控制(congestion control),它的服务对象是那些在传输路径中的路由器。一旦网络负载过大,发生拥堵,路由器的缓冲区无法接受更多的IP包,那么大多数的路由器会简简单单的扔掉一部分包,一般来说是后面收到的包被扔掉。此时,由于IP包被扔掉,发送方会尝试重新发送对方没有接受到的包,形成一个死循环,因此需要有效机制解决这个循环。这就是TCP的阻塞控制。

TCP头真实结构

+---------------------+----------------------+
|  soure port (16)    |  dest port (16)      |
|                     |                      |
+---------------------+----------------------+
|         sequence number (32bits)           |
|                                            |
+--------------------------------------------+
|  acknowledgement sequence number (32bits)  |
|                                            |
+---------------------+----------------------+
| header|  flag       |  window size (16)    |
| length|             |                      |
+--------------------------------------------+
|  TCP checksum (16)  |  Urgent Pointer (16) |
|                     |                      |
+---------------------+----------------------+
|          Options(variable)                 |
|                                            |
+--------------------------------------------+
CATALOG
  1. 1. TCP协议
  2. 2. TCP段的原理
  3. 3. TCP头真实结构