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

一、TCP主要特点

TCP 是面向连接的运输层协议,在无连接的、不可靠的 IP 网络服务基础之上提供可靠交付的服务。为此,在 IP 的数据报服务基础之上,增加了保证可靠性的一系列措施。

l8-d10 TCP协议是如何实现可靠传输的_第1张图片

TCP主要特点

1.TCP 是面向连接的运输层协议。

        每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是点对点的(一对一)

2.TCP 提供可靠交付的服务。

3.TCP 提供全双工通信。

4.面向字节流

        TCP 中的“流”(stream) 指的是流入或流出进程的字节序列。

        面向字节流:虽然应用程序和 TCP 的交互是一次一个数据块,但 TCP 把应用程序交下来的数据看成仅仅是一连串无结构的字节流。

面向流的概念

l8-d10 TCP协议是如何实现可靠传输的_第2张图片

l8-d10 TCP协议是如何实现可靠传输的_第3张图片

l8-d10 TCP协议是如何实现可靠传输的_第4张图片 

Socket 有多种不同的意思

        应用编程接口  API  称为 socket API, 简称为 socket。

        socket API 中使用的一个函数名也叫作 socket。

        调用 socket 函数的端点称为 socket。

        调用 socket 函数时其返回值称为 socket 描述符,可简称为 socket。

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

如何实现可靠传输?

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

        全双工通信的双方既是发送方也是接收方。

        假设仅考虑 A 发送数据,而 B 接收数据并发送确认。因此 A 叫做发送方,而 B 叫做接收方。l8-d10 TCP协议是如何实现可靠传输的_第5张图片

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

解决方法:超时重传

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

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

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

 l8-d10 TCP协议是如何实现可靠传输的_第6张图片

确认丢失 

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

        假定 B 正确收到了 A 重传的分组 M1。这时 B 应采取两个行动:

                (1) 丢弃这个重复的分组 M1,不向上层交付。

                (2) 向 A 发送确认。

确认迟到

B 对分组 M1 的确认迟到了,因此 A 在超时计时器到期后重传 M1。

B 会收到重复的 M1,丢弃重复的 M1,并重传确认分组。

A 会收到重复的确认。对重复的确认的处理:丢弃。

l8-d10 TCP协议是如何实现可靠传输的_第7张图片

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

l8-d10 TCP协议是如何实现可靠传输的_第8张图片

连续 ARQ 协议

发送窗口:发送方维持一个发送窗口,位于发送窗口内的分组都可被连续发送出去,而不需要等待对方的确认。

发送窗口滑动:发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。

累积确认:接收方对按序到达的最后一个分组发送确认,表示:到这个分组为止的所有分组都已正确收到了。

l8-d10 TCP协议是如何实现可靠传输的_第9张图片

 

l8-d10 TCP协议是如何实现可靠传输的_第10张图片

三、TCP包头

l8-d10 TCP协议是如何实现可靠传输的_第11张图片

你可能感兴趣的:(tcp/ip,网络,服务器)