【计网 传输层概述】 中科大郑烇老师笔记 (十)

目录

  • 0 引言
  • 1 概述
    • 1.1 传输服务和协议
    • 1.2 传输层 vs 网络层
    • 1.3 Internet传输层协议 TCP和UDP
  • 2 多路复用、解复用
    • 2.1 UDP的多路复用
    • 2.2 TCP的多路复用
  • 3 UDP
    • 3.1 概述
    • 3.2 UDP报文段
    • 3.3 拓展:TCP报文段

请添加图片描述

  • 🙋‍♂️ 作者:海码007
  • 📜 专栏:计算机四大基础专栏
  • 📜 其他章节:网络快速入门系列、计网概述、计网应用层详解、计网Web和HTTP、计网FTP、计网EMail、计网DNS、计网P2P
  • 💥 标题:【计网 传输层概述】 中科大郑烇老师笔记 (十)
  • ❣️ 寄语:书到用时方恨少,事非经过不知难。
  • 🎈 最后:文章作者技术和水平有限,如果文中出现错误,希望大家能指正!

0 引言

从上到下学习,终于学到了传输层的知识点了,那么计算机网络传输层学习目标有哪些?主要分为下面两个大点:

  • 理解传输层的工作原理
    • 源端的多路复用 / 目标端的解复用
    • 可靠数据传输 RDT(Reliable Data Transfer)
    • 流量控制
    • 拥塞控制
  • 学习Internet的传输层协议
    • UDP:无连接传输
    • TCP:面向连接的可靠传输
    • TCP的拥塞控制

1 概述

1.1 传输服务和协议

  • 为运行在不同主机上的应用进程提供逻辑通信
  • 传输协议运行在端系统
    • 发送方:将应用层的报文分成报文段,然后传递给网络层。
    • 接收方:将报文段重组成报文,然后传递给应用层
  • 有多个传输层协议可供用选择:Internet(TCP和UDP)
    在这里插入图片描述

1.2 传输层 vs 网络层

  • 网络层服务主机之间的逻辑通信
  • 传输层服务进程间的逻辑通信
    • 依赖于网络层的服务:延时、带宽
    • 并对网络层的服务进行增强:数据丢失、顺序混乱、加密

类比一下就是:北京和上海有两个家庭通信,北京家庭的12个小孩给上海家庭的12个小孩发送信封。每人写12封信,总共144封

  • 主机:家庭
  • 进程:小孩
  • 应用层报文:信封中的信件
  • 传输协议:北京家庭和上海家庭为小孩提供复用解复用服务
  • 网络层协议:邮政服务(家庭-家庭的邮包传输服务)北京家庭要把12个人写的信全部收集起来给邮政公司(这就是传输层提供的复用服务),上海家庭收到144封信,然后传输层进行信件整理,发到对应小孩的手中(这就是传输层提供的解复用服务)。

1.3 Internet传输层协议 TCP和UDP

  • TCP:可靠的、保序的传输
    • 多路复用、解复用
    • 拥塞控制
    • 流量控制
    • 建立连接
  • UDP:不可靠、不保序的传输
    • 多路复用、解复用
    • 没有尽力为IP服务添加更多其他额外服务
  • 都不提供的服务:
    • 延时保证
    • 带宽保证

2 多路复用、解复用

多路复用(Multiplexing)和 解复用(Demultiplexing)是一种通信技术,用于在计算机网络中同时传输多个数据流(或多个应用程序的数据)通过单个通信通道。这有助于提高网络的效率和性能,因为它允许多个数据流共享同一个物理通道,而无需为每个数据流分配单独的通道。

  • 多路复用(Multiplexing) 是指在发送端多个数据流合并成一个单一的数据流(多个套接字接受来自多个进程的报文),然后通过网络传输。这可以通过不同的技术实现,例如统一数据包交错,时间分割,频分割,代码分割等。多路复用允许多个数据流在同一个通信通道上并行传输,而不会相互干扰。
  • 解复用(Demultiplexing) 是指在接收端接收到的单一数据流拆分回原始的多个数据流。接收端使用一些标识信息来确定如何将单一数据流分解为原始数据流,以便将它们交付给正确的应用程序或进程。这些标识信息通常包括端口号、IP地址、协议标识符等,用于确定数据流的归属。

多路复用和解复用在传输层的协议(例如TCP和UDP)中发挥重要作用,它们允许多个应用程序同时使用网络连接,而无需为每个应用程序分配独立的端口或连接。这提高了网络的效率,同时也为应用程序提供了更灵活的通信机制。

对应上面举得北京家庭的小孩给上海家庭的小孩通信的例子,北京家庭所以小孩的信封先统一打包起来,然后只需要一个邮政人员就可以将信封包裹送给上海家庭,这就是多路复用。然后上海家庭收到包裹后将包裹拆开,不同的信封交到不同的小孩手里,这就是解复用
这样就不需要多个信封交给多个邮政人员,也就是多个数据流共享同一个物理通道(邮政人员),不需要给每个数据流分配单独的通道(一个信封安排一个邮政人员进行传输)。

2.1 UDP的多路复用

接受端,如果有两个不同源IP地址/源端口号的数据报,但是有相同的目标IP地址和端口号,则被定位到相同的套接字
在这里插入图片描述

2.2 TCP的多路复用

在这里插入图片描述

3 UDP

3.1 概述

传输层的UDP(User Datagram Protocol)是一种面向无连接的协议,用于在计算机网络中传输数据。UDP与另一种传输层协议TCP(Transmission Control Protocol)相对比,它具有以下主要特点:

  • 无连接性:UDP是一种无连接的协议,这意味着在通信的开始时不会建立连接,也不会在通信结束时拆除连接。这使得UDP的通信更加轻量级,没有复杂的连接建立和拆除过程,从而降低了通信的开销。
  • 不可靠性:UDP不提供可靠的数据传输。它发送数据包,但不保证数据包的可靠性、顺序性或交付。因此,如果使用UDP传输数据,应用程序需要自行处理数据包的丢失、重复、乱序等情况。
  • 无拥塞控制:UDP不提供拥塞控制机制,因此在网络拥塞的情况下,UDP数据包可能会丢失或出现延迟。这与TCP不同,后者具有拥塞控制机制,可以适应网络拥塞。
  • 高性能:由于UDP的轻量级性质和缺乏复杂的控制机制,它具有低延迟和高性能的特点,适用于实时应用程序,如音频和视频流传输,在线游戏等。
  • 多播和广播:UDP支持多播和广播传输,允许单个数据包被多个接收者同时接收,这在某些应用场景中非常有用,如流媒体分发和网络广播。

UDP适合那些对数据传输延迟要求高、可以容忍一定数据包丢失的应用程序。然而,由于它的不可靠性,应用程序在使用UDP时必须自行处理数据的可靠性和完整性,通常需要实现自己的错误检测和纠正机制。UDP通常用于实时通信、媒体流传输、DNS查询等应用,其中快速传输和低延迟更为重要。

3.2 UDP报文段

UDP报文段的结构相对简单,它由两个主要部分组成:报头(Header)和数据(Data)。

UDP报文段的结构如下:

  1. 报头(Header):
    • 源端口号(Source Port):占用16位,指示发送端的端口号。
    • 目标端口号(Destination Port):占用16位,指示接收端的端口号。
    • 长度(Length):占用16位,表示UDP报文段的总长度(包括报头和数据)。通常,UDP报文段的最小长度为8字节。
    • 校验和(Checksum):占用16位,用于检测UDP报文段是否在传输过程中发生了错误。
  2. 数据(Data):
    • 数据部分可以包含0个或更多字节的应用程序数据。数据部分的长度由UDP报头中的长度字段指定。
      在这里插入图片描述

3.3 拓展:TCP报文段

TCP(Transmission Control Protocol)报文段的结构相对复杂,因为TCP提供了可靠的、面向连接的通信,包括连接建立、数据传输、错误检测和纠正、拥塞控制等功能。TCP报文段的结构如下:

  1. 报头(Header):

    • 源端口号(Source Port):占用16位,指示发送端的端口号。
    • 目标端口号(Destination Port):占用16位,指示接收端的端口号。
    • 序列号(Sequence Number):占用32位,用于标识TCP报文段中的数据的顺序。
    • 确认号(Acknowledgment Number):占用32位,用于确认已收到的数据的最大序列号。
    • 报头长度(Header Length):占用4位,指示TCP报文段报头的长度,以4字节为单位。
    • 保留位(Reserved):占用6位,保留供将来使用,目前必须为0。
    • 控制位(Control Bits):占用6位,包括以下标志:
      • URG(URGent):用于指示紧急数据。
      • ACK(ACKnowledgment):用于确认收到的数据。
      • PSH(PUSHit):用于提示接收端立即交付数据给应用程序。
      • RST(ReSeT):用于复位连接。
      • SYN(SYNchronize):用于建立连接。
      • FIN(FINish):用于关闭连接。
    • 窗口大小(Window Size):占用16位,表示接收端当前可接受的数据量,用于流量控制。
    • 校验和(Checksum):占用16位,用于检测TCP报文段是否在传输过程中发生了错误。
      -紧急指针(Urgent Pointer):占用16位,只有在URG标志被设置时才有效,用于指示紧急数据的位置。
    • 选项(Options):可选,可以包括一些可选字段,如最大报文段长度、时间戳等。
  2. 数据(Data):

    • 数据部分可以包含0个或更多字节的应用程序数据。数据部分的长度由TCP报头中的窗口大小字段指定。

在这里插入图片描述

TCP报文段结构的复杂性反映了TCP提供的高度可靠性和控制功能,但也导致了额外的开销。每个TCP报文段都包括了用于建立连接、确认数据、处理错误、控制流量等多种信息。这些信息使得TCP在可靠性方面非常强大,但也使得它在某些情况下相对较慢或开销较大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/169601.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apipost-Helper:IDEA中的类postman工具

今天给大家推荐一款IDEA插件:Apipost-Helper-2.0,写完代码IDEA内一键生成API文档,无需安装、打开任何其他软件;写完代码IDEA内一键调试,无需安装、打开任何其他软件;生成API目录树,双击即可快速…

postman上传照片,视频,音频等上传文件操作测试方法

Postman上传照片,视频,音频等上传文件操作测试方法 新建一个request,更改请求方式,点击Body 勾选form-data ,key后面下拉框选择File 上一步勾选后Value即出现选择本地文件按钮,填写Key,选择文件即可 此时…

国际阿里云:无法ping通ECS实例公网IP的排查方法!!!

无法ping通ECS实例的原因较多,您可以参考本文进行排查。 问题现象 本地客户端无法ping通目标ECS实例公网IP,例如: 本地客户端为Linux系统,ping目标ECS实例公网IP时无响应,如下所示: 本地客户端为Windo…

微信支付服务商消费者投诉及时处理与商户违规及时通知,支持多服务商

大家好,我是小悟 微信直连商户处理消费者投诉的功能解决了很多商户对于投诉处理不及时而导致商户号出现异常的问题,可以说解决了实实在在的问题。 很多小伙伴私信说自己是服务商角色,也需要微信支付服务商处理消费者投诉的功能,…

2023第六届泰迪杯数据分析

第六届带队”指导“请私信本人,团队包含技能赛双一等,数学建模省一,泰迪杯挖掘国一,研究生队友。 去年一等作品可视化图如下,私信获取源码

基于Qt 多线程(继承自QThread篇)

# 简介 我们写的一个应用程序,应用程序跑起来后一般情况下只有一个线程,但是可能也有特殊情况。比如我们前面章节写的例程都跑起来后只有一个线程,就是程序的主线程。线程内的操作都是顺序执行的。恩,顺序执行?试着想一下,我们的程序顺序执行,假设我们的用户界面点击有某…

Android修行手册 - 可变参数中星号什么作用(冷知识)

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&…

Vant 移动端UI

Vue项目中安装Vant # Vue 3 项目,安装最新版 Vant npm i vant 组件按需引入配置 vant按需引入- - -安装“unplugin-vue-components” 插件 Vite 中使用 Vant 的话,可以使用 “unplugin-vue-components” 插件,这个插件可以按需引入用到的Va…

联想小新Pro14默认设置的问题

联想小新Pro14 锐龙版,Win11真的挺多不习惯的,默认配置都不符合一般使用习惯。 1、默认人走过自动开机。人机互动太强了; 2、默认短超时息屏但不锁屏,这体验很容易觉得卡机然后唤起,却又不用密码打开; 3…

Linux之基础开发工具gdb调试器的使用(三)

文章目录 一、Linux调试器-gdb使用1、安装gdb2、背景3、Debug和release4、区分Debug和release 二、Linux调试器-gdb命令演示1、显示指定行之后的代码(自动记录最后一条指令)2、断点1、打印断点2、查看断点3、删除断点4、使能(禁用/开启&#…

STM32 寄存器配置笔记——GPIO配置输出

一、概述 本文主要介绍GPIO 作为输出时的寄存器配置。包括时钟配置,输出模式配置。以STM32F10xxx系列为例,配置PA8、PD2端口作为输出,输出高/低电平。 二、配置流程 1)GPIO外设时钟 通过查找STM32F10xxx中文参考手册得知&#xf…

【Devchat 插件】创建一个GUI应用程序,使用Python进行加密和解密

VSCode 插件 DevChat——国内开源的 AI 编程! 写在最前面DevChat是什么?什么是以提示为中心的软件开发 (PCSD)?为什么选择DevChat?功能概述情境构建添加到上下文生成提交消息提示扩展 KOL粉丝专属福利介绍D…