TCP/IP五层模型——传输层(TCP协议——协议段格式、特点)

1. TCP协议端格式

TCP/IP五层模型——传输层(TCP协议——协议段格式、特点)

其中:

(1)16位源端口号:标识报文从哪个进程来

(2)16位目的端口号:标识报文要发给哪个进程

(3)32位序号/32位确认序号:可以保证请求和应答;按序到达;重传机制;批量的高效率发送。因为TCP进行的全双工通信,即双发都可以发送和接收数据,因此需要一个序号和确认序号对(在后面文章中的确认应答及超时重传机制中详细介绍)

(4)4位首部长度:表示该TCP报文的头部有多少个4字节(32位bit位),所以TCP首部长度最大值为15*4=60字节

(5)保留位(6位):可能会在之后用到

(6)6位标志位:各占一个bit位,具体含义如下:

    1)URG:紧急标志位。标识紧急指针是否有效,0为无效

    2)ACK:确认标志位。标识确认号是否有效,在双方通信时,一般一直有效,即一直为1

    3)PSH:用以提示接收端的应用程序立刻从TCP的缓冲区把数据读走

    4)RST:复位标志位。当对方要求重新建立连接时,会把携带有该标志位(该标志位设置为1)的数据段称为复位报文段发送过来

    5)SYN:同步标志位。当对方请求连接时,会将带该标志位(该标志位设置为1)的段称为同步报文段发送过来,连接建立好之后该标志位设置为0

    6)FIN:结束标志位。当对方要断开连接时,会将携带该标志位的段称为结束报文段发送过来

(7)16位窗口大小:用来描述自身还能接受能力。比如发送端发送报文时,会将自己接受缓冲区还能接受的最大内存填充到该位,接收端在接收到该报文后,根据该位置位段数据来确定应该发送多少数据。TCP为全双工,所以双方都可作为发送端或是接收端在后面文章的滑动窗口会详细介绍)

(8)16位校验和:由发送端填充,CRC校验,接收端校验不通过,则认为数据有问题。此处的校验和不光包含TCP首部,也包括TCP的数据部分

(9)16位紧急指针:标识哪部分数据是紧急数据,可以优先处理,要配合URG标志位使用

(10)40字节头部选项:当20字节的首部大小不够用时,在该处进行内存申请

2. TCP的特点

(1)TCP是面向连接的。即在进行数据通信之前,发送进程要与接收进程建立连接,连接建立好之后,才可以进程数据传输,传输结束之后,还要断开连接;

(2)TCP具有可靠性。它可以保证数据安全且准确的到达接收端,因为它具有确认应答机制、超时重传机制等;

(3)TCP面向字节流。它不像UDP必须要整发整收,它可以将100个字节的数据一次性发过去,然后分多次接收,每次想接收多少个字节就接收多少个字节。

(4)每一个TCP连接只能有两个端点。也就是说,只能一对一,要想实现一对多,就需要建立多条连接。因为TCP的端点是套接字(IP+端口号)。同一个IP地址可以被多个不同的TCP连接,同一端口号也可以出现不同的TCP连接中。但是每一个TCP连接唯一的被通信两端的套接字所确定

(5)TCP是全双工通信。TCP通信的两端都有接收缓冲区和发送缓冲区,可以实现同时从接收缓冲区拿数据、向发送缓冲区里放数据。