1、网络分层
OSI七层模型
应用层(Application):负责为应用程序提供网络服务,如HTTP、FTP等协议。
表示层(Presentation):处理数据的格式化、加密和解密等问题。
会话层(Session):管理应用程序之间的会话,包括建立、维护和中断会话。
传输层(Transport):提供端到端的数据传输服务,如TCP、UDP协议。
网络层(Network):负责数据包的路由和转发,如IP协议。
数据链路层(Data Link):处理物理链路上的数据传输,如以太网协议。
物理层(Physical):处理物理介质上的数据传输,如光纤、双绞线等。
TCP/IP五层模型
应用层(Application):与OSI模型的应用层类似。
传输层(Transport):与OSI模型的传输层类似。
网络层(Network):与OSI模型的网络层类似。
数据链路层(Data Link):与OSI模型的数据链路层类似。
物理层(Physical):与OSI模型的物理层类似。
2、TCP/IP协议
三次握手
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
四次挥手
第一次挥手:客户端发送报文告诉服务器没有数据要发送了。
第二次挥手:服务端收到,再发送给客户端告诉它我收到了。
第三次挥手:服务端向客户端发送报文,请求关闭连接。
第四次挥手:客户端收到关闭连接的请求,向服务端发送报文,服务端关闭连接。
为什么TCP是可靠的,UDP是不可靠的
TCP通过三次握手和四次挥手机制确保数据传输的可靠性,而UDP信息发出后不验证是否到达对方,所以不可靠。
3、HTTP协议
特点:简单快速、灵活、无连接、无状态。
请求报文:由请求行、请求报头和请求数据组成。
响应报文:由状态行、响应报头和响应正文组成。
4、HTTPS协议:在HTTP的基础上增加了SSL/TLS加密,确保数据传输的安全性。
5、Socket编程
概念:Socket是计算机网络中用于进程间通信的一种机制,可以在不同的设备之间建立连接,进行数据传输。
与HTTP的区别:HTTP是一种基于请求与响应模式的无连接、无状态的应用层协议,而Socket是一种面向连接的、持续的通信方式。
6、Android网络框架
HttpURLConnection:Java提供的用于执行HTTP请求的类,支持HTTP和HTTPS协议。
OkHttp:一个高效的HTTP客户端,支持同步和异步请求,支持连接池化、自动重试和恢复等功能。
Retrofit:一个类型安全的HTTP客户端,可以将HTTP请求转换成Java接口,简化网络请求的代码。
Volley:Google推出的网络请求库,适用于数据量小、频率高的请求。
7、网络请求优化
连接复用:通过复用连接减少建立连接的开销。
数据压缩:使用GZIP等压缩算法减少数据传输量。
缓存策略:使用缓存减少重复的网络请求。
8、安全与性能优化
使用HTTPS协议:确保数据传输的安全性。
对敏感数据进行加密处理:避免数据泄露。
合理配置线程池和并发量:避免因线程过多导致的性能问题。
1、为什么TCP是三次握手而不是两次握手?
答案:三次握手的过程即是通信双方相互告知序列号起始值,并确认对方已经收到了序列号起始值的必经步骤,如果只是两次握手,至多只有连接发起方的起始序列号能被确认,另一方选择的序列号则得不到确认。
2、HTTP和HTTPS的主要区别是什么?
答案:HTTP明文传输,数据都是未加密的,安全性较差;HTTPS(SSL+HTTP)数据传输过程是加密的,安全性较好,使用HTTPS协议需要到CA(Certificate Authority,数字证书认证机构)申请证书,需要一定费用,HTTP页面响应速度比HTTPS快,主要是因为HTTP使用TCP三次握手建立连接,客户端和服务器需要交换3个包,而HTTPS除了TCP的三个包,还要加上ssl握手需要的9个包,所以一共是12个包。