传输层
思维导图
概述
- 功能
- 提供进程间的逻辑通信
- 复用和分用
- 这里解释一下传输层的复用和分用。
传输层是计算机网络中的一个重要层级,它负责将数据从一个应用程序传输到另一个应用程序。在传输数据时,传输层需要同时处理多个数据流,就像一个快递公司需要同时处理多个包裹一样。这个过程叫做复用,也就是将多个数据流合并在一起,共享传输通道。
当数据到达目的地后,传输层需要将这些数据分配给正确的应用程序,就像快递公司需要将包裹分配给正确的收件人一样。这个过程叫做分用,也就是将多个数据流分开,交给不同的应用程序处理。
因此,传输层的复用和分用就像快递公司的包裹分配一样,它们都是将多个物品合并或分开,确保它们能够准确无误地到达目的地。
- 这里解释一下传输层的复用和分用。
- 差错检测
- 包括首部和数据部分
- 两种协议
- UDP:无连接;不可靠;支持一对一、一对多、多对一、多对多;面向报文;首部8字节
- TCP:面向连接;可靠;仅支持一对一;面向字节流;首部20B到60B;
- 寻址与端口
- 端口
- 标识应用进程,占16bit,只具有本地意义
- 熟知端口号(0~1023)如HTTP(80)、FTP(21)、DNS(53)等
- 登记端口号(1024~49151)如MySQL(3306)等
- 客户端使用的端口号(49152~65535)
- 套接字
- 唯一地标识网络中的一台主机和其上的一个进程
- 套接字Socket=(IP地址:端口号)
- 端口
UDP
- 优点
-
速度快:UDP没有像TCP那样进行连接的建立和断开,也没有像TCP那样进行可靠性的重传和拥塞控制等操作,因此UDP的速度比TCP更快。
-
实时性强:UDP不会对数据进行排队和排序,因此它能够更快地将数据传输到目的地,适用于实时性要求高的应用场景,比如视频会议、在线游戏等。
-
简单轻便:UDP的协议头比TCP简单,只有8个字节,因此UDP的开销比TCP小,适用于资源有限的设备和网络。
-
支持广播和多播:UDP支持将数据广播到网络中的所有设备或者多播到指定的一组设备,可以用于实现一些特定的功能,比如局域网内的视频流传输。
UDP适用于对实时性要求高、数据量较小、网络环境较好的应用场景,比如音频、视频、游戏等。
TCP
- 首部格式
- 特点
- ①面向连接的传输层协议
- ②每一条TCP连接只能有两个端点,只能是点对点的
- ③TCP提供可靠交付,无差错、不丢失、不重复、并且按序到达
- ④提供全双工通信
- ⑤面向字节流
- 连接管理
- “三次握手”建立连接,“四次挥手”释放连接
- 建立连接
- ①客户端发送连接请求报文,SYN=1,seq=x,进入SYN-SENT(同步已发送)状态
- ②服务器端发送确认连接报文,SYN=1,ACK=1,seq=y,ack=x+1,进入SYN-RCVD(同步收到)状态
- ③客户端发送确认报文,ACK=1,seq=x+1,ack=y+1,进入ESTABLISHED(已建立连接)状态
- 释放连接
- ①客户端发送连接释放报文(主动关闭),FIN=1,seq=u,进入FIN-WAIT-1状态
- ②服务器发出确认,ACK=1,seq=v,ack=u+1,进入CLOSE-WAIT(关闭等待)状态,TCP连接处于半关闭状态
- ③服务器发送连接释放报文(被动关闭),FIN=1,ACK=1,seq=w,ack=u+1,进入LAST-ACK(最后确认)状态
- ④客户机发出确认,ACK=1,seq=u+1,ack=w+1,等待2MSL后(TIME-WAIT)进入CLOSE(连接关闭)状态
- SYN洪泛攻击
- 可靠传输
- 序号
- 序号字段为所发送分组的第一个字节的序号
- 确认
- 首部中的确认号为期望收到的下一个字节编号
- 累积确认,对按序到达的最后一个分组发送确认
- 重传
- 超时重传(等很久)
- 超时说明网络交付能力很差
- 设置超时计时器,每发送一个分组就对这个分组计时,若到期后还未收到确认,就重传该分组
- 超时重传时间计算(动态RTTs)
- 冗余ACK(快速重传)
- 网络仍有一定的交付能力
- 当发送方收到3个对于同一分组的冗余ACK,就认为这个分组之后的分组已经丢失
- 超时重传(等很久)
- 序号
- 流量控制
- 是端到端的问题,抑制发送端的发送速率,以便接收端来得及接收
- TCP利用滑动窗口机制实现流量控制
- 发送窗口=min{接收窗口rwnd,拥塞窗口cwnd}
- 接收窗口rwnd,接收端根据接收缓存大小动态控制
- 拥塞窗口cwnd,发送端根据当前的网络拥塞程度而估计的窗口值
- 持续计时器,当TCP发送端收到零窗口通知后,启动持续计时器,超时后发送零窗口探测报文,解决互相等待的死锁局面
- 拥塞控制
- 全局性问题,防止过多的数据注入到网络中,让网络能够承受现有的网络负荷
- 慢开始&拥塞避免
- 慢开始,初始或超时后,cwnd=1,每经过一个RTT,cwnd加倍,增大到慢开始门限ssthresh
- 拥塞避免,每经过一个RTT,增加一个MSS
- 快重传&快恢复
- 快重传,当连续收到三个冗余的ACK,直接重传,无需等待计时器超时
- 快恢复,当连续收到三个冗余的ACK,ssthresh=cwnd/2,cwnd=ssthresh,与慢开始不同的是cwnd从1开始