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的主要内容,如果未能解决你的问题,请参考以下文章

爬虫篇网络爬虫技术,项目经验分享!

训练神经网络的一些经验分享

一周第二次课(1月23日) 1.6/1.7 配置IP 1.8 网络问题排查

高薪直通车丨JavaEE面试经验分享联**讯网络科技

经验分享win10 通过网络映射共享存储

第1章 1.7计算机网络概述--理解OSI参考模型分层思想