✅作者简介:大家好,我是小杨
📃个人主页:「小杨」的csdn博客
🐳希望大家多多支持🥰一起进步呀!
TCP协议
1,TCP 简介
TCP(Transmission Control Protocol)是一种在计算机网络中广泛使用的传输层协议,用于在网络上可靠地传输数据。
TCP 提供了可靠的、面向连接的通信,并负责数据的划分、排序和重传,以确保数据在网络中可靠地传输、按顺序到达。
2,TCP 特点
TCP的主要特点为面向连接,可靠传输,面向字节流,全双工通信。下面对这些特点进行逐一解释:
1,面向连接:TCP是一种面向连接的协议,这意味着在通信双方进行数据传输之前需要建立连接。连接的建立过程涉及到三次握手,这种连接确保了通信双方之间的可靠性和顺序性。
2,可靠传输:TCP提供了可靠的数据传输,这意味着它会确保数据在发送方和接收方之间以正确的顺序、无差错地传递。TCP使用确认机制、重传机制和序列号等技术来实现数据的可靠传输,在不稳定的网络环境中也能保证数据的准确性。
3,面向字节流:TCP将数据视为连续的字节流,而不是离散的消息。这意味着应用程序可以按照需要将数据划分为任意大小的数据块,TCP会将这些数据块分割为合适大小的数据段进行传输。接收方会按照序列号将数据段重新组装成完整的字节流并解析。
4,全双工通信:TCP连接支持全双工通信,这意味着通信双方可以同时进行双向的数据传输,而不需要等待对方的响应。发送方和接收方可以独立地发送和接收数据,而不会干扰对方的操作。
此外,TCP除了上述的主要特点外,还有其它的特点:
- 流量控制:TCP通过滑动窗口机制对发送方的发送速率进行控制,避免因发送方发送过多的数据导致接收方缓冲区溢出。
- 拥塞控制:TCP具有拥塞控制算法,可以根据网络状况动态调整发送速率,避免网络拥塞发生,保持网络的稳定性和公平性。
3,TCP 段格式
段是TCP传输数据的基本单位,由2部分所构成,分别为报头和数据区。
TCP 协议段格式示意图:
TCP 段格式中的各字段代表含义如下:
1,源端口号:16位字段,表示发送方的端口号。
2,目的端口号:16位字段,表示接收方的端口号。
3,序列号:32位字段,表示发送方发送数据的字节流的序列号,实现有序传输。
4,确认号:32位字段,表示接收方期望收到的下一个字节的序列号,实现可靠传输。
5,数据偏移:4位字段,表示TCP头部的长度,以32位(4字节)为单位计算。
6,保留:6位字段,保留供将来使用。
7,控制标志:6位字段,用于控制TCP的连接和传输行为,包含URG、ACK、PSH、RST、SYN、FIN等标志位。
8,窗口大小:16位字段,表示接收方当前可以接收的数据量,实现流量控制。
9,校验和:16位字段,用于校验TCP头部和数据的完整性。
10,紧急指针:16位字段,用于指示紧急数据的位置,在URG标志位被设置时才有效。
11,选项:可选字段,用于扩展TCP协议的功能,如选择确认、最大段长度等。
12,数据:可选字段,TCP段中携带的实际数据部分。
以上是TCP段的主要字段,并通过这些字段实现了可靠的数据传输、流量控制、拥塞控制和连接管理等功能。
TCP 段中的注意事项:
1,数据偏移该字段表示TCP头部的长度,以32位(4字节)为单位计算。具体来说,它表示TCP头部中有多少个4字节的字。
每个数据偏移的值乘以4就得到了TCP头部的长度,数据偏移字段的取值范围是0-15,这就使得TCP可以适应不同的选项需求。
2,TCP头部中的选项字段的长度是可变的,其是由数据偏移字段决定的,选项字段的长度范围区间为0字节到40字节。
当数据偏移值为5时,说明整个TCP报头为20字节,相当于没有选项;而当数据偏移值为15时,这时选项字段占用40字节。
3,控制标志字段用于控制TCP的连接和传输行为,包含URG、ACK、PSH、RST、SYN、FIN等标志位。标志位逐一解释:、
- URG(Urgent):表示紧急指针字段是否有效,即是否有紧急数据需要处理。
- ACK(Acknowledgment):表示确认号字段是否有效,即确认是否已接收到的数据。
- PSH(Push):提示接收方应用层尽快传递数据给应用程序,不需要等待缓冲区充满。
- RST(Reset):请求重置连接,终止连接或处理异常情况。复位报文段
- SYN(Synchronize):用于建立连接,初始化序列号。同步报文段
- FIN(Finish):用于释放连接,表明发送方已经发送完数据。结束报文段
结语
这就是本期博客的全部内容啦!如果有什么其他的问题无法自己解决,可以在评论区留言哦!
最后,如果你觉得这篇文章写的还不错的话或者有所收获的话,麻烦小伙伴们动动你们的小手,给个三连呗(点赞👍,评论✍,收藏📖),多多支持一下!各位的支持是我最大的动力,后期不断更新优质的内容来帮助大家,一起进步。那我们下期见!