TCPIP工作原理教案第07章传输控制协议(TCP).
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.
TCP连接 数据流传输 可靠传输
3
TCP连接
TCP协议与UDP一个重要的不同之处是TCP 是面向连接的而UDP是非连接的 TCP传输数据前必须先在发送者和接受者之 间通过握手建立一个连接
4
TCP常用端口号
5
数据流传输
TCP协议只是把应用程序要传输的数据当成 无结构的可以分成字节的比特流 TCP协议“不知道”所传输的数据的意义
第7章 传输控制协议(TCP)
1
本章学习目标
了解面向连接的概念 了解TCP报文端的结构及其首部各个字段的意 义 理解TCP连接的建立和关闭的过程 理解TCP保证可靠性的机制:顺序号、超时与 重传和确认 了解TCP的流量控制方法 了解TCP的拥塞控制策略
2
7.1 TCP协议
1. 2.
当在网络中传输的数据过多而超过网络的容 量时,数据传输的延时将大大增加,这就导 致拥塞的发生。拥塞发生后,一方面数据的 延迟严重,另外路由器由于超载而丢弃数据, 这些都会使得发送端重传更多的报文,更多 的报文进入到网络中又加剧网络拥塞的状况。 如果这种状况持续下去,将发生所谓拥塞崩 溃的现象
26
防止发生拥塞崩溃
主机 A 发送 SYN SEQ=x 主机 B 接收到 SYN 信号 发送 SYN,SEQ=y ACK=x+1
接收到 SYN、ACK 连接建立 发送 ACK=y+1 SEQ=x+1
接收到 ACK 连接建立
16
TCP连接的关闭
主机 A 关闭连接、发送 FIN、SEQ=z 接收到 ACK 不发送报文 接收到 FIN 发送 FIN、ACK SEQ=y+1、ACK=z+1 主机 B
紧急指针(16比特):当URG位置位时 此字段才有效。有效时标识了此报文段 中紧急数据最后一个字节相对于此保文 段数据区第一个字节的偏移量。 可选项:此字段位数是可变的,没用到 的位用0填充使其长度为32比特。
14
7.3 TCP的连接管理
◆ 连接的建立
◆ 连接的关闭
15
wenku.baidu.com
TCP连接的建立--三次握手过程
11
报文段头部(续)
窗口(16比特):指出接收方可以接收 的最大字节数,可以认为是接收端缓冲 区的大小。 校验和(16比特):用于检测数据是否 在传输过程中受到破坏。
12
校验和计算所用到伪头部格式
0 8 16 源 IP 地址 目的 IP 地址 0 协议标识符 TCP 长度 31
13
报文段头部(续)
TCP采用了限制发送端发送数据的多少 和速率的方法
27
7.8 溢出时间和重传
为了确保可靠性,TCP要求接收端对收到的 数据进行确认。TCP为每个发送报文段安排 了一个定时器并设定一个溢出时间,如果在 定时器溢出时还未收到确认信号,发送端则 重新发送数据
28
溢出时间合理---自适应重传算法
RTT ( Old _ RTT ) (1 ) * New _ round _ trip _ sample
应用程序 读取一个 字节
通 告 窗口 为 一个字节
发送方发送一 个字节
24
避免糊涂窗口
在发送端,防止逐个字节地发送数据,而是 收集了一定数量的数据后再打包发送 ---Nagle 算法 接收端糊涂窗口的一种解决方法是延迟发送 确认 另一种解决方法称为Clark方法
25
7.7 拥塞控制(Congestion control)
10
报文段头部(续)
控制位(6比特) URG:置位时表示紧急指针字段有效。 ACK:置位时表示确认号字段有效。 PSH:置位时表示本报文段要求PUSH操作,此时 TCP会立即发送缓冲区中的数据,而不必等待缓冲区 填满;在接收端,TCP立即把接收到的数据送给应用 程序。 RST:置位时表示连接复位,用于在连接发生异常时 复位连接。 SYN:置位时表示与对方同步顺序号。 FIN:置位时表示发送方没有数据发送了,用于关闭 连接。
LISTEN
发送SYN 关闭 超时
SYN_RCVD
19
顺序号示例
20
接收端对接收数据的确认
21
7.5 滑动窗口机制和流控制 (Flow control)
为了充分利用网络的带宽,提高网络的 运行效率,TCP采用滑动窗口机制控制 数据的发送
22
滑动窗口示例
23
7.6 糊涂窗口症状(Silly window syndrome)
接收端缓 冲区饱和
Time_ out RTT
29
7.9 TCP连接的状态转换图
TCP连接主要经过连接的建立、数据的传输 和连接的关闭三个阶段,在各个不同的阶段, TCP连接可能处于不同的状态 状态转换图说明各个状态的转换关系
30
开始
CLOSED
超时 发送RST 收到SYN 发SYN、ACK RST 收到SYN,发SYN、ACK 被动打开 关闭 主动打开 发送SYN
6
可靠传输
TCP是可靠的传输层协议,它使用多种 技术来保证数据的可靠交付
7
7.2 TCP报文段结构
0 4 源端口 顺序号 确认号 U A P R S F 头部长度 保留 R C S S Y I G K H T N N 校验和 可选项 数据
8
10
16 目的端口
31
窗口
紧急指针 填充
报文段头部
源端口(16比特):报文段发送者端口号 目的端口(16比特):报文段接收者端口号 顺序号(32比特):TCP为每个要传送的字 节分配一个正整数,称为顺序号。
9
报文段头部(续)
确认号(32比特):当控制位ACK置位时, 此域包含的顺序号为接收端希望接收的下一 个字节的顺序号。 首部长度(4比特):以32比特为单位的报文 段首部的长度,即指出数据区在报文段中的 位置。 保留位(6比特):保留未用,全置为0。
接收到 FIN、SEQ=y ACK=z+1
发送 ACK ACK=y+2 SEQ=z+1
接收到 ACK
17
7.4 顺序号和确认
顺序号(Sequence number)是一个正整数。 当TCP要发送数据时,它随机选择一个初始 顺序号,顺序号依次递加,按顺序分配给后 续的每个字节的数据
18
顺序号
顺序号的最大值为(232 1)。当数据过 大,顺序号超过此数,则顺序号 232 对取 模