传输层

基本功能:

在运行不同主机上应用进程之间提供逻辑通信

网络层: 主机间的逻辑通信(主机-主机)点-点

传输层: 进程间的逻辑通信(进程-进程)端-端(越到上层越细)

进程 (process):在主机上运行的程序。

进程通信:

同一主机中两个进程间的通信:由操作系统控制;

不同主机中进程间的通信:通过网络交换报文进行。

发送进程:产生报文,并向网络发送;

接收进程:接收报文,并回送报文。

套接字:同一台主机内应用层与传输层之间的接口。也叫应用程序和网络之间的应用程序接口API ,是在网络上建立网络应用程序的可编程接口

主机名称或地址:网络中的哪一个主机,用IP地址标识(32位,全球惟一)。网络层

进程的标识:主机中的哪一个进程。因特网中,采用端口号标识(port number)。传输层

根据网络应用的实际需求,决定选择传输协议:TCPUDP

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),立即将它们作为一个报文段发送。

重点:ACKsynseq的计算!!!

实现拥塞控制最基本手段:TCP滑动窗口技术。

发送数据,既要考虑接收能力,又要避免网络发生拥塞

发送窗口计算:发送窗口 = Min(通知窗口,拥塞窗口 )

通知窗口rwnd:接收方允许接收的能力,来自接收方流量控制(将“通知窗口”

值放在TCP报头中,传送给发送端)。

拥塞窗口cwnd:

​ 发送方根据网络拥塞情况得出的窗口值,来自发送方的流量控制。

​ 未发生拥塞情况下,接收方“通知窗口”和“拥塞窗口”是一致的

拥塞控制方法:

慢开始慢开始阈值SST(slow start threshold):避免拥塞窗口增长过快引起网络拥塞。慢开始阶段,若出现超时,发送方将SST值设置为cwnd/2

拥塞避免:当cwnd>SST时,停止使用慢开始算法,转而使用拥塞避免算法,每增加一个往返就将cwnd值+1,拥塞窗口呈线性增加规律缓慢增长

快重传:接收方应及时向发送方连续3次发出对M2的“重复确认”,要求尽早重传未被确认的报文

快恢复

UDP协议提供的服务:

​ 简单、高效传输服务

无连接、不可靠的传输

无提供拥塞控制机制

不提供最小延时保证

面向报文的传输层协议(保留原报文)只有校验保证数据传输的可靠性