精华内容
下载资源
问答
  • 该为文章为个人知识梳理后的产物(不断更新)。主要目的是为了让知识更系统,更加模块化。适合有Android开发经验,但是未进行过系统整理知识的读者,可以参照思维导图去对知识进行查缺补漏。下文将对思维导图进行...

    这里写图片描述

    前言

    该为文章为个人知识梳理后的产物(不断更新)。主要目的是为了让知识更系统,更加模块化。适合有Android开发经验,但是未进行过系统整理知识的读者,可以参照思维导图去对知识进行查缺补漏。下文将对思维导图进行部分补充:

    需重点掌握

    • 四大组件相关
    • 数据库框架
    • 性能优化系列
    • 自定义View
    • 属性动画
    • 组件间通信
    • Handler机制(原理)
    • 网络框架:retrofit、okhttp
    • 图片加载、处理框架:Glide、Fresco
    • MVP

    超链接

    脑图中相关知识点超链:

    备注

    性能优化

    • 堆 : 存储类对象(成员变量);空间大但不连续;易存在内存碎片
    • 栈 : 存储函数(局部变量);空间小但连续,且运算速度快(内置处理器);栈为先进后出
    • 四大引用 : 强引用 > 弱引用 > 软引用 > 虚引用
    • 内存泄露 : 内存泄漏 当一个对象已经不需要再使用了,本该被回收时,而有另外一个正在使用的对象持有它的引用,从而就导致对象不能被回收。
    • GC : (1)发现无用的信息对象;(2)回收将无用对象占用的内存空间
    • 绘制原理
      负责包括Measure,Layout,Record,Execute的计算操作,GPU 负责Rasterization(栅格化)操作。
      XML布局文件需要在CPU中首先转换为多边形或者纹理,然后再传递给GPU进行格栅化,
      而以上的这些操作需要保证在16ms内完成,才能保证屏幕看起来是流畅的。
    • 电池优化
      Android系统上App的电量消耗主要由cpu、wakelock、数据传输(流量和wifi)、wifi运行、gps、other senior组成,而耗电异常也是由于这几个模块的使用不当。

    UI

    • 自定义View
      • 测量——onMeasure():决定View的大小
      • 布局——onLayout():决定View在ViewGroup中的位置
      • 绘制——onDraw():如何绘制这个View。
    • MeasureSpec
      • EXACTLY:一般是设置了明确的值(100dp)或者是MATCH_PARENT
      • AT_MOST:表示子布局限制在一个最大值内,一般为WARP_CONTENT
      • UNSPECIFIED:表示子布局想要多大就多大,很少使用

    常见设计模式

    执行参考:例如保证 类代码行数不超过400,函数行数不超过20
    - Builder设计模式,如AlertDialog
    - 适配器模式,如GridView、ListView与Adapter
    - 工厂模式,如BaseActivity
    - 观察者模式,如ContentObserver
    - 命令模式,如Handler.post

    展开全文
  • 2020春季通信原理 - 大作业(70满分) 姓名1, 学号 1大连海事大学,专业,班级 电子邮件地址 截至日期,2020年6月14日 1PM 第一部分:课程整体可视化框架(20分) 要求: 1. ‘可视化’梳理知识体系,体现你对...
  • HTTP基础知识梳理记录

    2020-05-25 18:06:01
    HTTP(HyperText Transfer Protocol)即超文本传输协议,是一种详细规定了浏览器...HTTP工作原理 HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模

    HTTP简介

    HTTP(HyperText Transfer Protocol)即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,它是万维网交换信息的基础,它允许将HTML(超文本标记语言)文档从Web服务器传送到Web浏览器。

    HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)的应用层协议。

    HTTP工作原理

    HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

    以下是 HTTP 请求/响应的步骤:

    1. 客户端连接到Web服务器

    一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.baidu.com。

    2.发送HTTP请求

    通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据四个部分组成。

    3. 服务器接受请求并返回HTTP响应

    Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据四个部分组成。

    4. 释放连接TCP连接

    若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

    5. 客户端浏览器解析HTML内容

    客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

    例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:

    • 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
    • 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
    • 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
    • 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
    • 释放 TCP连接;
    • 浏览器将该 html 文本解析加载其它资源显示内容;

    注意

    HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间,并且可以提高并发性能,不能和每个用户建立长久的连接,请求一次相应一次,服务端和客户端就中断了。
    但是无连接有两种方式,早期的http协议是一个请求一个响应之后,直接就断开了,但是现在的http协议1.1版本不是直接就断开了,而是等几秒钟,有新的请求,那么还是通过之前的连接通道来收发消息,如果户没有发送新的请求就会断开连接,这样可以提高效率,减少建立连接是耗时,默认的好像是3秒,但这个时间可以通过代码来调整,网站根据用户的行为来分析统计出一个最优的等待时长。

    HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。Content-Type

    HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。虽然是无状态协议,为了实现期望的保持状态功能, HTTP/1.1引入了Cookie技术。

    面试题:TCP连接的三次握手与四次挥手

    传送门

    三次握手:
    为了防止服务器端开启一些无用的连接增加服务器开销以及防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。

    四次挥手:
    释放连接时,被动方服务器,突然收到主动方客户端释放连接的请求时并不能立即释放连接,因为还有必要的数据需要处理,所以服务器先返回ACK确认收到报文,经过CLOSE-WAIT阶段准备好释放连接之后,才能返回FIN释放连接报文。

    请求头与响应头

    HTTP遵循请求(Request)/应答(Response)模型,Web浏览器向Web服务器发送请求时,Web服务器处理请求并返回适当的应答。

    HTTP请求包括三部分,分别是请求行(请求方法)、请求头(消息报头)和请求正文。
    HTTP请求第一行为请求行,由三部分组成,第一部分说明了该请求时POST请求,第二部分是一个路径,用来说明请求是该域名地址,第三部分说明使用的是HTTP1.1版本。
    HTTP请求第二行至空白行为请求头(也被称为消息头)。
    HTTP请求第三行为请求正文,请求正文是可选的,它最常出现在POST请求方式中。

    HTTP响应的第一行为响应行,其中有HTTP版本(HTTP/1.1)、状态码(200)以及消息“OK”。
    第二行至末尾的空白行为响应头,由服务器向客户端发送。
    消息头之后是响应正文,是服务器向客户端发送的HTML数据。

    常见请求头

    • Accept 这个消息头用于告诉服务器客户端愿意接受那些内容,比如图像类,办公文档格式等等。
    • Host 请求报头域主要用于指定被请求资源的Internet主机和端口。
    • Cookie 是非常重要的请求头,常用来表示请求者的身份等。
    • Referer 包含一个URL,代表当前访问URL的上一个URL,也就是说,用户是从什么地方来到本页面。当前请求的原始URL地址。
    • User-Agent 请求报头域允许客户端将它的操作系统、浏览器和其他属性告诉服务器。

    常见响应头

    • Content-Length 表示内容长度。
    • Content-Type 表示后面的文档属于什么MIME类型。 Servlet默认为text/plain,但通常需要显式地指定为text/html。
    • Date 当前的GMT时间。
    • Expires 应该在什么时候认为文档已经过期,从而不再缓存它。
    • Last-Modified 文档的最后改动时间。 客户可以通过If-Modified-Since请求头提供一个日期,该请求将被视为一个条件GET,只有改动时间迟于指定时间的文档才会返回,否则返回一个304(Not Modified)状态。
    • Server 服务器名字。Servlet一般不设置这个值,而是由Web服务器自己设置。
    • Set-Cookie 设置和页面关联的Cookie。
    面试题:缓存机制

    传送门

    缓存策略:强缓存,协商缓存。

    面试题:Cookie,Localstorage和Sessionstorage

    传送门

    localStorage、sessionStorage、Cookie共同点:都是保存在浏览器端,且同源的。

    Cookie 随请求携带存储信息。

    localStorage、sessionStorage只是浏览器本地数据存储。

    请求方法

    根据 HTTP 标准,HTTP 请求可以使用多种请求方法。

    HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。

    HTTP1.1 新增了五种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

    序号 方法 描述
    1 GET 请求指定的页面信息,并返回实体主体。
    2 HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
    3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。
    数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
    4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
    5 DELETE 请求服务器删除指定的页面。
    6 CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
    7 OPTIONS 这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用’*'来代替资源名称,
    向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作等。
    8 TRACE 回显服务器收到的请求,主要用于测试或诊断。
    9 PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 。
    面试题:GET与POST区别

    传送门

    这个是浏览器厂商或服务器端对HTTP请求的封装,最终都是TCP数据包。

    HTTP状态码

    HTTP状态码的英文为HTTP Status Code。

    五种状态码:

    • 1xx:信息提示,表示请求已被成功接收,继续处理。
    • 2xx:请求被成功提交。
    • 3xx:客户端被重定向到其他资源。
    • 4xx:客户端错误状态码,格式错误或者不存在资源。
    • 5xx:描述服务器内部错误。

    常见的状态码描述如下:

    • 101:切换协议。http请求升级(Upgrade)为websoket。
    • 200:客户端请求成功,是最常见的状态。
    • 302:重定向。
    • 400:客户端请求有语法错误,不能被服务器所理解。
    • 401:请求未经授权。
    • 403:服务器收到请求,但是拒绝提供服务。
    • 404:请求资源不存在,是最常见的状态。
    • 500:服务器内部错误,是最常见的状态。
    • 503:服务器当前不能处理客户端的请求。

    web服务程序

    NginxTomcatApache

    参考链接

    https://www.cnblogs.com/an-wen/p/11180076.html

    https://blog.csdn.net/qq_38265137/article/details/93379922

    https://developer.mozilla.org/zh-CN/docs/Web/HTTP

    展开全文
  • 网络通信原理和过程

    千次阅读 多人点赞 2019-02-12 15:05:00
    当时查http协议的时候了解的一些网络底层的知识,感觉挺有意思的,就把多位博主的资料整料梳理出来整理到一堆,就当是一篇科普文吧。 一、网络的五层模型 如何分层有不同的模型,有的模型分七层,有的分四层。我...

    当时查http协议的时候了解的一些网络底层的知识,感觉挺有意思的,就把多位博主的资料整料梳理出来整理到一堆,就当是一篇科普文吧。

    一、网络的五层模型

    如何分层有不同的模型,有的模型分七层,有的分四层。我觉得,把互联网分成五层,比较容易解释

    如上图所示,最底下的一层叫做"实体层"(Physical Layer),最上面的一层叫做"应用层"(Application Layer),中间的三层(自下而上)分别是"链接层"(Link Layer)、"网络层"(Network Layer)和"传输层"(Transport Layer)。越下面的层,越靠近硬件;越上面的层,越靠近用户。

     

    一、层与协议

    互联网的每一层,都定义了很多协议。这些协议的总称,就叫做"互联网协议"(Internet Protocol Suite)。它们是互联网的核心,下面介绍每一层的功能,主要就是介绍每一层的主要协议。

     

    二、实体层:

    内容小结:电脑连接起来的物理手段

    实体层,它就是把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。

     

    三、链接层:

    内容小结:在同一个子网络里发送数据包。

     

    3.1 定义

    链接层,它在"实体层"的上方,通过以太网协议在同一个子网络里发送数据包

     

    3.2 以太网协议(不是http协议)

    以太网规定,一组电信号构成一个数据包,叫做"帧"(Frame)。每一帧分成两个部分标头(Head)和数据(Data)。

    "标头"包含数据包的一些说明项,比如发送者、接受者、数据类型等等;"数据"则是数据包的具体内容。

    "标头"的长度,固定为18字节。"数据"的长度,最短为46字节,最长为1500字节。因此,整个"帧"最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个包进行发送

     

    3.3 MAC地址

    "标头"中发送者和接受者的信息:以太网规定,连入网络的所有设备,都必须具有"网卡"接口。数据包是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址

    每块网卡出厂的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。

     

    前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。有了MAC地址,就可以定位网卡和数据包的路径了。

     

    3.4 广播

    以太网数据包必须知道接收方的MAC地址,然后才能发送。

    以太网向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方

     

    上图中,1号计算机向2号计算机发送一个数据包,同一个子网络的3号、4号、5号计算机都会收到这个包。它们读取这个包的"标头",找到接收方的MAC地址,然后与自身的MAC地址相比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。这种发送方式就叫做"广播"(broadcasting)。

    有了数据包的定义、网卡的MAC地址、广播的发送方式,"链接层"就可以在多台计算机之间传送数据了。

     

    四、网络层(互联网):

    内容小结:ip到ip的数据传送,是否是在同一子网络,不在统一子网络的话,先把包发送给本网络网关,本网关再找另一个ip所在的网关

     

    4.1 网络层的由来

    以太网采用广播方式发送数据包局限在发送者所在的子网络

    互联网是无数子网络共同组成的一个巨型网络

     

    如果是同一个子网络,就采用广播方式发送,否则就采用"路由"方式发送。("路由"的意思,就是指如何向不同的子网络分发数据包,这是一个很大的主题,本文不涉及。)

    网络层使用ip地址,使得我们能够区分不同的计算机是否属于同一个子网络

    于是,每台计算机有了两种地址,一种是MAC地址,另一种是网络地址。两种地址之间没有任何联系,MAC地址是绑定在网卡上的,网络地址则是管理员分配的。

    ip地址确定计算机所在的子网络MAC地址则将数据包送到该子网络中的目标网卡先处理网络地址,然后再处理MAC地址

     

    4.2 IP协议

    规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址,互联网上的每一台计算机,都会分配到一个IP地址。

    目前,广泛采用的是IP协议第四版,简称IPv4。这个版本规定,ip地址由32个二进制位(每段8位,一共4段)组成,四段分成两个部分,前一部分代表网络,后一部分代表主机

    "子网掩码"(subnet mask):用于判断两台计算机是否属于同一个子网络,是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.254.1,子网络掩码是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0,那么网络部分是前3段,主机部分是最后一段,处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的

    比如,已知IP地址172.16.254.1和172.16.254.233的子网掩码都是255.255.255.0,可知他们的网络部分是相同的都是172.16.254,因此它们在同一个子网络。

    IP地址分类:

    IP地址 = {<网络号>, <主机号>}

    A类地址 : 0.0.0.0 ~ 127.0.0.0

    B类地址 : 128.0.0.0 ~ 191.255.0.0

    C类地址 : 192.0.0.0 ~ 223.255.255.0

    大部分网络使用B类或C类地址。

     

    A类地址的默认子网掩码为255.0.0.0

    B类地址的默认子网掩码为255.255.0.0

    C类地址的默认子网掩码为255.255.255.0

     

    内网(局域网):

    内网的计算机通过一个公共的网关访问Internet。内网的计算机可向Internet上的其他计算机发送连接请求,但Internet上其他的计算机无法向内网的计算机发送连接请求。

     

    Class A 10.0.0.0-10.255.255.255,默认子网掩码:255.0.0.0

    Class B 172.16.0.0-172.31.255.255,默认子网掩码:255.240.0.0

    Class C 192.168.0.0-192.168.255.255,默认子网掩码:255.255.0.0

    内网是可以上网的.内网需要一台服务器或路由器做网关,通过它来上网。

    假设公司A在广州和上海有办事处, 而他们在当地都有自己的专用网. 那么怎么将这两个专用网连接起来呢?利用公用的因特网当做通信载体, 这就是虚拟专用网VPN

    总结一下,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。

     

    4.3 IP数据包

    根据IP协议发送的数据,就叫做IP数据包。不难想象,其中必定包括IP地址信息。

    但是前面说过,以太网数据包只包含MAC地址,并没有IP地址的栏位。那么是否需要修改数据定义,再添加一个栏位呢?

    回答是不需要,我们可以把IP数据包直接放进以太网数据包的"数据"部分,因此完全不用修改以太网的规格。这就是互联网分层结构的好处:上层的变动完全不涉及下层的结构。

    具体来说,IP数据包也分为"标头"和"数据"两个部分

    "标头"部分主要包括版本、长度、IP地址等信息,"数据"部分则是IP数据包的具体内容。它放进以太网数据包后,以太网数据包就变成了下面这样。

     

    4.4 ARP协议

    我们需要一种机制,能够从IP地址得到MAC地址。

    这里又可以分成两种情况。第一种情况,如果两台主机不在同一个子网络,那么事实上没有办法得到对方的MAC地址,只能把数据包传送到两个子网络连接处的"网关"(gateway),让网关去处理

    第二种情况,如果两台主机在同一个子网络,那么我们可以用ARP协议,得到对方的MAC地址。ARP协议也是发出一个数据包(包含在以太网数据包中),其中包含它所要查询主机的IP地址,在对方的MAC地址这一栏,填的是FF:FF:FF:FF:FF:FF,表示这是一个"广播"地址。它所在子网络的每一台主机,都会收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出回复,向对方报告自己的MAC地址,否则就丢弃这个包。

    总之,有了ARP协议之后,我们就可以得到同一个子网络内的主机MAC地址,可以把数据包发送到任意一台主机之上了。

     

    五、传输层

    5.1 传输层的由来

    有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。

    接下来需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做"端口"(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据

    "端口"是0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系。

    "传输层"的功能,就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。因此,Unix系统就把主机+端口,叫做"套接字"(socket)。有了它,就可以进行网络应用程序开发了。

     

    5.2 UDP协议

    现在,我们必须在数据包中加入端口信息,这就需要新的协议。最简单的实现叫做UDP协议,它的格式几乎就是在数据前面,加上端口号。

    UDP数据包,也是由"标头"和"数据"两部分组成。

    "标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的"数据"部分,而前面说过,IP数据包又是放在以太网数据包之中的,所以整个以太网数据包现在变成了下面这样:

    UDP数据包非常简单,"标头"部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

     

    5.3 TCP协议

    主要特点 :

    面向连接的运输层协议

    每一条TCP连接只能有2个端点, TCP是点对点的,端点叫套接字(socket)

    提供可靠交互

    全双工通信

    面向字节流

    每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。因此,TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。

    TCP数据包和UDP数据包一样,都是内嵌在IP数据包的"数据"部分。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

    TCP三次握手见文章:

    TCP传输协议

     

    六、应用层

    应用程序收到"传输层"的数据,接下来就要进行解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。

    "应用层"的作用,就是规定应用程序的数据格式。

    应用层协议最著名的就是HTTP, FTP了, 还有一个重要的DNS。

    举例来说,TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了"应用层"。

    这是最高的一层,直接面对用户。它的数据就放在TCP数据包的"数据"部分。因此,现在的以太网的数据包就变成下面这样。

    二、网关

    先对前面的内容,做一个小结。

    我们已经知道,网络通信就是交换数据包。电脑A向电脑B发送一个数据包,后者收到了,回复一个数据包,从而实现两台电脑之间的通信。数据包的结构,基本上是下面这样:

    发送这个包,需要知道两个地址:

     * 对方的MAC地址   * 对方的IP地址

    有了这两个地址,数据包才能准确送到接收者手中。但是,前面说过,MAC地址有局限性,如果两台电脑不在同一个子网络,就无法知道对方的MAC地址,必须通过网关(gateway)转发

     

    上图中,1号电脑要向4号电脑发送一个数据包。它先判断4号电脑是否在同一个子网络,结果发现不是(后文介绍判断方法),于是就把这个数据包发到网关A网关A通过路由协议,发现4号电脑位于子网络B,又把数据包发给网关B,网关B再转发到4号电脑。

    1号电脑把数据包发到网关A,必须知道网关A的MAC地址。所以,数据包的目标地址,实际上分成两种情况:

    场景

    数据包地址

    同一个子网络

    对方的MAC地址,对方的IP地址

    非同一个子网络

    网关的MAC地址,对方的IP地址

    发送数据包之前,电脑必须判断对方是否在同一个子网络,然后选择相应的MAC地址。接下来,我们就来看,实际使用中,这个过程是怎么完成的。

     

    三、用户的上网设置

    3.1 静态IP地址

    你买了一台新电脑,插上网线,开机,这时电脑能够上网吗?

     

    通常你必须做一些设置。有时,管理员(或者ISP)会告诉你下面四个参数,你把它们填入操作系统,计算机就能连上网了:

    * 本机的IP地址   * 子网掩码   * 网关的IP地址   * DNS的IP地址

    下图是Windows系统的设置窗口。

    这四个参数缺一不可,后文会解释为什么需要知道它们才能上网。由于它们是给定的,计算机每次开机,都会分到同样的IP地址,所以这种情况被称作"静态IP地址上网"

    但是,这样的设置很专业,普通用户望而生畏,而且如果一台电脑的IP地址保持不变,其他电脑就不能使用这个地址,不够灵活。出于这两个原因,大多数用户使用"动态IP地址上网"。

    3.2 动态IP地址

    所谓"动态IP地址",指计算机开机后,会自动分配到一个IP地址,不用人为设定。它使用的协议叫做DHCP协议。

    这个协议规定,每一个子网络中有一台计算机负责管理本网络的所有IP地址,它叫做"DHCP服务器"。新的计算机加入网络,必须向"DHCP服务器"发送一个"DHCP请求"数据包,申请IP地址和相关的网络参数。

    前面说过,如果两台计算机在同一个子网络,必须知道对方的MAC地址和IP地址,才能发送数据包。但是,新加入的计算机不知道这两个地址,怎么发送数据包呢?

    DHCP协议做了一些巧妙的规定。

     

    3.3 DHCP协议

    首先,它是一种应用层协议,建立在UDP协议之上,所以整个数据包是这样的:

    (1)最前面的"以太网标头",设置发出方(本机)的MAC地址和接收方(DHCP服务器)的MAC地址。前者就是本机网卡的MAC地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。

    (2)后面的"IP标头",设置发出方的IP地址和接收方的IP地址。这时,对于这两者,本机都不知道。于是,发出方的IP地址就设为0.0.0.0,接收方的IP地址设为255.255.255.255。

    (3)最后的"UDP标头",设置发出方的端口和接收方的端口。这一部分是DHCP协议规定好的,发出方是68端口,接收方是67端口。

    这个数据包构造完成后,就可以发出了。以太网是广播发送,同一个子网络的每台计算机都收到了这个包。因为接收方的MAC地址是FF-FF-FF-FF-FF-FF,看不出是发给谁的,所以每台收到这个包的计算机,还必须分析这个包的IP地址,才能确定是不是发给自己的。当看到发出方IP地址是0.0.0.0,接收方是255.255.255.255,于是DHCP服务器知道"这个包是发给我的",而其他计算机就可以丢弃这个包。

    接下来,DHCP服务器读出这个包的数据内容,分配好IP地址,发送回去一个"DHCP响应"数据包。这个响应包的结构也是类似的,以太网标头的MAC地址是双方的网卡地址,IP标头的IP地址是DHCP服务器的IP地址(发出方)和255.255.255.255(接收方),UDP标头的端口是67(发出方)和68(接收方),分配给请求端的IP地址和本网络的具体参数则包含在Data部分。

    新加入的计算机收到这个响应包,于是就知道了自己的IP地址、子网掩码、网关地址、DNS服务器等等参数。

     

    3.4 上网设置:小结

    这个部分,需要记住的就是一点:不管是"静态IP地址"还是"动态IP地址",电脑上网的首要步骤,是确定四个参数。这四个值很重要,值得重复一遍:

      * 本机的IP地址   * 子网掩码   * 网关的IP地址   * DNS的IP地址

    有了这几个数值,电脑就可以上网"冲浪"了。接下来,我们来看一个实例,当用户访问网页的时候,互联网协议是怎么运作的。

     

    四、访问网页过程解析

    4.1 本机参数

    我们假定,经过上一节的步骤,用户设置好了自己的网络参数:

     * 本机的IP地址:192.168.1.100   * 子网掩码:255.255.255.0   * 网关的IP地址:192.168.1.1   * DNS的IP地址:8.8.8.8

    输入网址:

    然后他打开浏览器,想要访问Google,在地址栏输入了网址:www.google.com。

     

    这意味着,浏览器要向Google发送一个网页请求的数据包。

     

    4.2 DNS协议(域名解析)

    域名服务器分类

    根域名服务器 : 最高层次的域名服务器

    顶级域名服务器 : 如其名

    权限域名服务器 : 负责一个区的应服务器

    本地域名服务器 : 主机发送DNS查询请求就是发给它

     

    URL的格式 : <协议>://<主机>:<端口>/<路径>, 端口和路径有时可省略.

    使用HTTP协议的URL : http://<主机>:<端口>/<路径>, HTTP默认端口号是80

     

    我们知道,发送数据包,必须要知道对方的IP地址。但是,现在,我们只知道网址www.google.com,不知道它的IP地址。

    DNS协议可以帮助我们,将这个网址转换成IP地址。已知DNS服务器为8.8.8.8,于是我们向这个地址发送一个DNS数据包(53端口)。

     

     

    然后,DNS服务器做出响应,告诉我们Google的IP地址是172.194.72.105。于是,我们知道了对方的IP地址。

     

    4.3 子网掩码

    接下来,我们要判断,这个IP地址是不是在同一个子网络,这就要用到子网掩码。

    已知子网掩码是255.255.255.0,本机用它对自己的IP地址192.168.1.100,做一个二进制的AND运算(两个数位都为1,结果为1,否则为0),计算结果为192.168.1.0;然后对Google的IP地址172.194.72.105也做一个AND运算,计算结果为172.194.72.0。这两个结果不相等,所以结论是,Google与本机不在同一个子网络。

    因此,我们要向Google发送数据包,必须通过网关192.168.1.1转发,也就是说,接收方的MAC地址将是网关的MAC地址。

     

    4.4 应用层协议(http协议)

    每一次HTTP请求就需要建立一次TCP连接和释放TCP连接.

    HTTP是无连接, 无状态的. 每一次请求都是作为一次新请求.

    HTTP的GET和POST

    GET 请求通常用于查询、获取数据,而 POST 请求则用于发送数据

    GET 请求的参数在URL中, 因此绝不能用GET请求传输敏感数据, 而POST 请求的参数在请求头中, 安全性略高于GET请求

    ps : POST请求的数据也是以明文的形式存放在请求头中, 因此也不安全

    Cookie

    万维网使用Cookie来跟踪用户, 表示HTTP服务器和用户之间传递的状态信息.

    Cookie工作原理 :

    1. 用户浏览某网站, 该网站的服务器为用户产生一个唯一的识别码, 并以此为索引在服务器后端数据库中产生一个项目2. 返回给用户的HTTP响应报文中添加一条 "Set-cookie", 值为该识别码, 如1233. 用户的浏览器将该cookie保存起来, 在用于继续浏览该网站时发送的每一个HTTP请求都会有一行 Cookie: 123于是, 这个网站就知道Cookie为123的这个用户做了什么, 为这个用户维护一个独立的列表(如购物车)

    当然, Cookie是把双刃剑, 方便的同时也带有危险性, 例如隐私泄露等, 用户可以自行决定是否使用Cookie

    Session

    Cookie是保存在客户端上的, 而Session是保存在服务器中. 当服务器收到用户发出的Cookie时, 会根据Cookie中的SessionID来查找对应的Session, 如没有则会生成一个新的SessionID返回给用户

     

    总而言之, Cookie和Session就是同一样东西存放地方不同而已.

    HTTPS协议在HTTP协议的基础上, 在HTTP和TCP中间加入了一层SSL/TLS加密层, 解决了HTTP不安全的问题: 冒充, 篡改, 窃听三大风险.

     

    浏览网页用的是HTTP协议,它的整个数据包构造是这样的:

    HTTP部分的内容,类似于下面这样:

    GET / HTTP/1.1   Host: www.google.com   Connection: keep-alive   User-Agent: Mozilla/5.0 (Windows NT 6.1) ......   Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8   Accept-Encoding: gzip,deflate,sdch   Accept-Language: zh-CN,zh;q=0.8   Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3   Cookie: ... ...

    我们假定这个部分的长度为4960字节,它会被嵌在TCP数据包之中。

     

    4.5 TCP协议

    TCP数据包需要设置端口,接收方(Google)的HTTP端口默认是80,发送方(本机)的端口是一个随机生成的1024-65535之间的整数,假定为51775。

    TCP数据包的标头长度为20字节,加上嵌入HTTP的数据包,总长度变为4980字节。

     

    4.6 IP协议

    然后,TCP数据包再嵌入IP数据包。IP数据包需要设置双方的IP地址,这是已知的,发送方是192.168.1.100(本机),接收方是172.194.72.105(Google)。

    IP数据包的标头长度为20字节,加上嵌入的TCP数据包,总长度变为5000字节。

    4.7 以太网协议

    最后,IP数据包嵌入以太网数据包。以太网数据包需要设置双方的MAC地址,发送方为本机的网卡MAC地址,接收方为网关192.168.1.1的MAC地址(通过ARP协议得到)。

    以太网数据包的数据部分,最大长度为1500字节,而现在的IP数据包长度为5000字节。因此,IP数据包必须分割成四个包。因为每个包都有自己的IP标头(20字节),所以四个包的IP数据包的长度分别为1500、1500、1500、560。

     

    4.8 服务器端响应

    经过多个网关的转发,Google的服务器172.194.72.105,收到了这四个以太网数据包。

    根据IP标头的序号,Google将四个包拼起来,取出完整的TCP数据包,然后读出里面的"HTTP请求",接着做出"HTTP响应",再用TCP协议发回来    

    本机收到HTTP响应以后,就可以将网页显示出来,完成一次网络通信。

    这个例子就到此为止,虽然经过了简化,但它大致上反映了互联网协议的整个通信过程。

    转载于:https://www.cnblogs.com/yaoyao-sun/p/10296503.html

    展开全文
  • OFDM通信系统分析与仿真

    千次阅读 多人点赞 2019-09-28 20:37:47
    最近一段时间学习了OFDM通信方式,也算有了一定的理解,因此写这篇博客梳理一下知识点。 其实我认为OFDM不是一种调制技术,而是一种通信方式... 在《通信原理》中我们学到,(1)码元速率决定了发送信号所需的传输...

        最近一段时间学习了OFDM通信方式,也算有了一定的理解,因此写这篇博客梳理一下知识点。

        其实我认为OFDM不是一种调制技术,而是一种通信方式。因为在OFDM中用到了PSK、QAM这样的调制技术,而且它的优点源于码元传输速率的降低。


    一、OFDM基本原理

        下面通过一张图来引出OFDM的原理。

        在《通信原理》中我们学到,(1)码元速率决定了发送信号所需的传输带宽,即码元速率越大、码元周期越小、码元占用的带宽越宽^{[1]},这个带宽通过单载波上变频平移到可以在无线信道中传播的频段。(2)如果采用多进制调制,将几个码元合并成一个码元,增大了单个码元的周期,减小了码元占用的带宽,如果再采用多载波上变频,将多个多进制码元的带宽平移到可以在无线信道中传播的频段,我们直观的想法肯定是这些带宽互相相邻,而且需要保护间隔。(3)如果将多个多进制码元互连相邻的带宽的间隔缩小,让它们重叠,使多个子载波的相邻频率间隔为1/T_{B},这样的多个子载波满足相互正交,这样的叠加信号类似于泰勒展开式,叠加结果类似于泰勒展开式的原函数,这就是后来使用IFFT/FFT实现调制与解调的前提。正是由于满足这种运算,才使得相邻子载波的带宽虽然重叠但是可以通过运算将它们区分出来。

    二、OFDM主要特点

        优点:

        1.无线信道最主要的缺点就是存在多径效应,而多径效应使信道的传输函数表现为具有频率选择性衰落的特性^{[2]},(1)首先,由于单个多进制码元的周期增大,信息传输速率下降,多径效应的时间时延对其影响就不明显。(2)其次,即使存在多径效应,无线信道表现出频率选择性衰落的特性,可以在衰落频率点的子载波上插入导频而不用数据调制,就可以减少多径效应对传输数据的影响。(3)最后,可以在每一帧数据前加入循环前缀,且循环前缀的长度大于多径最大时延,就可以明显改善多径效应(下面会具体解释)。

        2.由于码元传输速率降低,则每个子载波的调制带宽减小,则子信道的带宽减小。若子信道的带宽足够小,就可以认为信道特性接近理想信道特性,码间串扰就可以得到有效的克服。

        3.各路子载波采用PSK、QAM调制,这样各路频谱的位置和形状不会改变,只有幅度和相位变化,任然保持正交性。

        4.由于各路频谱具有重叠,因此频带利用率提高。

        缺点:

        1.各路子载波要求严格正交,因此对信道产生的频率偏移和相位噪声比较敏感。

        2.信号峰值功率和平均功率的比值比较大,这样会降低射频功率放大器的效率。

    三、OFDM系统分析

        下面这张图是OFDM通信系统的整个过程。

        1.卷积编码是为了提高数据的纠错能力,保证数据传输的准确性。

        2.交织是将相邻的信息比特分别映射到不相邻的子载波上,由于频率选择性衰落零点附近会出现一连串比特错误,这样可以降低误比特率,而且前向纠错编码在错误均匀分布的情况下工作更有效。

        3.根据香农定理,信道容量正比于信号带宽和信噪比,当信道容量一定时,通过扩频可以增大信号带宽,这样可以降低对信噪比的要求。

        4.插入的导频可以用来进行信道估计和获取同步信息。

        5.串并变换是将多个多进制码元构成矩阵的一列,作为一帧数据,经过IFFT变换后成为多载波调制数据。由于一列为一帧,因此还需要经过并串变换变成已调数据流。

        6.每一帧数据加循环前缀可以改善多径效应。

        由于IFFT变换具有周期性,数据加入循环前缀任包含数据的所有信息。

        通过对比数据加空白前缀和循环前缀的接收结果与原始数据,发现数据加循环前缀可以改善多径效应。

        7.每一帧数据进行加窗操作,使已调数据在带宽之外的功率谱密度下降得更快。

    四、OFDM系统仿真

        经过上面的理论分析,下面在MATLAB中将OFDM通信系统的整个过程进行仿真。

        该仿真过程对比了单径信道和2径信道的数据传输误比特率,但不包括卷积编码和扩频,且仿真过程参考文献[3](需要电子书可以留言跟我联系),在文献[4]中给出了OFDM通信系统包含卷积编码和扩频的系统仿真,有兴趣的同学可以参考。

    %参数设置
    Nsp=52;                          %子载波数
    Nfft=64;                         %FFT长度
    Ncp=16;                          %循环前缀长度
    Ns=Nfft+Ncp;                     %一帧OFDM数据长度
    noc=53;                          %包含直流载波的子载波数
    Nd=6;                            %一个数据包所包含的帧数
    M1=4;                            %QPSK调制
    M2=16;                           %16QAM调制
    sr=250000;                       %码元速率
    EbNo=0:2:30;                     %归一化信噪比
    Nfrm=10000;                      %数据包数目
    ts=1/sr/Ns;                      %码元抽样时间间隔
    t=0:ts:(Ns*(Nd+1)*Nfrm-1)*ts;    %抽样时刻
    fd=100;                          %最大多普勒频移
    h=rayleigh(fd,t);                %生成单径Rayleigh衰落信道
    h1=sqrt(2/3)*h;                  %生成2径衰落信道
    h2=sqrt(1/3)*rayleigh(fd,t);
    h2=[zeros(1,4) h2(1:end-4)];
    
    %长训练符号频域数据
    Preamble=[1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 ...
            1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 1];
    Preamble1=zeros(1,Nfft);
    Preamble1(2:27)=Preamble(27:end);
    Preamble1(39:end)=Preamble(1:26);
    preamble1=ifft(Preamble1);
    preamble1 = [preamble1(Nfft - Ncp + 1:end) preamble1];
    %仿真循环
    for ii=1:length(EbNo)
    %发射机部分
    msg1=randsrc(Nsp,Nd*Nfrm,[0:M1-1]);    %QPSK信息数据
    msg2=randsrc(Nsp,Nd*Nfrm,[0:M2-1]);    %16QAM信息数据
    data1=pskmod(msg1,M1,pi/4);            %QPSK调制
    data2=qammod(msg2,M2)/sqrt(10);        %16QAM调制
    
        data3=zeros(Nfft,Nd*Nfrm);         %数据重排
        data4=zeros(Nfft,Nd*Nfrm);
    
        data3(2:27,:)=data1(27:end,:);
        data3(39:end,:)=data1(1:26,:);
    
        data4(2:27,:)=data2(27:end,:);
        data4(39:end,:)=data2(1:26,:);
    
        clear data1 data2;
    
        data3=ifft(data3);                 %IFFT变换
        data4=ifft(data4);
    
        data3=[data3(Nfft-Ncp+1:end,:);data3];    %加入循环前缀
        data4=[data4(Nfft-Ncp+1:end,:);data4];
    
        spow1=norm(data3,'fro').^2/(Nsp*Nd*Nfrm); %计算符号能量
        spow2=norm(data4,'fro').^2/(Nsp*Nd*Nfrm);
    
        data5=zeros(Ns,(Nd+1)*Nfrm);              %加入训练符号
        data6=data5;
        for index=1:Nfrm
            data5(:,(index-1)*(Nd+1)+1)=preamble1.';
            data5(:,(index-1)*(Nd+1)+2:index*(Nd+1))=data3(:,(index-1)*Nd+1:index*Nd);
    
            data6(:,(index-1)*(Nd+1)+1)=preamble1.';
            data6(:,(index-1)*(Nd+1)+2:index*(Nd+1))=data4(:,(index-1)*Nd+1:index*Nd);
        end
    
        clear data3 data4
    
        data5=reshape(data5,1,Ns*(Nd+1)*Nfrm);    %串并变换
        data6=reshape(data6,1,Ns*(Nd+1)*Nfrm);
    
        data51=zeros(1,length(data5));
        data61=zeros(1,length(data6));
        data51(5:end)=data5(1:end-4);
        data61(5:end)=data6(1:end-4);
    
        sigma1=sqrt(1/2*spow1/log2(M1)*10.^(-EbNo(ii)/10));    %根据EbNo计算噪声标准差
        sigma2=sqrt(1/2*spow2/log2(M2)*10.^(-EbNo(ii)/10));
    
        for indx=1:Nfrm
            dd1=data5((indx-1)*Ns*(Nd+1)+1:indx*Ns*(Nd+1));
            dd2=data6((indx-1)*Ns*(Nd+1)+1:indx*Ns*(Nd+1));
            dd3=data51((indx-1)*Ns*(Nd+1)+1:indx*Ns*(Nd+1));
            dd4=data61((indx-1)*Ns*(Nd+1)+1:indx*Ns*(Nd+1));
    
            hh=h((indx-1)*Ns*(Nd+1)+1:indx*Ns*(Nd+1));         %当前数据包的单径信道参数
            hh1=h1((indx-1)*Ns*(Nd+1)+1:indx*Ns*(Nd+1));       %当前数据包的2径信道参数
            hh2=h2((indx-1)*Ns*(Nd+1)+1:indx*Ns*(Nd+1));
    
            %信号通过单径衰落信道,并加入高斯白噪声
            r1=hh.*dd1+sigma1*(randn(1,length(dd1))+j*rand(1,length(dd1)));
            r2=hh.*dd2+sigma1*(randn(1,length(dd2))+j*rand(1,length(dd2)));
    
            %信号通过2径衰落信道,并加入高斯白噪声
    
            r11=hh1.*dd1+hh2.*dd3+sigma1*(randn(1,length(dd1))+j*rand(1,length(dd1)));
            r21=hh1.*dd2+hh2.*dd4+sigma1*(randn(1,length(dd2))+j*rand(1,length(dd2)));
    
            r1=reshape(r1,Ns,Nd+1);    %并串变换
            r2=reshape(r2,Ns,Nd+1);
    
            r11=reshape(r11,Ns,Nd+1);
            r21=reshape(r21,Ns,Nd+1);
    
            r1=r1(Ncp+1:end,:);        %移除循环前缀
            r2=r2(Ncp+1:end,:);
    
            r11=r11(Ncp+1:end,:);
            r21=r21(Ncp+1:end,:);
    
            %根据训练符号进行的信道估计
            R1=fft(r1);                %FFT变换
            R2=fft(r2);
    
            R11=fft(r11);
            R21=fft(r21);
    
            R1=[R1(39:end,:);R1(2:27,:)];    %数据重排
            R2=[R2(39:end,:);R2(2:27,:)];
            R11=[R11(39:end,:);R11(2:27,:)];
            R21=[R21(39:end,:);R21(2:27,:)];
    
            HH1=(Preamble.')./R1(:,1);       %信道估计
            HH2=(Preamble.')./R2(:,1);
    
            HH11=(Preamble.')./R11(:,1);
            HH21=(Preamble.')./R21(:,1);
    
            HH1=HH1*ones(1,Nd);
            HH2=HH2*ones(1,Nd);
            HH11=HH11*ones(1,Nd);
            HH21=HH21*ones(1,Nd);
    
            x1=R1(:,2:end).*HH1;             %信道补偿
            x2=R2(:,2:end).*HH2;
            x3=R11(:,2:end).*HH11;
            x4=R21(:,2:end).*HH21;
    
            x1=pskdemod(x1,M1,pi/4);         %数据解调
            x2=qamdemod(x2.*sqrt(10),M2);
            x3=pskdemod(x3,M1,pi/4);
            x4=qamdemod(x4.*sqrt(10),M2);
    
            %统计一帧中的错误比特数
            [neb1(indx),temp]=biterr(x1,msg1(:,(indx-1)*Nd+1:indx*Nd),log2(M1));
            [neb2(indx),temp]=biterr(x2,msg2(:,(indx-1)*Nd+1:indx*Nd),log2(M2));
            [neb3(indx),temp]=biterr(x3,msg1(:,(indx-1)*Nd+1:indx*Nd),log2(M1));
            [neb4(indx),temp]=biterr(x4,msg2(:,(indx-1)*Nd+1:indx*Nd),log2(M2));
        end
        ber1(ii)=sum(neb1)/(Nsp*log2(M1)*Nd*Nfrm);    %理想信道的误比特率
        ber2(ii)=sum(neb2)/(Nsp*log2(M2)*Nd*Nfrm);
    
        ber3(ii)=sum(neb3)/(Nsp*log2(M1)*Nd*Nfrm);    %2径信道的误比特率
        ber4(ii)=sum(neb4)/(Nsp*log2(M2)*Nd*Nfrm);
    
    end
    semilogy(EbNo,ber1,'-ro',EbNo,ber3,'-rv',EbNo,ber2,'-r*',EbNo,ber4,'-rd')
    grid on
    title('OFDM系统误比特率性能')
    legend('QPSK单径信道','QPSK2径信道','16-QAM单径信道','16-QAM2径信道')
    xlabel('信噪比(EbNo)')
    ylabel('误比特率')
    

        仿真结果如下:

        从仿真结果中可以看出,同一种调制方式下,数据通过单径信道和2径信道的误比特率比较接近,证明了OFDM通信系统可以改善多径效应。

     

    参考文献

    [1][2]    樊昌信,曹丽娜.通信原理 第七版[M].国防工业出版社,2012.

    [3]    刘学勇.详解MATLAB/SIMULINK 通信系统建模与仿真[M].电子工业出版社,2011.

    [4]    子木.OFDM完整仿真过程及解释(MATLAB) [DB/OL].Online available at :https://zhuanlan.zhihu.com/p/57967971,or,https://blog.csdn.net/qq_41687938/article/details/89404046,2019-9-12.

     

    展开全文
  • 按照业务的架构层次栈,自底向上按照资源、通信、数据与计算的维度,梳理出了 4 个技术层次:分布式资源池化、分布式通信、分布式数据存储与管理、分布式计算。这样的划分符合业务架构设计的一般规律,即“在一定...
  • UML大科普:一文梳理清 14种 UML 工具和软件 【置顶1】熬10天夜,肝出了这个PDF版「软件安装手册」 【置顶2】再肝两夜,写了个「服务器项目部署」实战PDF手册 Linux系统 常用 Linux 发行版操作系统大盘点 ...
  • DDR设计总结

    2020-04-20 22:06:48
    本文针对DDR的一些知识做一个统一的整理,一个项目是18年开始,基于光纤通信的一块通信板卡,作为一个开发,硬件如果按开发板设计原理图,逻辑配置一直参考原有的demo,可能会对一些基本的认识了解不够深,最近刚好...
  • 计算机基础之HTTP协议

    2019-02-21 11:47:44
    ttp是网络上最常见的协议之一,我们上网必用的协议,它是什么,是如何工作的,今天我们就简单梳理一下http协议的知识。HTTP协议是什么?  HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol。是...
  • 本课程主要是讲解分布式架构下的异步消息通信机制的解决方案Kafka,从Kafka的产生背景、到Kafka 的基本应用、最后再深入分析Kafka的原理进行整体的梳理和分析。 为什么需要学习kafka? Kafka是由Apache软件基金会...

空空如也

空空如也

1 2 3 4
收藏数 78
精华内容 31
关键字:

通信原理知识梳理图