最近经常有小伙伴问我TCP相关的问题,小编针对TCP传输控制协议知识做了梳理汇总。为不懂的小伙伴答疑解惑。
TCP(传输控制协议)是面向连接的,配合高层用于程序做数据发送。只提供封装头的设计和SD端口号信息。
端口号主要用于区分不同的网络服务,大小为16位,范围为0-65535。它分为知名端口和未知名端口,如下所示:
(1)1-1023是知名端口,正好一一对应,知名应用和知名端口之间的映射,telnet对应TCP23;
(2)1024-65535为未知名端口,随机对应,不受应用程序和操作系统的固定;
具体的TCP端口号如下图所示:
当主动方发送SYN连接请求时,等待对方回复SYN+ACK,最后对对方的SYN进行ACK确认。TCP连接建立的过程如下:
TCP关闭连接如下:
在关闭连接之前,主机应该确认收到敌方的ack。
三、TCP头部
我们可以看到TCP报头包含以下内容:
Source port (源端口号) 16 源应用程序时什么程序
Destination port (目的端口号)16 目的应用程序是什么程序
Sequence number(序列号)32 数据分段的时候每个段的号,用于重组,防止乱序
Acknowledge number(确认号)32 确认收到数据,发送方发送最大序列号的值+1,
Header length(首部长度)4
Resv(保留)6 全部为 0
URG :紧急指针 致为 1 表示紧急处理该数据
ACK :确认的意思
PSH
RST :重置
SYN :同步的意思
FIN :结束
窗口16想要接收每个TCP数据段的大小,并且可以协商流量控制。发送端传输一段数据等。目的段收到一条数据后,向发送端发送一个ACK,然后发送段再发送。如果没有收到确认,将重新发送。
Checksum(校验和)16 不单单校验头部,数据内容也校验。
Urgent pointer(紧急指针)16 结合 URG 优先处理某个应用,
Options(选项)
Padding(填充)
因为TCP是面向连接的,所以它包括以下功能:
(1)流量控制:限速,通过窗口字段协商速率,滑动窗口每次传输前协商窗口大小。
(2)防止乱序:处理延迟、串行化延迟、传输延迟、队列延迟和抖动的问题是先发送或先发送的,并通过序列号字段完成。
(3)防止丢包:通过确认号码。比如发送123对等回复ACK4给发送方,源方就知道了。
123,我从4开始发送,456如果6丢了,回复ACK6,源就知道6丢了,从6开始重发。
(4)完整性检查,防止数据篡改:通过校验和字段。
(5)数据重传:自身支持。
(6)点对点应用只支持单播数据传输,不支持组播和广播。
五、TCP控制流量
以上就是TCP传输控制协议的介绍,
如果你还有其他问题,欢迎进行咨询探讨,希望我们的专业的解决方案,可以解决你目前遇到的这些问题。
TikTok千粉号购买平台:https://tiktokusername.com/
TOP