tcp的可靠性

1.应答确认

TCP 发送的报文段是交给 IP 层传送的。但IP 层只能提供尽最大努力的服务,也就是说,TCP 下面的网络所提供的是不可靠的传输。因此,TCP 必须采用适当的措施才能使两个运输层之间的通信变得可靠。 TCP 的可靠传输是通过使用应答确认和超时重传来完成

2.超时重传机制

无差错时,数据的交互:

有差错数据的交互流程:

3.乱序重排,去重

接收方接收到数据,很大可能都是乱序的,因为我们发送的数据都是带有报头的(详见网络应用程序通信流程图),根据TCP报头中的序号进行乱序重排即可.

如果由于网络延迟导致数据重发,最终接收方收到了多份的数据,同理,根据报头中的序号进行去重即可。

TCP传输是可靠的,首先,TCP协议采用发送应答机制,即发送端发送的每个TCP报文段都必须得到接收方的应答,才认为这个TCP报文段传输成功.

其次,TCP协议采用超时重传机制,发送端在发送一个TCP报文段之后启动定时器,如果在定时时间内未收到应答,它将重发该报文段,最后,因为TCP报文段最终是以IP数据报发送的,而IP数据报到达接收端可能乱序,重复,所以TCP协议还会对接收到的TCP报文段重排,整理,再交付给应用层。

UDP协议则和IP协议一样,提供不可靠服务.它们都需要上层协议来处理数据确认和超时重传(现在理解IP协议为什么是不可靠的了吧?)

应答确认,超时重传,乱序重排,去重最终保证了tcp连接的可靠性

相关推荐
xu_yule4 分钟前
网络和Linux网络-5(应用层)HTTP协议(方法+报头+状态码)
linux·网络·网络协议·http
n***44312 分钟前
Node.js HTTP模块详解:创建服务器、响应请求与客户端请求
服务器·http·node.js
报错小能手16 分钟前
TCP/UDP面经整理
网络·tcp/ip·udp
xxp432120 分钟前
Qt 网络编程 网络下载
网络·qt·php
2***s6721 小时前
【Go】Go语言基础学习(Go安装配置、基础语法)
服务器·学习·golang
xuchaoxin13751 小时前
cdn节点代理的副作用@fail2ban对接cdn封锁恶意请求ip@fail2ban封锁ip有效性问题
运维·网络·cdn·cloudflare
西幻凌云1 小时前
了解计算机网络的“物理根基”——物理层与数据链路层
网络·网络协议·计算机网络·数据链路层·物理层
于齐龙3 小时前
服务器常见问题-FAQ
服务器
正在努力的小河3 小时前
Linux 块设备驱动实验
linux·运维·服务器
wadesir3 小时前
Nginx配置文件CPU优化(从零开始提升Web服务器性能)
服务器·前端·nginx