从本篇开始,真正进入咱们的Android网络编程学习之旅。html
计算机网络是利用通讯设备和线路将地理位置不一样的、功能独立的多个计算机系统链接起来,以功能完善的网络软件实现网络的硬件、软件及资源共享和信息传递的系统。简单的说即链接两台或多台计算机进行通讯的系统。git
计算机网络体系结构能够定义为是网络协议的层次划分与各层协议的集合,同一层中的协议根据该层所要实现的功能来肯定。各对等层之间的协议功能由相应的底层提供服务完成。
------ 百度百科github
对于复杂的计算机网络协议,结构分层颇有必要。就像Android开发中,把应用分层各个模块。 面试
优势:编程
各层之间相互独立。
某一层并不须要知道它的下一层是如何实现的,而仅仅须要知道该层经过层间接口(即界面)所提供的服务灵活性好。
当任何一层发送变化时(例如因为技术的变化),只要层间接口关系保持不变,则在这层以上或如下各层均不受影响结构上可分割开。
各层均可以采用最合适的技术来实现易于实现和维护。
这种结构使得实现和调试一个庞大而又复杂的系统变得易于处理,由于整个的系统已被分解为若干个相对独立的子系统能促进标准化工做。
由于每一层的功能及其所提供的服务都已有了精确的说明缺点: 各层之间会有相同的功能出现,产生额外开销。浏览器
目前有3种体系结构:服务器
分层 | 功能 | 数据单位 | 协议栈 |
---|---|---|---|
物理层 | 屏蔽传输媒体和通讯手段的差别 | 比特(bit) | |
数据链路层 | 互连设备之间传送和识别数据帧 | 帧(frame) | 点对点协议 以太网协议 高级数据链路协议 帧中继 |
网络层 | 地址管理和路由选择 | 数据报(datagram) | IP协议 路由选择协议 |
传输层 | 管理两个节点之间的数据传输 负责可靠传输(确保数据被可靠地传送到目标地址) |
报文段(segment) | TCP协议 UDP协议 |
会话层 | 通讯管理。负责创建和断开通讯链接(数据流动的逻辑通路) 提供了数据交换定界和同步功能 管理传输层一下的分层 |
||
表示层 | 数据压缩、加密以及数据描述 | ||
应用层 | 针对特定应用的协议 | 报文(message) | HTTP DNS FTP SMTP SSH |
TCP/IP的体系结构比较简单,只有四层。 它并非遵循严格的 OSI 分层概念,应用程序能够直接使用 IP 层,或甚至直接使用最下面的网络接口层。能够演化成以下图所示: 网络
OSI的七层协议体系结构的概念清楚,理论也较完整,但它既复杂又不实用。TCP/IP 体系结构则不一样,但它如今却获得了很是普遍的应用。TCP/IP 是一个四层的体系结构。在学习计算机网络的原理时每每采用折中的办法,即综合 OSI 和 TCP/IP 的优势,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚。tcp
五层协议中,没有表示层和会话层,这两层的功能留给开发者来处理。分布式
传输层提供了进程间的逻辑通讯,传输层向高层用户屏蔽了下面网络层的核心细节。
规定网络地址的协议,叫作IP协议。它所定义的地址,就被称为IP地址。
IP的主要做用就是在复杂的网络环境中将数据包发给最终的目标地址。 相关技术:
传输控制协议(Transmission Control Protocol),面向链接的、可靠的流协议,提供可靠的通讯传输。
用户数据报协议(User Datagram Protocol),面向无链接的,具备不可靠性的数据报协议。
Routing protocol,是一种指定数据包转送方式的网上协议。
即套接字,是应用层 与 TCP/IP 协议族通讯的中间软件抽象层,表现为一个封装了 TCP / IP协议族 的编程接口(API)。
超文本传输协议(Hyper Text Transfer Protocol),用于从万维网服务器传输超文本到本地浏览器的传送协议。