计算机网络
##第五章 传输层
author:slightwjq
2023年1月9日
5.1 传输层提供的服务
传输层是面向通信部分的最高层,也是面向用户功能的最底层。传输层功能如下:传输层提供应用进程之间的逻辑通信;复用和分用;对收到的报文进行差错检测;提供两种不同的传输协议。
传输层的寻址与端口
端口能让应用层的各种进程将其数据通过端口向下交付给传输层。端口是传输层的服务访问点,端口标识的是主机中的应用进程。
端口号:应用进程通过端口号进行标识,长16bit,熟知端口号:FTP21、TELNET23、SMTP25、DNS53、HTTP80。
5.2 UDP协议
UDP仅在IP数据服务之上增加了复用和分用以及差错检测。UDP常用于一次传输较少数据的网络应用,UDP尽最大努力交付,是面向报文的。
UDP首部有8B,字段如下:源端口,目的端口,长度,校验和。
5.3 TCP协议
TCP协议的特点
- TCP是面向连接的,TCP连接是一条逻辑连接。
- 每条TCP连接只能有两个端点,每条TCP连接只能是端到端的。
- TCP提供可靠交付的服务。
- TCP提供全双工通信。
- TCP是面向字节流的。
TCP报文段
报文段的前20B是固定的。各字段意义如下:
- 源端口和目的端口:各占2B。
- 序号:占4B,本报文段第一个字节的序号。
- 确认号:占4B,期望收到对方下一个报文段的第一个数据字节的序号。
- 数据偏移:即首部长度。
- 保留:6b。
- 紧急位URG:URG = 1时,应尽快传送。
- 确认位ACK:TCP连接后,ACK = 1。
- 推送位PSH:PSH = 1,尽快交付给应用进程。
- 复位位RST:RST = 1,出现严重差错,需重新连接。
- 同部位SYN:SYN = 1,表示这是一个连接请求或连接接受的报文。
- 终止位FIN:用来释放一个报文。
- 窗口:占2B。
- 校验和:占2B。
- 紧急指针
- 选项
- 填充
TCP连接管理
TCP连接采用C/S模式。
TCP连接的建立
通常称为三次握手:
- 客户机向服务器发送连接请求报文段,SYN = 1,seq = x,ACK = 0.
- 服务器发回确认,SYN = 1,ACK = 1,seq = y,ack = x+1。
- 客户机发出对确认的确认,ACK = 1,seq = x+1,ack = y+1。
服务端的资源是在第二次握手时分配的,客户端的资源是在第三次握手是分配的,服务器容易受到SYN洪泛攻击。
TCP连接的释放
通常称为四次握手:
- 客户机打算关闭连接,发送连接释放报文段,FIN = 1,seq = u。
- 服务器收到后发出确认,ACK = 1,seq = v,ack = u+1。
- 服务器再通知TCP释放连接,FIN = 1,ACK =1,seq = w,ack = u+1。
- 客户机收到连接释放报文段后发送确认,ACK= 1,seq = u+1, ack = w+1。
TCP可靠传输
TCP的任务是在IP层不可靠的基础上,建立一种可靠数据传输服务。
有两种事件会导致TCP对报文进行重传:超时和冗余ACK。
TCP拥塞控制
拥塞控制是让网络能够承受现有的网络负荷,是一个全局性问题。有四种算法,慢开始、拥塞避免、快重传和快恢复。
发送窗口的上限 = min(rwnd, cwnd)。
慢开始和拥塞避免
慢开始:开始发送报文段时,cwnd = 1,即1个最大报文段长度MSS。每经过一个RTT,cwnd加倍,直到一个规定的慢开始门限ssthresh,改用拥塞避免算法。
拥塞避免算法:每经过一个RTT,cwnd + 1。
拥塞处理:将ssthresh设为cwnd的一半,但不小于2,后将cwnd设为1,再执行慢开始。
快重传和快恢复
快重传:收到三个重复的ACK,直接重传对方尚未收到的报文段,不必等到超时
快恢复:收到三个冗余的ACK后,将ssthresh设为cwnd的一半,不同的是,将cwnd设为门限ssthresh改变后的数值,开始执行拥塞避免。
超时时,采用慢开始和拥塞避免;冗余ACK时,采用慢开始和快恢复。
- 本文作者: 魏静崎
- 本文链接: https://slightwjq.github.io/2023/10/17/计算机网络-第五章/
- 版权声明: 该文章来源及最终解释权归作者所有