当前课程知识点:计算机网络 >  第六章 传输层 >  6.7 TCP传输策略 >  Video

返回《计算机网络》慕课在线视频课程列表

Video在线视频

下一节:TCP传输策略

返回《计算机网络》慕课在线视频列表

Video课程教案、知识点、字幕

类似数据链路层

TCP数据传输

采用了基本的肯定确认

重传机制

TCP是以数据段的形式

传输数据的

一个数据段

包含很多个字节

相当于批量传输

为避免大量数据淹没接收方

采用流控技术

利用的是段头中的一个字段

叫窗口尺寸

window size

下面我们用这个例子来看一下

怎么采用window size这个字段

来进行流控的

左边是sender发送方

右边是receiver接收方

现在接收方

它有一个4K大小的缓存

是空的

sender发送了一个2K的数据

过来

在这个2K的数据里边

它的Sequence Number

是等于0的

所以我们知道

这个2K的字节

它的编号是从0 1 2 3

一直到2047

那么这个数据

到达receiver之后呢

receiver的内存

就被占据了一半

还剩下2K

所以这个接收方

它会回发一个确认

在这个确认里边

它的ACK number等于2048

就表明说2047 2046等等

之前的那些字节

它已经收到了

下一次呢

发送方可以从2048

编号的那个字节开始发送

同时注意看

它的window size值

是等于2048

等于2K的

这个值就是告诉发送方说

我现在只有2K的空间

你只能发2K

或者小于2K的数据过来

当sender收到这个确认之后

他果然就发了2K的数据过来

在这2K的数据里边

Sequence Number

是等于2048的

这个2K的数据

一旦到达接收方

接收方的缓存

全部被充满

也就是说

它没有更多的空间

来接收新的数据了

所以这个时候

接收方发出去的确认

它的window size等于0

其实就是告诉对方说

对不起

我不能收新数据了

请你稍等

在这个window size等于0的

确认里面

它的ACK等于4096

表明说4095 4094等等之前

那些编号的字节

已经正确的收到了

过一段时间

接收方

它对缓存里面的数据

进行了处理

空出了2K的空间

这个时候

它可以接收2K的数据了

所以它马上发送了一个

更新窗口

在这个更新窗口数据段里面

window size等于2048

也就是说等于2K

告诉对方说

你现在可以发数据了

发数据呢

可以发2K

2K之内都可以发

同时你也会观察到

在这个更新窗口

这个数据段里面

ACK number是等于4096的

跟刚才window size等于0的

那个数据段里面的ACK number

是一样的

就是说它其实没有收到新的数据

当这个更新窗口

到达发送方的时候

发送方就发送了一个数据

这个数据我们看到

是1K

1K是小于2K的

所以这是允许的

它的Sequence Number

等于4096

正是对方要求我发过去的

那个字节的编号

这个过程呢

就是采用window size这个字段

来进行流控的过程

在这个图解里边

我们看到明确的sender

receiver

实际上呢

TCP传输是双工的

sender receiver是可以交换的

它们可以互为收发方

当窗口数位于0的时候

发送方

不能够正常的发送数据段

除非有紧急数据

比如说用户想杀掉远端

机器上的进程的时候

就可以发送紧急数据

发送者

可以发送一个字节的数据段

以便让接收者

再次发送期待接收的字节号

和窗口数

避免死锁

这种情形呢

我们稍候再讲一个例子

实际上呢

发送者

不需要马上发送应用程序

产生的数据

接收者

也不需要马上发送应答

为什么呢

你可能使用过Telnet

它是一个远程交互式工具

远程编辑器对用户的

每一次击键

都会做出响应

我们来看一下最坏的情况

当用户敲入一个字符的时候

被送到传输实体

创建一个21字节的数据段

再传到网络层

变成了41个字节的IP分组

接收方收到这个信息之后

会立刻发回一个

40个字节长的确认分组

它包括20个字节的TCP段头

和20个字节的IP头

随后当编辑器读取出这个字节

TCP实体

发回一个窗口更新

这个分组也是40个字节

最后当编辑器

处理完了这个字符

它发送一个41字节的分组

作为该字符的回显

可见

对于每个敲入的字符

需要至少162个字节

还没有考虑数据链路层的开销

总共发出了四个数据段

我们其实是可以优化接收端的

比如说接收端

不要那么着急发送确认分组

和窗口更新

而是延迟一个时间

以便可以免费搭载到一个

处理后的回显分组之中

也就是说

搭一个便车

也可以优化发送端

采用Nagle的算法

当数据以一次一字节的速度

到达传输实体的时候

只发送第一个字节

然后将后续的字节缓存起来

直到发出的字节

得到确认

将缓存起来的字节

在一个数据段中发出

再继续缓存

直到发出的数据得到确认

Nagle的算法

在很多TCP上都有实现

但是有些时候最好禁用

比如当一个X—window的应用

通过互联网远程运行的时候

鼠标的移动事件

必须发送给远程计算机

把这些移动事件累积起来

一批一批地发送出去

将使得鼠标的移动极不连贯

另一个使TCP性能退化的问题

是傻瓜窗口综合症

当有大块数据被传递给发送端

TCP实体

但接收端的交互式应用

每次只读取一个字节的时候

问题就来了

在这个图中

左边是发方

右边是收方

我们注意观察收方

它的缓存现在已经满了

所以它不得不发一个window size

等于0的确认分组给对方

告诉它停止发送 等待

当它处理一个字节的时候

就缓存里面空出了一个字节

这个时候它非常着急地

就把这个更新窗口

window size等于1发出去了

window size等于1到达发送者

发送者也急急忙忙的

发送了一个字节过来

很快就把它的一个字节的缓存

再次充满

充满了之后

接收方

现在只能够发window size

等于0的确认回去了

那么发送方

又只有继续等待

当它处理好了一个字节的空间

出来之后

它又发了一个更新窗口

window size等于1

那么发送方

再发一个字节来

又把它的缓存充满了

那么这个状况

一直这样

让接收方的缓存

一个字节 一个字节的

充满 释放 充满 释放

那么要解决

这个傻瓜窗口综合症的问题

可以用Clark的解决方案

Clark的解决方案是这样的

它主旨接收方

发送只有一个字节的窗口更新

相反

它必须等待一段时间

当有了一定数量的空间之后

也就是说它处理完了

把这个缓存的空间

累积到一定的量之后

再向发送方

去发出这个窗口更新

接收方可以维护一个内部缓存

并且主旨上层应用的read请求

直到它有大块的数据提供

Clark的解决方案

治愈了傻瓜窗口综合症

它的工作情形是这样的

左边是发送方

右边是接收方

我们先看右边

它的缓存

现在是满掉的

红色的是满掉的

所以它只能发一个

window size等于0

告诉对方说请稍等

接着下来

它就开始处理这些数据

把缓存弹了一个单位出来

再弹一个单位出来

它不着急发更新窗口

一直到它累积到了一定的量

比如说等于6个单位的时候

它才发更新窗口过去

那么发送方

这个时候就可以批量地发数据

过来了

就把刚才描述的那种

一个字节 一个字节地

填满 空闲 填满 空闲的这个症状

完全地解决掉了

所以其实发方和收方

都要做优化

发方我们做的优化

就采用Nagle的算法

尽量不发送数据含量小的数据段

还有缓存

应用层的数据

到达一定量之后再发

而接收方呢

采用Clark的解决方案

他不请求对方发送短数据段

也就是说

它的window size的值

尽量地不要太小

它延迟窗口更新的信息

直到缓冲区

变得足够的大

小结一下今天的内容

TCP数据段的传输

是全双工的

而且它传输的是字节流

TCP适配

收发双方的数据流量的方法是

采用window size这个字段

TCP还需要效率

它的发方

可以用Nagle的算法

来进行优化

而收方呢

可以用Clark的解决方案

来进行优化

计算机网络课程列表:

第零章

-本课程简介

--课程组织

--课程简介和学习目标

--第44次中国互联网络发展状况统计报告201909

第一章 概述

-1.1 为什么要学习计算机网络?

--为什么要学习计算机网络?

--为什么要学习计算机网络?

-1.2 互联网络发展史

--Video

--互联网络发展史

-1.3 常用的基本概念

--Video

--常用的基本概念

-1.4 参考模型(重点)

--Video

--参考模型

-1.5 参考模型相关的概念

--Video

--数据如何传输

-1.6 本课程的组织

--Video

--课程组织

-附录1:思考题

--html

-附录2:术语中英对照表

--html

-附录3:伦敦奥运会开幕式之Tim Berners Lee

--伦敦奥运会开幕式之Tim Berners Lee

--附录说明

-第一章 概述--章节测试

-附录4:本章的无背景乐的视频

--1-2互联网网络发展史

--1-3 常用的基本概念

--1-4参考模型

--1-5参考模型相关的概念

--关于附录4的说明

第二章 物理层

-2.1 数据通信的理论基础

--Video

--数据通信的理论基础

-2.2 有导向的传输介质

--Video

--有导向的传输介质

-2.3复用技术

--Video

--复用技术

-2.4调制技术

--Video

--调制技术

-2.5公共交换电话网络

--Video

--公共交换电话网络

-2.6物理层设备

--Video

--物理层设备

-附录1:思考题

--html

-附录2:术语中英对照表

--html

-附录3:光纤熔接

--Video

-附录4:海底光缆

--ABB投资建造世界领先的海底电缆敷设船

--动画演示海底光缆铺设

--附录说明

--外部链接

-第二章 物理层--章节测试

-附录5:本章的无背景乐的视频

--2-1物理层概述及信号分析

--2-2引导性传输介质

--2-3复用技术

--2-4调制技术

--2-5公共交换电话网络

--关于附录5的说明

第三章:数据链路层

-3.1 数据链路层概述

--Video

--数据链路层概述

-3.2 差错处理概述

--Video

--差错处理概述

-3.3 纠1位错的海明码

--Video

--纠1位错的海明码

-3.4 检错码

--Video

--检错码

-3.5基本数据链路协议1~3

--Video

--基本数据链路协议1~3

-3.6 滑动窗口协议

--Video

--滑动窗口协议

-3.7 回退n帧

--Video

--回退n帧

-3.8 选择性重传

--Video

--选择性重传

-附录1:思考题

--html

-附录2:术语中英对照表

--html

-第三章:数据链路层--章节测试

-附录3:本章的无背景乐的视频

--3-1数据链路层功能和成帧

--3-2差错处理概述

--3-3纠1位错的海明码

--3-4检错码

--3-5 6个模拟的DLL协议之1-3

--3-6 滑窗协议

--3-7 回退n帧

--3-8 选择性重传

--关于附录3的说明

第四章 介质访问控制子层

-4.1 MAC子层概述

--Video

--MAC子层概述

-4.2 ALOHA协议

--Video

--ALOHA协议

-4.3 CSMA协议

--Video

--CSMA协议

-4.4 以太网概述

--Video

--以太网概述

-4.5 以太网帧格式

--Video

--以太帧格式

-4.6 二层交换的基本格式

--Video

--二层交换的基本原理

-4.7 生成树协议

--Video

--生成树协议

-4.8 虚拟局域网

--Video

--虚拟局域网

-4.9 二层设备

--Video

--二层设备

-附录1:思考题

--html

-附录2:术语中英对照表

--html

-第四章 介质访问控制子层--章节测试

-附录3:本章的无背景乐的视频

--4-1 MAC子层概述

--4-2 ALOHA协议

--4-3 CSMA协议

--4-4 以太网概述

--4-5 以太帧格式

--4-6_二层交换的基本原理

--4-7 生成树协议

--4-8 虚拟局域网

--4-9 二层设备

--关于附录3的说明

第五章 网络层

-5.1 网络层引言

--Video

--网络层引言

-5.2 IP地址

--Video

--IP地址

--子网规划实例

-5.3 子网规划

--Video

--子网规划

-5.4 IP寻址

--Video

--你手机的IPv4地址跟地理位置绑定在一起吗?

--IP寻址

-5.5 IP分组

--Video

--IP分组

-5.6 什么是IPv6?

--Video

--什么是IPv6?

-5.7 IPv6地址

--Video

--IPv6地址

-5.8 IPv6分组

--Video

--IPv6分组

-5.9 IPv6过渡技术

--Video

--IPv6过渡技术

-5.10 路由从何而来?

--Video

--你了解路由器和家用路由器及二者的区别吗?

--路由如何而来

-5.11 距离矢量路由选择协议

--Video

--距离矢量路由选择协议

-5.12 路由信息协议RIP

--Video

--RIP

-5.13 RIP为什么衰落?

--Video

--RIP为什么会衰败

-5.14 链路状态路由选择LS

--Video

--链路状态路由选择LS

-5.15 单区域OSPF

--Video

--开放的最短路径优先(OSPF)

-5.16 无类域间路由 CIDR

--Video

--CIDR

-5.17 网络地址翻译 NAT

--Video

--NAT

-5.18 互联网控制消息协议 ICMP

--Video

--ICMP

-5.19 地址解析协议 ARP

--Video

--ARP

-5.20 拥塞控制

--Video

--拥塞控制

-5.21 流量整形

--Video

--流量整形

-附录1:思考题

--html

-附录2:术语中英对照表

--html

-第五章 网络层--章节测试1

-第五章 网络层--章节测试2

-第五章主观测试题

-附录3:本章的无背景乐的视频

--5-1_网络层引言

--5-2_IP地址

--5-3_子网规划

--5-4_IP寻址

--5-5_IP分组

--5-6 什么是IPv6?

--5-7_IPv6地址

--5-8IPv6分组

--5-9过渡技术

--5-10_路由从何而来?

--5-11 距离矢量路由选择协议

--5-12_路由信息协议RIP

--5-13_ RIP为什么会衰落

--5-14_链路状态路由选择协议

--5-15_单区域OSPF

--5-16 无类域间路由 CIDR

--5-17_网络地址翻译 NAT

--5-18_互联网控制消息协议ICMP

--5-19_地址解析协议 ARP

--5-20_拥塞控制

--5-21流量整形

-说说你在家的用网体验

-RIP是否会卷土重来?

-说说你遭遇过的ARP病毒

第六章 传输层

-6.1 传输层概述

--Video

--传输层概述

-6.2 用户数据报协议 UDP

--Video

--用户数据报协议 UDP

-6.3 通信模型

--Video

--通信模型

-6.4 TCP数据段

--Video

--TCP数据段

-6.5 TCP三次握手建立连接

--Video

--TCP三次握手建立连接

-6.6 TCP连接释放

--Video

--TCP连接释放

-6.7 TCP传输策略

--Video

--TCP传输策略

-6.8 TCP拥塞控制

--Video

--TCP拥塞控制

-6.9 TCP定时器等

--Video

--TCP定时器等

-附录1:思考题

--html

-附录2:术语中英对照表

--html

-第六章 传输层--章节测试

-附录3:本章的无背景乐的视频

--6-1传输层概念

--6-2UDP

--6-3通信模型

--6-4TCP数据段

--6-5 TCP三次握手建立连接

--6-6 TCP连接释放

--6-7 TCP传输策略

--6-8 TCP拥塞控制

--6-9 TCP定时器等

套接字编程

-linux

--1_Socket_UDP_简介(linux)

--1_Socket_TCP_简介(linux)

--2_Socket_UDP_代码讲解(linux)

--2_Socket_TCP_代码讲解(linux)

--3_Socket_UDP_调试(linux)

--3_Socket_TCP_调试(linux)

-windows

--UDP_1_SOCKET简介

--UDP_2_代码讲解

--UDP_3_代码调试

--TCP_1_Socket简介

--TCP_2_代码讲解

--TCP_3_代码调试

第七章 应用层

-7.1 应用层概述

--Video

--应用层概述

--说说你用得最多的应用是哪个?

--畅想你想研发的一个应用

-7.2 域名系统 DNS 概述

--Video

--域名系统 DNS 概述

-7.3 DNS之域名解析

--Video

--域名解析

-7.4 电子邮件 e-mail

--Video

--电子邮件 e-mail

-7.5 万维网 WWW

--Video

--万维网 WWW

--如果没有Web,互联网会怎样?

-7.6 其它应用

--Video

--其它应用

-附录1:思考题

--html

-附录2:术语中英对照表

--html

-第七章 应用层--章节测试

-附录3: 本章无背景音乐的视频

--7-1_应用层概述

--7-2_域名系统 DNS 概述

--7-3_DNS之域名解析

--7-4_电子邮件

--7-5_万维网 WWW

--7-6_其它应用

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。