1.7
Posted 用编程写诗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.7相关的知识,希望对你有一定的参考价值。
1.7 计算机网络体系结构
两台计算机要互相传送文件需解决很多问题:
(1) 必须有一条传送数据的通路。 (2) 发起方必须激活通路。 (3) 要告诉网络如何识别接收方。 (4) 发起方要清楚对方是否已开机,且与网络连接正常。 (5) 发起方要清楚对方是否准备好接收和存储文件。 (6) 若文件格式不兼容,要完成格式的转换。 (7) 要处理各种差错和意外事故,保证收到正确的文件。
一些历史:
最初的 ARPANET 设计时提出了分层的设计方法。 分层:将庞大而复杂的问题,转化为若干较小的局部问题。 1974 年,IBM 按照分层的方法制定并提出了系统网络体系结构 SNA (System Network Architecture) 。 此后,其他一些公司也相继推出了具有不同名称的体系结构。
但由于网络体系结构的不同,不同公司的设备很难互相连通。
ISO (国际标准化组织) 提出的 OSI/RM (Open Systems Interconnection Reference Model) 是使各种计算机在世界范围内互连成网的标准框架。 OSI/RM 是个抽象的概念。 1983年,形成了著名的 ISO 7498 国际标准,即七层协议的体系结构。OSI 试图达到一种理想境界:全球计算机网络都遵循这个统一标准,因而全球的计算机将能够很方便地进行互连和交换数据。OSI 的专家们在完成 OSI 标准时没有商业驱动力; OSI 的协议实现起来过分复杂,且运行效率很低; OSI 标准的制定周期太长,使得按 OSI 标准生产的设备无法及时进入市场; OSI 的层次划分也不太合理,有些功能在多个层次中重复出现。所以最后失败了
事实上基于 TCP/IP 的互联网已抢先在全球相当大的范围成功地运行了。
进入正题:协议与划分层次
网络协议 (network protocol),简称为协议,网络协议是计算机网络的不可缺少的组成部分。是为进行网络中的数据交换而建立的规则、标准或约定。
三个组成要素:
语法:数据与控制信息的结构或格式 。
语义:需要发出何种控制信息,完成何种动作以及做出何种响应。
同步:事件实现顺序的详细说明。
ARPANET 的研制经验表明:对于非常复杂的计算机网络协议,其结构应该是层次式的。
划分层次的概念举例:
网络接入模块负责做与网络接口细节有关的工作,并向上层提供接入和通信服务。
分层的优点与缺点
优点:各层之间是独立的。 灵活性好。 结构上可分割开。 易于实现和维护,能促进标准化工作
缺点:有些功能会重复出现,因而产生了额外开销。
注意:每一层的功能应非常明确。
层数太少,就会使每一层的协议太复杂。
层数太多,又会在描述和综合各层功能的系统工程任务时遇到较多的困难。
各层完成的主要功能:
差错控制:使相应层次对等方的通信更加可靠。
流量控制:发送端的发送速率必须使接收端来得及接收,不要太快。
分段和重装:发送端将要发送的数据块划分为更小的单位,在接收端将其还原。
复用和分用:发送端几个高层会话复用一条低层的连接,在接收端再进行分用。
连接建立和释放:交换数据前先建立一条逻辑连接,数据传送结束后释放连接。
计算机网络的体系结构:
网络的体系结构 (Network Architecture) 是计算机网络的各层及其协议的集合,就是这个计算机网络及其构件所应完成的功能的精确定义(不涉及实现)。
实现 (implementation) 是遵循这种体系结构的前提下,用何种硬件或软件完成这些功能的问题。
体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件。
这一节的最重点:
我们学习的模型是五层协议的体系结构,这个是我们学习的重点。
各层的主要功能:
应用层: 任务:通过应用进程间的交互来完成特定网络应用。
协议:定义的是应用进程间通信和交互的规则。 把应用层交互的数据单元称为报文(message)。 例如:DNS,HTTP,SMTP
运输层:任务:负责向两台主机中进程之间的通信提供通用的数据传输服务。传送单位数据报
具有复用和分用的功能。 主要使用两种协议: 传输控制协议 TCP 用户数据报协议 UDP 。
TCP (Transmission Control Protocol): 提供面向连接的、可靠的数据传输服务。 数据传输的单位是报文段 (segment)。TCP也是这本书所强调的重点!!!
UDP (User Datagram Protocol): 提供无连接的尽最大努力 (best-effort) 的数据传输服务(不保证数据传输的可靠性)。 数据传输的单位是用户数据报。
网络层:为分组交换网上的不同主机提供通信服务。传送单位报文分组
两个具体任务: 路由选择:通过一定的算法,在互联网中的每一个路由器上,生成一个用来转发分组的转发表。 转发:每一个路由器在接收到一个分组时,要依据转发表中指明的路径把分组转发到下一个路由器。
互联网使用的网络层协议是无连接的网际协议 IP (Internet Protocol) 和许多种路由选择协议,
因此互联网的网络层也叫做网际层或 IP 层。 IP 协议分组也叫做 IP 数据报,或简称为数据报。
数据链路层:常简称为链路层。传送单位帧(frame)
任务:实现两个相邻节点之间的可靠通信。 在两个相邻节点间的链路上传送帧(frame)。 如发现有差错,就简单地丢弃出错帧。 如果需要改正出现的差错,就要采用可靠传输协议来纠正出现的差错。这种方法会使数据链路层协议复杂。
物理层:传送单位比特/比特流
任务:实现比特(0 或 1)的传输。 确定连接电缆的插头应当有多少根引脚,以及各引脚应如何连接。 注意:传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆、无线信道等,并不在物理层协议之内,而是在物理层协议的下面。
数据在各层之间的传递过程:
OSI 参考模型把对等层次之间传送的数据单位称为该层的协议数据单元 PDU (Protocol Data Unit)。 任何两个同样的层次把 PDU (即数据单元加上控制信息)通过水平虚线直接传递给对方。这就是所谓的“对等层”之间的通信。
各层协议实际上就是在各个对等层之间传递数据时的各项规定。
实体、协议、服务和服务访问点
实体 (entity) :表示任何可发送或接收信息的硬件或软件进程。
协议:控制两个对等实体进行通信的规则的集合。
在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。
要实现本层协议,还需要使用下层所提供的服务。
注意:协议和服务在概念上是不一样的
Android Support Annotations :安卓注解快速上手
我们都知道,安卓资源文件都是int类型的ID来保存其引用,通过注解类型,可以让我们在写代码的时候,及时发现参数类型的错误,避免潜在的BUG,如下:
我们通过@LayoutRes指定了参数必须要是R.layout.xxx格式的数据,传数字IDE就会提示我们错误
通过gradle,把注解类型引入到项目中
compile ‘com.android.support:support-annotations:23.1.1‘
安卓原生给我们提供了一系列注解类,支持我们的开发
注解类所在包位置:安卓SDK路径extrasandroidm2repositorycomandroidsupportsupport-annotations
我们随便找个23.1.1文件夹,找到里面的support-annotations-23.1.1-sources.jar,通过JD-GUI查看
通过里面Res结尾的类,我们就可以限定安卓不同类型的资源ID了
里面其他类我们也可以看看,比如NonNull、Nullable、限定范围FloatRange的也很有意思,如下:
以上是关于1.7的主要内容,如果未能解决你的问题,请参考以下文章