通信

第一次课

给你一囗甜甜゛ 提交于 2020-03-09 22:06:15
计算机网络就是利用通讯线和通讯设备,用一定的方法链接,将分布不同地理位置,具有独立功能多台计算机相互连接起来,在网络然间的支持下进行数据通信,实现支援共享,网络分为局域网互联网广域网 来源: 51CTO 作者: wx5e65aa702c9a2 链接: https://blog.51cto.com/14748603/2476808

Interview_操作系统_day21

為{幸葍}努か 提交于 2020-03-09 21:45:12
并发和并行 并发: 同一时刻只能运行一条指令。在宏观上看起来是多个程序同时运行,但微观上是多个程序的指令交替着运行的。并发不能提高计算机的性能,只能提高效率。 并行: 同一时刻可以运行多条指令。无论从宏观还是微观,都是一起执行的。比如多核 \(cpu\) ,多个程序分别运行在不同的核上,互不影响。并行确实提高了计算机的效率。 用户态和内核态区别 操作系统两种 \(CPU\) 状态: 核心态:运行操作系统程序 用户态:运行用户程序 操作系统的指令划分: 特权指令:只能由操作系统使用,用户不能使用的指令。 非特权指令:用户程序可以使用的指令。 特权级: \(R0、R1、R2、R3\) \(R0\) 相当于内核态, \(R3\) 相当于用户态 不同的特权级别可以运行不同的指令 区别: 内核态和用户态是操作系统的两种运行级别。用户态拥有最低的特权级,核心态拥有较高的特权级。 处于用户态时,进程能够访问到的内存空间和对象受到限制,其所占有的处理机是可以被抢占的。 处于内核态时,进程能够访问所有的内存空间和对象,且所占有的处理机是不可以被抢占的。 操作系统为什么要分内核态和用户态 为了安全。在 \(cpu\) 中,如果有些指令用错会使系统崩溃,所以用户程序是不可信的,无论程序员是否有意,都可能把系统弄崩溃。 分了内核态和用户态之后,操作系统对内核级别指令进行封装,然后为用户提供系统服务

基于UDP网络编程的服务器和客户端

风格不统一 提交于 2020-03-09 13:53:42
理解UDP UDP和TCP一样同属于TCP/IP协议栈的第二层,即传输层。 UDP套接字的特点 UDP的工作方式类似于传统的信件邮寄过程。寄信前应先在信封上填好寄信人和收信人的地址,之后贴上邮票放进邮筒即可。当然信件邮寄过程可能会发生丢失,我们也无法随时知晓对方是否已收到信件。也就是说信件是一种不可靠的传输方式,同样的,UDP所提供的也是一种不可靠的数据传输方式(以信件类比UDP只是通信形式上一致性,之前也以电话通信的方式类比了TCP的通信方式,而实际上从通信速度上来讲UDP通常是要快于TCP的;每次交换的数据量越大,TCP的传输速率就越接近于UDP)。因此,如果仅考虑可靠性,TCP显然由于UDP;但UDP在通信结构上较TCP更为简洁,通常性能也要优于TCP。 区分TCP和UDP最重要的标志是流控制,流控制赋予了TCP可靠性的特点,也说TCP的生命在于流控制。 UDP内部工作原理 与TCP不同,UDP不会进行流控制,其在数据通信中的作用如下图所示。可以看出,IP的作用就是让离开主机B的UDP数据包准确传递到主机A,而UDP则是把UDP包最终交给主机A的某一UDP套接字。UDP最重要的作用就是根据端口号将传输到主机的数据包交付给最终的UDP套接字。 数据包传输过程UDP和IP的作用 UDP的高效使用 TCP用于对可靠性要求较高的场景,比如要传输一个重要文件或是压缩包

六.docker网络模式

拈花ヽ惹草 提交于 2020-03-09 03:13:10
一.网络模式 --net=bridge 默认 2.--net=host docker run -it busybox 默认运行 生成独立网络命令空间 docker run -it --net=host busybox --net=host 与宿主机一同使用网络命令空间,其他隔离 在容器内使用端口相当于占用宿主机的端口; 3.--net=none Docker run -it --net=none 网络独立,但每配置任何地址 4.--net=container:name docker exec -it bs sh 运行一般容器 netstat -nltp docker run -itd --name nginx05 --net=container:bs nginx netstat -nltp Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN - 具备同样的网络信息,容器除外,其他都是隔离; 5.自定义网络 与默认的bridge原理一样,但自定义网络具备内部DNS发现,可以通过容器名或者主机名容器之间网络通信 docker network create bs-test 创建网络bs-test docker run -it

NOVA源码分析——NOVA中的RabbitMQ解析

瘦欲@ 提交于 2020-03-08 18:41:47
本篇文章是由本人阅读NOVA源码过程中的心得、 RabbitMQ 的官方文档以及网上的一些资料整理总结而成的,也为了方便以后对这部分内容的复习。 NOVA是OpenStack系统的核心模块,主要负责虚拟机实例的生命周期管理、网络管理(前几个版本)、存储卷管理(前几个版本)、用户管理以及其他相关云平台管理功能,在能力上类似于Amazon EC2和Rackspace Cloud Servers。 消息队列(Queue )与数据库(Database) 作为Nova总体架构中的两个重要组成部分,二者通过系统内消息传递和信息共享的方式实现任务之间、模块之间、接口之间的异步部署,在系统层面大大简化了复杂任务的调度流程与模式,是整个OpenStack Nova系统的核心功能模块。终端用户(DevOps、Developers和其他OpenStack组件)主要通过Nova API实现与OpenStack系统的互动,同时Nova守护进程之间通过消息队列和数据库来交换信息以执行API请求,完成终端用户的云服务请求。 Nova采用无共享、基于消息的灵活架构,意味着Nova的组件有多种安装方式,可以将每个Nova-Service模块单独安装在一台服务器上,同时也可以根据业务需求将多个模块组合安装在多台服务器上。 1. RabbitMQ OpenStack Nova系统目前主要采用 RabbitMQ

Android线程通信

廉价感情. 提交于 2020-03-08 18:11:38
摘要   andriod提供了 Handler 和 Looper 来满足线程间的通信。例如一个子线程从网络上下载了一副图片,当它下载完成后会发送消息给主线程,这个消息是通过绑定在主线程的Handler来传递的。 正文 图解: 代码示例: /** * @author allin.dev * http://allin.cnblogs.com */ public class MainThread extends Activity { private static final String TAG = "MainThread"; private Handler mMainHandler, mChildHandler; private TextView info; private Button msgBtn; @Override public void onCreate( Bundle savedInstanceState ) { super.onCreate( savedInstanceState ); setContentView( R.layout.main ); info = (TextView) findViewById( R.id.info ); msgBtn = (Button) findViewById( R.id.msgBtn ); mMainHandler = new

TCP 通信概述

血红的双手。 提交于 2020-03-08 15:06:09
TCP通信能实现两台计算机之间的数据交互,通信的两端,要严格区分为客户端(Client)与服务端(Server)。 两端通信时步骤 : ( 1 )服务端程序,需要事先启动,等待客户端的连接。 ( 2 )客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端。 服务器使用客户端的流和客户端交互 在Java中,提供了两个类用于实现TCP通信程序 : (1)客户端: java.net.Socket 类表示。创建 Socket 对象,向服务端发出连接请求,服务端响应请求,两者建立连接开始通信。 (2)服务端: java.net.ServerSocket 类表示。创建 ServerSocket 对象,相当于开启一个服务,并等待客户端的连接。 来源: CSDN 作者: 给你一口甜 链接: https://blog.csdn.net/nanhuaibeian/article/details/104727794

深入golang之---goroutine并发控制与通信

*爱你&永不变心* 提交于 2020-03-08 11:49:42
深入golang之—goroutine并发控制与通信 开发go程序的时候,时常需要使用goroutine并发处理任务,有时候这些goroutine是相互独立的,而有的时候,多个goroutine之间常常是需要同步与通信的。另一种情况,主goroutine需要控制它所属的子goroutine,总结起来,实现多个goroutine间的同步与通信大致有: - 全局共享变量 - channel通信(CSP模型) - Context包 本文章通过goroutine同步与通信的一个典型场景-通知子goroutine退出运行,来深入讲解下golang的控制并发。 通知多个子goroutine退出运行 goroutine作为go语言的并发利器,不仅性能强劲而且使用方便:只需要一个关键字go即可将普通函数并发执行,且goroutine占用内存极小(一个goroutine只占2KB的内存),所以开发go程序的时候很多开发者常常会使用这个并发工具,独立的并发任务比较简单,只需要用go关键字修饰函数就可以启用一个goroutine直接运行;但是,实际的并发场景常常是需要进行协程间的同步与通信,以及精确控制子goroutine开始和结束,其中一个典型场景就是主进程通知名下所有子goroutine优雅退出运行。 由于goroutine的退出机制设计是,goroutine退出只能由本身控制

物联网常用天线指南

这一生的挚爱 提交于 2020-03-08 10:42:25
物联网、智能硬件产品,要联网传输数据,都需要有天线。空间越小、频段越多,天线设计越复杂。 常用天线,按照使用场景分类,主要有以下几种: 大尺寸产品,用外置天线 外置天线一般都是标准品,买频段合适的,无需调试,即插即用。 例如快递柜、售货机这些,普遍使用磁吸的外置天线,吸在铁皮外壳上即可。 这些天线不能放在铁皮柜里面,金属会屏蔽天线信号,所以只能放在外面。 好处是使用方便、价格便宜,坏处是不能用在小尺寸产品上。 磁吸外置天线,SMA接头 低频通信,用外置天线 天线的长度大约是电磁波波长的1/4,所以信号频率越低,天线的长度越长。 因此100MHz左右的FM收音机需要长杆天线,400MHz左右的对讲机,也需要用外置长杆天线。物联网常用的433MHz的无线串口,通常也用外置天线。 天线做的更短,如1/8波长或1/16波长,也能用,只是效率会下降。某些设备会采用“短天线+LNA”的方式,也能达到长天线的接收效果。 但是短天线要达到长天线的发射效果,就需要提升发射功率了,因此对讲机需要发射信号,都是长的外置天线,而FM收音机只收不发,有内置接收天线。 高频信号,可以用内置天线 例如2G(900MHz)、4G(700-2600MHz)、WIFI和蓝牙(2.4GHz)、GPS(1.5GHz),这些常用的物联网通信方式,可以做内置天线。 对于手持机、穿戴设计、智能家居等小尺寸产品,很少使用外置天线

华为IPV6-IPV4双栈过渡通信

老子叫甜甜 提交于 2020-03-08 09:53:26
一、实现内网PC1与PC4/PC5能同时通信 二、配置思路 1.配置PC和路由器接口地址 2.在R1上配置两条默认路由指向R2和R3 3.在R2和R3分别配置静态路由指向内网网段 4.验证配置效果 三、PC的配置 1.PC1配置 2.PC4配置 3.PC5配置 四、路由器的配置 1.R1配置 [R1]ipv6 R1]interface g0/0/0 [R1-GigabitEthernet0/0/0]ip address 1.1.1.254 24 [R1-GigabitEthernet0/0/0]ipv6 enable [R1-GigabitEthernet0/0/0]ipv6 address 1::254 64 [R1]interface g0/0/2 [R1-GigabitEthernet0/0/2]ip address 13.1.1.1 24 [R1-GigabitEthernet0/0/1]ipv6 enable [R1-GigabitEthernet0/0/1]ipv6 address 12::1 64 [R1]ipv6 route-static :: 0 12::2 [R1]ip route-static 0.0.0.0 0 13.1.1.3 2.R2配置 [R2]ipv6 [R2-GigabitEthernet0/0/1]ipv6 enable [R2