计算机网络:传输层——多路复用与解复用

文章目录

  • 前言
  • 一、Socket(套接字)
  • 二、多路复用/解复用
  • 三、多路解复用
    • (1)多路解复用原理
    • (2)无连接(UDP)多路解复用
    • (3)面向连接(TCP)的多路解复用
  • 总结


前言

发送方法,接收方多路复用原理、UDP和TCP多路解复用。。


一、Socket(套接字)

一些名词:
在这里插入图片描述

传输层和应用层之间提供服务是如何

  • 位置:层间界面的SAP ( TCP/IP: socket)
  • 形式:应用程序接口API ( TCP/IP : socket API)

传输层提供的服务——需要穿过层间的信息:

  • 层间接口必须要携带的信息
    • 要传输的报文(对于本层来说:SDU)
    • 谁传的:对方的应用进程的标示:IP+TCP(UDP)端口
    • 传给谁:对方的应用进程的标示:对方的IP+TCP(UDP)端口号
  • 传输层实体(tcp或者udp实体)根据这些信息进行TCP报文段(UDP数据报)的封装
    • 源端口号,目标端口号,数据等
    • 将IP地址往下交IP实体,用于封装IP数据报:源IP,目标IP

传输层提供的服务——层间信息的代表:

  • 如果Socket APT每次传输报文,都携带如此多的信息,太繁琐易错,不便于管理
  • 用个代号标示通信的双方或者单方:socket
  • 就像OS打开文件返回的句柄一样
    • 对句柄的操作,就是对文件的操作
  • TCP socket:
    • TCP服务,两个进程之间的通信需要之前要建立连接
      • 两个进程通信会持续一段时间,通信关系稳定
    • 可以用一个整数表示两个应用实体之间的通信关系,本地标示
    • 使穿过层间接口的信息量最小
    • TCP socket:源IP,源端口,目标IP,目标IP,目标端口
    • 总而言之:Tcp socket是本地端口和目标端口的一个标识,与端口号的概念不同,便于管理,使穿过层级的信息量减少,tcp socket利用四元组的形式来标识端口:源ip,源端口,目标ip,目标端口。
    • 本地应用层和传输层的约定只有他俩自己知道。

TCP之上的套接字(socket):

  • 对于使用面向连接服务(TCP)的应用而言,套接字是4元组的一个具有本地意义的标示
    • 4元组:(源IP,源port,目标IP,目标port)
    • 唯一的指定了一个会话(2个进程之间的会话关系)o应用使用这个标示,与远程的应用进程通信
    • 不必在每一个报文的发送都要指定这4元组
    • 就像使用操作系统打开一个文件,OS返回一个文件句柄一样,以后使用这个文件句柄,而不是使用这个文件的目录名、文件名
    • 简单,便于管理

在这里插入图片描述

在这里插入图片描述

传输层提供服务——层间信息代表:

  • UDP socket:
    • UDP服务,两个进程之间的通信需要之前无需建立连接
      • 每个报文都是独立传输的
      • 前后报文可能给不同的分布式进程
    • 因此,只能用一个整数表示本应用实体的标示
      • 因为这个报文可能传给另外一个分布式进程
    • 穿过层间接口的信息大小最小
    • UDP socket:本IP,本端口
    • 但是传输报文时:必须要提供对方IP,port
      • 接收报文时:传输层需要上传对方的IP,port

UDP之上的套接字(socket):

  • 对于使用无连接服务(UDP)的应用而言,套接字是2元组的一个具有本地意义的标示
    • 2元组:IP,port(源端指定〉
    • UDP套接字指定了应用所在的一个端节点(end point)
    • 在发送数据报时,采用创建好的本地套接字(标示ID),就不必在发送每个报文中指明自己所采用的ip和port
    • 但是在发送报文时,必须要指定对方的ip和udp port(另外一个段节点)

在这里插入图片描述

套接字(socket):

  • 进程向套接字发送报文或从套接字接收报文
  • 套接字<–>门户
    • 发送进程将报文推出门户,发送进程依赖于传输层设施在另外一侧的门将报文交付给接受进程
    • 接收进程从另外一端的门户收到报文(依赖于传输层设施)

在这里插入图片描述

二、多路复用/解复用

发送方主机多路复用

  • 从多个套接字接收来自多个进程的报文,根据套接字对应的IP地址和端口号等信息对报文段用头部加以封装(该头部信息用于以后的解复用)

接收方主机多路解复用

  • 根据报文段的头部信息中的IP地址和端口号将接收到的报文段发给正确的套接字(和对应的应用进程)

三、多路解复用

(1)多路解复用原理

  • 解复用作用:TCP或者UDP实体采用哪些信息,将报文段的数据部分交给正确的socket,从而交给正确的进程
  • 主机收到IP数据报
    • 每个数据报有源IP地址和目标地址
    • 每个数据报承载一个传输层报文段
    • 每个报文段有一个源端口号和目标端口号(特定应用有著名的端口号)
  • 主机联合使用P地址和端口号将报文段发送给合适的套接字

在这里插入图片描述

(2)无连接(UDP)多路解复用

  • 服务器端和客户端都会创建套接字
  • 在接收端,UDP套接字用二元组标识(目标IP地址、目标端口号)
  • 当主机收到UDP报文段:
    • 检查报文段的目标端口号
    • 用该端口号将报文段定位给套接字
  • 如果两个不同源IP地址/源端口号的数据报,但是有相同的目标IP地址和端口号,则被定位到相同的套接字

在这里插入图片描述
例子:
在这里插入图片描述

(3)面向连接(TCP)的多路解复用

  • TCP套接字:(四元组本地标识)
    • 源IP地址
    • 源端口号
    • 目的IP地址
    • 目的端口号
  • 解复用:接收主机用这四个值来将数据报定位到合适的套接字
  • 服务器能够在一个TCP端口上同时支持多个TCP套接字:
    • 每个套接字由其四元组标识(有不同的源IP和源PORT)
    • Web服务器对每个连接客户端有不同的套接字
      • 非持久对每个请求有不同的套接字

例子:
主机上的多进程(多个应用)
在这里插入图片描述
主机一个进程上(同一个应用)的多线程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


总结

无论是TCP还是UDP,Soket套接字就是本地的标识,都是为了每次传输的层间信息减少,所以在各自本地创建的一种类似于关系记录表的东西,发送方传输时,将源IP、源端口(和目标IP、目标端口)信息封装(复用)成socket(一个整数,如4499),这样应用层到传输层之间的传输用整数传输代表这些信息,传输层收到这个socket自己找本地的关系去查看获取这些信息(ip,端口),根据套接字对应的IP地址和端口号等信息对报文段用头部加以封装;在接收方,传输层到应用层之间用传输层封装的socket传输,进行解复用,根据ip,端口信息将接收到的报文段发给正确的套接字(和对应的应用进程)。

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

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

相关文章

mysql大数据量查询瓶颈解决方案-供参考

项目运行了三年了&#xff0c;流水表主表数据已经达到4kw以上 所以最近项目开始时不时的出现问题&#xff0c;主要体现在以下方面&#xff1a; 1.客户端经常出现查询超时。 1.1 mybatis分页查询出现问题。 对于这个情况&#xff0c;我在这篇博客中做了描述&#xff0c;可以移…

进入软件的世界

选择计算机 上高中的时候&#xff0c;因为沉迷于网络游戏&#xff0c;于是对计算机产生了浓厚的兴趣&#xff0c;但是那个时候对于计算机的了解还是非常肤浅的。上大学的时候&#xff0c;也就义无反顾的选择了计算机专业&#xff0c;其实并不是一个纯粹的计算机专业&#xff0…

每日OJ题_算法_双指针①_力扣283. 移动零

目录 力扣283. 移动零 解析代码 力扣283. 移动零 283. 移动零 - 力扣&#xff08;LeetCode&#xff09; 难度 简单 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的…

使用Redis管理登录令牌cookie

相关知识 大多数网站都会使用 cookie 记录用户的身份。cookie 是由少量数据组成的字符串&#xff08;通常还要经过加密&#xff09;。网站会要求浏览器存储这些数据&#xff0c;并在向服务端发起请求时将这些数据传回给服务端。 通常&#xff0c;用于处理登录&#xff08;识别…

AI Agent 结构与分类

一、什么是AI agent 在人工智能中&#xff0c;智能代理AI Agent是以智能方式行事的代理&#xff1b;它感知环境&#xff0c;自主采取行动以实现目标&#xff0c;并可以通过学习或获取知识来提高其性能。人其实就是一种复杂代理。 为了理解智能代理的结构&#xff0c;我们应该熟…

前后端数据传输格式(下)

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 上篇主要复习了HTTP以及…

时间序列预测实战(二十三)进阶版LSTM多元和单元预测(课程设计毕业设计首选)

一、本文介绍 本篇文章给大家带来的是利用我个人编写的架构进行LSTM模型进行时间序列建模&#xff08;专门为了时间序列领域新人编写的架构&#xff0c;简单且不同于市面上大家用GPT写的代码&#xff09;&#xff0c;包括结果可视化、支持单元预测、多元预测、模型拟合效果检测…

Android : ViewModel_解决textView 横竖屏数据丢失

横竖屏切换 textView 数据丢失 1.导包 // 使用androidx版本库implementation androidx.lifecycle:lifecycle-extensions:2.1.0-alpha03// 或者&#xff0c;使用support版本库implementation android.arch.lifecycle:extensions:1.1.1 2.写个类 继承 viewModel import an…

文字处理工具Word mac软件特点

Microsoft Word mac是一款文字处理软件。它是 Microsoft office 套件的一部分&#xff0c;已广泛用于创建、编辑和格式化文本文档。 Word mac软件特点 改进的协作工具&#xff1a;使用 Microsoft Word 2021&#xff0c;多个用户可以同时处理一个文档&#xff0c;从而更轻松地与…

记录111

在两台 RHEL 8 服务器上搭建 PostgreSQL 和 pgpool-II 环境涉及到安装 PostgreSQL、配置流复制&#xff08;Streaming Replication&#xff09;以及安装和配置 pgpool-II。以下是详细的步骤&#xff1a; ### 准备工作 1. **获取服务器**&#xff1a;确保你有两台运行 RHEL 8 的…

EasyRecovery2024免费永久版手机数据恢复软件

EasyRecovery2024是一款操作安全、用户可自主操作的数据恢复方案&#xff0c;它支持从各种各样的存储介质恢复删除或者丢失的文件&#xff0c;其支持的媒体介质包括&#xff1a;硬盘驱动器、光驱、闪存、硬盘、光盘、U盘/移动硬盘、数码相机、手机以及其它多媒体移动设备。能恢…

bad_python

攻防世界 (xctf.org.cn) 前戏 下载文件&#xff0c;解压完成后是这个 一个pyc文件 这里要用到python的反编译 要用到的工具有两个 1.python自带的uncompyle6 2.pycdc文件——比uncompyle6强大一点 我们一个一个来尝试一下 uncompyle6&#xff1a; 我是直接在pycharm里面…

Stm32 CubeIDE对RTC的日期、时间读写,后备存储的读写

Stm32 CubeIDE对RTC的日期、时间读写&#xff0c;后备存储的读写&#xff0c;一折腾又是好多的问题&#xff0c;现在梳理一下&#xff0c;后面的不要过多踩坑了。 用STM32CubeIDE生成代码 这里有时间和日期的设置&#xff0c;在代码中也会生成相应的代码&#xff0c;首次设置后…

Spark读写Doris数据

1 准备Spark环境 创建maven工程,编写pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocati…

文字识别(OCR)专题——基于NCNN轻量级PaddleOCRv4模型C++推理

前言 PaddleOCR 提供了基于深度学习的文本检测、识别和方向检测等功能。其主要推荐的 PP-OCR 算法在国内外的企业开发者中得到广泛应用。在短短的几年时间里&#xff0c;PP-OCR 的累计 Star 数已经超过了32.2k&#xff0c;常常出现在 GitHub Trending 和 Paperswithcode 的日榜…

第二节JavaScript 语法、语句、注释、变量、数据类型等

一、JavaScript语法 1、JavaScript字面量 数字&#xff08;Number&#xff09;字面量&#xff1a;可以是整数或者是小数、或者是科学计数。 如&#xff1a;3.14 、1001 、123e5 字符串&#xff08;String&#xff09;字面量&#xff1a;可以使用单引号或双引号。 例如&…

Linux:/dev/mapper/centos-root 100%问题

思路1 切换到 / 目录下&#xff0c;看下是哪个目录占用的比较大 cd / du -h -x --max-depth1 思路2 直接查找大文件&#xff0c;查找大于100m的文件&#xff0c;可以根据实际情况&#xff0c;适当调整查找的文件大小 find / -type f -size 100M 思路3 使用lsof命令查看是否有占…

springboot(ssm房屋租赁系统 在线租房平台Java(codeLW)

springboot(ssm房屋租赁系统 在线租房平台Java(code&LW) 开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&#xff09…

【算法】算法题-20231205

这里写目录标题 一、LCS 01. 下载插件二、已知一个由数字组成的列表&#xff0c;请将列表中的所有0移到右侧三、实现一个trim()函数&#xff0c;去除字符串首尾的空格&#xff08;不能使用strip()方法&#xff09; 一、LCS 01. 下载插件 简单 小扣打算给自己的 VS code 安装使…

FileIUtils 最佳实践

import java.io.File; import java.io.IOException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter;public class FileIUtils {删除文件夹及文件夹下的所有文件 public static void deleteDirAndFiles(String path) throws Exception {File fil…