从本篇开始,真正进入我们的Android网络编程学习之旅。
概念
计算机网络是利用通信设备和线路将地理位置不同的、功能独立的多个计算机系统连接起来,以功能完善的网络软件实现网络的硬件、软件及资源共享和信息传递的系统。简单的说即连接两台或多台计算机进行通信的系统。
计算机网络体系结构
计算机网络体系结构可以定义为是网络协议的层次划分与各层协议的集合,同一层中的协议根据该层所要实现的功能来确定。各对等层之间的协议功能由相应的底层提供服务完成。
—— 百度百科
分层
对于复杂的计算机网络协议,结构分层很有必要。就像Android开发中,把应用分层各个模块。
优缺点
优点:
各层之间相互独立。
某一层并不需要知道它的下一层是如何实现的,而仅仅需要知道该层通过层间接口(即界面)所提供的服务灵活性好。
当任何一层发送变化时(例如由于技术的变化),只要层间接口关系保持不变,则在这层以上或以下各层均不受影响结构上可分割开。
各层都可以采用最合适的技术来实现易于实现和维护。
这种结构使得实现和调试一个庞大而又复杂的系统变得易于处理,因为整个的系统已被分解为若干个相对独立的子系统能促进标准化工作。
因为每一层的功能及其所提供的服务都已有了精确的说明
缺点:
各层之间会有相同的功能出现,产生额外开销。
体系结构
目前有3种体系结构:
- OSI参考模型,概念清楚,理论也较完整,但它既复杂又不实用
- TCP/IP体系结构,是一系列网络协议的总称,目前应用最广泛
- 五层体系结构,综合OSI和TCP/IP的优点,既简洁又能将概念阐述清楚
OSI参考模型
分层 | 功能 | 数据单位 | 协议栈 |
---|---|---|---|
物理层 | 屏蔽传输媒体和通信手段的差异 | 比特(bit) | |
数据链路层 | 互连设备之间传送和识别数据帧 | 帧(frame) | 点对点协议 以太网协议 高级数据链路协议 帧中继 |
网络层 | 地址管理和路由选择 | 数据报(datagram) | IP协议 路由选择协议 |
传输层 | 管理两个节点之间的数据传输 负责可靠传输(确保数据被可靠地传送到目标地址) |
报文段(segment) | TCP协议 UDP协议 |
会话层 | 通信管理。负责建立和断开通信连接(数据流动的逻辑通路) 提供了数据交换定界和同步功能 管理传输层一下的分层 |
||
表示层 | 数据压缩、加密以及数据描述 | ||
应用层 | 针对特定应用的协议 | 报文(message) | HTTP DNS FTP SMTP SSH |
TCP/IP
TCP/IP的体系结构比较简单,只有四层。
它并不是遵循严格的 OSI 分层概念,应用程序可以直接使用 IP 层,或甚至直接使用最下面的网络接口层。可以演化成如下图所示:
五层协议
OSI的七层协议体系结构的概念清楚,理论也较完整,但它既复杂又不实用。TCP/IP 体系结构则不同,但它现在却得到了非常广泛的应用。TCP/IP 是一个四层的体系结构。在学习计算机网络的原理时往往采用折中的办法,即综合 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚。
五层协议中各层的主要功能
五层协议中,没有表示层和会话层,这两层的功能留给开发者来处理。
物理层
在物理层,定义了以下内容:
- 接口特性
- 机械特性:规定了接口的几何形状等
- 电器特性:规定了接口使用的电平大小等
- 功能特性:规定了接口引脚个数及各项功能等
- 规程特性:定义了接口在工作过程中遵循的相应过程。
- 比特编码:用比特对信息按照一定规则进行编码,用于传输
- 数据率:即数据传输速率
- 比特同步:时钟同步
- 通讯方式:
- 单工通信:单向传输
- 半双工通信:双向交替传输
- 双工通信:双向同时传输
数据链路层
- 负责结点-结点数据传输
- 组桢:将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。
- 物理寻址:在桢头添加发送端或接收端的物理地址标识数据帧的发送端或接收端。
- 流量控制:匹配发送端与接收端的发送速度与接收速度,避免数据淹没接收端。
- 差错控制:检测并重传损坏或丢失帧,并避免重复帧。
- 访问(接入)控制:在任一给定时刻决定哪个设备拥有链路(物理介质)的控制使用权。
网络层
- 负责源主机到目的主机数据分组(packet)的交付(可能穿越多个网络)。
- 逻辑寻址:全局唯一逻辑地址,确保数据分组被送达目的主机,如IP地址(穿越多个网络时,链路层的物理寻址并不能用)。
- 路由:路由器(或网关)互连网络,并路由分组至最终目的主机,进行路径选择。
- 分组转发
传输层
传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节。
功能:
- 负责源-目的(端-端)(进程间)完整报文传输
- 报文分段与重组
- SAP寻址:确保将完整报文提交给正确进程,如端口号
- 连接控制:负责端-端的连接控制(建立连接、拆除连接),是一种逻辑连接
- 流量控制:控制端-端传输的速度
- 差错控制:差错检测与纠正
应用层
主要协议
IP协议
规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址。
IP的主要作用就是在复杂的网络环境中将数据包发给最终的目标地址。
相关技术:
- DNS:域名系统,一种分布式的网络目录服务,主要用于域名与IP地址的要互转换。
- ARP:ARP是一种解决地址问题的协议,以目标地址为线索,用来定位下一个应该接收数据分包的网络设备对应的MAC地址。不过,ARP只适用于IPv4,不适用于IPv6。
- ICMP:Internet控制报文协议,作用是报告一些网络传输过程中的错误与做一些同步工作。
- DHCP:动态主机配置协议,实现自动设置IP地址、统一管理IP地址分配。
- NAT:网络地址转换,作用是将IP数据报头中的IP地址转换为另一个IP地址。
- IP隧道:是一种数据包封装技术,它是将原始IP包(其报头包含原始发送者和最终目的地)封装在另一个数据包(称为封装的IP包)的数据净荷中进行传输。
TCP协议
传输控制协议(Transmission Control Protocol),面向连接的、可靠的流协议,提供可靠的通信传输。
UDP协议
用户数据报协议(User Datagram Protocol),面向无连接的,具有不可靠性的数据报协议。
路由协议
Routing protocol,是一种指定数据包转送方式的网上协议。
Socket
即套接字,是应用层 与 TCP/IP 协议族通信的中间软件抽象层,表现为一个封装了 TCP / IP协议族 的编程接口(API)。
HTTP协议
超文本传输协议(Hyper Text Transfer Protocol),用于从万维网服务器传输超文本到本地浏览器的传送协议。