精华内容
下载资源
问答
  • 当前,随着互联网技术日益成熟,有线网络从铜线向光纤的顺利...那么,常见的物联网通信技术那些呢? 从技术层面来讲,通常将物联网分为三层,分别是感知层、网络层、应用层。其中,网络层肩负数据、信息安全可靠...

    当前,随着互联网技术日益成熟,有线网络从铜线向光纤的顺利改造,网络传输的稳定性和传输速率已经有了很大提升,可以满足广大网络用户基础需求。随着科技的进步,大数据的传输和密集型的网络应用环境越来越多,物联网通信技术正式肩负解决现实生活中复杂通信问题的使命应运而生。那么,常见的物联网通信技术有那些呢?

    从技术层面来讲,通常将物联网分为三层,分别是感知层、网络层、应用层。其中,网络层肩负数据、信息安全可靠地通信和传输,除了有线网络、无线网络传输就成为物联网短距离传输的重要技术。

    常见的近距离无线网络通信技术主要主要分为两类:一类是Zigbee、WiFi、蓝牙、Z-wave等短距离通信技术;另一类是LPWAN(low-powerWide-AreaNetwork,低功耗广域网),即广域网通信技术。LPWA又可分为两类:一类是工作于未授权频谱的LoRa、SigFox等技术;另一类是工作于授权频谱下,3GPP支持的2/3/4G蜂窝通信技术,比如EC-GSM、LTECat-m、NB-IoT等。

    Zigbee是基于IEEE802.15.4标准的低功耗个域网协议。根据这个协议规定的技术是一种短距离、低功耗的无线通信技术。其特点是近距离、低复杂度、自组织、低功耗、低数据速率、低成本。是一种便宜的,低功耗的近距离无线组网通讯技术。Zigbee使用频段为2.4G,868MHz以及915MHz。在不使用功率放大器的前提下,Zigbee的有效传输范围为10-75m。

    在无线通信世界中,Wi-Fi可是目前人们最为常用的无线技术之一。伴随笔记本电脑、手机、平板等设备对Wi-Fi的大量应用,现在就连摄像头、电视、汽车等等也开始广泛地使用Wi-Fi技术。据统计,目前的Wi-Fi设备发货量已经超过了100亿台,其中有60亿设备正在使用中。同时,全球有7亿多家庭正在使用Wi-Fi,而预计到2019年,世界上将有90%的家庭都会使用Wi-Fi。

    仅次于Wi-Fi的便是蓝牙技术了,它通常被用于短距离设备间的交换数据,如键盘、鼠标和蓝牙耳机等等。然而传统的蓝牙标准由于没有Wi-Fi那样快的传输,因此往往被人们所诟病。不过伴随蓝牙标准的不断升级完善,在蓝牙4.0标准中已提出了“低功耗蓝牙”、“传统蓝牙”和“高速蓝牙”三种模式,并针对物联网(InternetofEverything)发展而推出了BluetoothSmart技术,使其成为能够继续与Wi-Fi保持竞争的又一关键技术。

    在广域网通信技术中,窄带物联网NB-IOT因覆盖广、连接多、速率低、成本低、功耗低、架构优等诸多优点,是国际、国内诸多厂商最为认可的技术之一,受到市场热捧,并导致资本方大量介入,未来有望成为5G关键性技术标准之一。

    最近、火爆市场的共享单车行业领军企业ofo宣布与华为、中国电信达成共享单车及物联网合作伙伴关系,三方将基于全球领先的NB-IoT标准合作开发新型NB-IoT共享单车,合作探索共享单车新商业模式,共同打造共享单车行业标杆。这是华为携NB-IoT技术在国内破冰式的商业应用,以雄赳赳的姿态奠定未来5G时代游戏规则制定者身份。

    另外,近场通信的NFC,利用可见光通讯技术的Li-Fi,利用电线来传网络信号的AirGig等,都是目前市场上已经应用或者正在通往商用的路上,相信伴随着5G正式商用,会有更多通信技术进入市场,未来,通信行业又是一个诸侯争霸的时代!
      人工智能、大数据、云计算和物联网的未来发展值得重视,均为前沿产业,多智时代专注于人工智能和大数据的入门和科谱,在此为你推荐几篇优质好文:
    物联网技术分为四个层次,具体是怎么划分的?
    http://www.duozhishidai.com/article-1621-1.html
    物联网技术体系、网络架构和产业链条,入门知识大全,值得典藏
    http://www.duozhishidai.com/article-10755-1.html
    什么是物联网平台,从完整的物联网系统架构来介绍物联网平台
    http://www.duozhishidai.com/article-2110-1.html


    多智时代-人工智能大数据学习入门网站|人工智能、大数据、物联网云计算的学习交流网站

    多智时代-人工智能大数据学习入门网站|人工智能、大数据、云计算、物联网的学习服务的好平台
    展开全文
  • 常见网络通信制式基本常识

    千次阅读 2017-11-17 20:16:46
    移动终端行业(手机),最基本最常见网络制式:2G、3G、4G、三大运营商的特点 测试网络要懂得网络协议,协议测试这块很吃香,一般做协议开发的程序猿也只是分析协议问题的多,动手写代码的少,现在的网络和协议都...

    移动终端行业(手机),最基本最常见的网络制式

     

           测试网络要懂得网络协议,协议测试这块很吃香,一般做协议开发的程序猿也只是分析协议问题的多,动手写代码的少,现在的网络和协议都很完善,所以相对比较轻松,一般常用的工具是QXDM,要向学会分析要懂得协议,这块感兴趣的可以去搜索相关协议知识自学吧(刚入门很难哦)!

     

     

     

                         2G                                            3G                                  4G

    移动           GSM                                         TD-CDMA                       LTE(TD-LTE)

                        

    联通           GSM                                         WCDMA                         LTE(FDD-LTE)

     

    电信          CDMA( 1x语音通话)            EVDO(3G上网)        LTE(FDD-LTE)

                                                                   CDMA2000

     

    专网          窄带                                          GOTA(宽带)              B-runC(宽带)

     

    WIFI (WLAN) ----                                     -----                                 -----

     

    蓝牙          ----                                               ----                                    ----

     

     

    以下部分超极本知识是网上摘抄的,大家对号入座(4G和5G无介绍):

     

    第二章、网络制式介绍

     

    第一节:什么是网络制式

    手机制式,也称为手机网络制式,是一种手机信号传输标准。从手机诞生之日起到现在主要有以下几种网络制式:1G时代的NMT、AMPS、TACS(现在已经淘汰),2G时代的GSM、CDMA和3G时代的TD-SCDMAS、WCDMA和CDMA2000。

     

    第二节:三代手机网络制式介绍及对比

     

    第一代---模拟制式手机(1G)

    第一代模拟制式手机(1G)只能进行语音通话,容易被干扰,保密性差。也就是在20世纪八九十年代香港美国等影视作品中出现的大哥大。最先研制出大哥大的是美国摩托罗拉公司的 Cooper博士。由于当时的电池容量限制和模拟调制技术需要硕大的天线和集成电路的发展状况等等制约,这种手机外表四四方方,只能成为可移动算不上便携。很多人称呼这种手机为“砖头”或是黑金刚等。

    主要有NMT、AMPS、TACS等网络制式

     

    第二代—数字通信手机(2G)

    第二代手机为数字通信手机,以数字语音传输技术为核心。“数字通信”是指用数字信号作为载体来传输信息,或者用数字信号对载波进行数字调制后再传输的通信方式。现在最常见的数字信号是幅度取值只有两种(用0和1代表)的波形,称为“二进制信号”。

    主要有GSM和CDMA网络制式。

     

    GSM

    GSM(Global System For Mobile Communication)网即全球移动通信系统,又称“全球通”,很多公司参与了标准的制定工作,因全欧洲首先使用,又称欧制式。现大部分亚洲国家均有网络(900MHz 及1800MHz),美洲则在九十年代后期也开始有PCS (1900MHz)。

     

    GSM采用的是数字调制技术,其关键技术之一是时分多址,因此其话音清晰,保密容易,能提供的数据传输服务较多。GSM系统有几项重要特点:防盗拷能力佳、网络容量大、号码资源丰富、通话清晰、稳定性强不易受干扰、信息灵敏、通话死角少、手机耗电量底等。

     

    CDMA

    CDMA (Code Division Multiple Access),即码分多址技术,是高通率先开发的、用于提供十分清晰的语音效果的数字技术。CDMA能够提供比其他无线技术更好的、成本更低的语音效果、保密性、系统容量和灵活性,以及更加完善的服务,如短信息、e-mail、上网等。

     

     

    数字通信对比模拟通信的优势

    首先是抗干扰能力强。模拟信号在传输过程中噪声会随着信号被传输、放大、严重影响通信质量。数字通信中的信息是包含在脉冲的有无之中的,只要噪声绝对值不超过某一门限值,接收端便可判别脉冲的有无,以保证通信的可靠性。

     

    其次是远距离传输仍能保证质量。因为数字通信是采用再生中继方式,能够消除噪音,再生的数字信号和原来的数字信号一样,可继续传输下去,这样通信质量便不受距离的影响,可高质量地进行远距离通信。

     

    第三是与模拟网相比,数字网还能提供多种增值业务,例如,短信。彩信等。手机式样新颖,小巧精致等优点。

     

    第三代----第三代手机(3G)

    所谓3G,其实它的全称为3rd Generation,中文含义就是指第三代数字通信,将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统。1995年问世的第一代手机只能进行语音通话;1996到1997年出现的第二代数字手机便增加了接收数据的功能,如接受电子邮件或网页;第三代与前两代的主要区别不仅是在传输声音和数据的速度上的提升,更主要是与互联网的深度结合。

          主要有TD-SCDMA、WCDMA、CDMA2000三大网络制式。

     

    3G制式——W-CDMA

    也称为WCDMA,全称为WidebandCDMA,其支持者主要是以GSM系统为主的欧洲厂商,包括欧美的爱立信、阿尔卡特、诺基亚、朗讯、北电以及日本的NTT、富士通、夏普等厂商。这套系统能够架设在现有的GSM网络上,对于系统提供商而言可以较方便地过渡。由于GSM在全球的广泛使用,WCDMA具有先天的市场优势。

     

    3G制式——CDMA200

    由美国高通北美公司为主导提出,摩托罗拉、朗讯和韩国三星都已参与,韩国现在成为该标准的主导者。这套标准是从窄频CDMA One数字标准衍生出来的,可以从原有的CDMA One结构直接升级到3G,建设成本低廉。但目前使用CDMA的地区还不多,CDMA200的支持者不如WCDMA多。不过CDMA200的研发技术却是目前各标准中进度最快的,许多3G手机已经率先面世。

     

      CDMA2000由CDMA2000 1X和CDMA2000 1x EV 两大部分组成,CDMA2000 1x EV又可分成CDMA2000 1x EV-DO和CDMA2000 1x EV-DV。

     

    3G制式——TD-SCDMA

    TD-SCDMA:该标准是由中国独自制定的3G网络制式标准,1999年6月29日由大唐电信向ITU提出。该标准将智能无线、同步CDMA和软件无线电等当今国际领先技术融于其中,在频谱利用率、对业务支持具有灵活性、频率灵活性及成本等方面的独特优势。另外,由于中国国内庞大的市场,该标准受到各大主要电信设备厂商的重视,全球一半以上的设备厂商都宣布可以支持TD-SCDMA标准。

     

     

    4G

     

    暂未找到相关资料,请补充,略!!!!!

     

    5G

    新出的,无相关相信资料,略!!!!

    专网

    也就是除了三大运营商意外,自己搭建的网络通信,也叫集群,类似于局域网,一般用于政府、军队、专门的单位等而建立,常见于对讲机(专业级的哦,一般市场上的对讲机采用的是类似收音机频率,距离大约在2公里内,专业级根据网络搭建的情况距离越远,当然也有部分基于三大运营商,为了节省开支可以更长距离通信)。

    红外已淘汰,略!!!

     

    WLAN无线上网

     

    WLAN就是无线局域上网,它不是用来取代有线局域网络,而是用来弥补有线局域网络之不足,以达到网络延伸之目的。目前通过手机无线上网模式主要有:GPRS,EDGE,CDMA,WIFI,WAPI等。其中WIFI和WAPI以免费无线上网而备受关注。

     

    WIFI

    Wi-Fi就是一种无线联网的技术,以前通过网线连接电脑,而现在则是通过无线电波来连网;常见的就是一个无线路由器,那么在这个无线路由器的电波覆盖的有效范围都可以采用Wi-Fi连接方式进行联网,如果无线路由器连接了一条ADSL线路或者别的上网线路,则又被称为“热点”。内置了Wi-Fi模块的手机一般被认为是Wi-Fi手机。可以用来上网,而且走的不是手机的流量费用。也就是说,如果你用的是移动的卡,你用Wi-Fi上网时移动是收不到你的钱的。目前只有部分智能手机支持Wi-Fi。 

     

    WAPI

    WAPI 是 Wireless LAN Authentication and Privacy Infrastructure (无线局域网鉴别和保密基础结构)的英文缩写,是一种安全协议,同时也是中国无线局域网安全强制性标准。它像红外线、蓝牙、GPRS、CDMA1X等协议一样,是无线传输协议的一种,只不过跟它们不同的是它是无线局域网(WLAN)中的一种传输协议而已。

     

    它同WIFI一样都可以免费上网,但它比WIFI更具有保密性,同时我国强制性地要求相关商业机构执行WAPI标准,因此,国内行货手机只要是宣布支持WIFI上网就必然也支持WAPI无线上网。

     

     

    蓝牙

    蓝牙(BLUETOOTH),是1998年推出的一种新的无线传输方式,实际上就是取代数据电缆的短距离无线通信技术,通过低带宽电波实现点对点,或点对多点连接之间的信息交流。

     

    蓝牙的初衷就是短距离传输信号,传输距离小于10米(红外的传输距离在几米以内)。而在信号放大器的帮助下,通讯距离甚至可达100米左右。

     

    蓝牙优缺点总结

    蓝牙优点

    蓝牙传输是通过RF(2.4GHZ)载波进行的,因此它具有电磁波的基本特征,有较大的功率,可以增加传送距离,而且没有角度及方向性限制,具有穿墙性,可在物体之间反射、镜设、绕射。蓝牙主要用于短距离传输(最多10米)数据和语音(1Mbps),功耗非常低能,同时能连接许多元件,传输速度快。

     

    蓝牙劣势

    蓝牙成本很高;RF技术容易受频率干扰;穿墙特点对资料安全性的保护设定问题;蓝牙起步比较晚,目前还没有一个明确、统一的标准,相容性问题尚未能解决。

     

     

    其他的关于手机基本常识,请下载其他出处文档:

    http://download.csdn.net/download/kewell2004/4157737

     

    ---------------------------------完,不明白的给我留言·······················

    本文作者:享有盛誉之名

    展开全文
  • 信道传输的是电磁波信号,而电磁波是一定的频率范围,带宽指的就是这段有效的频率范围的值 即:带宽 = 最高有效频率 - 最低有效频率   好比我们人的耳朵能听见一定频率范围内的声音(20 -20000Hz),那么19000...

    正文

    回到顶部

    带宽

     

    信道传输的是电磁波信号,而电磁波是有一定的频率范围,带宽指的就是这段有效的频率范围的值

    即:带宽 = 最高有效频率 - 最低有效频率

     

    好比我们人的耳朵能听见一定频率范围内的声音(20 -20000Hz),那么19000Hz就是我们耳朵的“带宽”

     

    不同的信道,其带宽(频率范围)是不一样的,根据带宽的不同,可将信道划分为窄带信道(0 - 300Hz), 音频信道(300 - 3400Hz)和宽带信道(带宽为3400Hz以上)。我们平常说的“装宽带”,意思就是安装3400Hz以上带宽的信道的意思

     

    回到顶部

    数据传输速率

     

    数据传输速率信道每秒能传输的比特数,所以它的单位自然就是bps(比特每秒),除此外还有Kbps,Mbps等

     

    【注意】理论分析证明,信道的最大数据传输速率和带宽有直接联系,信道带宽越宽,数据传输速率就越大,因此在许多情况下,“带宽”和“传输速率”是可以互换的。

     

    回到顶部

    时延

     

    分组交换网络的时延为例(因为当前因特网和计算机网络主要采用的数据交换技术是分组交换)

    时延

    当一个分组在节点间传输时,主要的时延分为四种类型: 节点处理时延(nodal processing delay),排队时延(queuing delay),传输时延(transmission delay)和传播时延(propagation delay)

     

    如果将这四种类型的时延分别表示为d(proc),  d(queue),d(trans), d(prop)

    对一个分组而言,两个节点间的总时延d = d(proc) + d(queue)  + d(trans) + d(prop)

     

    假设发送端到接收端间有N条链路

    则对一个分组而言,忽略其他因素,端到端总时延d(end-end) = N × (   d(proc) + d(queue)  + d(trans) + d(prop)  )

     

    下面我将从单个分组从路由器A到相邻的路由器B的传输的情况入手,分别介绍这四种不同类型的时延

    图示如下:

     

     

     

     

    处理时延

    当分组到达路由器A时,首先要做的是检查分组首部并决定将该分组导向何处,并检查比特级差错,这部分的时间消耗叫做处理时延。

     

    排队时延

    分组在经过路由器A的处理后,下一步就是传输出去。一个分组的排队时延取决于先到达的,正在排队等待向链路传输的分组的数量

    1.如果前面没有分组正在从路由器A向链路传输的话,排队时延为0

    2.如果流量很大,前面有很多分组正在传输或也在等待传输,那么就要消耗很大的排队时延了。

     

    传输时延

    传输时延是路由器A将分组的所有比特推出路由器A,推向链路所需要的时间。传输时延取决于两个因素:

    1. 单个分组长度

    2. 数据传输速率

    假设分组的长度为L比特,数据传输速率为R (bps) 那么  传输时延 = L/R

    【注意】传输时延又叫做存储转发时延

     

    传播时延

    (这个概念听起来和传输时延很相似,区别我下面会讲)

     

    传播时延指的是分组的一个比特从路由器A到达到路由器B所需要的时间,传播时延取决于两个因素:

    1.链路介质(双绞线,光纤)的传播速率

    2. 节点间的距离(两个路由器间的距离)

    假设路由A,B距离为d, 链路介质传播速率为s,那么传播时延 = d/s

     

    传输时延和传播时延的比较

     

    我们把一个分组从路由器A传输到路由器B的过程,比作一批车队(10辆汽车), 全部从收费站A行驶到收费站B的过程(中间经过高速公路

     

     

    一批车队 == 一个分组

    一辆汽车 == 一个比特 (暂时不管分组长度是否合理)

    收费站A,B == 路由器A,B

     

    这批车队遵守一个“奇怪”的规则,那就是无论哪一辆汽车先到达收费站A,它都必须等待其他9辆汽车也都尾随其后到达了A,才带领这批车队依次驶出收费站A。(这就是存储转发机制,只有当一个分组的所有比特都到达了路由器,“存储完毕“后,才能转发整个分组

     

    传输时延就是这批车队依次(前后紧跟)地驶出收费站A所用的时间(将分组的所有比特推出路由器A,推向链路所用的时间)

    传播时延就是每辆汽车经过高速公路,从收费站A到达收费站B所用的时间(分组的一个比特从路由器A到达到路由器B所需要的时间)

     

    假设收费站办理手续,通过汽车的效率是 5 (辆/每分钟),而汽车在高速公路上行驶速度是100km/h。那么,因为两个收费站间距离为100km,一批汽车有10辆

     

    我们可以得出,这批汽车通过收费站所用的时间为10辆 ÷ 5(辆/每分钟) = 2分 (传输时延)

    汽车在高速公路上行驶所用的时间为100km ÷  100km/h = 1h (传播时延)

    总共用时62分钟

     

     

     

    回到顶部

    丢包率

     

    丢包意为分组丢失,什么原因会导致分组丢失呢? 这和我们上面所说的”排队时延“有关,我们说到:当大量分组在短时间内到达路由器的时候,因为无法一次性处理完毕,分组需要”排队“,但是基于路由器的设计和成本,分组队列的长度是有限的。所以,当队列满了的时候,下一个分组到达的时候,路由器会选择丢弃(drop)该分组, 这个分组便丢失了(lost),这就是所谓的丢包

     

    丢包率与分组长度以及分组发送频率相关。

     

    回到顶部

    吞吐量

     

    吞吐量的单位和数据传输速率一样,也是bps,所以它虽然名为“量”,其实也还是一种“速率”

     

    瞬时吞吐量和平均吞吐量

     

    从服务器到客户机通过计算机网络传送一个大文件,任意时刻客户机接收该文件的速率叫做瞬时吞吐量(instantaneous throughput)

    假设客户机接收该文件的所有F比特用了T秒,那么 F/T就叫做平均吞吐量(average throughput)

     

    吞吐量 == 瓶颈链路的传输速率

     

    吞吐量等于瓶颈链路(bottle link)的传输速率

     

    让我们考虑下图中尽可能简单的情况,R(s)表示服务器和路由器之间的链路速率,R(c)表示路由器和客户机之间的链路速率,显然,该服务器不能以快于R(s)的速率向链路中输送比特,路由器也不能以快于R(c)的速率转发比特。

     

     

     

    如果R(s) < R(c),那么服务器输送的比特能够"畅快地"通过路由器和客户机间的链路到达客户机。速率为R(s)

    如果R(s) > R(c) 则因为路由器将不能以接收的速率转发比特,所以链路速率为R(c)

     

    所以 上图中吞吐量为min{ Rc, Rs } bps

     

     

    同样的,对下面这n条链路

     

     

     

    吞吐量为min{ R1, R2, ... Rn }

     

    回到顶部

    误码率

    误码率是衡量通信系统传输可靠性的指标,它指的是错误接收的码元数在所传输的总码元数的比例

    计算公式: 误码率=错误码元数/传输总码元数

     

     

    回到顶部

    参考书籍

    《计算机网络-自顶向下》  作者 James F. Kurose

    《计算机网络技术基础教程》作者 刘四清

     

     

     

     

     

    其实啊,我只是把你们喝咖啡的时间,都用来喝啤酒而已

    展开全文
  • 进程间通信方式有哪些

    千次阅读 2019-05-07 08:56:22
    前言 进程能够单独运行并且完成一些任务,但是也经常免不了和其他进程传输数据或互相通知消息,即需要进行通信,本文将...进程间通信常见方式如下: 管道 FIFO 消息队列 信号量 共享内存 ...

    前言

    进程能够单独运行并且完成一些任务,但是也经常免不了和其他进程传输数据或互相通知消息,即需要进行通信,本文将简单介绍一些进程之间相互通信的技术--进程间通信(InterProcess Communication,IPC)。由于篇幅有限,本文不会对每一种进行详细介绍。

    概览

    进程间通信常见方式如下:

    • 管道

    • FIFO

    • 消息队列

    • 信号量

    • 共享内存

    • UNXI域套接字

    • 套接字(Socket)

    管道

    管道是一种古老的IPC通信形式。它有两个特点:

    • 半双工,即不能同时在两个方向上传输数据。有的系统可能支持全双工。

    • 只能在父子进程间。经典的形式就是管道由父进程创建,进程fork子进程之后,就可以在父子进程之间使用了。

    使用popen函数和pclose函数结合来执行系统命令,就用到了管道,它们声明如下:

    FILE *popen(const char *command,const char *type);
    int pclose(FILE *stream);
    

    system()函数虽然也能够执行系统命令,但是无法获取执行状态码,而执行系统命令本质上就需要创建子进程来完成,因此利用管道可以很方便的获取子进程的输出内容。本文不详细展开。

    我们看一个简单的使用管道的例子,这里使用了pipe函数来创建管道:

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    #define MAX_LEN 128
    int main(void)
    {
        /*0为读,1为写*/
        int fd[2] = {0}; //描述符
        pid_t pid = 0;
        char line[MAX_LEN] = {0};
        int n = 0;
    
        /*创建管道,需要传入两个文件描述符*/
        if(pipe(fd) < 0)
        {
            perror("create pipe failed\n");
            return -1;
        }
        /*fork子进程*/
        if((pid = fork()) < 0)
        {
            perror("fork failed\n");
            return -1;
        }
        /*父进程*/
        else if(pid > 0)
        {
            /*关闭管道的写描述符*/
            close(fd[1]);
    
            /*从管道读取数据*/
            n = read(fd[0],line,MAX_LEN);
            printf("read %d bytes from pipe :%s\n",n,line);
    
        }
        /*子进程*/
        else
        {
            /*关闭管道的读描述符*/
            close(fd[0]);
            /*向管道写入数据*/
            write(fd[1],"www.yanbinghu.com",sizeof("www.yanbinghu.com"));
        }
        return 0;
    }
    

    在程序中,我们创建了一个管道,父进程关闭了写通道,子进程关闭读通道;子进程向管道内写入字符串,而父进程从管道中读取字符串并输出。

    运行结果:

    read 18 bytes from pipe :www.yanbinghu.com
    

    FIFO

    FIFO也被称为命名管道,与管道不同的是,不相关的进程也能够进行数据交换。

    涉及FIFO操作主要函数为:

    int mkfifo(const char *path, mode_t mode);
    

    而FIFO也常常有以下两个用途:

    • 无需创建中间临时文件,复制输出流

    • 多客户-服务进程应用中,通过FIFO作为汇聚点,传输客户进程和服务进程之间的数据

    我们看一个简单的例子,写进程代码如下:

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <errno.h>
    #include <fcntl.h>
    #define FIFO "/tmp/fifo"
    #define MAX_LEN 128
    int main(void)
    {
        int writeFd;
        char line[MAX_LEN] = {0};
        if(mkfifo(FIFO,S_IRUSR|S_IWUSR) < 0 && (errno != EEXIST))
        {
             perror("make fifo failed:");
             return -1;
        }
        /*关闭管道的读描述符*/
        writeFd = open(FIFO,O_WRONLY,0);
        /*向管道写入数据*/
        write(writeFd,"www.yanbinghu.com",sizeof("www.yanbinghu.com"));
        close(writeFd);
        return 0;
    }
    

    它首先创建了一个FIFO,并且打开后,往里面写入字符串,然后关闭退出。

    读进程代码如下:

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <errno.h>
    #include<fcntl.h>
    #define FIFO "/tmp/fifo"
    #define MAX_LEN 128
    int main(void)
    {
        int readFd,n;
        char line[MAX_LEN] = {0};
        /*打开FIFO,这里打开可能失败,应该要对返回值处理*/
        readFd = open(FIFO,O_RDONLY,0);
        /*从FIFO读取数据*/
    
        n = read(readFd,line,MAX_LEN);
        printf("read %d bytes from pipe :%s\n",n,line);
        close(readFd);
        /*删除FIFO*/
        unlink(FIFO);
        return 0;
    }
    

    它先打开一个已知的FIFO,然后从FIFO中读取数据。

    在一个终端先运行写进程,然后运行读进程,结果如下:

    read 18 bytes from pipe :www.yanbinghu.com
    

    我们可以看到,两个没有亲缘关系的进程可以通过FIFO进行通信。

    消息队列

    消息队列可以认为是一个消息链表,存储在内核中,进程可以从中读写数据。与管道和FIFO不同,进程可以在没有另外一个进程等待读的情况下进行写。另外一方面,管道和FIFO一旦相关进程都关闭并退出后,里面的数据也就没有了,但是对于消息队列,一个进程往消息队列中写入数据后退出,另外一个进程仍然可以打开并读取消息。消息队列与后面介绍的UNIX域套接字相比,在速度上没有多少优势。

    信号量

    信号量是一个计数器,它主要用在多个进程需要对共享数据进行访问的时候。考虑这一的情况,不能同时有两个进程对同一数据进行访问,那么借助信号量就可以完成这样的事情。

    它的主要流程如下:

    • 检查控制该资源的信号量

    • 如果信号量值大于0,则资源可用,并且将其减1,表示当前已被使用

    • 如果信号量值为0,则进程休眠直至信号量值大于0

    也就是说,它实际上是提供了一个不同进程或者进程的不同线程之间访问同步的手段

    共享内存

    共享内存允许多个进程共享一个给定的存储区,由于它们是共享一块内存数据,因此其速度非常快。但是需要另外提供手段来保证共享内存的同步访问,例如它可以用到前面所提到的信号量来实现访问同步。

    UNIX域套接字

    UNIX域套接字和套接字很相似,但是它有更高的效率,因为它不需要执行协议处理,例如计算校验和,发送确认报文等等,它仅仅复制数据。

    当然,它也只适用于同一台计算机上的进程间通信。

    例如redis服务配置unixsocket启动后,通过redis-cli的-s参数就可以指定UNIX域套接字,连接到redis服务器。

    $ redis-cli -s /tmp/redis.sock
    redis /tmp/redis.sock> 
    

    它会比使用网络套接字的速度要快。

    网络套接字

    这个不用多说,它利用网络进行通信,与前面所提到的通信方式不同的是,它能用于不同计算机之间的不同进程间通信

    总结

    本文简单介绍了进程间通信的常见方式,其中对管道和命名管道我们使用了一个例子来简单说明,因为我们可能会经常见到它。对于FIFO,最后一个引用它的进程终止时,留在FIFO的数据也将会被删除,而对于消息队列却不是这样,它会一直留到被显示删除或者系统自举,另外消息队列于其他方式相比并没有特别的优势。而信号量实际上常用于共享数据的同步访问。共享内存在进程间传递数据非常高效,但是系统没有对访问进行同步,因此还需要另外实现数据的访问同步。套接字(socket)是应该目前应用最广泛的进程间通信方式。

    本文仅做简单介绍,实际内容远不止此。PC端访问阅读原文地址效果更佳。本文最新内容地址进程间通信方式有哪些

    参考:

    • 《Unix环境高级编程》

    • 《unix网络编程卷2:进程间通信》

    • 《深入Linux内核架构》

     

    相关阅读:

    面试必问:进程和线程有什么区别?

     

    关注公众号【编程珠玑】,获取更多Linux/C/C++/Python/Go/算法/工具等原创技术文章。后台免费获取经典电子书和视频资源

    640?wx_fmt=jpeg

     

     

    展开全文
  • 计算机网络协议——通信协议综述

    万次阅读 多人点赞 2019-09-03 23:20:58
    通信协议综述概述一、为什么学习网络协议1.1 常见网络协议二、网络分层的真正含义2.1 为什么网络要分层?2.2 浏览点击请求过程2.3 揭秘层与层之间的关系三、ifconfig 命令行的由来3.1 ip地址3.2 无类型域间选路...
  • 常见网络通信协议结构图

    千次阅读 2011-03-25 18:33:00
  • TCP面试常见题:张小方的知乎Live:轻松搞定技术面试中常见网络通信问题
  • 常见通信类型

    千次阅读 2013-10-11 11:36:03
    TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。 建立起一个TCP连接需要经过“三次握手”: 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器...
  • 作为网络通信工程的学习和从业人员,众所周知,目前国际上通用的网络互连模型是开放系统互连参考...参照这一标准,许多的网络通信协议族,比如知名的tcp/ip协议族,另外还有ATM(异步传输模式),帧中继协议、HDLC协议
  • 都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务。...在网络IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传输层中TCP协议与UDP协议。
  • 1. http是无状态通信,http的请求方式有哪些,可以自己定义新的请求方式么。 HTTP是无状态的,它的底层协议是由状态的TCP,但是HTTP的一次完整协议动作,里面是使用状态的TCP协议来完成的。而每次协议动作之间...
  • 物联网常见通信类型介绍

    千次阅读 2019-01-08 16:16:52
    物联网领域常见通信类型 有线通信如下: RS485:两线制,差分信号传输,半双工通信,最大通信距离千米以上。 RS232:三线制,全双工通信,一般通信距离小于 10 米。 以太网:4 线或 8 线,多主通信,高性能。普通...
  • 无线通信协议有哪些

    千次阅读 2013-10-17 10:09:37
    用于实现计算机与网络连接之间的标准,网络如果没有统一的通信协议,电脑之间的信息传递就无法识别。... 目前常见通信协议主要:NetBEUI、IPX/SPX、NWLink、TCP/IP,在这几种协议中用得最多、最为复杂的当然还是
  • 声明一下,文章是我自己整理的笔记,内容是张...张小方 的知乎 Live:轻松搞定技术面试中常见网络通信问题https://www.zhihu.com/lives/922110858308485120?utm_source=qq&utm_medium=social 本live列举的...
  • 嵌入式相关上位机编写,了解常用通信协议如RS-232、CAN、RS485、I2C等接口及网络通信优先 自己的工作涉及到上位机,主要是串口RS-232,于是跟公司的嵌入式工程师请教并学习了上位机通信协议相关的一些知识。 1....
  • 网络通信的标准化组织和常见标准

    千次阅读 2012-09-20 23:29:12
    [size=large] 网络通信的几个标准化组织和其制定的常见标准[/size] 为确保通信网络设备统一的标准,以下标准化组织发挥了重要的作用: 国际标准化组织(ISO) 国际通信联盟(ITU) 电气电子工程协会(IEEE)...
  • 车载网络: 常见车载网络

    千次阅读 2018-01-02 16:25:38
    常见车载网络一、CAN(Controller Area Network)控制器局域网CAN总线是德国BOSCH公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以...
  • ARM硬件知识和常见通信协议

    千次阅读 2017-10-17 22:30:38
    ARM硬件知识,常见通信协议I2C和SPI,电平标准TTL和RS232,内存,NAND Flash
  • 常见加密类型及通信安全

    万次阅读 2016-11-05 22:13:24
    6 怎么样才算安全的通信 单向加密 1 特征 2 常见算法 3 满足哪些安全特性 对称加密 1 特征 2 常见算法 3 满足哪些安全特性 IKE 1 秘钥交换过程 2 特征 非对称加密算法 1 特征 2 身份认证 3 常见算法 4 满足哪些安全...
  • 常见系统通信协议使用及理解

    千次阅读 2017-11-16 21:45:38
    底层通信协议 计算机网络连接之间的标准 NetBEUI IPX/SPX NWLink TCP/IP
  • 摘要: 当今,全球无线通信产业的两个突出特点体现在:一是公众移动通信保持增长态势,一些国家和地区...通信网络安全工作主要是对通信终端盒通信终端之间相连接的传输路线、设备和协议进行管理,特别是对通信网络...
  • 常见通信RF指标的内在和意义

    万次阅读 多人点赞 2016-06-26 16:07:05
    进入手机通信行业以来,时常接触到不同的RF指标,对于不同的制式不同的要求,在论坛上找到一个总结比较好,学习一下。(From 52RD)
  • 网络通信协议

    千次阅读 2017-11-30 15:33:40
    网络通信协议 今天学习了网络通信协议,总结出来的知识点,不足之处请大家多多指教! 网络通信协议:负责在网络上建立通信通道和控制通过通道的信息流的规则 为了进行网络通信通信双方必须遵守通信...
  • 【转】物联网常见通信协议

    千次阅读 2018-08-03 22:33:17
    通信”与“通讯”傻傻分得清传统意义上的“通讯”主要指电话、电报、电传。通讯的“讯”指消息(Message),媒体讯息通过通讯网络从一端传递到另外一端。媒体讯息的内容主要是话音、文字、图片和视频图像。其网络的...
  • 1 “通信”与“通讯”傻傻分得清 传统意义上的“通讯”主要指电话、电报、电传。通讯的“讯”指消息(Message),媒体讯息通过通讯网络从一端传递到另外一端。媒体讯息的内容主要是话音、文字、图片和视频图像。其...
  • 常见网络安全协议

    万次阅读 2019-09-25 20:38:04
    常见网络安全协议 网络认证协议Kerberos Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机...
  • 网络通信网络其他问题

    千次阅读 2016-05-30 09:23:24
    计算机网络技术是互联网发展的基础。它是计算机技术与通信技术结合的产物,是现在信息技术的一个重要组成部分,而且正朝着数字化、高速化、智能化的方向迅速发展。...常用的网络安全防护措施有哪些 常用的
  • 网络通信原理

    千次阅读 多人点赞 2019-06-02 17:13:06
    一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序...网络通信原理 2.1 互联网的本质就是一系列的网络协议 一台硬件设备了操作系统,然后装上软件你就可以...
  • 常见几种通信原理

    千次阅读 2020-06-10 16:44:46
    移动通信原理工作原理GSMWCDMACDMA2000LTE 移动通信(Mobile communication)是移动体之间的通信,或移动体与固定体之间的通信。移动体可以是人,也可以是汽车、火车、轮船、收音机等在移动状态中的物体。 移动通信...
  • 微信公众号“智物客”和您免费分享物联网、智慧...在上文分析物联网常用通讯协议的基础上,本文按近距离通信、远距离蜂窝通信、远距离非蜂窝通信、有线通信4个方面分享了物联网常用通信协议。后续将分享三表远抄系统。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 247,964
精华内容 99,185
关键字:

常见的通信网络有哪些