传输层

目录

 

 

概述

传输层是主机特有的层次

功能

  1. 提供进程和进程之间的逻辑通信
  2. 复用(多个进程用同一个传输层协议进行传输)和分用(把具体报文段交给某个进程)
  3. 对报文进行差错检测(网络层只检查IP数据报的头部,传输层检查数据)

 

重点

  1. TCP首部报文格式(SYN、ACK、FIN、RST必须知道)
  2. TCP滑动窗口原理,TCP 超时重传时间选择
  3. TCP 拥塞控制,TCP 流量控制
  4. TCP 三次握手与四次挥手以及状态码的变化
  5. TCP连接释放中TIME_WAIT状态的作用
  6. SYN 泛洪攻击
  7. TCP 粘包,心跳包
  8. UDP 如何实现可靠传输
  9. UDP 与 TCP 的区别
  10. UDP 以及 TCP 的应用场景

作者:帅地
链接:https://juejin.cn/post/6997248187413037070
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

寻址与端口

端口是传输层的SAP,标识主机中的应用进程。

端口号只有本地意义,在因特网中不同计算机的相同端口是没有联系的。

端口号长度为16bit,能表示65536个不同的端口号。

 

 

 

 

 

 

UDP协议

UDP特点

  1. UDP是无连接的,减少开销和发送数据之前的时延。
  2. UDP使用最大努力交付,即不保证可靠交付。
  3. UDP是面向报文的,适合一次性传输少量数据的网络应用。
  4. UDP无拥塞控制,适合很多实时应用。
  5. UDP首部开销小,8B,TCP20B。
  6. 分用时,找不到对应的目的端口号,就丢弃报文,并给发送方发送ICMP“端口不可达”差错报告报文。

UDP首部

 

 

一横条代表4个字节

如果不需要接受返回的通信,源端口号可不填,数据如果没有整个UDP数据报的长度就是8B。

校验和校验的是在客户端或服务端校验伪首部+首部+数据部分的值

 

 

 

 

 

 

TCP协议

TCP特点

  1. TCP是面向连接(虚连接)的传输层协议。打call
  2. 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。
  3. TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达。
  4. TCP提供全双工通信。发送和接收都有缓存
  5. TCP面向字节流

TCP报文段首部格式

 

 

 6个控制位

  1. 紧急位URG:URG=1时,标明此报文段 中有紧急数据,是高优先级的数据,应尽快传送,不用在缓存里排队,配合紧急指针字段使用。
  2. 复位RST:RST=1时,表明TCP连接中出现 严重差错,必须释放连接,然后再重新建立传输链接。
  3. 确认位ACK:ACK=1时确认号有效,在连 接建立后所有传送的报文段都必须把 ACK置为1。
  4. 推送位PSH:PSH=1时,接收方尽快交付 接收应用进程,不再等到缓存填满再向 上交付。
  5. 同步位SYN:SYN=1时,表明是一个连接 请求/连接接受报文。
  6. 终止位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可靠传输依据

  1. 校验,增加伪首部,使用二级制求反码求和判断是否发生错误
  2. 序号,把字节流组成数据报发送
  3. 确认,报文段确认字段采用累积确认,
  4. 重传,超时重传,TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间)。

 

TCP流量控制

点对点,端到端的控制,防止发送过快导致接收方接受缓存不足

在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,即接收窗口rwnd (接收方 设置确认报文段的窗口字段来将rwnd通知给发送方) ,发送方的发送窗口取接收窗口rwnd和拥塞窗口cwnd的最 小值。

 

TCP拥塞控制

全局性问题,网络堵塞,导致多方的发送数据长时间无法到达接收方。

防止过多的数据注入到网络中。 

假定:

  1. 数据单方向传送,而另一个方向只传送确认
  2. 接收方总是有足够大的缓存空间,因而发送窗口大小取决于拥塞程度

 

 

 

拥塞控制算法

慢开始和拥塞避免

 

 

慢开始->指数增长->到达门限值->拥塞避免->线性增长->丢包->再次慢开始

如果在慢开始阶段,ack出现超时,则将阈值设为cwnd一半。

快重传和快恢复

快重传:收到三个前一次的ack回复(说明发生丢包),则在计时器到时之前就重传

快恢复:出现拥塞/丢包之后,把发送速率降到门限值

 

posted on 2022-04-23 09:50  MIXTAPE_208  阅读(56)  评论(0编辑  收藏  举报

导航