TCP协议
1.1、TCP协议简介
英文简称:TCP
英文全称:Transmission Control Protocol
开发组织:IETF
标准编号:RFC793
所属层次:传输层
1.2、TCP协议的帧
|---------------------------|
|     Source Port           |
|        2byte              |
|---------------------------|
|  Destination Port         |
|       2byte               |
|---------------------------|
|  Sequence Number          |
|       4byte               |
|---------------------------|
|  Acknowledgment Number    |
|       4byte               |
|---------------------------|
|  Data offset   4bit       |
|---------------------------|
|  Reserved      6bit       |
|---------------------------|
|  URG   1bit               |
|---------------------------|
|  ACK   1bit               |
|---------------------------|
|  PSH   1bit               |
|---------------------------|
|  RST   1bit               |
|---------------------------|
|  SYN   1bit               |
|---------------------------|
|  FIN   1bit               |
|---------------------------|
|  Window     2byte         |
|---------------------------|
|  Checksum   2byte         |
|---------------------------|
|  Urgent Pointer   2byte   |
|---------------------------|
|  Options          variable|
|---------------------------|
|  Data                     |
|---------------------------|

Source Port是发送方的端口号,占2个字节,解析为整数。

Destination Port是接收方的端口号,占2个字节,解析为整数。

Sequence Number是。

Acknowledgment Number是。

Data offset

Reserved保留。占6bit,用0填充即可。

URG。占1bit

ACK。占1bit

PSH。占1bit

RST。占1bit

SYN。占1bit

FIN。占1bit。0表示后面还有数据,不要关闭连接;1表示数据传输完了,可以关闭连接了。 因为TCP协议是有连接的协议,它必须先建立了连接之后,才能进行数据的传输。而建立连接和关闭连接比较占资源, 所以,在很短的时间间隔内要传输很多内容的话,显然不要让每传输一次就建立/关闭连接。

Window,占2个字节,解析为整数。

CheckSum是用于数据完整性校验的,占2个字节,解析为整数。

Urgent Pointer2个字节,解析为整数。表示紧急指针,就是数据的偏移量。

Data就是上层协议的内容。

Options是参数。

TCP头部,除去Options有20个字节。

TCP协议的内容可以通过TCPDump获取并查看。

1.2、TCP建立连接的三次握手过程

TCP协议要求必须先建立连接,才能进行数据的传输。建立连接,需要进行三次TCP报文的传输,人们形象的把这个过程称为三次握手。

三次握手的目标是使数据段的发送和接收同步。同时也向其他主机表明其一次可接收的数据量(窗口大小),并建立逻辑连接。

三次握手的过程可以简述如下:

源主机发送一个同步标志位(SYN)置1的TCP数据段。此段中同时标明初始序号(Initial Sequence Number,ISN)。ISN是一个随时间变化的随机值。

目标主机发回确认数据段,此段中的同步标志位(SYN)同样被置1,且确认标志位(ACK)也置1,同时在确认序号字段表明目标主机期待收到源主机下一个数据段的序号(即表明前一个数据段已收到并且没有错误)。此外,此段中还包含目标主机的段初始序号。

源主机再回送一个数据段,同样带有递增的发送序号和确认序号。

至此为止,三次握手过程结束,TCP建立连接成功。接下来,源主机和目标主机可以互相收发数据。

1.3、TCP的4次挥手