Android网络协议的面试总结

 

说一下TCP/IP两种的协议的理解?

  1. 定义

即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准,

  1. 网络模型

TCP/IP协议参考模型把整个ISO模型归类到四个抽象层中:

应用层:TFTPHTTPSNMPFTPSMTPDNSTelnet 等等

传输层:TCPUDP

网络层:IPICMPOSPFEIGRPIGMP

数据链路层:SLIPCSLIPPPPMTU

 

Android网络协议的面试总结_第1张图片

 

 

说一下对Socket的理解?

  1. 定义

socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信

Android网络协议的面试总结_第2张图片

  1. 通信原理

 

socket是一种"打开/关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。

 

Android网络协议的面试总结_第3张图片

                                

  1. 服务器根据地址类型(ipv4,ipv6)、socket类型、创建socket
  2. 服务器为socket绑定ip地址和端口号
  3. 服务器socket监听端口号请求,随时准备接收客户端发来的连接,这时候服务器的socket并没有被打开

 

  1. 客户端创建socket
  2. 客户端打开socket,根据服务器ip地址和端口号试图连接服务器socket
  3. 服务器socket接收到客户端socket请求,被动打开,开始接收客户端请求,直到客户端返回连接信息。这时候socket进入阻塞状态,所谓阻塞即accept()方法一直到客户端返回连接信息后才返回,开始接收下一个客户端谅解请求
  4. 客户端连接成功,向服务器发送连接状态信息
  5. 服务器accept方法返回,连接成功
  6. 客户端向socket写入信息
  7.  服务器读取信息
  8.  客户端关闭
  9.  服务器端关闭

 

 

 

 

说一下TCP协议中如何实现三次握手?

TCP/IP协议中,TCP协议通过三次握手建立一个可靠的连接

Android网络协议的面试总结_第4张图片

第一次握手:客户端尝试连接服务器,向服务器发送syn包(同步序列编号Synchronize Sequence Numbers),客户端进入SYN_SEND状态等待服务器确认

第二次握手:服务器接收客户端syn包并确认(ack:确认字符,命令正确应答)),同时向客户端发送一个SYN+ACK的报文,此时服务器进入SYN_RECV接收状态

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包,此包发送完毕,客户端和服务器进入ESTABLISHED(已建立连接)状态,完成三次握手

Android网络协议的面试总结_第5张图片

 

 

说明TCP和UDP的区别?

TCP和UDP的相同点和不同点?

相同点:在传输消息对象时,会封装上ip信息,发送给服务器。

不同点:

TCP:

  1. 传输大文件
  2. 传输可靠(要经过三次握手确认)
  3. 面向连接
  4. 效率低

UDP:

  1. 文件不得超过64k
  2. 不可靠
  3. 不面向连接
  4. 效率高

 

 

 

说明HTTPS和HTTP的区别?

  1. 定义

http: 超文本传输协议, 是一种规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。

https: SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。

  1. 区别

 

 

  1. https协议需要到ca申请证书,一般免费证书很少,需要交费。
  2. http是超文本传输协议,信息是明文传输,
  3. https 则是具有安全性的ssl加密传输协议
  4. httphttps使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443
  5. http的连接很简单,是无状态的
  6. HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全HTTPS

                               

你可能感兴趣的:(Android基本开发,深入了解Android)