50、TCP是什么?51、TCP头部报文字段介绍几个?各自的功能?

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层 通信协议。

1.source port 和 destination port

  两者分别为「源端口号」和「目的端口号」。源端口号就是指本地端口,目的端口就是远程端口。

可以这么理解,我们有很多软件,每个软件都对应一个端口,假如,你想和我数据交互,咱们得互相知 道你我的端口号。

再来一个很官方的:

  扩展:应用程序的端口号和应用程序所在主机的 IP 地址统称为 socket(套接字),IP:端口号, 在互 联网上 socket 唯一标识每一个应用程序,源端口+源IP+目的端口+目的IP称为”套接字对“,一对套 接字就是一个连接,一个客户端与服务器之间的连接。

2.Sequence Number

  称为「序列号」。用于 TCP 通信过程中某一传输方向上字节流的每个字节的编号,为了确保数据 通信的有序性,避免网络中乱序的问题。接收端根据这个编号进行确认,保证分割的数据段在原始 数据包的位置。初始序列号由自己定,而后绪的序列号由对端的 ACK 决定:SN_x = ACK_y (x 的 序列号 = y 发给 x 的 ACK)。

说白了,类似于身份证一样,而且还得发送此时此刻的所在的位置,就相当于身份证上的地址一样。

3.Acknowledge Number

  称为「确认序列号」。确认序列号是接收确认端所期望收到的下一序列号。确认序号应当是上次已 成功收到数据字节序号加1,只有当标志位中的 ACK 标志为 1 时该确认序列号的字段才有效。主要 用来解决不丢包的问题。

4.TCP Flag

TCP 首部中有 6 个标志比特,它们中的多个可同时被设置为 1,主要是用于操控 TCP 的状态机的,依次 为URG,ACK,PSH,RST,SYN,FIN。

当然只介绍三个:

1. ACK:这个标识可以理解为发送端发送数据到接收端,发送的时候 ACK 为 0,标识接收端还未应 答,一旦接收端接收数据之后,就将 ACK 置为 1,发送端接收到之后,就知道了接收端已经接收了 数据。

2. SYN:表示「同步序列号」,是 TCP 握手的发送的第一个数据包。用来建立 TCP 的连接。SYN 标志 位和 ACK 标志位搭配使用,当连接请求的时候,SYN=1,ACK=0连接被响应的时候,SYN=1, ACK=1;这个标志的数据包经常被用来进行端口扫描。扫描者发送一个只有 SYN 的数据包,如果对 方主机响应了一个数据包回来 ,就表明这台主机存在这个端口。

3. FIN:表示发送端已经达到数据末尾,也就是说双方的数据传送完成,没有数据可以传送了,发送 FIN标志位的 TCP 数据包后,连接将被断开。这个标志的数据包也经常被用于进行端口扫描。发送端 只剩最后的一段数据了,同时要告诉接收端后边没有数据可以接受了,所以用FIN标识一下,接收端 看到这个FIN之后,哦!这是接受的最后的数据,接受完就关闭了;TCP四次分手必然问。

Window size

称为滑动窗口大小。所说的滑动窗口,用来进行流量控制。

原文地址:https://www.cnblogs.com/crbhf/p/15115361.html