计算机网络 - 运输层

运输层

重点知识

在这里插入图片描述

无连接的UDP(不可靠,支持单播、多播、广播)

面向连接的TCP(可靠,支持点对点单播,不支持多播、广播)

5.1 运输层协议概述

5.1.1 进程之间的通信

  • 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。

在这里插入图片描述

运输层的作用:

  1. 从IP层来说,通信的两端是两台主机。
  2. 从运输层的角度看,通信的真正端点并不是主机而是主机中的进程。(即:端到端的通信是应用进程之间的通信。)

5.1.2 运输层的两个主要协议

  1. 用户数据报协议 UDP(User Datagram Protocol)
  2. 传输控制协议TCP(Transmission Control Protocol)

在这里插入图片描述

5.1.3 运输层的端口

通过协议端口号(端口)解决:主机上可能有多个进程同时技能型通信,进程是动态创建和撤销的【在协议栈层间的抽象的协议端口是软件端口】

在这里插入图片描述

5.2 用户数据报协议UDP

5.2.1 UDP概述

  1. 复用和分用的功能

  2. 差错检测的功能

主要特点:

  1. UDP是无连接的,发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。

  2. UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。

  3. UDP是面向报文的。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。UDP 一次交付一个完整的报文。
    在这里插入图片描述

  4. UDP 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很适合多媒体通信的要求。

  5. UDP 支持一对一、一对多、多对一和多对多的交互通信。

  6. UDP 的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短。

5.2.2 UDP的首部格式

用户数据报 UDP 有两个字段:数据字段和首部字段。
首部字段有 8 个字节,由 4 个字段组成,每个字段都是 2 个字节。

在这里插入图片描述

5.2.3 计算 UDP 检验和的例子

![[Pasted image 20231222102302.png]]

5.3 传输控制协议TCP

5.3.1 主要特点:

  1. TCP 是面向连接的运输层协议
  2. 每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是点对点的(一对一)。
  3. TCP 提供可靠交付的服务。
  4. TCP 提供全双工通信
  5. 面向字节流

5.3.2 TCP的连接

TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫做套接字 (socket) 或插口
套接字 s o c k e t = ( I P 地址 : 端口号 ) 套接字 socket = (IP地址 : 端口号) 套接字socket=(IP地址:端口号)

举例:套接字 s o c k e t = ( 192.169.1.20 : 2028 ) 举例:套接字 socket = (192.169.1.20 : 2028) 举例:套接字socket=(192.169.1.20:2028)

T C P 连接 : : = s o c k e t 1 , s o c k e t 2 = ( I P 1 : p o r t 1 ) , ( I P 2 : p o r t 2 ) TCP 连接 ::= {socket1, socket2} = {(IP1: port1),(IP2: port2)} TCP连接::=socket1,socket2=(IP1:port1)(IP2:port2)

5.3.3 可靠传输的工作原理

理想的传输条件:

  1. 传输信道不产生差错。
  2. 不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据。

在这样的理想传输条件下,不需要采取任何措施就能够实现可靠传输。然而实际的网络都不具备以上两个理想条件。必须使用一些可靠传输协议,在不可靠的传输信道实现可靠传输。

停止等待协议

“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。

1. 无差错情况
![[Pasted image 20231201102225.png]]

2. 出现差错

在接收方 B 会出现两种情况:

  1. B 接收 M1 时检测出了差错,就丢弃 M1,其他什么也不做(不通知 A 收到有差错的分组)。
  2. M1 在传输过程中丢失了,这时 B 当然什么都不知道,也什么都不做。

在这两种情况下,B 都不会发送任何信息。但A都必须重发分组,直到B正确接收为止,这样才能实现可靠通信。

3. 确认丢失和确认迟到
确认丢失:

  1. 若 B 所发送的对 M1 的确认丢失了,那么 A 在设定的超时重传时间内不能收到确认,但 A 并无法知道:是自己发送的分组出错、丢失了,或者 是 B 发送的确认丢失了。因此 A 在超时计时器到期后就要重传 M1。
  2. 假定 B 又收到了重传的分组 M1。这时 B 应采取两个行动:
    • 第一,丢弃这个重复的分组 M1,不向上层交付。
    • 第二,向 A 发送确认。不能认为已经发送过确认就不再发送,因为 A 之所以重传 M1 就表示 A 没有收到对 M1 的确认。
      确认迟到:
  3. 传输过程中没有出现差错,但 B 对分组 M1 的确认迟到了。
  4. A 会收到重复的确认。对重复的确认的处理很简单:收下后就丢弃。
  5. B 仍然会收到重复的 M1,并且同样要丢弃重复的 M1,并重传确认分组。
    4. 信道利用率
    信道利用率 U = T D / ( T D + R T T + T A ) 信道利用率 U = T_D / (T_D+RTT+T_A) 信道利用率U=TD/(TD+RTT+TA)
连续ARQ协议

在这里插入图片描述

基本思想:

  1. 发送方一次可以发出多个分组。
  2. 使用滑动窗口协议控制发送方和接收方所能发送和接收的分组的数量和编号。
  3. 每收到一个确认,发送方就把发送窗口向前滑动。
  4. 接收方一般采用累积确认的方式。
  5. 采用**回退N(Go-Back-N)**方法进行重传。

5.3.4 TCP报文段的首部格式

![[Pasted image 20231222102753.png]]

MSS (Maximum Segment Size) 是 TCP 报文段中的数据字段的最大长度。数据字段加上 TCP 首部才等于整个的 TCP 报文段。所以,MSS是“TCP 报文段长度减去 TCP 首部长度”。

5.3.5 可靠传输的实现

以字节为单位的滑动窗口
超时重传时间的选择

RTO (Retransmission Time-Out) 应略大于上面得出的加权平均往返时间 R T T S RTT_S RTTS
R T T D RTT_D RTTD是 RTT 的偏差的加权平均值

R T O = R T T S + 4 × R T T D RTO = RTT_S + 4×RTT_D RTO=RTTS+4×RTTD
新的 R T T D = ( 1 − b ) × ( 旧的 R T T D ) + b × 1 / 2 × R T T S − 新的 R T T 样本 × 1 / 2 新的 RTT_D = (1 - b )× (旧的RTT_D) + b × 1/2 ×RTT_S - 新的 RTT 样本 × 1/2 新的RTTD=(1b)×(旧的RTTD)+b×1/2×RTTS新的RTT样本×1/2

选择确认 SACK
  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

www_sss_yyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值