在讲 Android 网络通信之前,先说一下网络通信,了解我们是怎么在互联网上自由获取数据的。
一、网络通信
1.0 什么是网络体系结构?
网络体系结构是指通信系统的整体设计,它为网络硬件、软件、协议、存取控制和拓扑提供标准。是计算机之间相互通信的层次,以及各层中的协议和层次之间接口的集合。
应用层:网络服务与使用者应用程序间的一个接口
表示层:数据表示、数据安全、数据压缩
会话层:会话层连接到传输层的映射;会话连接的流量控制;数据传输;会话连接恢复与释放;会话连接管理、差错控制
传输层:用一个寻址机制来标识一个特定的应用程序(端口号; 数据格式:数据组织成数据段Segment)
网络层:基于网络层地址(IP地址)进行不同网络系统间的路径选择(例:路由器; 数据格式:分割和重新组合数据包Packet)
数据链路层:在物理层上建立、撤销、标识逻辑链接和链路复用 以及差错校验等功能。通过使用接收系统的硬件地址或物理地址来寻址(例:网桥、交换机、网卡; 数据格式:将比特信息封装成数据帧Frame)
物理层:建立、维护和取消物理连接(例:光纤、同轴电缆、
双绞线、中继器和集线器; 数据格式:传输比特流)
2.0 什么是网络协议?
网络协议是指计算机网络和分布系统中互相通信的对等实体间交换信息时所必须遵守的规则的集合。
各个层上的协议:
常用的几种协议:
1.0 应用层协议:
- HTTP(Hypertext Transfer Protocol)是超文本传输协议,用于实现互联网中的WWW服务,使用端口80
- FTP(File Transfer Protocol)是文件传输协议,一般上传下载用FTP服务,数据端口是20H,控制端口是21H。
- SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,用来控制信件的发送、中转,使用端口25。
- DNS(Domain Name Service)是域名解析服务,提供域名到IP地址之间的转换,使用端口53。
- NFS(Network File System)是网络文件系统,用于网络中不同主机间的文件共享。
- Telnet服务是用户远程登录服务,使用23H端口,使用明码传送,保密性差、简单方便。
2.0 传输层协议:
TCP(Transmission Control Protocol)传输控制协议。TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。是一种可靠的数据流服务
UDP(User Datagram Protocol)用户数据报协议。UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。
UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。
3.0 网络层协议:
- 控制报文协议
- ARP(Address Resolution Protocol)地址转换协议
- RARP(Reverse ARP)反向地址转换协议
- IP是网络层的核心,通过路由选择将下一条IP封装后交给接口层。IP数据报是无连接服务
- ICMP是网络层的补充,可以回送报文。用来检测网络是否通畅