一、运输层概述
小结
二、运输层端口号、复用与分用的概念
1. 端口号
2. 发送方的复用和接收方的分用
3. TCP/IP体系的应用层常用协议所使用的运输层熟知端口号
4.运输层端口号的作用
输入域名后,用户PC中的DNS进程向DNS服务器发送查询请求,封装在UDP中。UDP首部的源端口号在短暂端口号49151~65535中挑选一个未被占用的,用来表示DNS客户端进程。
现在,用户PC中的HTTP客户端进程可以向Web服务器发送HTTP请求报文了。TCP首部的源端口号在短暂端口号49151~65535中挑选一个未被占用的,用来表示HTTP客户端进程。
小结
三、UDP和TCP的对比
1. UDP可以随时通信,TCP要先建立连接
2. 单播、多播、广播
3. 对应用报文的处理
UDP不处理应用报文。
TCP只把应用报文看作无结构的字节流,可能进行拆分等。
4. 适用场景
5. 数据报首部格式
小结
四、TCP的流量控制
1. 进行流量控制的原因
2. TCP流量控制的实现举例
在建立TCP连接时,A得知B的接收窗口大小为400,于是A将自己的发送窗口设置为400。
第一次流量控制
第二次流量控制
第三次流量控制
防止死锁
说明
1. 主机A所发送的零窗口探测报文段到达主机B时,如果主机B此时的接收窗口仍然为0,那么主机B根本就无法接受该报文段,又怎么会针对该报文段给主机A发回确认呢?
Ans: 实际上TCP规定,即使接收窗口为0,也必须接受零窗口探测报文段、确认报文段以及携带有紧急数据的报文段。
2. 如果零窗口探测报文段丢失了,会出现怎样的问题呢?还能否打破死锁的局面吗?
Ans: 零窗口探测报文段也有重传计时器。当重传计时器超时后,零窗口探测报文段会被重传。
练习
1.
小结
五、TCP的拥塞控制
1. 基本概念
2. TCP的四种拥塞控制算法
假设如下条件:
2.1 慢开始
传输轮次是指,发送方给接收方发送数据报文段后,接收方给发送方发回相应的确认报文段。一个传输轮次所经历的时间即为RTT。RTT并非恒定值。使用传输轮次是为了强调:把拥塞窗口所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个报文段的确认。
在执行慢开始算法时,发送方每收到一个对新报文段待确认时,就把拥塞窗口的值加1。
2.2 拥塞避免
当拥塞窗口值增长到慢开始门限值时,就改为执行拥塞避免算法。即每个传输轮次结束后,拥塞窗口值只能线性加1。
说明
2.3 快重传
2.4 快恢复
3. TCP拥塞控制举例
练习
1.
小结
小结如图。
六、TCP超时重传时间的选择
1. RFC6298建议使用的RTO
关键在于RTT的测量,而RTT的测量比较复杂。
策略及存在的问题
2. RTO的计算过程
小结
七、TCP可靠传输的实现
1. TCP基于以字节为单位的滑动窗口来实现可靠传输
1.1 描述发送窗口和接受窗口的状态
2. 补充说明
练习
1.
2.
小结
八、TCP的运输连接管理
1. TCP的连接建立
1.1 三报文握手
SYN == 1的报文段不能携带数据,但是要消耗一个序号。
普通的TCP确认报文段可以携带数据,但是如果不携带数据,则不消耗序号。
对第三个报文并不多余的说明
练习
1.
小结
2. TCP的连接释放
2.1 四报文挥手
TCP规定终止位FIN等于1的报文段,即使不携带数据,也要消耗一个序号。
此时从TCP服务器进程到TCP客户端进程这个方向的连接并未关闭。TCP客户端仍然需要接受TCP服务器发来的数据,这个状态可能会持续一段时间。
可能服务器又给客户端发了一些数据,所以seq从v变成w。
ack为u+1是对一开始连接释放请求报文的重复确认。
对等待2MSL的说明
同时可以使得本次连接持续时间内锁产生的所有报文段都从网络中消失,可以使得下一个新的TCP连接中,不会出现旧的报文段。
2.2 保活计时器
小结
小结如图。
九、TCP报文段的首部格式
与IP数据报的首部格式类似。
1. 源端口和目的端口字段
【举例】
2. 序号、确认号和确认标志ACK字段
3. 数据偏移字段
该字段以4字节为单位。
4.保留字段
5.窗口字段
从接收窗口和拥塞窗口中取小者。
6.校验和字段
7.同步标志位SYN
8.终止标志位FIN
9.复位标志位RST
10.推送标志位PSH
11.紧急标志位URG和紧急指针字段
在接收方和发送方都不用在缓存中排队。
12.选项字段
13.填充字段
小结