【计算机网络笔记】传输层——多路复用和多路分用

news/2024/5/17 18:51:13 标签: 计算机网络, 笔记, tcp, udp

系列文章目录

什么是计算机网络
什么是网络协议?
计算机网络的结构
数据交换之电路交换
数据交换之报文交换和分组交换
分组交换 vs 电路交换
计算机网络性能(1)——速率、带宽、延迟
计算机网络性能(2)——时延带宽积、丢包率、吞吐量/率
计算机网络体系结构概念
OSI参考模型基本概念
OSI参考模型中非端-端层(物理层、数据链路层、网络层)功能介绍
OSI参考模型中端-端层(传输层、会话层、表示层、应用层)功能介绍
TCP/IP参考模型基本概念,包括五层参考模型
网络应用的体系结构
网络应用进程通信
网络应用对传输服务的需求
Web应用之HTTP协议(涉及HTTP连接类型和HTTP消息格式)
Cookie技术
Web缓存/代理服务器技术
传输层服务概述、传输层 vs. 网络层


  • 系列文章目录
  • 为什么要进行多路复用/分用?
  • 什么是多路复用/分用?
  • 分用如何工作(基本原理)?
  • 无连接的多路分用
  • 面向连接的分用
  • 面向连接的分用之多线程Web服务器


为什么要进行多路复用/分用?

如果某层的一个协议对应直接上层的多个协议/实体,则需要复用/ 分用

传输层的核心功能是提供应用进程之间的逻辑信机制,而一个主机上有着许多应用程序,所以传输层提供的一个最基本的功能就是多路复用(多路分用)。

比如下面这张图,host2的应用层上运行这两个应用进程:P1和P2。host1上的P3进程会给host2的P1进程发送报文段;host3上的P4进程会给host2的P2进程发送报文段。在这样一个情况下,host2的传输层作为接收端就必须进行多路分用。因为下面的网络层协议只有一个,那从网络层接收到报文段之后,传输层必须要做的事情是把接收的报文段正确地交付给不同的进程。相反,如果在发送端有多个应用进程,那发送端必须从多个Socket接收数据,再通过统一的网络层发送出去,发出去之前为每块数据封装上正确的头部信息,生成 Segment报文端。这就是多路复用。

在这里插入图片描述


什么是多路复用/分用?

  • 接收端进行多路分用:传输层依据头部信息将收到的 Segment交给正确的Socket, 即不同的进程。
  • 发送端进行多路复用:从多个Socket接收数据,为每块数据封装头部信息,生成Segment,交给网络层。

分用如何工作(基本原理)?

  1. 主机接收到IP数据报(datagram)

    • 每个数据报携带源IP地址、目的IP地址
    • 每个数据报携带一个传输层的段(Segment )
    • 每个段携带源端口号目的端口号
  2. 主机收到Segment之后,传输层协议提取IP地址和端口号信息,将Segment导向相应的Socket,也就是相应的进程。


无连接的多路分用

也就是面向UDP协议的。

  • 在服务器端利用端口号创建Socket。对于UDP的Socket是用二元组标识。二元组包括目的IP地址和目的端口号、
  • 主机收到UDP段后,会检查段中的目的端口号,然后将UDP段导向绑定在该端口号的Socket。
  • 对于来自不同源IP或源端口号的IP数据包,如果目的地址和目的端口号相同,就会被导向同一个Socket。源端口号用于“返回地址”。

在这里插入图片描述


面向连接的分用

  • TCP的Socket用四元组标识:

    • 源IP地址
    • 源端口号
    • 目的IP地址
    • 目的端口号
  • 接收端利用所有的四个值将 Segment导向合适的Socket

  • 服务器可能同时支持多个TCP Socket。每个Socket用自己的四元组标识。比如说Web服务器为每个客户端开不同的 Socket。

在这里插入图片描述

一定要注意TCP连接是一对一的,一个客户机进程对应一个服务器进程。


面向连接的分用之多线程Web服务器

进程耗费的资源是比较多的,随着技术的进步,可以让一个进程创建多个线程,它是轻量级的进程机制。这样就可以把线程和TCP连接绑在一起。我们就可以通过不同的线程维持多个TCP连接。

在这里插入图片描述


http://www.niftyadmin.cn/n/5137282.html

相关文章

图像视觉特效处理工具:Boris FX Optics 2024.0.1

BorisFX光效插件Optics首发2024版:3大新功能详解 2023年9月15日,全球领先的视觉后期软件开发公司BorisFX推出了旗下知名软件Boris FX Optics的全新2024版本,这款备受后期处理爱好者喜爱的Photoshop插件和独立程序再次升级,为您的…

网络新闻发稿为何经久不衰?

有的老板可能看不到新闻营销的直接回报,一直不乐意在此方面投入,但是却看到竞争对手一直在搞新闻营销,也就安排个PR做做新闻公关。小马识途营销顾问观察,自互联网诞生以来,新闻营销一直是网络营销工作中的一个重点。 如…

40 深度学习(四):卷积神经网络|深度可分离卷积|colab和kaggle的基础使用

文章目录 卷积神经网络为什么要卷积卷积的具体流程池化tensorflow代码 深度可分离卷积原理介绍计算量对比代码参数计算例子 colab 和 kagglecolabkaggle如何在colab上使用kaggle的数据 卷积神经网络 卷积神经网络的基本结构 1: (卷积层(可选)池化层) * N全连接层 *…

Python与CAD系列高级篇(十七)批量替换文本

目录 0 简述1 单选替换文字对象为指定内容2 多选替换文字对象为指定内容3 文本刷0 简述 本篇介绍以下几项功能开发:1.单选替换文字对象为指定内容;2.多选替换文字对象为指定内容;3.文本刷功能。 1 单选替换文字对象为指定内容 需求: ① 用户指定文本内容。 ② 根据指定内容…

基于3D点云的语义分割模型调研(最新更新2023.10.30)

文章目录 3D点云分割数据集点云模型的评价指标3D点云语义分割方法发展PointSIFT模型的效果 https://blog.csdn.net/toCVer/article/details/126265782 基于深度学习的三维点云分割综述 3D点云分割数据集 传统的点云分割方法包括基于边缘检测的方法、基于区域增长的算法、基于特…

Python 字典(Dictionary) get() 函数返回指定键的值

Python 字典(Dictionary) get() 函数返回指定键的值。 语法 get()方法语法: dict.get(key[, value]) 参数 key – 字典中要查找的键。 value – 可选,如果指定键的值不存在时,返回该默认值。 返回值 返回指定键的值,如果键不在字…

吉他、班卓琴和贝斯吉他降分器:Arobas Music Guitar 8.1.1

Arobas Music Guitar 是一款专业的吉他、班卓琴和贝斯吉他降分器。在熟练的手中,它不仅可以让您创作,还可以编辑、聆听和录制,以及导入和导出乐谱。如果有人感兴趣的话,录音是在八个轨道上进行的,你可以为每个轨道单独…

Python 中的工厂模式

工厂设计模式属于创意设计模式范畴。 创建设计模式提供了许多对象创建技术,从而提高了代码的可重用性和灵活性。 工厂方法是一种创建对象而不指定其具体类的方法。 它以单个父类(抽象类或接口)定义对象的通用结构,而子类提供实例…