Android网络编程(一):网络基础知识

1、两台计算机是如何通讯的?

简单地说,两台计算机之间连上通讯介质,也就是电缆或者光纤,A计算机把要发送的类容转换成二进制代码,然后再根据二进制码发送对应的电流脉冲,电流脉冲通过电缆传播到B计算机,B计算机把电流脉冲解析成二进制码,再转换成对应的内容。

2、网络协议

什么是网络协议,为什么需要网络协议?网络协议其实就是发送端和接收端互相约定好的规则,不然鬼知道你发的那一大堆二进制码是什么东西,所以需要双方约定好规则。简单举例,比如双方约定好前8个字节为标题,那么接收方接收之后就把前8个字节作为标题,后面的是正文,就能把数据完整地接收,而不是把所有数据都当作标题或者内容。

当然现实中的网络错综复杂,传输的内容更是花里胡哨,所以网络协议也比较复杂,互联网中常用的代表性的协议有IP、TCP、HTTP等,LAN中常用协议有IPX、SPX等

“计算机网络体系结构”将这些网络协议进行了系统的归纳,就形成了协议簇,TCP/IP就是这些协议的集合。
在这里插入图片描述
计算机通信诞生之初,系统化与标准化未收到重视,不同厂商只出产各自的网络来实现通信,这样就造成了对用户使用计算机网络造成了很大障碍,缺乏灵活性和可扩展性

为解决该问题,ISO(国际标准化组织)制定了一个国际标准OSI(开放式通信系统互联参考模型)

TCP/IP并非ISO指定,是由IETF(国际互联网工程任务组)建议、致力推进标准化的一种协议,其中,大学等研究机构和计算机行业是推动标准化的核心力量,现已成为业界标准协议

协议的标准化也推动了计算机网络的普及

3、OSI参考模型

ISO在指定标准的OSI之前,提出了作为通信协议设计指标的OSI参考模型,将协议分为七层,使得原来复杂的网络协议更加简单化。
实际上,分组通信协议很复杂,OSI参考模型将其分为了易于理解的七个分层,如下图:
在这里插入图片描述

3.1、物理层

物理层位于OSI模型最底层,主要包含网线、光纤、网卡和其它一些通讯必备的硬件,这一层主要是把二进制准换成光或电信号传输。

在这一层,数据的单位称为比特(bit)

3.2、数据链路层

第2层是数据链路层(Data Link Layer)
像网桥、交换机、MAC地址、交换机或者网卡和驱动程序等就是在第2层的范畴,以太网等协议就运行在此层,第2层主要是把数据帧转换成二进制位供第1层(物理层)处理。

在这一层,数据的单位称为帧(frame)

3.3、网络层

在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。网络层将数据链路层提供的帧组成数据包,这一层主要功能是地址解析路由。IP地址就属于这一层的概念

在这一层,数据的单位称为数据包(packet)

3.4、传输层

只在通信双方的节点上(比如计算机终端)进行处理,而无需在路由器上处理,传输层是OSI中最重要、最关键的一层,是唯一负责总体的数据传输和数据控制的一层;

传输层提供端到端的交换数据的机制,检查分组编号与次序,传输层对其上三层如会话层等,提供可靠的传输服务,对网络层提供可靠的目的地站点信息主要功能

在这一层,数据的单位称为数据段(segment)

3.5、会话层

这一层也可以称为会晤层或对话层,在会话层及以上的高层次中,数据传送的单位不再另外命名,统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。

PS:其实在应用层、表示层、会话层这三层,协议可以共用:
在这里插入图片描述

3.6、表示层

将应用处理的信息转换为适合网络传输的格式,或将来自下一层的数据转换为上层能够处理的格式;主要负责数据格式的转换,确保一个系统的应用层信息可被另一个系统应用层读取。

数据的压缩和解压缩, 加密和解密等工作都由表示层负责。

3.7、应用层

第7层也称作“应用层”(Application Layer),是专门用于应用程序的。应用层确定进程之间通信的性质以满足用户需要以及提供网络与用户应用软件之间的接口服务。如果你的程序需要一种具体格式的数据,你可以创造一些你希望能够把数据发送到目的地的格式,并且创建一个第7层协议。SMTP、DNS和FTP都是7层协议。

4、连接方式

4.1、面向有连接型

在这里插入图片描述
发送数据之前,需要在收发主机之间建立一条通信线路,在通信传输前后,专门进行建立和断开连接的处理,如果与对端之间无法通信,可避免发送无谓的数据

4.2、面向无连接型

在这里插入图片描述
这种类型不要求建立和断开连接,发送端可任何时候发送数据,接收端也不知道自己何时从哪里接受数据,这种情况下,接收端需要时常确认是否收到数据,彼此也不需要确认对方是否存在

4.3、电路交换

电路交换中,交换机主要负责数据的中转处理;计算机与交换机相连接,交换机之间由众多通信线路连接,计算机发送数据时,需要先连接电路,建立连接,即可进行通信,直到连接被断开

4.4、分组交换

最初,一台计算机收发信息时会独占整个电路,其他计算机只能等待,且无法预测何时结束通信,为解决这个问题,将发送的数据分为多个数据包,按一定的顺序排列后发送,这就是分组交换,TCP/IP便属于分组交换
在这里插入图片描述
分组交换中,由分组交互机(路由器)连接通信线路;在每个分组首部写入发送端与接收端地址(即同一条线路同时为多个用户服务),也可以确认区分每个分组的数据目的地,以及它与哪台计算机通信

分组交换的大致处理过程:发送端将数据分组分给路由器,路由器收到后缓存到自己的缓冲区,然后再转发给目标计算机;因此,分组交换也称为:蓄积交换

路由器收到收据会按照顺序进行缓存至相应队列,然后以先进先出顺序将其逐一发送(有时会优先发送目标地址较特殊的数据)

**分组交换的缺陷:**分组交换中,通信线路共享,因此,通信传输速度可能有差异,根据网络拥堵情况,数据到达目标地址时间长短不同;另外,路由器缓存饱和或溢出时,可能发生数据丢失,无法发送到接收端的情况。

电路交换和分组交换的特点:
在这里插入图片描述

4.5、 根据接收端数据分类

4.5.1 单播

简单来说就是一对一通信,最早的固定电话就是单播通信的一个典型例子

4.5.2 广播

将消息从一台主机发送给与之相连的其他所有主机;典型例子就是电视播放(将电视信号一齐发送给非特定的多个连接对象)

4.5.3 多播

与广播类似,也是将消息发送给多个相连接的接收主机;不同之处在于多播要限定某一组主机作为接收端

4.5.4 任播

在特定的多台主机中选择一台作为接收端的一种通信方式(从目标主机群中选择一台最符合的主机作为目标主机发送消息,一般被选中的主机将返回一个单播信号,随后发送端只会和这台主机通信)
在实际的应用中有DNS根域名解析服务器

在这里插入图片描述

5、网络地址

通信传输中,发送端和接收端可以被视为通信主体,它们由“地址”加以标识,在计算机通信中,每一层协议的地址都不同

5.1、地址的唯一性

通信地址必须明确的表示一个主体对象,以便确认通信主体,同一个网络中不允许有2个相同的通信主体存在,这就是地址的唯一性

5.2、地址的层次性

地址总数不多的情况下,有了唯一地址就可以定位相互通信的主体;如果地址总数比较多,那么想要高效的定位通信主体,就需要让地址具有层次性

比如:MAC和IP地址在标识一个通信主体时都具有唯一性,但只有IP地址具有层次性

MAC地址由制造商制造的网卡,通过识别制造商号,制造商内部产品编号以及产品通用编号来确保MAC地址的唯一性

IP地址由网络号和主机号2部分组成,即通信主体IP地址不同,若主机号不同,网络号相同,说明其处于同一个网段

网络通信中,每个节点都会根据分组数据的地址信息,参考一个发出接口列表,来判断报文应该由哪个网卡发送出去,其中,MAC和IP的区别在于:

MAC:寻址参考的表叫做地址转发表,其中所记录的实际上MAC地址本身

IP:寻址参考的表叫做路由控制表,其中所记录的IP地址是集中了之后的网络号(网络号与子网掩码)

6、网络的构成

在这里插入图片描述
搭建网络的主要设备及其作用:
在这里插入图片描述

6.1、中继器

OSI模型中第一层——物理层面上延长网络的设备;由电缆传过来的波信号或光信号,经由中继器波形调整和放大再传给两一个电缆
在这里插入图片描述

6.2、网桥(2层交换机)

网桥是在OSI模型第二层——数据链路层面上连接2个网络的设备;它可以识别数据链路层中的数据帧,并将数据帧临时存储于内存,再重新生成一个全新帧转发给相连的另一个网段

网桥能够连接不同传输速率的数据链路,并且不限制连接网段的个数
在这里插入图片描述

6.3、路由器(3层交换机)

OSI模型第三层——网络层面上连接2个网络、并对分组报文进行转发的设备,根据IP地址进行处理;TCP/IP中网络层地址就成为了IP地址
在这里插入图片描述

6.4、网关

OSI模型中负责将从传输层应用层的数据进行转换和转发的设备;处理传输层及以上的数据
网关不仅转发数据还对其进行转换,通常会使用一个表示层或应用层网关,在不能直接通信的协议间进行翻译,最终实现通信
在这里插入图片描述
资料:TCP/IP协议(一)网络基础知识

下一篇:Android网络编程(二):TCP/IP协议详解

目录: Android网络编程系统性学习目录

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章