传输层
目录
功能
- 传输层提供进程和进程之间的逻辑通信(网络层提供的是主机和主机之间的通信)
- 复用和分用 复用:应用层所有的应用进程都可以通过传输层再传输到网络层 分用:传输层从网络层收到数据后交付指明的应用进程
- 对收到的报文进行差错检测
TCP与UDP
TCP协议
首部格式 TCP连接建立 TCP连接释放
UDP协议
UDP是无连接的、不保证可靠交付、面向报文的(应用层给UDP多长的报文,UDP就照样发送,不进行拆分,故适合一次性传输少量数据的应用)、无拥塞控制,适合实时应用、首部开销少(8B) 首部格式
UDP校验 其中的伪首部在发送时是不需要的,只有在求校验和时才需要
端口号
端口号起标记主机中进程的作用,在网络中采用套接字Socket来标识端点,Socket由IP+端口号组成,于是唯一标识了网络中的一个主机和它上面的一个进程
TCP可靠传输
可靠传输指的是保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的;网络层只提供尽最大努力交付,但不保证可靠传输
TCP实现可靠传输的机制
- 校验 与UDP校验相同,需要伪首部
- 序号 TCP为字节流中的每一个字节分配一个序号,TCP报文段有多个字节组成,TCP首部中的序号字段就指的是一个报文段第一个字节的序号
- 确认 接收方接收到报文段后需要发送确认报文段(不是每个报文段都需要确认,而是采用累计确认的方法),报文段首部的确认号为接收方期待收到的下一个字节序号
- 重传 <br若发送方在规定的时间内没有收到确认就要重传已发送的报文段,即超时重传 超时时间采用自适应算法得出的时间RTTs(加权平均往返时间)。 有一种方法可以在超时时间发生之前就可以知道发送方有没有丢失这个报文段,然后尽快重传:冗余ACK(冗余确认),每当比期望序号大的失序报文段到达时,发送一个冗余ACK,当发送方收到3个对一个特定序号的冗余ACK时,发送方则重传此序号的报文段
TCP流量控制
流量控制:让发送方慢点,让接收方来得及接收 TCP利用滑动窗口机制实现流量控制 TCP采用滑动窗口进行流量控制的例子
TCP拥塞控制
首先同流量控制区分一下,流量控制是两个主机之间点对点的作用,而拥塞控制是多个设备之间的全局性的作用。另外拥塞控制是由于网络拥塞,而导致接受方迟迟接收不到数据,流量控制则是由于发送方发送数据过快,接收方来不及接收 拥塞控制的四种算法:慢开始、拥塞避免、快重传、快恢复 为方便讨论,首先作以下假定
慢开始和拥塞避免
慢开始:开始传输时的拥塞窗口为1 拥塞避免:遇到网络拥塞则重新将拥塞窗口降为1,设定新的门限值为原窗口的一半
快重传和快恢复
快重传:发送方收到三个重复的确认后执行快重传算法,而不用等到超时时间后再重传 快恢复:拥塞窗口大小降到新的门限值(原窗口大小的一半),而不用像慢开始一样降到1。