tcp是传输控制协议的缩写,它是一种面向连接的、可靠的、基于字节流的传输层协议。它的主要特点有以下几点:
1.面向连接:tcp在通信双方之间建立一个虚拟的连接,然后在这个连接上进行数据的传输和控制。连接的建立和释放需要经过三次握手和四次挥手的过程。
2.可靠交付:tcp通过序号、确认号、重传机制、校验和等手段,保证了数据在传输过程中不会出现丢失、重复、乱序或错误的情况。
3.基于字节流:tcp把应用层交下来的数据看成是一连串无结构的字节流,不关心数据的含义和格式。tcp根据对方的窗口大小和网络拥塞情况,动态地将字节流划分为合适大小的报文段进行发送。
4.全双工通信:tcp允许通信双方同时发送和接收数据,实现了双向数据传输。为此,tcp在每个方向上都设有发送缓存和接收缓存,用来暂存发送和接收的数据。
tcp的工作原理
tcp的工作原理可以从以下几个方面来介绍:
1.连接管理:tcp在通信双方之间建立一个虚拟的连接,然后在这个连接上进行数据的传输和控制。连接的建立需要经过三次握手的过程,即发送方发送一个带有同步标志位SYN的报文段,接收方回复一个带有SYN和确认标志位ACK的报文段,发送方再回复一个带有ACK的报文段。连接的释放需要经过四次挥手的过程,即发送方发送一个带有终止标志位FIN的报文段,接收方回复一个带有ACK的报文段,接收方再发送一个带有FIN的报文段,发送方再回复一个带有ACK的报文段。
2.可靠传输:tcp通过序号、确认号、重传机制、校验和等手段,保证了数据在传输过程中不会出现丢失、重复、乱序或错误的情况。序号是每个报文段中第一个字节在整个字节流中的位置,确认号是期望收到对方下一个报文段中第一个字节的序号。重传机制是指当发送方没有收到对方及时的确认时,就会重新发送之前已经发送过但还没有得到确认的报文段。校验和是对报文段中所有字节进行算术求和后取反码得到的结果,用来检测报文段是否在传输过程中出现错误。
3.流量控制:tcp通过窗口机制,实现了流量控制。窗口是指接收方当前能够接收并处理的数据量,它会随着接收方处理数据的速度而动态变化。发送方根据接收方给出的窗口值来决定发送多少数据,从而避免了发送方过快地发送数据导致接收方处理不过来而发生溢出或丢弃的情况。
4.拥塞控制:tcp通过拥塞窗口机制,实现了拥塞控制。拥塞窗口是指网络当前能够承载并传输的数据量,它会随着网络拥塞程度而动态变化。发送方根据自己维护的拥塞窗口值来决定发送多少数据,从而避免了因为网络拥塞而导致分组丢失或延迟增大的情况。
tcp报文段格式
tcp报文段分为首部和数据两部分。首部最小长度为20字节,最大长度为60字节。首部包含以下字段:
1.源端口号和目标端口号:各占2字节,用来标识通信双方应用层进程。
2.序号:占4字节,用来标识本报文段中第一个字节在整个字节流中的位置。
3.确认号:占4字节,用来标识期望收到对方下一个报文段中第一个字节的序号。
4.数据偏移:占4位,用来标识本报文段首部长度。
5.保留:占6位,保留为今后使用。
6.控制位:占6位,用来表示本报文段性质或请求类型。常见控制位有SYN(同步)、ACK(确认)、FIN(终止)、RST(重置)、URG(紧急)等。
7.窗口:占2字节,用来表示本报文段能够接收并处理多少数据。
8.校验和:占2字节,用来检测本报文段是否在传输过程中出现错误。
9.紧急指针:占2字节,在URG=1时有效,用来表示紧急数据在本报文段中结束位置相对于序号字段值得偏移量。
10.选项:长度可变,在需要时使用,用来提供额外功能或信息。
总结
通过以上介绍,我们可以知道tcp是什么协议了。它是一种面向连接、可靠、基于字节流、全双工通信、具有流量控制和拥塞控制功能的传输层协议。它通过序号、确认号、重传机制、校验和等手段保证了数据在传输过程中不会出现丢失、重复、乱序或错误;通过窗口机制实现了流量控制;通过拥塞窗口机制实现了拥塞控制;通过三次握手和四次挥手实现了连接管理;通过首部字段实现了各种功能或信息交换。
领取专属 10元无门槛券
私享最新 技术干货