Download presentation
Presentation is loading. Please wait.
1
Chapter 7 传输层
2
主要功能 相关协议 向上层应用提供不同类型的传输服务,例如可靠的或者不可靠的
端到端(end-to-end),在两个主机端点上运行,而不在中间路由器运行 两种类型的传输层服务 面向连接:在数据传输开始之前通过连接建立过程在两个端点之间协商参数(流量控制参数、最大传输单元等) 无连接:没有连接建立过程,直接发送数据 相关协议 UDP:User Datagram Protocol TCP:Transmission Control Protocol 应用层 传输层 网络层 数据链路层 物理层 链路分为点对点链路和共享链路,共享链路也成为广播式链路,在这种链路中,关键问题是:寻址和访问控制,特别是后者.对于这种广播式链路,通常只有一条信道可供使用。广播信道也称为多路访问信道或者随机访问信道。早期WAN使用点对点链路,因此多路访问信道与LAN、MAN紧密相关,特别是LAN。本章内容将主要围绕着LAN及其媒介访问控制子层的内容展开。
3
Chapter 7 传输层 7.1传输层服务 7.2传输层寻址 7.3建立连接 7.4Internet中的传输层协议 用户数据报协议UDP
传输控制协议TCP 7.5Berkeley Socket
4
Chapter 7 传输层 7.1传输层服务 7.2传输层寻址 7.3建立连接 7.4Internet中的传输层协议 用户数据报协议UDP
传输控制协议TCP 7.5Berkeley Socket
5
传输层所处的地位 传输层 主机 A 主机 B 路由器 1 路由器 2 AP1 AP3 LAN1 WAN LAN2 AP2 AP4
用户可以根据应用的需求选择不同类型的传输服务,而不用考虑具体的网络 主机 A 主机 B 路由器 1 路由器 2 AP1 AP3 LAN1 WAN LAN2 AP2 AP4 IP 协议的作用范围 传输层协议 TCP 和 UDP 的作用范围
6
logical end-end transport
传输层服务 application transport network data link physical logical end-end transport 传输层是整个协议层次结构的核心,它为高层屏蔽任何与网络有关的操作,传输层是端到端协议,与使用的网络无关 传输层是整个协议层次结构的核心,它为高层屏蔽任何与网络有关的操作,传输层是端到端协议,与使用的网络无关
7
为应用进程提供了逻辑通信信道 应用进程 应用进程 AP1 AP4 5 4 3 2 1 AP2 AP3 5 4 3 2 1 端口 端口
传输层提供应用进程间的逻辑通信 网络层 主机上的每个应用进程与不同的传输层端口相关联,因此,传输层提供了运行在不同主机上的应用进程之间的逻辑通信管道
8
传输层导入原因 实现用户对数据传输的控制 屏蔽下层网络的异质性 实现运行在不同主机上的进程之间的通信
网络层运行在用户终端和路由器上,而传输层运行在用户主机上 用户可以根据应用需求选择不同的传输层服务 屏蔽下层网络的异质性 对上层应用提供了一个标准的原语集合 实现运行在不同主机上的进程之间的通信 每个应用进程都至少与一个传输层地址相关联 总结
9
首先讨论的是OSI参考模型中的传输层的一些概念和机制 ,然后具体介绍Internet中的传输层协议
10
这里讨论的是OSI参考模型中通用的传输层!而不是具体的Internet的传输层
TSAP: Transport Service Access Point, 对应着传输层地址 NSAP: Network Service Access Point, 对应着网络层地址 TPDU: Transport Protocol Data Unit 向上层提供的服务 传输层服务有两类:面向连接的传输服务和无连接的传输服务 TSAP NSAP 这里讨论的是OSI参考模型中通用的传输层!而不是具体的Internet的传输层
11
Chapter 7 传输层 7.1传输层服务 7.2传输层寻址 7.3建立连接 7.4Internet中的传输层协议 用户数据报协议UDP
传输控制协议TCP 7.5Berkeley Socket
12
7.2传输层寻址 由于传输层为上层提供复用机制,因此,当一个传输层进程希望与另一个进程建立连接时,必须指定对方传输层所对应的TSAP地址
Host2的时间服务进程运行在122号TSAP上,等待服务请求 Host1应用进程发出连接请求,并指明源TSAP=6,目的TSAP=122 网络层实体向Host2建立连接(对于非连接网络,仅向Host2发送分组) 问题:如何知道对方的进程关联的TSAP?
13
TSAP的获取方法 服务进程固定在特定的TSAP上
只适用于少数关键的服务 采用名字服务器,当新的服务被创建时,必须向名字服务器注册TSAP,用户在需要相应的服务前先查找名字服务器 周知端口(知名端口) 如果服务很少被使用,为了节约资源,每个系统都有一个进程服务器,它监听这些服务的TSAP,用户首先与进程服务器通信,通过它启动目标服务进程
14
主机进程标识 网络服务访问点(NSAP)和传输服务访问点(TSAP)即{NSAP,TSAP}标识了一个主机上的进程,需要注意的是NSAP是ISO定义的概念 在TCP/IP中,NSAP与IP地址对应,TSAP对应着端口号(port),再加上所采用的协议(TCP/UDP),即 {源/目的IP地址,源/目的端口号,协议类型}五元组标识一个通信会话(流)
15
Chapter 7 传输层 7.1传输层服务 7.2传输层寻址 7.3建立连接 7.4Internet中的传输层协议 用户数据报协议UDP
传输控制协议TCP 7.5Berkeley Socket
16
7.3建立连接 一般来说,一个连接从连接请求的发出到接收到连接证实消息就可以建立一个连接,但当网络丢失、延迟,再重传重复分组时,一个连接也会被建立多次 三步握手 主机1选择一个序号x,并向主机2发送包含该序号的连接请求TPDU 主机2应答接受连接TPDU,TPDU中包含确认号x和序列号y 主机1在其发送的第一个数据中采用序列号为x,并确认主机2的序列号y
17
图b为重复的CR突然出现;图c为重复的CR和重复的ACK
三步握手中的延迟重复分组 CR-连接请求;ACK-接受连接 图b为重复的CR突然出现;图c为重复的CR和重复的ACK
18
释放连接 非对称释放 连接的任何一方都可以断开整个连接 对称释放 把连接看作是由两个独立的单向连接,并要求单独释放每一个单向连接
19
非对称释放 CR-连接请求 ACK-接受连接 DR-连接断开请求
当连接建立以后,主机1发送一个TPDU,它正确地到达了主机2,然后,主机1又发送一个TPDU,但是由于主机2在第二个TPDU到达之前就已经发送了DISCONNECT TPDU,因此,该连接虽然被释放,但是数据却丢失了
20
对称释放 DR-连接断开请求ACK-接受断开 释放连接再次用到三步握手,一方发出释放连接请求后不立即拆除连接,而要等待对方确认;对方收到请求后,发送确认报文,并拆除连接,发起方收到确认后最后拆除连接
21
对称释放中的分组丢失 DR-连接断开请求ACK-接受断开 final ACK lost
22
对称释放中的分组丢失 DR-连接断开请求ACK-接受断开 Response lost
23
Response and subsequent DR lost
对称释放中的分组丢失 DR-连接断开请求ACK-接受断开 Response and subsequent DR lost
24
发送方的窗口大小决定了发送方一次能够发送的数据量
流量控制和拥塞控制 面向连接的传输服务应该提供流量控制和拥塞控制功能,核心是滑动窗口算法 流量控制:根据接收方的缓存容量来动态地调整发送方的窗口大小,避免一个快速的发送方淹没一个慢速的接收方 拥塞控制:根据网络的承载容量来动态地调整发送方的窗口大小,避免发送方同一时刻有太多未被确认接收的TPDU 发送方的窗口大小决定了发送方一次能够发送的数据量
25
Chapter 7 传输层 7.1传输层服务 7.2传输层寻址 7.3建立连接 7.4Internet中的传输层协议 用户数据报协议UDP
传输控制协议TCP 7.5Berkeley Socket
26
7.4 Internet中的传输层协议 Internet中定义了两个不同的传输层协议
用户数据报协议(UDP:User Datagram Protocol) 传输控制协议(TCP:Transmission Control Protocol) 两个对等传输实体在通信时传送的数据单位称为传输协议数据单元(TPDU: Transport Protocol Data Unit) 在UDP中,TPDU称为数据报(datagram) TCP中,TPDU称为TCP数据段(segment)
27
UDP与TCP UDP TCP 提供无连接的服务,在传送数据之前不需要先建立连接,对方的传输层在收到 UDP数据报后,不需要给出任何确认
虽然 UDP 不提供可靠投递,但在某些情况下 UDP 是一种最简单有效的工作方式。例如视频点播等实时应用常使用UDP TCP 提供可靠的,面向连接的服务 由于 TCP 要提供可靠的、面向连接的传输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的头标增加了更多的域,还要占用许多的处理资源
28
端口 端口就是传输服务访问点(TSAP)。
端口的作用就是让各种应用进程都能将其数据通过端口向下交付给传输层,以及让传输层知道应当将其数据段或者报文中的数据向上通过端口交付给应用层相应的进程 从这个意义上讲,端口是用来标识应用进程
29
基于端口的进程间通信 发送方 接收方 应用进程 应用进程 应 用 层 端口 端口 传 输 层
TCP 复用 UDP 复用 TCP 解复用 UDP 解复用 UDP 用户数据报 UDP 用户数据报 TCP 数据段 TCP 数据段 网 络 层 IP IP IP 分组 IP 分组
30
端口号 端口用一个 16 bit 端口号进行标志,共64K个端口号对一台主机来说是足够的
端口号只具有本地意义,即端口号只是为了标识本机上的各个应用进程。在Internet中不同主机的相同端口号是没有联系的 端口号分为两类:一类是知名端口,其数值一般为 ,一般分配给一些常用的服务进程。另一类则是一般端口,用来随时分配给请求通信的客户进程
31
Internet寻址模型 主机 路由器 主机 端口:在主机上标识应用进程,由程序或者系统指定
(与端口号关联) 端口号(16bits) IP地址 (32或者128bits) 链路地址 (MAC地址为48bits) 主机 路由器 主机 端口:在主机上标识应用进程,由程序或者系统指定 IP地址:标识Internet上的某台主机,由程序或者系统指定 发送数据包括发送方的地址或者端口(源地址和源端口),接收方地址或者端口(目的地址和目的端口),一般来说跨越网络传输保持不变 链路地址(MAC地址):标识共享链路上的某个接口设备 帧的源和目的MAC地址随链路变化
32
7.4.1 用户数据报协议-UDP UDP:User datagram protocol 传输的数据单元称为数据报 无连接的传输服务
RFC 768 传输的数据单元称为数据报 无连接的传输服务 不可靠(Unreliable) 效率高
33
UDP头标 源端口 目的端口 长 度 检验和 UDP 用户数据报 UDP头标 数 据 发送在前 IP头标 数 据 IP 数据报
34
UDP头标 字节 4 4 1 1 2 源 IP 地址 目的 IP 地址 17 UDP长度 字节 12 2 2 2 2 伪头标 源端口
协议 目的IP地址 源IP地址 IP伪头标 UDP头标 字节 4 4 1 1 2 源 IP 地址 目的 IP 地址 17 UDP长度 字节 12 2 2 2 2 伪头标 源端口 目的端口 长 度 检验和 在UDP数据段前面加上IP伪头标 当数据域的长度为奇数字节时,则数据域被填充一个额外的0字节 将校验和域的值置为0 (伪头标+UDP头标+数据+可能的填充)以16比特为单位反码求和,再取反 当结果为0时,将校验和置为全1。除此之外的情况,将结果原封不动地作为校验和
35
使用UDP协议传输消息
36
问题:为什么要在Internet中引入UDP?
具有简单高效的特点 客户-服务器模式应用 DNS:Domain Name System 话音、视频等实时多媒体应用 问题:为什么要在Internet中引入UDP?
37
7.4.2 传输控制协议-TCP TCP:Transmission Control Protocol TCP具有以下特性
RFC 793 TCP具有以下特性 字节流传输(Stream Transfer) 滑动窗口机制:发送方每次发送的数据量由发送窗口大小决定,而不是以应用层递交的消息为单位;接收方每次向上层递交的数据量由落在接收窗口中并且有序的数据决定 可靠(Reliability) 发送方:超时重传 接收方:发送确认,缓存处理乱序 全双工(Full Duplex) 两个方向的TCP数据流 流量控制(Flow Control) 拥塞控制(Congestion Control) 传输的数据单元称为数据段(Segment)
38
TCP头标
39
Acknowledgement Number
TCP头标 32 bits 源端口/目的端口(Source/ Destination Port ) 16位的端口号 序列号(Sequence Number ) 标识本数据段中第一个字节在数据流中的位置 确认号(Acknowledgment Number) 标识本数据段的接收方下一个期待接收的字节编号 头标长度(Header Length) 4bits 指明数据段的头标长度,单位是32位,随选项长度而定 保留(Reserved):6bits,置0 Source Port Destination Port Sequence Number Acknowledgement Number Header Length Reserved
40
TCP头标 32 bits URG ACK PSH RST SYN FIN 指示紧急指针有效. 指示确认段有效
Push 操作,告诉接收主机立即将数据递交给应用进程 RST 重新连接. SYN 同步序列号,用于建立连接 FIN 发送方已发送完数据,用于释放连接 URG ACK PSH RST SYN FIN
41
Options (0 or more 32-bit words)
TCP头标 32 bits 窗口大小(Window size) 用于流量和拥塞控制,窗口指示在对方确认了的字节之后还可发送的字节数 检验和(Checksum) 用来检验TCP头标和数据的完整性,检验时,要加上伪IP头标 紧急指针(Urgent Pointer) 指向紧急数据的最后一个字节,该指针仅在URG置1时有效 选项(Options ) 最大数据段尺寸选项 窗口尺度选项 Window size Checksum Urgent Pointer Options (0 or more 32-bit words)
42
TCP连接 TCP 使用“连接”(而不仅仅是“端口”)作为最基本的抽象,同时将 TCP 连接的端点称为套接口(socket),或套接字、插口。 套接口和端口、IP 地址的关系是: 端口号 1500 IP 地址 , 套接口(socket) 一条TCP连接是由发送方套接口和接收方套接口加上协议类型来唯一标识的,即TCP连接用五元组<源端IP地址、源端口号、目的IP地址、目的端口号、协议>来唯一标识。 例如:< ,1500, ,25, TCP>
43
TCP在不可靠的IP上为应用进程提供可靠的数据传输服务
连接建立:在发送主机和接收主机之间协商初始序列号等信息 连接管理:使用滑动窗口算法对数据传输进行管理,包括确认重传、流量控制和拥塞控制等 连接释放:数据传输结束后释放连接,发送主机和接收主机释放为该连接分配的资源
44
TCP采用三步握手的方法建立连接 客户(Host 1)请求连接TCP数据段:SYN标志置1,ACK标志置0,选择初始序列号SEQ=x
服务器(Host 2)响应连接确认TCP数据段:SYN标志置1,ACK标志置1,选择初始序列号SEQ=y,并且对x进行确认,设置ACK=x+1 客户(Host 1)响应连接确认TCP数据段: ACK标志置1,SEQ=x+1,对y进行确认,设置ACK=y+1 通过三步握手,host1和host2之间完成初始序列号、窗口大小、最大数据段尺寸等参数的协商,并且分配连接所需要的资源
45
TCP请求连接碰撞 使用三步握手,即使两台主机同时想在相同的套接口之间建立一个TCP连接而发生冲突,也可以正常工作。但此时只有一个TCP连接建立起来。因此TCP连接由五元组唯一标识
46
TCP连接建立定时器 Connection Establishment Timer
当SYN数据段发出时,连接建立定时器就开始计时,如果在一定时间(例如65秒,可设置)内未收到响应,则连接建立失败。
47
TCP采用对称释放法释放连接 FIN ACK of FIN Host1 Host2 Time 主机发送FIN数据段后,就不再向对方发送数据
通信双方必须都向对方发送FIN=1的TCP段并得到对方的应答,连接才能被释放,有四个阶段 FIN ACK of FIN Host1 Host2 Time 可以将第一个ACK数据段和第二个FIN数据段合并,从而变为三步握手 为防止半连接,必须使用定时器计时,对FIN数据段的应答在两个最大分组生命期内未到达,就释放连接。对方也会超时释放 主机发送FIN数据段后,就不再向对方发送数据
48
TCP 的 有 限 状 态 机 起点 CLOSED 被动打开 主动打开 发送 SYN 关闭 收到 SYN 发送 SYN, ACK
LISTEN TCP 的 有 限 状 态 机 被动打开 收到 RST 发送 SYN 关闭 或超时 收到 SYN,发送 SYN, ACK SYN_RCVD SYN_SENT 同时打开 主动打开 收到 ACK 收到 SYN, ACK 发送 ACK 数据传送 阶段 收到 FIN 发送 ACK 被动关闭 关闭 发送 FIN ESTABLISHED CLOSE_WAIT 关闭 发送 FIN 主动关闭 关闭 发送 FIN 收到 FIN 发送 ACK 同时关闭 FIN_WAIT_1 CLOSING 收到 ACK 收到 FIN, ACK 发送 ACK LAST_ACK 收到 ACK 收到 ACK 收到 FIN 发送 ACK FIN_WAIT_2 TIME_WAIT 定时经过两倍报文段寿命后
49
TCP释放连接相关定时器 闲置定时器(Quiet Timer):当TCP连接断开后,为防止该连接上的数据段还在网络上,并被后续打开的相同五元组的连接接收,要设置闲置定时器以防止刚刚断开连接的端口号被立即重新使用 保持存活定时器(Keep-Alive Timer):当一个连接长时间闲置时,保持存活定时器会超时而使一方去检测另一方是否仍然存在,如果它未得到响应,便终止该连接
50
TCP 滑动窗口 Sliding Window
可靠有序的传输 使用发送缓存和接收缓存,只有被确认,窗口才滑动 流量控制 接收方可根据可用剩余缓冲区来指定窗口大小,当缓冲区满,接收方可以发送一个窗口大小为0的数据段,指示发送方停止发送数据。但此时仍可以发送紧急数据 (如用户紧急停止进程)和一字节的通知对方更新窗口大小的数据段
51
TCP滑动窗口举例 发送端要发送 900 字节长的数据,划分为 9 个 100 字节长的数据段(MSS),而发送窗口确定为 500 字节
发送端只要收到了对方的确认,发送窗口就可前移 发送 TCP 要维护一个指针。每发送一个数据段,指针就向前移动一个数据段的距离
52
发送端已发送了 400 字节的数据,但只收到对前 200 字节数据的确认,同时窗口大小不变
现在发送端还可发送 300 字节
53
发送端收到了对方对前 400 字节数据的确认,但对方通知发送端必须把窗口减小到 400 字节。
现在发送端最多还可发送 400 字节的数据。
54
举例:利用可变窗口大小进行流量控制。设主机A向主机B发送数据,双方确定的窗口值是400字节。再设每一个数据段的长度是100字节,序号的初始值是1。
我们可以注意到,主机B进行了三次流量控制,第一将窗口减小为300字节,第二次又较少为200字节,最后减少到0,既不允许对方发送数据。直到主机B重新发出一个新的窗口值为止。 主机 A 主机 B SEQ = 1 A 还能发送 300 字节 SEQ = 101 A 还能发送 200 字节 SEQ = 201 丢失! ACK = 201, WIN = 300 允许 A 再发送 300 字节(序号 201 至 500) SEQ = 301 A 还能发送 100 字节(序号 401 至 500) SEQ = 401 A 不能再发送数据(已达到发送窗口最大值) SEQ = 201 A 超时重传(序号201 至 300) ACK = 501, WIN = 200 允许 A 再发送 200 字节(序号 501 至 700) SEQ = 501 A 还能发送 100 字节(序号 601 至 700) ACK = 601, WIN = 0 不允许 A 再发送(到序号 600 的数据都已收到)
55
接收方缓存区管理
56
傻瓜窗口症状 Silly Window Syndrome
以下情况被称为傻瓜窗口症状: 当发送方的TCP每次接收到来自应用的一字节的数据后就发送 当接收方的TCP缓冲区已满,接收方会向发送方发送窗口大小为0的数据,而此时接收方的应用进程以交互方式每次只读取一个字节,于是接收方又发送窗口大小为一个字节的更新数据段,发送方应邀发送一个字节的数据,于是窗口又满了,循环往复… 解决方法: Nagle算法:禁止发送方发送太小的数据段,而是等到有一定数量的数据后再发送 Clark算法:禁止接收方发送1个字节大小的窗口更新信息,而是要等到有了一定数量的可用空间后再通知对方
57
TCP 重传定时器 TCP在发送数据的同时,启动一个重传定时器,如果在超时前该数据段被确认,就关闭该定时器,否则,一旦超时则重传该数据段。
Segment 2(seq. 1500) Timeout for Segment 2 Retransmission TCP在发送数据的同时,启动一个重传定时器,如果在超时前该数据段被确认,就关闭该定时器,否则,一旦超时则重传该数据段。
58
问题:超时间隔( timeout )应设为多长呢?
解决的方法是对网络的性能不断测试,采用一种不断调整超时时间间隔的动态算法 很显然,超时值得设置与网络当前的业务量相关,而网络业务量是不断变化的,因此,解决的方法是对网络的性能不断测试,采用一种不断调整超时时间间隔的动态算法
59
Picking a Timeout Value
对每条连接,TCP均保存变量RTT,用于存放到目的端的往返时间的最接近估计值。 当一个数据发送时,同时启动定时器,如果时间超时就重传数据段,如果在超时之前得到确认,TCP就测量所花费的时间,记为M,并根据下面公式修正RTT RTT=RTT+(1- )M 是修正因子,一般为7/8 确定当前的超时间隔Timeout=βRTT 1988年Jacobson提出了另一个公式 偏差变量:D= D+(1- )|RTT-M| 这里的可能不同前面的 确定当前的超时间隔Timeout=RTT+4D Karn算法:对已经重传的数据段无需修改RTT,而是在每次传输失败时将超时时间加倍,直到该数据段被成功传输
60
ACK延时定时器 Delayed ACK Timer
当TCP实体收到数据段时它必须返回确认,但并不需要立即回复,它可以在(200ms?)内发送ACK数据段,如果在这段时间内它恰好有数据段要发送,它就可以在数据段内包含确认信息,因此需要ACK延时定时器
61
持续定时器 The Persistence Timer
持续定时器管理的是一种较为少见的事件,即下面要介绍的死锁情况:为了让发送方暂停发送数据,接收方发送一个接收窗口为0的确认。后来,接收方又发送了一个更新了窗口大小的数据段,但该数据段丢失,于是,双方都处于等待。 为了防止上述事情发生,发送方在收到接收方发来一个窗口为0的数据段时,就启动持续定时器,等该定时器超时还没有收到对方修改窗口大小的数据段的话,发送方就发一个1字节的探测数据段,对该探测数据段的响应应包含了窗口大小,若仍为0,则定时器清0,否则则可以发送数据
62
TCP流量控制与拥塞控制 发送端的主机在确定发送数据段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞
63
TCP拥塞控制 Congestion Control
什么是网络拥塞 当大量分组进入网络,超出了网络的处理能力时,就会引起网络局部或整体性能下降,这种现象称为拥塞 拥塞表现为路由器的队列溢出,分组丢失、响应速度变慢 拥塞会导致什么后果 拥塞使许多分组重传,降低有效吞吐量 可能导致更多的业务量,直至崩溃 拥塞的原因 路由器的处理速度、存储空间、带宽不匹配 网络负载的不均衡 TCP如何判断网络拥塞?
64
接收端窗口和拥塞窗口 每一个 TCP 连接需要维护两个窗口
接收端窗口 rwnd (receiver window) 又称为通知窗口(advertised window) 拥塞窗口 cwnd (congestion window) 接收端窗口 rwnd是接收端根据其目前的可用接收缓存大小所许诺的最新的窗口值,是来自接收端的流量控制。接收端将此窗口值放在 TCP 数据段头标中的窗口大小域传送给发送端。 拥塞窗口 cwnd 是发送端根据自己估计的网络拥塞程度而设置的窗口值
65
发送窗口 发送窗口的上限值: 发送窗口的上限值=Min[rwnd, cwnd]
当 cwnd < rwnd 时,则是网络的拥塞限制发送窗口的最大值。
66
TCP拥塞控制算法 慢启动(slow-start) 拥塞避免(congestion avoidance)
67
慢启动算法 在连接建立初期,拥塞窗口初始化为该连接最大数据段的长度
发送端发送一个最大数据段,得到确认后,其拥塞窗口大小加倍,依次类推,直到数据段传输超时或已达到接收端窗口大小(兼顾拥塞和流量控制)
68
for (each segment ACKed) cwnd += cwnd until (loss event OR
Host A Host B Slowstart algorithm one segment RTT initialize: cwnd= 1 for (each segment ACKed) cwnd += cwnd until (loss event OR cwnd > threshold) two segments four segments exponential increase in window size (not so slow!) loss event: timeout and/or three duplicate ACKs time
69
TCP拥塞控制算法过程 当一个连接初始化时,将拥塞窗口置为一个最大数据段长度,并设置慢启动阈值ssthresh
发送端的发送窗口不能超过拥塞窗口和接收窗口中的最小值,并假定接收端不进行流量控制。 发送端若收到了对所有发出的数据段的确认,就在下一次发送时将拥塞窗口加倍。可见拥塞窗口从1开始按指数规律增长 拥塞窗口增长到ssthresh时,就每次将拥塞窗口加1,使拥塞窗口按线性规律增长 如果出现超时,就将当时拥塞窗口值减半,作为新的ssthresh,同时将拥塞窗口变为1 重复上述过程 慢启动 拥塞避免
70
TCP拥塞控制算法实例 慢启动 1
71
Chapter 7 传输层 7.1传输层服务 7.2传输层寻址 7.3建立连接 7.4Internet中的传输层协议 用户数据报协议UDP
传输控制协议TCP 7.5Berkeley Socket
72
7.5 Berkeley Socket Socket的产生和发展 Socket在各种平台下的发展
最初在70年代由加州大学Berkeley分校开发,其目的是为BSD(Berkeley Software Distribution) UNIX 4.1版操作系统提供网络通信接口。 Socket在各种平台下的发展 随着Berkeley Sockets的广泛应用,九十年代初,Sun、MS等公司共同制定了适应dos和win平台的windows sockets的规范(WinSock) Sun Microsystems为Java也制定了网络通信的API Linux下的socket继承了BSD sockets的风格,但有所改动
73
Socket原语 TCP UDP IP Application Sockets API Transport TCP套接字原语 My
含义 SOCKET 创建一个新的通信端点 BIND 将一个本地地址关联到一个套接字上 LISTEN 宣布愿意接收连接,给出队列大小 ACCEPT 阻塞调用方,直到有人企图连接上来 CONNECT 主动尝试建立一个连接 SEND 在指定的连接上发送数据 RECV 从指定的连接上接收数据 CLOSE 释放指定的连接 Application Transport Network (Internet) Data-link (Host-to-Network) Sockets API TCP UDP My Program IP TCP套接字原语
74
Socket到Socket的通信 Client Process socket Server Process socket ports TCP/UDP ports TCP/UDP IP IP 在TCP/IP网络应用中,两个进程间的Socket通信的主要采用客户/服务器(Client/Server,C/S)模式,即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务
75
客户需要知道服务器使用的IP地址、端口等信息
从上面所描述过程可知: 客户与服务器进程的作用是非对称的,因此编码不同。 服务进程一般是先于客户请求而启动的。只要系统运行,该服务进程一直存在,直到正常或强迫终止。 客户需要知道服务器使用的IP地址、端口等信息
76
TCP Client-Server交互流程
TCP Server socket() bind() TCP Client listen() socket() accept() 建立连接 connect() 请求数据 recv() send() 响应数据 send() recv() 文件结束标识 recv() closesocket() closesocket()
77
UDP Client-Server交互流程
78
习题 6、14、20、23、29、33
Similar presentations