5. 传输层

传输层

1. 服务

1.1 功能

  1. 应用进程之间的逻辑通信。

    从传输层来说,通信的真正端点是 主机中的进程

  2. 复用和分用

    • 复用:发送方的不同进程都可以使用同一个传输层协议进行数据传输
    • 接收方传输层能将数据正确交付到不同的目的应用进程
  3. 检错检测

    • TCP:发现报文出错,要求重发
    • UDP:发现出错,直接丢弃
    • 区别网络层:网络层的IP数据报只检验首部,不检查数据
  4. 提供面向连接和无连接的传输协议。TCP/IP、UDP

1.2 寻址和端口

  1. 端口号 16bit

    • 服务器端使用的端口号。熟知端口号(0 ~ 1023);登记端口号(1024 ~ 49151)
    • 客户端使用的端口号。49152 ~ 65535,也称短暂端口号
  2. 套接字

    套接字(Socket)=(IP地址:端口号)

1.3 无连接服务和面向连接服务

  1. TCP/IP:建立连接、可靠数据传输、释放连接。确认、流量控制、计时器、连接管理。FTP、HTTP、TELNET
  2. UDP:无需建立连接和返回确认。TFTP、DNS、SNMP、RTP

2. UDP

2.1 数据报

2.1.1 概述

功能:复用和分用,差错检测

特点:无需建立连接;无连接状态;首部开销小;无拥塞控制;支持1对1,1n,n1,nn的交互通信

面向报文。报文不可分割,是UDP处理的最小单位。

2.1.2 首部格式

首部字段(8B)和用户数据字段。

首部(2B*4):源端口(不需要时可全0),目的端口,长度(首部+数据),检验和(可选,可全0)

image-20240420135135454

2.2 UDP检验

计算UDP检验和之前,还需要加上伪首部,以计算UDP检验和。

检验方法:补充0成偶数个字节后,按二进制反码计算这些16位字的和,最后将此和的反码写入检验和字段。接收方最终计算结果应全1,才表示无差错。这种方法不强,但简单快速。

image-20240420140317363

3. TCP

3.1 特点

  1. 面向连接,逻辑连接
  2. 一对一
  3. 可靠交付,无差错、不丢失、不重复且有序
  4. 全双工通信。
    • 发送缓存:准备发的数据;已发送但未收到确认的数据
    • 接收缓存:到达但未被读取的数据;不按序到达的数据
  5. 面向字节流。

TCP报文由接收方窗口值和网络拥塞程度决定;UDP报文由发送应用进程决定

3.2 报文段

首部(20B)和数据

image-20240420141458012

首部字段:

  • 源端口
  • 目的端口
  • 序号
  • 确认号
  • 数据偏移。表示首部长度
  • 保留
  • 紧急位URG
  • 确认位ACK
  • 推送位PSH
  • 复位位RST
  • 同步位SYN
  • 终止位FIN
  • 窗口
  • 检验和
  • 紧急指针
  • 选项,最长40B

3.3 连接管理

TCP连接的端口是套接字。连接的建立采用C/S模式,

三次握手

image-20240420141800394

  1. 客户机发请求(连接请求报文段)。SYN不能携带数据,但消耗一个序号。SYN-SENT
  2. 服务器同意,发回确认。确认报文段不能携带数据,但消耗一个序号。SYN-RCVD
  3. 客户机给出确认。可以携带数据,不携带数据就不消耗序号。ESTABLISHED

四次挥手

image-20240420141840594

  1. 客户机发送连接释放报文段,并停止发送数据。消耗一个序号。FIN-WAIT-1

  2. 服务器发出确认。CLOSED-WAIT。服务器继续未完成的数据传送,客户机收到确认后进入FIN-WAIT-2

  3. 服务器数据传送完成后,发出FIN=1的连接释放报文段。服务器LAST-ACK

  4. 客户机收到后,必须发出确认。进入TIME-WAIT,等待2MSL(Maximum Segment Lifetime,最长报文段寿命),进入CLOSED。服务器收到确认后进入CLOSED

    服务器最快1.5RTT,客户端最快1RTT+2MSL

image-20240420143412409

3.4 TCP可靠传输

检验(同UDP)、序号确认重传

a. 序号

序号字段,保证数据有序

b. 确认

确认号,表示期望收到的下一个报文段的第一个字节的序号

默认使用累计确认

c. 重传

  1. 超时。

    重传时间到期,未收到确认。维护了RTT(Round-Trip Time)的一个加权平均往返时间RTTS,设置的超时重传时间(Retransmission Time-Out,RTO)应略大于RTTS。

  2. 冗余ACK。

    接收方发送3个对某报文的冗余ACK,发送方则立即重传该报文。这种技术称为快速重传

3.5 TCP流量控制

让发送方的发送速率不要太快,以便接收方来得及接收。速度匹配服务。

数据链路层和传输层区别

  • 传输层:端到端(两个进程之间的流量控制),窗口大小动态变化
  • 数据链路层:两个中间的相邻节点之间的流量控制,滑动窗口不能动态变化

滑动窗口机制。发送方的发送窗口不能超过接收方给出的接收窗口值

image-20240420145404596

收到零窗口通知后,开始计时,计时结束后发送一个零窗口探测报文段,对方进行回应以给出窗口值。若仍为0,继续计时。

3.6 TCP拥塞控制

拥塞控制:防止过多的数据注入网络,保证网络中的路由器或链路不致过载。

拥塞控制与流量控制

  1. 拥塞控制:全局性的网络负荷的控制

  2. 流量控制:点对点的通信量的控制

    但是,都是提供控制发送方的发送速率实现控制效果

除了接收窗口(rwnd),TCP还要求发送方维持一个拥塞窗口(cwnd)

\[发送窗口上限值=min[rwnd,cwnd] \]

假设以下内容以最大报文段长度(MSL)为单位

1. 慢开始

从小到大增大拥塞窗口,cwnd的值随传输轮次(一个往返时延RTT)指数增长。先令cwnd=1,然后接着是2,4……。

需要设置一个慢开始门限ssthresh(阈值)。当cwnd大于ssthresh时,改用拥塞避免算法

2. 拥塞避免

每经过一个RTT,cwnd+=1,按线性规律缓慢增长。

出现网络拥塞(确认超时):

\[ssthresh = cwnd/2, \geq 2\\ cwnd=1\\ 执行慢开始算法 \]

3. 快重传

发送方连续收到3个冗余ACK,尽早重传

4. 快恢复

当发送方连续收到3个冗余ACK:

\[ssthresh=cwnd/2\\ cwnd =cwnd/2\\ 开始拥塞避免算法 \]

同时应用以上四种算法

posted @ 2024-04-20 15:40  walkallday  阅读(43)  评论(0)    收藏  举报