精华内容
下载资源
问答
  • Atmel今日宣布推出新款10位多路分解器 (DMUX)。该款多路分解器具有可选的1:4或1:2输出比,最大时钟频率为2.2 GHz,可直接连接兼容现场可编程门阵列 (FPGA)、数字信号处理 (DSP) 和专用集成电路 (ASIC) 的 LVDS(低...
  • 一文带你看懂多路复用与多路分解

    千次阅读 多人点赞 2020-04-16 08:14:49
    文章目录 前置知识 进程如何取得来自网络的数据 运输层报文结构 概述 多路分解 多路复用 举个栗子 UDP和TCP中的多路复用和多路分解有何不同 UDP套接字-无连接的多路分解与多路复用 TCP套接字-面向连接的多路复用与...

    写在前面:这里是小王成长日志,一名普通在校大学生,想成学习之余将自己的学习笔记分享出来,记录自己的成长轨迹,帮助可能需要的人,平时博客内容主要是一些系统的学习笔记,项目实战笔记,一些技术的探究和自己的一些思考。欢迎大家关注,你们的每一个评论点赞关注我都会仔仔细细去看的。有任何问题欢迎交流,我会尽我所能帮助大家的,共创CSDN美好环境。

    最近在看计算机网络,这算是学习笔记吧,因为是自学,水平有限,不一定很有深度,但保证发出来的东西一定是自己思考整理过后的,每句话都经过了查证,欢迎大佬指导,若有错,请轻喷。

    前置知识

    进程如何取得来自网络的数据

    首先我们了解进程从网络中接收数据的过程:

    在目的主机,运输层需要从其下层的网络层接收报文段。

    而运输层则负责将这些报文段中的数据交付给目标进程的指定套接字(而一个进程可能有多个套接字)

    因此套接字(Socket)充当从进程向网络传递数据和从进程向网络传递数据的门户。
    如下图

    在这里插入图片描述

    运输层报文结构

    如上我们可见 每个运输层报文中都有两个首部字段-源端口号和目的端口号

    而在主机上,每个套接字都对应着一个进程,而每个套接字都能够分配一个端口号

    所以当报文段到达主机时,运输层检查报文段中的目的端口号,并将其定向到相应的套接字 (多路分解),然后报文段中的数据通过套接字进人其所连接的进程。

    概述

    多路分解

    每个运输层报文段中具有几个字段(就是指上面的源端口号和目的端口号)。在接收端,运输层检查这些字段,标识出接收套接字并与套接字的标识信息进行比对,如果符合则将报文段定向到该套接字。

    多路复用

    在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息(封装源端口号和目的端口号,这将在以后用于分解)从而生成报文段,然后将报文段传递到网络层。

    举个栗子

    我们用书上的一个栗子来形象地说明一下什么是多路分解和多路复用:

    在这个栗子中总共有两个家庭(两个端系统),每个家庭有7个孩子(进程),每个家庭的孩子每周会互相写一封信,例如老大给老大写,老二给老而写(信以及信封上的字符象征应用层报文)。

    我们让第一家的小B和第二家的老A负责家庭内部的邮件收发(运输层从IP层接收报文并传递给相应的进程)。明显外部的邮政系统则充当了两个端系统之间的信息传输通道。

    每一个孩子通过他们的名字来标识。当 小B 从邮递员( IP 层)处收到一批信件,并通过查看收信人名字(报文上的目的端口号)而将信件亲手交付给他的兄弟姐妹们(进程)时,他执行的就是一个分解操作。

    当老A从兄弟姐妹们(进程)那里收集信件并将它们交给邮递员(IP层)时,她执行的就是一个多路复用操作。

    UDP和TCP中的多路复用和多路分解有何不同

    主要是scoket的不同:

    UDP套接字-无连接的多路分解与多路复用

    当我们创建一个UDP套接字时,运输层会自动或者我们人为为套接字绑定一个1024 - 65535之间的端口(其余端口是周知端口,留给一些周知应用层协议)。

    UDP套接字由二元组来进行全面标识

    • 该二元组包含一个目的IP地址和一个目的端口号

      因此,如果两个UDP报文段有不同的源IP地址或源端口号,但具有相同的目的IP地址和目的端口号,那么这两个报文段将通过相同的目的套接字被定向到相同的目的进程。(多路分解)

    • 源端口号用作“返回地址”的一部分填充到回复报文的目的端口,这很明显

    在这里插入图片描述

    TCP套接字-面向连接的多路复用与多路分解

    而TCP套接字接字和UDP套接字之间有一个细微差别TCP套接字由一个四元组(源IP地址,源端口号,目的IP地址,目的端口号)来进行标识

    因此因为使用了四个值来进行套接字的定位,所以来自不同IP但源端口相同的两个TCP报文段将被定向到两个不同的套接字,反之亦然。(多路分解)

    服务器主机可以支持很多并行的TCP套接字,每个套接字与一个进程相联系,并由其四元组来标识每个套接字。当一个TCP报文段到达主机时,所有4个字段(源P地址,源端口,目的P地址,目的端口)被用来报文段定向(分解)到相应的套接字

    在这里插入图片描述

    Web服务器与TCP

    还是看上面的图。

    上面的图显示了一台服务器为每条连接生成一个新进程 。 如图所示,每个这样的进程都有自己的连接套接字,通过这些套接字可以收到HTTP 请求和发送 HTTP 响应

    • 连接套接字与进程之间并非总是有着一 一对应的关系 。
    • 当今的高性能 Web 服务器通常只使用一个进程,但是为每个新的客户连接创建一个具有新连接套接字的新线程 。 (线程可被看作是一个轻量级的子进程 。 )
    • 如果客户与服务器使用持续 HTTP ,则在整条连接持续期间,客户与服务器之间经由同一个服务器套接字交换 HTTP 报文 。 然而,如果客户与服务器使用非持续连接,则对每一对请求/响应都创建一个新的 TCP 连接并在随后关闭,因此对每一对请求/响应创建一个新的套接字并在随后关闭 。 这种套接字的频繁创建与关闭会严重地影响一个繁忙的 Web服务器的性能(虽然有许多操作系统技巧可用来减轻这个问题的影响) 。

    都看到这里了,各位哥哥姐姐叔叔阿姨给小王点个赞 关个注 留个言吧,和小王一起成长吧,你们的关注是对我最大的支持。
    有事没事,进来看看吧 : 小王博客目录索引,进来看看吧,说不定有你想要的呢


    如果以上内容有任何不准确或遗漏之处,或者你有更好的意见,就在下面留个言让我知道吧-我会尽我所能来回答。

    展开全文
  • 一个进程有一个或个套接字,它相当于从网络向进程传递数据和从进程向网络传递数据的门户。因此,在接收主机中的运输层实际上并没有直接将数据交付给进程,而是将数据交给了一个中间的套接字。由于在任一时刻,在...

    一个进程有一个或多个套接字,它相当于从网络向进程传递数据和从进程向网络传递数据的门户。因此,在接收主机中的运输层实际上并没有直接将数据交付给进程,而是将数据交给了一个中间的套接字。由于在任一时刻,在接收主机上可能有不止一个套接字,所以每个套接字都有唯一的标识符,标识符的格式取决于它是UDP还是TCP套接字。
    每个运输层报文段中具有几个字段,在接收端,运输层检查这些字段,标识出接收套接字,进而将报文段定向到该套接字。将运输层报文段中的数据交付到正确的套接字的工作称为多路分解。在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传递到网络层,所有这些工作称为多路复用。
    需要将到达的报文段数据定向到对应进程的套接字。
    运输层多路复用要求:
    ①、套接宇有唯一标识符;
    ②、每个报文段有特殊字段来指示该报文段所要交付到的套接字,这些特殊字段是源端口号字段和目的端口号字段。
    端口号是一个 16 比特的数,其大小在 0-65535之间。0-1023范围的端口号称为周知端口号,是受限制的,这是指它们保留给诸如 HTTP(80)和FTP (21)之类的周知应用层协议来使用。
    运输层是怎样实现分解服务:在主机上的每个套接字能够分配一个端口号,当报文段到达主机时,运输层检查报文段中的目的端口号,并将其定向到相应的套接字。然后报文段中的数据通过套接字进人其所连接的进程。
    一个UDP套接字是由一个二元组来全面标识的,该二元组包含一个目的IP地址和一个目的端口号。因此,如果两个UDP报文段有不同的源址或源端口号,但具有相同的目的IP地址和目的端口号,那么这两个报文段将通过相同的目的套接字被定向到相同的目的进程。
    源端口号用作"退回地址"的一部分,即当目的主机需要回发一个报文段给源主机时,目的主机的报文段中的目的端口号便从源主机的报文段中的源端口号中取值。
    TCP套接字是由一个四元组(源IP地址,源端口号,目的IP地址,目的端口号)来标识的。这样,当TCP报文段从网络到达一台主机时,该主机使用全部4个值来将报文段定向(分解)到相应的套接字。特别与UDP不同的是,两个具有不同源IP地址或源端口号的到达TCP报文段将被定向到两个不同的套接字。
    服务器的运输层还注意到连接请求报文段巾的下列4个值:
    ①、该报文段巾的源端口号;
    ②、源主机 IP地址;
    ③、该报文段中的目的端口号;
    ④、自身的IP地址
    新创建的连接套接字通过这4个值来标识。所有后续到达的报文段,如果它们的源端口号、源主机IP地址、目的端口号和目IP地址都与这4个值匹配,则被分解到这个套接字。随着TCP连接完成,客户和服务器便可相互发送数据了。
    服务器主机可以支持很多并行的TCP套接字,每个套接字与一个进程相联系,并由其四元组来标识每个套接字。当一个TCP报文段到达主机时,所有4个字段(源IP地址,源端口,目的IP地址,目的端口)被用来将报文段定向(分解)到相应的套接字。
    一台Web服务器为每条连接生成一个新进程,每个进程都有自己的连接套接字,通过这些套接字可以收到HTTP请求和发送HTTP响应。
    然而,连接套接字与进程之间并非总是有着一一对应的关系。事实上,当今的高性能Web服务器通常只使用一个进程,但是为每个新的客户连接创建一个具有新连接套接字的新线程。对于这样一台服务器,在任意给定的时间内都可能有(具有不同标识的)许多连接套接字连接到相同的进程。
    如果客户与服务器使用持续HTTP,则在整条连接持续期间,客户与服务器之间经由同一个服务器套接字交换HTTP报文。
    然而,如果客户与服务器使用非持续HTTP,则对每一对请求/响应都创建一个新的TCP连接并在随后关闭,因此对每一对请求/响应创建一个新的套接字并在随后关闭。这种套撞字的频繁创建、关闭会严重地影响一个繁忙的Web服务器的性能。

    展开全文
  • 行业分类-设备装置-多路分解设备.zip
  • 行业分类-设备装置-多路分解器.zip
  • 多路分解:在接收端,运输层检查报文段,标识出接收socket,进而将报文段定向至该socket,将运输层报文段交付至正确的socket称为多路分解。 多路复用:从源主机的不同socket收集数据块,并为每个数据块装上首部信息...

    多路分解:在接收端,运输层检查报文段,标识出接收socket,进而将报文段定向至该socket,将运输层报文段交付至正确的socket称为多路分解。

    多路复用:从源主机的不同socket收集数据块,并为每个数据块装上首部信息(这将在以后用于分解)从而生成报文段,然后将报文段传递至网络层,所有这些工作称之为多路复用

    展开全文
  • 一、什么是多路复用和多路分解 我们知道,在网络上主机与主机之间的通信,实质上是主机上运行的应用进程之间的通信。例如,当你通过Http上网浏览网页时,实质上是你所访问的主机的服务器进程与你本机的浏览器进程在...
    一、什么是多路复用和多路分解
    我们知道,在网络上主机与主机之间的通信,实质上是主机上运行的应用进程之间的通信。例如,当你通过Http上网浏览网页时,实质上是你所访问的主机的服务器进程与你本机的浏览器进程在进行通信。试想一下,当你在上网的同时,还挂着QQ,还使用ftp下载大文件,这时就有三个网络上的进程与你的主机上的三个进程进行通信,那么系统是怎么样正确地把接收到的数据定位到指定的进程中的呢?也就是说,系统是怎么把从ftp服务器发送过来的数据交付到ftp客户端,而不把这些数据交付到你的QQ上的呢?反过来考虑,系统又是如何精确地把来自各个应用进程的数据发到网络上指定上的主机(服务器)上的对应进程的呢?这就是多路分解与多路复用的作用了。

    为了说明这个问题,先来补充一下 操作系统方面的知识,以Linux对文件和设备的管理和使用方式为例。

    为了方便资源的使用,提高机器的性能、利用率和稳定性等等原因,我们的计算机都有一层软件叫做操作系统,它用于帮我们管理计算机可以使用的资源,当我们的程序要使用一个资源的时候,可以向操作系统申请,再由操作系统为我们的程序分配和管理资源。通常当我们要访问一个内核设备或文件时,程序可以调用系统函数,系统就会为我们打开设备或文件,然后返回一个文件描述符fd(或称为ID,是一个整数),我们要访问该设备或文件,只能通过该文件描述符。可以认为该编号对应着打开的文件或设备。

    而当我们的程序要使用网络时,要使用到对应的操作系统内核的操作和网卡设备,所以我们可以向操作系统申请,然后系统会为我们创建一个套接字Socket,并返回这个Socket的ID,以后我们的程序要使用网络资源,只要向这个Socket的编号ID操作即可。而我们的每一个网络通信的进程至少对应着一个Socket。向Socket的ID中写数据,相当于向网络发送数据,向Socket中读数据,相当于接收数据。而且这些套接字都有唯一标识符——端口号。

    有了上面的了解后,再来说说 什么是多路分解和多路复用。

    每个运输层的报文段中设置了几个字段,包括源端口号和目的端口号等。多路分解就是,在接收端,运输层检查这些字段并标识出接收套接字,然后将该报文定向到该套接字。其工作方式可以简单地认为是这样的,主机上的每个每个套接字被分配一个端口号,当报文到达主机时,运输层检查报文段中的目的端口号,并将其定向到相应的套接字。

    多路复用就是从源主机的不同套接字中收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传递到网络层中去。

    二、无连接的多路复用和多路分解
    在运输层,无连接的网络传输是通过UDP来实现的。UDP报文中只有源端口号和目的端口号,一个UDP套接字是由一个含有目的IP地址和目的端口号的二元组来全面标识的。在客户端,源端口号是客户进程套接字的端口号,目的端口号是服务器的端口号。而在服务器端,源端口号是服务器的创建的套接字的端口号,而目的端口号是客户端的套接字的端口号。

    例如主机A产生了一个UDP报文段,报文段中就会包括源端口号(11111)、目的端口号(22222)、程序数据(还有两个其他的值,在这里我们不关心)。然后,运输层将生成的报文段交给网络层。网络层将其放到一个IP数据报中,并提供尽力而为的交付,将其发送到主机B中。如果该报文到达主机B,主机B运输层就会检查该报文的端口号,并将该报文段传递给套接字的端口号为接收到的报文段的目的端口号(22222)的套接字。从而实现了进程间的网络通信。而源端口号的作用是为了让主机B能向主机A发送信息的,也就是说,当主机B在接收到主机A的数据后,要向主机A发送一个回应时,主机B发送的报文段的目的端口号就是11111.

    注意:我们看到使用UDP来传输报文段时,一个UDP套接字是由一个含有目的IP地址和目的端口号的二元组来全面标识的。因此,如果两个UDP报文段有不同的源IP地址和源端口,但具有相同的IP地址和目的端口号,那么这两个报文段将通过相同的目的端口号定向到相同的目的进程。这里没有过多地说明IP地址,是因为IP地址是网络层的知识,所以没有提及,我们现在只须知道,IP地址对应着一台主机,而端口号对应着一台主机上的一个进程(或套接字)。

    三、面向连接的多路复用和多路分解
    从上面的解说中,我们可以知道,网络上主机间的进程间通信,实质上是通过套接字来实现的。在运输层中面向连接的网络传输多使用TCP,而TCP套接字和UDP套接字之间有一个细微的差别,就是,TCP套接字是由一个四元组(源IP地址、源端口号,目的IP地址,目的端口号)来标识的。这样,当一个TCP报文段从网络到达一台主机时,主机会使用全部4个值来将报文段定向,即多路分解到相应的套接字。

    与UDP不同的是,两个具有不同源IP或源端口号的到达的TCP报文段将被重定向到两个不同的套接字。

    尽管如此,而TCP的多路利用和多路分解的工作原理与无连接的UDP的多路复用和多路分解的原理还是大致一样的。

    想想为什么 TCP的多路复用和多路分解要这样设计呢?个人认为,这是因为TCP和UDP对待接收到的数据的处理方式不同所致的。我们以服务器上的TCP套接字和UDP套接字为例,假定服务器接收客户端的数据,并把数据发送回客户端。

    当一个UDP服务器接收到一个UDP报文段时,它会根据收到的UDP报文段的源IP和源端口号,把数据发送回客户端,它并不需要创建一个新的套接字来处理该报文段;

    而对于一个TCP服务器,当它接受一个连接时,它会产生一个新的套接字,然后通过新的套接字来与客户端通信,也就是通过新的套接字来把数据发送回给客户端。由于每一个连接都会产生一个新的套接字,所以具有不同的源IP或源端口号的连接就是一个不同的连接,对应着产生的新的不同的套接字。

    试想一下,如果TCP套接字也是使用像UDP那样的只用源端口号和目的端口号来完全标识一个套接字,那么当客户机A有一个Http连接时,该TCP报文的目的端口号为80,目的IP地址为TCP服务的IP地址。TCP服务器产生一个新的套接字来处理该请求,此时,客户机B又有一个Http连接,TCP报文的目的端口号也为80,目的IP地址也为TCP服务的IP地址。而TCP套接字也是使用像UDP那样,两个具有不同的源Ip或源端口号但具有相同目的IP和目的端口的报文段定位到同一个套接字中,那么这个客户机B的TCP报文段则会多路分解到客户机A的套接字上,而该套接字并不应该被客户机B的Http连接使用。

    PS:如果对于这个解说不太明白,可以看看本人写的一个用TCP和UDP进行通信的小例子,

    原文地址:http://blog.csdn.net/ljianhui/article/details/21660629

    展开全文
  • 行业分类-设备装置-多路分解器和通信设备.zip
  • 行业分类-设备装置-使用多路转换多路分解模式的数据光传送装置.zip
  • TCP套接字(源IP地址,源端口号,目的IP地址,目的端口号),当一个TCP报文段从网络到达一台主机时,使用全部4个值将报文段分解到相应套接字。两个具有不同源IP地址或源端口号的TCP报文段将被定向到不同的套接字。...
  • 超快速多线程FASTQ多路分解 介绍 使用index1或index2将单个FASTQ文件解复用为多个FASTQ文件。 该工具是用C ++开发的,支持多线程。 简单用法 # read1 and read2 are precessed separately # -o specifies the output...
  • Deepbinner是一种用于对条形码化的测序读数进行多路分解的工具。 它使用深度分类器来完成此任务,该分类器使用了许多已证明在图像分类中取得成功的 。 与其他解复用器(例如Albacore和 )不同,Deepbinner从原始信号...
  • 传输层(多路分解与多路复用)

    千次阅读 2018-06-25 10:28:53
    为什么要多路分解和多路复用?因为:如果某层的一个协议对应直接上层的多个协议/多个实体,则需要多路分解和多路复用。例子:这里值得注意的是,在发送之前,需要为每个数据封装上头部信息才会生成Segment,交给网络...
  • 一、什么是多路复用和多路分解 在网络上主机与主机之间的通信,实质上是主机上运行的应用进程之间的通信。比如我们两个用电脑或手机实现聊天,就是两个QQ程序(进程)之间的通信。 倘若当你浏览这篇博客的同时,...
  • 行业文档-设计装置-时分多路复用多路分解方法
  • 基于的HTTP缓存代理和多路分解器的最小。 基本原理 一些映射程序(例如 )使您可以定义和使用自定义地图图块服务,期望该服务接受/13/4252/2916.png格式的HTTP请求,例如/13/4252/2916.png ,其中13是缩放, 4252是x...
  • 长期以来,它一直是各个学科的重要问题通过提取来检查大量的多维数据嵌入式多路因素。 随着两者的快速增长分析中数据的规模和维度,研究挑战产生以反映大型张量的动力学同时在因式分解中不引入明显的失真复杂应用中...
  • 通过深度神经网络对彩色图像进行多光谱光度学立体多路分解
  • 行业分类-设备装置-编解码设备及编码多路复用设备和解码多路分解设备.zip
  • 介绍了ACE反应器框架的核心设计与实现,揭示了该框架对事件实施多路分解和分派的机制。
  • 使用发散时间透镜的增强型全LiNbO3 OTDM多路分解
  • 行业分类-设备装置-用于信道交织存取的多路分解
  • 多路复用/多路分解

    千次阅读 2015-08-10 20:22:00
    套接字寻址系统使得TCP和UDP能够执行传输层另一个重要任务:多路复用和多路分解。多路复用是指把多个来源的数据导向一个输出,而多路分解是把从一个来源接收的数据发送到多个输出。 多路传输/多路分解让TCP/...
  • 同时级多路分解和波长多播的高非线性光子晶体光纤中级联四波混频光时分多路复用系统的设计
  • 用于同步时钟恢复和OTDM信号多路分解的基于时间透镜的光电振荡器
  • 行业文档-设计装置-用于视频无源光学网络的光学波长多路分解器.zip

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,971
精华内容 19,988
关键字:

多路分解