TCP协议是如何实现可靠传输的

文章详细介绍了TCP的主要特点,包括面向连接、可靠传输和全双工通信,并解释了TCP如何通过超时重传、确认机制确保数据可靠性。同时提到了流水线传输提高效率的方法。此外,还对比介绍了UDP的主要特点,如无连接、面向报文以及首部开销小,强调其在简单性和效率上的优势。
摘要由CSDN通过智能技术生成

一、 TCP主要特点

  1. 面向连接
  2. 可靠交付的服务
  3. 全双工通信
  4. 面向面向流

二、 TCP实现可靠传输的原理
假设A是发送方,B是接收方
A向B发送数据包(序号),B向A发送确认数据(确认号)
传输时会遇到以下几种情况可能导致数据丢失、迟到、超时:
① 超时重传,
② 分组丢失
③ 确认迟到
三、
用流水线传输方式来传输数据效率更有效

一、TCP 最主要的特点

  1. TCP 是面向连接的运输层协议。
    每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是点对点的(一对一)。
  2. TCP 提供可靠交付的服务。
  3. TCP 提供全双工通信。
  4. 面向字节流
    TCP 中的“流”(stream) 指的是流入或流出进程的字节序列。
    面向字节流:虽然应用程序和 TCP 的交互是一次一个数据块,但 TCP 把应用程序交下来的数据看 成仅仅是一连串无结构的字节流。

Socket 有多种不同的意思

应用编程接口 API 称为 socket API, 简称为 socket。
socket API 中使用的一个函数名也叫作 socket。
调用 socket 函数的端点称为 socket。
调用 socket 函数时其返回值称为 socket 描述符,可简称为 socket。

二、TCP是如何实现可靠传输的?

每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
全双工通信的双方既是发送方也是接收方。
假设仅考虑 A 发送数据,而 B 接收数据并发送确认。因此 A 叫做发送方,而 B 叫做接收方。

A 发送完分组 M1 后就暂停发送,等待 B 的确认 (ACK)。
B 收到 M1 向 A 发送 ACK。
A 在收到了对 M1 的确认后,就再发送下一个分组 M2。

在这里插入图片描述

A 如何知道 B 是否正确收到了 M1 呢?

解决方法

1. 超时重传

A 为每一个已发送的分组设置一个超时计时器。

A 只要在超时计时器到期之前收到了相应的确认,就撤销该超时计时器,继续发送下一个分组 M2 。

若 A 在超时计时器规定时间内没有收到 B 的确认,就认为分组错误或丢失,就重发该分组。

在这里插入图片描述

2. 确认丢失

若 B 所发送的对 M1 的确认丢失了,那么 A 在设定的超时重传时间内将不会收到确认,因此 A 在超时计时器到期后重传 M1。

假定 B 正确收到了 A 重传的分组 M1。这时 B 应采取两个行动:
(1) 丢弃这个重复的分组 M1,不向上层交付。
(2) 向 A 发送确认。

4. 确认迟到

B 对分组 M1 的确认迟到了,因此 A 在超时计时器到期后重传 M1。
B 会收到重复的 M1,丢弃重复的 M1,并重传确认分组。
A 会收到重复的确认。对重复的确认的处理:丢弃。

在这里插入图片描述

提高传输效率:流水线传输

在这里插入图片描述

  1. 连续 ARQ 协议
    发送窗口:发送方维持一个发送窗口,位于发送窗口内的分组都可被连续发送出去,而不需要等待对方的确认。
    发送窗口滑动:发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。
    累积确认:接收方对按序到达的最后一个分组发送确认,表示:到这个分组为止的所有分组都已正确收到了。

在这里插入图片描述
在这里插入图片描述

三、TCP报文段的首部格式

在这里插入图片描述

源端口号(Source Port):16 位字段,表示发送方的端口号。

目的端口号(Destination Port):16 位字段,表示接收方的端口号。

序列号(Sequence Number):32 位字段,表示发送方发送的字节流的序列号。用于实现数据的可靠传输和顺序传递。

确认号(Acknowledgment Number):32 位字段,表示接收方期望接收的下一个字节的序列号。用于实现数据的可靠传输和确认。

数据偏移(Data Offset):4 位字段,表示 TCP 首部的长度,以 32 位的字为单位。最大值为 15,对应的首部长度为 60 字节。

保留(Reserved):6 位字段,保留供将来使用,目前置为 0。

U/A/P/R/S/F:各占 1 位的标志位。
U:紧急(Urgent)标志位,表示紧急指针字段是否有效。
A:确认(Acknowledgment)标志位,表示确认号字段是否有效。
P:推送(Push)标志位,表示接收方应该尽快将数据交给应用层。
R:复位(Reset)标志位,用于中断连接。
S:同步(Synchronize)标志位,用于建立连接 三次握手。
F:终止(Finish)标志位,用于释放连接 四次挥手。
窗口大小(Window Size):16 位字段,表示接收方的窗口大小,用于流量控制。

校验和(Checksum):16 位字段,用于校验 TCP 首部和数据的完整性。

紧急指针(Urgent Pointer):16 位字段,仅在紧急标志位为 1 时有效,表示紧急数据的边界。

TCP 报文段的首部长度为 20 字节(不包括选项字段)。首部长度可变取决于选项字段的存在与长度。

四、UDP协议

1. 计算机网络体系结构

在这里插入图片描述

2. UDP协议

UDP 只在 IP 的数据报服务之上增加了一些功能:

  1. 复用和分用
  2. 差错检测
    在这里插入图片描述

3. UDP主要特点

无连接。发送数据之前不需要建立连接。
使用尽最大努力交付。即不保证可靠交付。
面向报文。UDP 一次传送和交付一个完整的报文。
没有拥塞控制。网络出现的拥塞不会使源主机的发送速率降低。很适合多媒体通信的要求。
支持一对一、一对多、多对一、多对多等交互通信。
首部开销小,只有 8 个字节。
UDP 通信的特点:简单方便,但不可靠。

4. UDP是面向报文的

在这里插入图片描述

  1. 发送方 UDP 对应用层交下来的报文,既不合并,也不拆分,按照原样发送。
  2. 接收方 UDP 对 IP 层交上来的 UDP 用户数据报,去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。

在这里插入图片描述

用户数据报 UDP 有两个字段:数据字段和首部字段。首部字段有 8 个字节,由 4 个字段组成,每个字段都是 2 个字节。

  • 26
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值