传输层
目录
概述
传输层是主机特有的层次
功能
- 提供进程和进程之间的逻辑通信
- 复用(多个进程用同一个传输层协议进行传输)和分用(把具体报文段交给某个进程)
- 对报文进行差错检测(网络层只检查IP数据报的头部,传输层检查数据)
重点
- TCP首部报文格式(SYN、ACK、FIN、RST必须知道)
- TCP滑动窗口原理,TCP 超时重传时间选择
- TCP 拥塞控制,TCP 流量控制
- TCP 三次握手与四次挥手以及状态码的变化
- TCP连接释放中TIME_WAIT状态的作用
- SYN 泛洪攻击
- TCP 粘包,心跳包
- UDP 如何实现可靠传输
- UDP 与 TCP 的区别
- UDP 以及 TCP 的应用场景
作者:帅地
链接:https://juejin.cn/post/6997248187413037070
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
寻址与端口
端口是传输层的SAP,标识主机中的应用进程。
端口号只有本地意义,在因特网中不同计算机的相同端口是没有联系的。
端口号长度为16bit,能表示65536个不同的端口号。
UDP协议
UDP特点
- UDP是无连接的,减少开销和发送数据之前的时延。
- UDP使用最大努力交付,即不保证可靠交付。
- UDP是面向报文的,适合一次性传输少量数据的网络应用。
- UDP无拥塞控制,适合很多实时应用。
- UDP首部开销小,8B,TCP20B。
- 分用时,找不到对应的目的端口号,就丢弃报文,并给发送方发送ICMP“端口不可达”差错报告报文。
UDP首部
一横条代表4个字节
如果不需要接受返回的通信,源端口号可不填,数据如果没有整个UDP数据报的长度就是8B。
校验和校验的是在客户端或服务端校验伪首部+首部+数据部分的值
TCP协议
TCP特点
- TCP是面向连接(虚连接)的传输层协议。打call
- 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。
- TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达。
- TCP提供全双工通信。发送和接收都有缓存
- TCP面向字节流
TCP报文段首部格式
6个控制位
- 紧急位URG:URG=1时,标明此报文段 中有紧急数据,是高优先级的数据,应尽快传送,不用在缓存里排队,配合紧急指针字段使用。
- 复位RST:RST=1时,表明TCP连接中出现 严重差错,必须释放连接,然后再重新建立传输链接。
- 确认位ACK:ACK=1时确认号有效,在连 接建立后所有传送的报文段都必须把 ACK置为1。
- 推送位PSH:PSH=1时,接收方尽快交付 接收应用进程,不再等到缓存填满再向 上交付。
- 同步位SYN:SYN=1时,表明是一个连接 请求/连接接受报文。
- 终止位FIN:FIN=1时,表明此报文段发 送方数据已发完,要求释放连接。
窗口:指的是发送本报文段的一方的 接收窗口,即现在允许对方发送的数 据量。
检验和:检验首部+数据,检验时要加 上12B伪首部,第四个字段为6。
紧急指针:URG=1时才有意义,指出 本报文段中紧急数据的字节数。
选项:最大报文段长度MSS、窗口扩大、时间戳、选择确认…
TCP连接管理
三次握手
首部的关键字段:
第一次:SYN(同步位)为1,代表连接请求/连接请求的接受报文,ACK(确认号)为0,seq(序号)为随机数x,不会发送ack
第二次:SYN(同步位)为1,ACK(确认号)为1说明有效,搭配ack使用,请求接下来的包ack = x + 1
第三次:SYN(同步位)为0且后续皆为0
SYN洪泛攻击:不断重复三次握手中的第一次报文发送,但不进行第三次报文发送,使得服务器不断发送第二次报文,大量消耗服务器资源。
四次挥手
TCP可靠传输依据
- 校验,增加伪首部,使用二级制求反码求和判断是否发生错误
- 序号,把字节流组成数据报发送
- 确认,报文段确认字段采用累积确认,
- 重传,超时重传,TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间)。
TCP流量控制
点对点,端到端的控制,防止发送过快导致接收方接受缓存不足
在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,即接收窗口rwnd (接收方 设置确认报文段的窗口字段来将rwnd通知给发送方) ,发送方的发送窗口取接收窗口rwnd和拥塞窗口cwnd的最 小值。
TCP拥塞控制
全局性问题,网络堵塞,导致多方的发送数据长时间无法到达接收方。
防止过多的数据注入到网络中。
假定:
- 数据单方向传送,而另一个方向只传送确认
- 接收方总是有足够大的缓存空间,因而发送窗口大小取决于拥塞程度
拥塞控制算法
慢开始和拥塞避免
慢开始->指数增长->到达门限值->拥塞避免->线性增长->丢包->再次慢开始
如果在慢开始阶段,ack出现超时,则将阈值设为cwnd一半。
快重传和快恢复
快重传:收到三个前一次的ack回复(说明发生丢包),则在计时器到时之前就重传
快恢复:出现拥塞/丢包之后,把发送速率降到门限值
posted on 2022-04-23 09:50 MIXTAPE_208 阅读(56) 评论(0) 编辑 收藏 举报