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

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



前言

发送方法,接收方多路复用原理、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,端口信息将接收到的报文段发给正确的套接字(和对应的应用进程)。

相关文章
|
1天前
|
网络协议 网络安全
计算机网络-传输层
计算机网络-传输层
|
20天前
|
存储 Java Unix
(八)Java网络编程之IO模型篇-内核Select、Poll、Epoll多路复用函数源码深度历险!
select/poll、epoll这些词汇相信诸位都不陌生,因为在Redis/Nginx/Netty等一些高性能技术栈的底层原理中,大家应该都见过它们的身影,接下来重点讲解这块内容。
|
1月前
|
网络协议 算法 Go
在go内置网络库中的路由和多路复用
【7月更文挑战第6天】本文介绍Go的`net/http`库提供基础的HTTP服务,`ListenAndServe`管理TCP连接,处理请求。处理程序默认使用`DefaultServeMux`。也可以选择多路复用模式ServeMux。它们的示例代码展示了自定义`ServeHTTP`结构体处理不同路由 。
45 2
|
2月前
|
机器学习/深度学习 网络协议 网络性能优化
[计算机网络]深度学习传输层TCP协议
[计算机网络]深度学习传输层TCP协议
33 1
|
1月前
|
缓存 网络协议 网络性能优化
计算机网络—传输层-tcp、udp协议详解
计算机网络—传输层-tcp、udp协议详解
|
2月前
计算机网络——数据链路层-媒体接入控制-静态划分信道(频分复用FDM、时分复用TDM、波分复用WDM、码分复用CDM)
计算机网络——数据链路层-媒体接入控制-静态划分信道(频分复用FDM、时分复用TDM、波分复用WDM、码分复用CDM)
48 1
|
2月前
计算机网络:信道复用技术概念解析
计算机网络:信道复用技术概念解析
49 0
|
2月前
|
网络协议 程序员 API
网络原理(2)——TCP协议(传输层)
网络原理(2)——TCP协议(传输层)
30 0
|
3月前
|
vr&ar C语言
计算机网络:信道复用
计算机网络:信道复用
44 0
|
3月前
|
数据中心

热门文章

最新文章