TCP协议

有连接,可靠传输,面向字节流

16位源端口号

16位目的端口号

4位首部长度

报头的长度,报头中包含了"选项" optional =>可选择的,0 - 15 ,4个字节,TCP 报头的最大长度是 60 字节

保留位(6位)UDP 想升级,非常费劲,就导致 UDP 的报文长度始终受到 64

KB 的限制。保留位,现在不使用,但是先占个位置,说不定以后就使用到了

6个最关键的标志位

可靠传输

什么是可靠传输?

可靠传输,是否可以做到数据的 100% 到达对方呢?不能做到的!!!

发送的数据,能够知道对方是否收到,就可以认为是"可靠传输"

1)如果知道对、对方收到了,传输成功

2)如果知道对方没收到(丢包),采取其他补救措施

核心机制一:确认应答

实现让发送方知道接受方是否收到数据

发送方发送了数据之后,接受方,一旦接收到了,就会给发送方返回一个"应答报文"告诉发送方"我已经收到了数据"

网络上会出现"后发先至"的情况

为了解决上述问题,就引入了"序号和确认序号"对于数据的传输进行标识

TCP 是字节流传输的

序号和确认序号是针对"字节"进行编号的

一个 TCP 数据报,包含多个字节,如何体现所有编号呢?

编号是连续递增的,要知道 TCP 载荷的第一个字节的编号是多少,后面的每一个字节的编号就都知道了

32 位序号和数据:填写数据报部分的第一个字节编号几就行了

同一个 TCP 连接,序号会连续累加,下一个数据报的序号在上一个数据报的最后一个的序号基础上继续递增

确认序号只在应答报文中生效

确认序号根据收到的数据的最后一个字节的序号进行加一来进行填充

这一位为 1 ,确认序号字段就会有效负责是属于"无效字段"

确认序号的含义:

1.所有 < 确认序号的数据,接收方已经收到了

2.发送方接下来应该是从确认序号的位置开始,继续发送数据

这样的规则,非常有用,会在后面的特性中,有所体会

确认应答,就是 TCP 实现可靠传输的,最关键机制之一

这个地方的长度有多少,就看你代码是怎么写的

确认应答,关键是,数据顺利到达,通过 ack 告知发送方

实际传输中,很有可能丢包的

TCP 核心机制二:超时从传

确认应答的重要补充,针对丢包的场景的

超时:发送方,判定是否出现丢包的条件

重传:发现数据丢包,就在发一次(概率性问题)

假设一个数据包,传输过程中,丢包的概率大概是 10%(相当大的数字)

连续传输两次,数据包至少一次到达对方的概率是多少?

1 - 10% * 10% => 99%

传输次数的增加,数据报到达对方的概率概率大幅度增加

计算机中,一般不喜欢"无限的等",最大等待时间"超时时间"

相关推荐
谷雪_65840 分钟前
学习华为 ensp 的学习心得体会
网络·学习·华为·网络工程·ensp
zh4men92 小时前
Mac Parallels Desktop Kali 2025 代理设置
服务器·网络·macos·kali·pdesktop
夜空晚星灿烂3 小时前
C# 网络编程-关于HttpClient使用方式(三)
开发语言·网络·c#
yczn1236 小时前
3D可视化数字孪生智能服务平台-物联网智控节能控、管、维一体化技术架构
大数据·网络·人工智能
alonetown6 小时前
IEC61850 通信协议测试验证方法详解
网络·iec61850·通信协议测试
听风lighting6 小时前
WevServer实现:异步日志写与HTTP连接
linux·网络·c++·网络协议·http·秋招·嵌入式面试
YuTaoShao6 小时前
Java八股文——操作系统「网络 I/O 篇」
java·服务器·网络·面试·操作系统·八股文
2401_853275738 小时前
Sentinel实现原理
服务器·网络·sentinel
西岭千秋雪_14 小时前
计算机网络学习笔记:TCP可靠传输实现、超时重传时间选择
网络·笔记·学习·tcp/ip·计算机网络
三体世界15 小时前
HTTPS加密原理
linux·开发语言·网络·c++·网络协议·http·https