Android 网络层学习

来源:互联网 发布:电信网络宽带 编辑:程序博客网 时间:2024/06/05 17:57

Android 网络层学习

参考:https://mp.weixin.qq.com/s?__biz=MzIwMzYwMTk1NA==&mid=2247486825&idx=1&sn=db596ed4b69bd9220f6a8ad79ef308db

 

TCP/IP协议:

TCP/IP协议族按照层次由上到下,层层包装,而其协议通信的过程其实就对应着数据入栈与出栈的过程,也就是不断地根据协议打包和拆包的过程


以HTTP协议为例的封装和解包:


TCP/IP(Transfer ControlnProtocol/Internet Protocol)传输控制和网络协议。

IP首部:

这里主要处理的是ip相关的协议。


TCP首部:

主要控制的是传输的地址和传输控制

 

ping

ICMP协议:IP协议并不是一个可靠的协议,当传送IP数据包发生错误。比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会,这也就是为什么说建立在IP层以上的协议是可能做到安全的原因。

Ping利用ICMP协议包来侦测另一个主机是否可达。

TCP VS UDP
TCP:对于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议。

UDP:对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。

 

HTTP


Http实际上是基于TCP的应用层协议,而TCP协议又是基于Socket从而实现的。

HTTP报文格式:

请求方式及报文

HTTP提供7种访问方式:GET、POST、DELETE、PUT、HEAD、TRACE、OPTIONS。

主要学习GET、POST、PUT、DELETE;

GET、DELETE的请求报文格式:

POST、PUT的请求报文格式:

 

响应报文:

 

 

网络框架的使用

现在,网络框架很多。但是在原始的里面:

Apatch提供了HttpCLient;这个在Android6.0库已经被移除

Java提供了HttpUrlConnection;

所以,现在我们原生的只有HttpUrlConnection可以用了。

 

注意:框架只是构建一个基本环境,并且附带一些常用的类。

安卓网络层学习总结

对于安卓来说我们接触到的用于网络传输的对象就是socket。HttpUrlConnection这些网络库的底层也也是基于socket进行架构的。

HTTP协议的请求,是将数据按照HTTP协议的格式进行封装。针对TCP和UDP,socket有不同的对象进行处理。之后再经过ip协议的报文封装就可以进行传输了