快速理解 X server, DISPLAY 与 X11 Forwarding

X server

X server是X Window System (简称X11或者X)系统中的显示服务器(display server),用于监听X client发送来的图形界面显示请求,并且将图形界面绘制并显示在屏幕(screen)上

概念解释

  • X client:X客户端。通常是各类GUI应用,如Firefox浏览器、xterm、xclock等等
  • screen:逻辑概念上的屏幕。可以是一台物理显示器、多台物理显示器或者是VNC虚拟显示器
  • X client与X server的通信方式有三种:TCPunix socket通过内存通信。后两种方式仅限于X client与X server都位于同一机器的情况,通信效率更高。

概念关系

  • 一台电脑上可以运行多个X server
  • 一个X server可以管理多个screen
  • 一个screen可以对应单个或多个物理显示器(多个显示器合成一个逻辑screen)

X server

DISPLAY

DISPLAY变量用于控制“在哪里绘制和显示图形界面”。

DISPLAY变量值的格式:

  1. X client与X server都位于同一机器,通过unix socket内存通信
    :<机器运行的第几号X server>.<该X server管理的第几号screen>
    :0.0:0.1:1.0
  2. X client与X server位于不同机器,通过TCP协议通信
    <机器的IP或主机名>:<该机器运行的第几号X server>.<该X server管理的第几号screen>
    192.168.1.2:0.0127.0.0.1:1.0localhost:10.0

注意:

  • :0.0127.0.0.1:0.0localhost:0.0效果上都是在同一机器绘图,但是:0.0走的是unix socket内存通信,后两者则是TCP协议通信。
  • localhost是一个特殊的主机名,特指机器自身。在IPV4语境下,localhost主机名经过查表后会被翻译为IP地址127.0.0.1。因此,127.0.0.1:0.0localhost:0.0表意相同。

使用场景

我需要在树莓派的Linux系统里运行火狐浏览器,然后把浏览器的图形界面展现在我的笔记本电脑上。

  • 我有一台笔记本电脑,IP为192.168.31.200,仅有一块显示屏。
  • 笔记本电脑的系统里运行着一个0X server。该X server管理着一个0screen0screen的内容会展现在笔记本的显示屏中。
  • 我还有一块树莓派Linux开发板。树莓派和笔记本电脑处于同一局域网,并且树莓派没有连接显示屏。
  • 我在笔记本电脑上,通过SSH登录树莓派系统的Shell,然后运行了如下命令
# 树莓派的Shellexport DISPLAY=192.168.31.200:0.0
firefox

上述命令的含义为

给变量DISPLAY赋值192.168.31.200:0.0并将其设置为当前Shell的环境变量。

在Shell中运行”火狐浏览器“。

在执行以上命令后,主要经历了下面几个步骤:

  • 前提条件:我的笔记本电脑上运行着0号X server,它会监听本机所有IP(包括127.0.0.1192.168.31.200等)上来自6000 + 该服务器运行的第几号X server(即6000TCP端口的绘图请求。
  1. 我在树莓派的Shell中运行了火狐浏览器。火狐浏览器是一个图形用户界面GUI)程序,必须找到一个地方显示图形界面。
  2. 火狐浏览器此刻的身份是X client。X client为了找到自己应该“在哪里绘制和显示图形界面”,首先会获取当前Shell中DISPLAY变量的值192.168.31.200:0.0
  3. X client解析完DISPLAY的值后,会把GUI绘图请求通过TCP协议发送至192.168.31.200机器的6000 + 0(即6000)端口,请求“将绘制结果显示在该X server管理的第0screen上”。
  4. 192.168.31.200机器上,负责监听6000端口的0X server收到请求。X server解析绘图指令,并在指定的0screen中绘图。
  5. 火狐浏览器的图形界面出现在0screen对应的显示器中,也就是出现在了我笔记本电脑的屏幕上。

X11 Forwarding

What You Need to Know About X11 Forwarding

# 本地机器的Shell# 配置本地机器的DISPLAY环境变量
export DISPLAY=127.0.0.1:0.0# 开启X11 Forwarding功能的SSH连接
ssh -X 远程机器用户名@远程机器IP地址# 登录远程机器的Shell后
# Shell的DISPLAY环境变量会被SSH server自动设置为localhost:10.0

在远程机器的Shell中运行一个GUI程序:

  1. 远程机器的X client解析Shell环境变量DISPLAY的值localhost:10.0,通过TCP协议向远程机器自身的第10号X server发送绘图请求。
  2. 远程机器上的SSH server会充当第10号X server,接收这个请求。
  3. SSH server把请求通过加密隧道传输给本地机器的SSH client。
  4. 本地机器的SSH client接受到绘图请求后,会充当X client,解析本地Shell环境变量DISPLAY的值127.0.0.1:0.0,然后向对应的X server发送绘图请求。
  5. 本地机器的第0号X server接收到绘图请求,在指定的0号screen中绘图。
  6. 图形界面出现在本地机器的0号screen对应的显示器中。
    X11 Forwarding

参考

What are X server, display and screen?
DISPLAY

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

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

相关文章

eslint和prettier格式化冲突

下载插件 ESLint 和 Prettier ESLint 进入setting.json中 setting.json中配置 {"editor.tabSize": 2,"editor.linkedEditing": true,"security.workspace.trust.untrustedFiles": "open","git.autofetch": true,"…

伦敦银和伦敦金的区别

伦敦银河伦敦金并称贵金属交易市场的双璧&#xff0c;一般投资贵金属的投资者其实不是交易伦敦金就是交易伦敦银。相信经过一段时间的学习和投资&#xff0c;不少投资者都能分辨二者的区别。下面我们就来谈谈伦敦银和伦敦金有什么异同&#xff0c;他们在投资上是否有差别。 交易…

KMP算法开荒

文章目录 一 、前言二、 暴力解法三、KMP算法原理3.1 自动子串的指针3.2 跳过多少个字符3.3 next数组 - 暴力3.4 next数组 - 求解 四 KMP实现 一 、前言 字符串匹配 import re print(re.search(www, www.runoob.com).span()) # 在起始位置匹配 print(re.search(com, www.run…

【Apollo学习笔记】——规划模块TASK之PIECEWISE_JERK_PATH_OPTIMIZER

文章目录 前言PIECEWISE_JERK_PATH_OPTIMIZER功能简介PIECEWISE_JERK_PATH_OPTIMIZER相关配置PIECEWISE_JERK_PATH_OPTIMIZER总体流程OptimizePathpiecewise_jerk_problem二次规划问题标准形式定义优化变量定义目标函数设计约束OptimizeFormulateProblem计算QP系数矩阵Calculat…

【C++】AVL树(高度平衡二叉树)

AVL树 概念AVL树节点定义AVL树节点插入AVL树四种旋转情况左单旋右单旋先左单旋再右单旋先右单旋后左单旋 元素的插入及控制平衡判断最后节点是否平衡 概念 二叉搜索树虽然可以缩短查找的效率&#xff0c;但如果数据有序或者接近有序二叉搜索树将退化为单支树&#xff0c;查找元…

(mybatis与spring集合

mybatis与spring集合 一、Spring集成MyBatis1.1. pom依赖1.2. 配置文件1.3. Spring整合MyBatis1.3.1. 配置自动扫描JavaBean1.3.2. 配置数据源1.3.3. 配置session工厂1.3.4. 配置mapper扫描接口1.3.5. 配置事务管理器1.3.6. 配置AOP自动代理1.4. 测试 二、Spring集成PageHelper…

Firefox(火狐),使用技巧汇总,问题处理

本文目的 说明火狐如何安装在C盘之外的盘&#xff0c;即定制安装路径。如何将同步功能切换到本地服务上。默认是国际服务器。安装在C盘之后如何解决&#xff0c;之前安装的扩展无法自动同步的问题。扩展或插件失效问题解决方案。顺带分享一下&#xff0c;火狐的一些比较好用的…

经管博士科研基础【4】排队论M/M/1公式

公式来源于B站睿智小课堂&#xff1a; 上面的公式要学会推导&#xff0c;具体推导过程也要学习一下【可见B站睿智小课堂】 具体推导思路是&#xff1a; 【1】先求解得到系统的队长L&#xff1a;这需要用到马尔科夫排队过程的相关知识&#xff0c;也就是说仅仅在排队过程是马尔…

机器学习简介

文章目录 引言1. 从找规律说起2. 机器学习应用2.1 有监督学习2.2 无监督学习2.2.1 聚类2.2.2 降维 3. 机器学习一般流程4. 机器学习常用概念5. 深度学习简介5.1 引入 -- 猜数字5.2 深度学习5.2.1 隐含层/中间层5.2.2 随机初始化5.2.3 损失函数5.2.4 导数与梯度5.2.5 梯度下降5.…

VScode 编辑器报错: ‘HelloWorld‘ is declared but its value is never read.

.vue文件被标识红色波浪线&#xff1b;提示&#xff1a; HelloWorld is declared but its value is never read. 问题原因&#xff1a; 因为vue3已经不支持vetur插件。 1、在扩展里面进行搜索Vetur插件&#xff0c;进行禁用或卸载&#xff1b; 2、在 VScode扩展里面搜索并下载…

浅谈大数据智能审计如何助力审计工作

随着互联网大数据的持续发展&#xff0c;大数据审计近年来面对着相等的机遇和挑战。那么&#xff0c;如果利用大数据等相关技术对审计工作作出突出贡献&#xff0c;单位和企业又该从何入手做好大数据审计工作应用&#xff0c;这些都成为每位审计人员将要面临的重要问题。 1. 政…

使用WebDriver采样器将JMeter与Selenium集成

第一步&#xff1a; 在JMeter中添加Selenium / WebDriver插件 第二步&#xff1a; 创建一条测试计划–添加线程组 添加配置元素 - jpgc - WebDriver Sampler 添加配置元素 - jpgc - Chrome Driver Config 并且添加监听器查看结果树 第三步&#xff1a; 下载 chromedriver…

Unity 3D之 利用Vector3 计算移动方向,以及实现位移多少

文章目录 先分析代码&#xff0c;从代码中了解Vector3 moveDirection new Vector3(10f, 0f, 100f);合法吗Vector3 moveDirection new Vector3 (xf,yf,zf)不是用来表示三维坐标的怎么表示在某个方向的位移 先分析代码&#xff0c;从代码中了解 这段代码是一个在游戏开发中常见…

Linux 多线程基础

文章目录 前言一、多线程基础函数1. pthread_create2. pthread_self3. pthread_exit4. pthread_join5. pthread_cancel6. pthread_detach 二、线程间的共享数据三、多线程 &#xff0c;进程对比总结 前言 一、多线程基础函数 1. pthread_create 创建新的线程。 #include <…

数组名和函数名是指针?指针和引用底层一样?

在2023/8/26日晚上&#xff0c;我看到一个所谓“典”的视频&#xff0c;一开始还没太在意&#xff0c;后面想了想发现我貌似也一直犯了以下的错误&#xff0c;而错误的原因在于我在新手阶段学习C/C并不是查阅文档扎好脚步学习的&#xff0c;而是被铺天盖地的新手学习基础教程里…

基于Java+SpringBoot+Vue前后端分离纺织品企业财务管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

uni-app 分不清的全局变量this, uni, $u, vm, uni.$u, this.$u

项目引入了uview,并将uview所有模块指给uniapp全局变量uni uni.$u$u 在登录页面&#xff0c;或者APP.vue打印以下变量&#xff1a; this, uni, $u, vm, uni.$u, this.$u

2023科隆游戏展:虚幻5游戏百花齐放,云渲染助力虚幻5高速渲染

8月23日&#xff0c;欧洲权威级游戏展示会——科隆游戏展拉开帷幕。今年的参展游戏也相当给力&#xff0c;数十款游戏新预告片在展会上公布&#xff0c;其中有不少游戏使用虚幻5引擎制作&#xff0c;开创了游戏开发新纪元。 虚幻5游戏百花齐放&#xff0c;渲染堪比电影级效果 …

2023年国赛 高教社杯数学建模思路 - 案例:随机森林

文章目录 1 什么是随机森林&#xff1f;2 随机深林构造流程3 随机森林的优缺点3.1 优点3.2 缺点 4 随机深林算法实现 建模资料 ## 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 什么是随机森林&#xff…