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

举报
浩泽学编程 发表于 2023/12/05 13:09:31 2023/12/05
【摘要】 多路复用、解复用:无论是TCP还是UDP,Soket套接字就是本地的标识,都是为了每次传输的层间信息减少,所以在各自本地创建的一种类似于关系记录表的东西,发送方传输时,将源IP、源端口(和目标IP、目标端口)信息封装(复用)成socket(一个整数,如4499),这样应用层到传输层之间的传输用整数传输代表这些信息,传输层收到这个socket自己找本地的关系去查看获取这些信息(ip,端口)

前言

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


一、Socket(套接字)

一些名词:
image.png

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

  • 位置:层间界面的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返回一个文件句柄一样,以后使用这个文件句柄,而不是使用这个文件的目录名、文件名
    • 简单,便于管理

image.png

image.png

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

  • 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(另外一个段节点)

image.png

套接字(socket):

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

image.png

二、多路复用/解复用

发送方主机多路复用

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

接收方主机多路解复用

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

三、多路解复用

(1)多路解复用原理

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

image.png

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

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

image.png

例子:
image.png

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

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

例子:
主机上的多进程(多个应用)
image.png

主机一个进程上(同一个应用)的多线程

image.png

image.png
image.png


总结

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。