chapter 3 传输层
传输层
基本功能:
在运行不同主机上应用进程之间提供逻辑通信
网络层: 主机间的逻辑通信(主机-主机)点-点
传输层: 进程间的逻辑通信(进程-进程)端-端(越到上层越细)
进程 (process):在主机上运行的程序。
进程通信:
同一主机中两个进程间的通信:由操作系统控制;
不同主机中进程间的通信:通过网络交换报文进行。
发送进程:产生报文,并向网络发送;
接收进程:接收报文,并回送报文。
套接字:同一台主机内应用层与传输层之间的接口。也叫应用程序和网络之间的应用程序接口API ,是在网络上建立网络应用程序的可编程接口。
主机名称或地址:网络中的哪一个主机,用IP地址标识(32位,全球惟一)。网络层
进程的标识:主机中的哪一个进程。因特网中,采用端口号标识(port number)。传输层
根据网络应用的实际需求,决定选择传输协议:TCP、UDP
TCP协议提供的服务:
功能完善、面向连接、可靠传输服务
支持可靠的面向连接服务
支持字节流传输服务
支持全双工服务
支持建立多个并发的TCP连接(服务器同时响应多个连接)
支持可靠传输服务(确认机制,拥塞控制)
TCP连接建立
步骤 1: 客户机向服务器发送 TCP SYN报文段
指定初始序号
没有数据
步骤 2: 服务器收到SYN报文段, 用SYN-ACK报文段回复
服务器为该连接分配缓冲区和变量
指定服务器初始序号
步骤 3: 客户机接收到 SYNACK, 用ACK报文段回复,可能包含数据
TCP连接释放
步骤 1: 客户机向服务器发送TCP FIN控制报文段
步骤 2: 服务器收到FIN,用ACK回答。关闭连接,发送FIN
步骤 3: 客户机收到FIN, 用ACK回答,进入超时等待,将对接收到的FIN进行确认
步骤 4: 服务器接收ACK,连接关闭
TCP的4个定时器:
重传定时器:retransmission timer,对报文确认的等待时间
持续定时器:persistent timer,对响应的等待时间
保持定时器:keep live timer,防止接收端故障
时间等待定时器:time wait timer,防止非正常释放连接
TCP滑动窗口与确认重传机制
回退方式 go back N:不管之后的报文段是否已正确接收,从该报文段的第1个字节序号开始,重发所有的报文段
TCP窗口与流量控制
流量控制过程
接收方从缓存中读取速度大于等于字节到达速度,接收方在每个确认中发出
一个非零窗口通告。
如果发送方发送速度比接收方读取速度快,将造成缓冲区被全部占用,之后
到达的字节因缓冲区溢出而丢弃。此时,接收方必须发出一个“零窗口”的
通告。告知当发送方停止发送(直到接收“非零窗口”通告为止)。
接收方需要接收能力给出一个合适的接收窗口,并将它写入TCP报头中,通
知发送方。
提高传输效率Nagle算法
当数据以每次1B的方式进入发送方时,第1次发送方只发送1B,其他的字节存入缓冲区。当第1个报文段被确认,再把缓冲区中数据放入第2个报文段中发送,这样一边等待确认,一边缓存待发送数据(可有效提高传输效率)。当缓存的数据字节数达到发送窗口的1/2(接近MSS),立即将它们作为一个报文段发送。
重点:ACK、syn、seq的计算!!!
实现拥塞控制最基本手段:TCP滑动窗口技术。
发送数据,既要考虑接收能力,又要避免网络发生拥塞
发送窗口计算:发送窗口 = Min(通知窗口,拥塞窗口 )
通知窗口rwnd:接收方允许接收的能力,来自接收方流量控制(将“通知窗口”
值放在TCP报头中,传送给发送端)。
拥塞窗口cwnd:
发送方根据网络拥塞情况得出的窗口值,来自发送方的流量控制。
未发生拥塞情况下,接收方“通知窗口”和“拥塞窗口”是一致的
拥塞控制方法:
慢开始慢开始阈值SST(slow start threshold):避免拥塞窗口增长过快引起网络拥塞。慢开始阶段,若出现超时,发送方将SST值设置为cwnd/2
拥塞避免:当cwnd>SST时,停止使用慢开始算法,转而使用拥塞避免算法,每增加一个往返就将cwnd值+1,拥塞窗口呈线性增加规律缓慢增长
快重传:接收方应及时向发送方连续3次发出对M2的“重复确认”,要求尽早重传未被确认的报文
快恢复
UDP协议提供的服务:
简单、高效传输服务
无连接、不可靠的传输
无提供拥塞控制机制
不提供最小延时保证
面向报文的传输层协议(保留原报文)只有校验和保证数据传输的可靠性!