Android网络编程面试要点解析?
- 行业动态
- 2025-03-02
- 20
Android网络编程面试问题及回答
1、请简述TCP的三次握手与四次挥手过程
三次握手
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
四次挥手
第一次挥手:客户端发送报文告诉服务器没有数据要发送了。
第二次挥手:服务端收到,再发送给客户端告诉它我收到了。
第三次挥手:服务端向客户端发送报文,请求关闭连接。
第四次挥手:客户端收到关闭连接的请求,向服务端发送报文,服务端关闭连接。
2、为什么TCP是可靠的,UDP是不可靠的?为什么UDP比TCP快?
TCP/IP协议拥有三次握手双向机制,这一机制保证校验了数据,保证了可靠性,而UDP就没有这样的机制,信息发出后不验证是否到达对方,所以不可靠。
UDP比TCP快是因为UDP没有TCP的握手、确认、重传等机制,因此开销小,速度快。
3、HTTP协议与HTTPS协议的区别
HTTP协议是一种用于分布式、协作式和超媒体信息系统的应用层协议,以明文方式发送内容,不提供任何方式的数据加密,适合传输非敏感信息。
HTTPS协议是在HTTP的基础上加了一层SSL/TLS加密,数据传输过程是加密的,安全性较好,但相比HTTP会消耗更多的资源。
4、GET请求和POST请求的区别
参数传输方式:GET参数通过URL传递,POST放在Request body中。
URL长度限制:GET请求在URL中传送的参数是有长度限制的,而POST没有。
数据类型:GET只接受ASCII字符,而POST没有限制。
安全性:GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
缓存:GET请求会被浏览器主动cache,而POST不会,除非手动设置。
回退行为:GET在浏览器回退时是无害的,而POST会再次提交请求。
书签收藏:GET产生的URL地址可以被Bookmark,而POST不可以。
5、Socket与Http的区别
连接方式:Http连接是短连接,客户端向服务器发送一次请求,服务器响应后连接即会断掉;Socket连接是长连接,理论上客户端和服务端一旦建立连接,则不会主动断掉。
数据传输:Http基于请求响应模式,有固定的格式和规范;Socket可以自由地传输数据,不受特定格式的限制。
端口使用:Http默认工作在80端口(HTTP)或443端口(HTTPS);Socket可以使用任意可用的端口进行通信。
相关问题与解答
1、为什么需要三次握手而不是两次握手?
三次握手是为了确保双方都能够接收和发送数据,并且能够避免一些网络问题,如果只有两次握手,至多只有连接发起方的起始序列号能被确认,另一方选择的序列号则得不到确认,三次握手还可以防止失效的连接请求突然到达服务器而引起错误。
2、为什么TCP比UDP可靠?
TCP提供了多种机制来保证数据的可靠传输,如序列号、确认应答、重传机制等,这些机制确保了数据在传输过程中不会丢失、重复或乱序,而UDP没有这些机制,它只是简单地将数据报发送出去,并不关心数据是否到达对方。