一、传输层概述
- 传输层为应用层提供通信服务,使用网络层服务
- 传输层的功能:
- 提供进程和进程之间的逻辑通信(网络层提供主机之间的逻辑通信)
- 复用(发送发不同的应用进程)和分用(接收方正确的数据传送)
- 对收到的报文进行差错检测
- 两个协议:面向连接的传输控制协议TCP、无连接的用户数据协议UDP
- TCP协议的特点:可靠、面向连接、时延大,适用于大文件
- 传送数据之前必须建立连接,数据传送结束后要释放连接
- 不提供广播/多播服务
- 增加开销:确认、流量控制、计时器及连接管理等
- UDP协议的特点:不可靠、无连接、时延小,适用于小文件
- 传送数据之前无需连接,收到UDP报文后不需给出任何确认
1.1 传输层的寻址与端口
- 复用:应用层所有的应用进程都可以通过传输层再传输到网络层
- 分用:传输层从网络层收到数据后交付指明的应用进程
- 端口(逻辑/软件端口)是传输层的SAP,标识主机中的应用进程
- 端口号只有本地意义,在因特网中不同计算机的相同端口没有联系
- 端口号的长度为16bit,能标识65536个不同的端口号
- 套接字Socket = (主机IP地址,端口号):在网络中采用发送方和接收方的套接字组合来识别端点,套接字唯一标识了网络中的一个主机和它上面的一个进程
二、UDP协议
- UDP只在IP数据服务之上增加了:复用分用、差错检测
- UDP的主要特点:
- UDP是无连接的,减少开销和发送数据之前的时延
- UDP使用最大努力交付,即不保证可靠交付
- UDP是面向报文的,适合一次性传输少量数据的网络应用
- UDP无拥塞控制,适合很多实时应用。
- UDP首部开销小8B,TCP20B
- UDP首部格式
- UDP校验
三、 TCP协议
- TCP协议的特点
- 面向连接(虚连接)的传输协议
- 每一条TCP只能有两个端点,即点对点的单播通信
- 提供可靠交付的服务,无差错、不丢失、不重复、按序到达;可靠有序、不丢不重
- 提供全双工通信:发送缓存、接收缓存
- 面向字节流:应用程序交下来的数据看成一连串无结构的字节流
- ☆ TCP报文段首部格式
3.1 TCP连接
- TCP连接传输三个阶段:连接建立、 数据传送、连接释放
3.3.1 连接建立
- TCP连接建立采用客户(主动发起连接建立的应用进程)服务器(被动等待连接建立的应用程序)方式
- SYN洪泛攻击:
- SYN洪泛攻击发生在OSI第四层,这种方式利用TCP协议的特性,即三次握手
- 攻击者发送TCP SYN(SYN是TCP三次握手中的第一个数据包);当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态(即,半连接状态);服务器收不到再确认的话,还会重复发送ACK给攻击者。
- 攻击者对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了
- SYN洪泛攻击的解决:SYN cookie
- TCP连接的建立与释放
3.2 可靠传输
- 可靠:保证接收方进程从缓存区读出的字节流与发送方发送的字节流完全一致
- TCP实现可靠传输的机制
- 校验:增加伪首部,使用二进制反码求和
- 序号:一个字节占一个序号,序号字段是一个报文段第一个字节的序号
- 确认:TCP默认使用累计确认(TCP只确认这个数据流中第一个丢失字节为止的报文段)
- 重传:TCP发送方在规定时间内没有收到确认就要重传已发送的报文段(超时重传)
- 重传时间:TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间 )
- 冗余ACK(冗余确认):快速重传
- 每当比期望序号大的失序报文段到达时,发送一个冗余ACK,指明下一个期待字节的序号
- 发送方收到3个对于报文段n的冗余ACK → 认为n+1报文段丢失,重传该报文段
3.3 流量控制
- 流量控制:让发送方慢点,让接收方来得及接收
- TCP利用滑动窗口机制实现流量控制
- 流量控制的具体过程:
- 接收窗口rwnd:在通信过程中,接收方根据自己接收缓存的大小(接收方设置确认报文段的窗口字段来将rwnd通知给发送方),动态地调整发送方的发送窗口大小
- 发送方的发送窗口取决于:接收窗口rwnd、拥塞窗口cwnd的最小值
- 发送窗口大小可以动态变化
- TCP为每一个连接设有一个持续计时器,只要连接的一方收到对方的零窗口通知就启动持续计时器:若持续计时器设置的时间到期,就发送一个零窗口探测报文段,接收方收到后给出现在的窗口值;若窗口仍为0,则重置持续计时器
3.4 拥塞控制
- 出现拥塞的条件:对资源需求的总和 > 可用资源
- 网络总许多资源同时呈现供应不足 → 网络性能变坏 → 网络吞吐量将随输入负荷增大而下降
- 拥塞控制(全局性):防止过多的数据注入到网络
3.4.1 拥塞控制四种算法
- 拥塞控制四种算法:慢开始、拥塞避免、快重传、快恢复
- 假定:
- 数据单方向传送,另一个方向只传送确认;无捎带确认的情形
- 接收方总是有足够大的缓存空间,因而发送窗口的大小取决于拥塞程度
- 发送窗口 = Min{接收窗口rwnd,拥塞窗口cwnd}
- 接收窗口:接收方根据缓存设置的值,并告知给发送方,反应接收方容量
- 拥塞窗口:发送方根据自己估算的网络拥塞程度而设置的窗口值,反应网络当前容量
- 一个传输轮次:
- 发送了一批报文段并收到它们的确认的时间
- 一个往返时延RTT
- 开始发送一批拥塞窗口内的报文段到开始发送下一批拥塞窗口内的报文段的时间
- 慢开始与拥塞避免
- 快重传与快恢复