【计算机网络】TCP 如何实现可靠传输

简介: 【计算机网络】TCP 如何实现可靠传输

image.gif

TCP通过三次握手建立连接,四次挥手释放连接,确保连接建立和连接释放的可靠。

序列号、检验和、确认应答信号、重发机制、连接管理、窗口控制、流量控制、拥塞控制 标准回答 可靠传输就是通过TCP连接传送的数据是没有差错、不会丢失、不重复并且按序到达的。TCP是通过序列号、检验和、确认应答信号、重发机制、连接管理、窗口控制、流量控制、拥塞控制一起保证TCP传输的可靠性的。 加分回答 可靠传输的具体实现是:

- 应用层的数据会被分割成TCP认为最适合发送的数据块。

- 序列号:TCP给发送的每一个包都进行编号,接收方对数据包进行排序,把有序数据传送给应用层,TCP的接收端会丢弃重复的数据。

- 检验和:TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。

- 确认应答:如果收到的数据报报文段的检验和没有差错,就确认收到,如果有差错,TCP就丢弃这个报文段和不确认收到此报文段。

- 流量控制:TCP 连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议。

- 拥塞控制:当网络拥塞时,减少数据的发送。

- 停止等待协议:它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。

- 超时重传: 当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。

目录

1. 三次握手和四次挥手

2. 流量控制

3. 拥塞控制

4. 序列号

5. 超时重传

6. 停止等待协议


1. 三次握手和四次挥手

TCP通过三次握手(3个报文段)建立连接,四次挥手(4个报文段)释放连接,确保连接建立和连接释放的可靠。

【三次握手详细过程】

能否使用两次握手建立连接呢?

不行。如果TCP客户发起的请求滞留到达,此时TCP服务器会进入连接已建立状态,而TCP客户端仍为关闭状态,会导致TCP服务器的资源浪费。

【四次挥手详细过程】


2. 流量控制

流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。(发送过快接收方来不及接受,可能导致数据丢失)

使用滑动窗口机制实现。

【以字节为单位的滑动窗口】

【问题】对于主机B发送的消息丢失,主机A迟迟收不到主机B的消息,双方会陷入死锁局面。

解决:设置持续计时器,超过则主机A发送0窗口探测报文(带有1字节),即使主机B的接收窗口为0规定也要接收0窗口探测报文。

【问题】0窗口探测报文(带有1字节)丢失怎么办?

解决:对于0窗口探测报文(带有1字节)也设置超时计时器,超时则重传。


3. 拥塞控制

拥塞:在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。

四种拥塞控制算法

  1. 慢开始
  2. 拥塞避免
  3. 快重传
  4. 快恢复

【慢开始+拥塞避免】

拥塞窗口cwnd,满开始门限ssthresh

当 cwnd < ssthresh 时,使用慢开始算法。
当 cwnd > ssthresh 时,停止使用慢开始算法,改用拥塞避免算法。
当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞避免算法。

【快重传+快恢复】

解决个别丢失但未拥塞,发生的超时重传而导致调用拥塞避免算法

快重传,就是使发送方尽快进行重传,而不是等超时重传计时器超时再重传。

  • 要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认;即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认
  • 发送方一旦收到3个连续的重复确认,就将相应的报文段立即重传,而不是等该报文段的超时重传计时器超时再重传

快恢复:ssthresh=cwnd/2,cwnd=ssthresh

【慢开始结合拥塞避免】示例

【慢开始】:指数增长

【拥塞避免 】:当cwnd=ssthresh时,每次加1

【慢开始】:当发送超时重传,将ssthresh=cwnd/2,cwnd=1

【快重传+快恢复】示例


4. 序列号

序列号:TCP给发送的每一个包都进行编号,接收方对数据包进行排序,把有序数据传送给应用层,TCP的接收端会丢弃重复的数据。


5. 超时重传+超时重传时机的选择

问题:A给B发送数据,A 如何知道 B 是否正确收到了 M1 呢?

解决方法:超时重传

  • A 为每一个已发送的分组设置一个超时计时器。
  • A 只要在超时计时器到期之前收到了相应的确认,就撤销该超时计时器,继续发送下一个分组 M2 。
  • 若 A 在超时计时器规定时间内没有收到 B 的确认,就认为分组错误或丢失,就重发该分组。

超时重传时机的选择


6. 停止等待协议

它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。


目录
相关文章
|
4天前
|
负载均衡 网络协议 算法
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
这网络层就像搭积木一样,上层协议都是基于下层协议搭出来的。不管是ping(用了ICMP协议)还是tcp本质上都是基于网络层IP协议的数据包,而到了物理层,都是二进制01串,都走网卡发出去了。 如果网络环境没发生变化,目的地又一样,那按道理说他们走的网络路径应该是一样的,什么情况下会不同呢? 我们就从路由这个话题聊起吧。
22 4
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
|
26天前
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
53 11
|
25天前
|
监控 网络协议 网络性能优化
网络通信的核心选择:TCP与UDP协议深度解析
在网络通信领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种基础且截然不同的传输层协议。它们各自的特点和适用场景对于网络工程师和开发者来说至关重要。本文将深入探讨TCP和UDP的核心区别,并分析它们在实际应用中的选择依据。
53 3
|
1月前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
90 3
|
2月前
|
Web App开发 缓存 网络协议
不为人知的网络编程(十八):UDP比TCP高效?还真不一定!
熟悉网络编程的(尤其搞实时音视频聊天技术的)同学们都有个约定俗成的主观论调,一提起UDP和TCP,马上想到的是UDP没有TCP可靠,但UDP肯定比TCP高效。说到UDP比TCP高效,理由是什么呢?事实真是这样吗?跟着本文咱们一探究竟!
70 10
|
1月前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
2月前
|
网络协议 Java API
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
69 2
|
2月前
|
存储 网络协议 Java
【网络】UDP和TCP之间的差别和回显服务器
【网络】UDP和TCP之间的差别和回显服务器
77 1
|
2月前
|
网络协议 网络架构
【第三期】计算机网络常识/网络分层模型与数据包封装传输过程
【第三期】计算机网络常识/网络分层模型与数据包封装传输过程
54 0
|
7天前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
44 17