Android面试之网络协议篇

一、TCP/IP

1、概念

TCP/IP是网络通讯协议族,即网络通讯协议总称。TCP、UDP、IP、FTP、SMTP、HTTP等都属于TCP/IP族内的协议。

2、TCP/IP四层体系结构模型

TCP/IP概念层模型                 主要协议                                                   功能
应用层 FTP、SMTP、HTTP 接收传输层的数据、按照应用要求将数据传输至传输层
传输层 TCP、UDP 提供两台主机端对端的通信
网络层 ICMP、IP、IGMP 为数据包选择路由
数据链路层 ARP、RARP 链路管理错误检测、传输地址等信息进行有效处理

 

 

 

 

 

 

3、OSI(国际标准化组织)模型

      应用层、表示层、会话层(这3层合为应用层)、传输层、网络层、数据链路层、物理层(这2层合为数据链路层)

 

二、TCP

1、概念

传输控制协议(TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。

2、TCP三次握手的建立连接过程

      1)、客户端发送SYN报文给服务器端,进入SYN_SEND状态。

      2)、服务器端接收到SYN报文后,回应一个SYN+ACK报文给客户端,进入SYN_RECEIVED状态。

      2)、客户端接收到SYN报文后,回应一个ACK报文给服务器端,进入ESTABLISHED状态

      

3、TCP四次握手断开连接(这是由TCP的半关闭造成的)

       1)、客户端标示数据发送完毕,则向服务端发送FIN分节,请求释放连接。

       2)、服务器端接到这个FIN分节之后,告诉TCP确认,然后发送ACK,进入CLOSE_WAIT状态(此时表明客户端到服务器端的连接已经释放,服务器端不再接收客户端发送的数据,但服务器端仍可向客户端发送)。

       3)、服务器端此时如果还有没发完的数据会继续发送,完毕后会向客户端发送FIN分节,请求释放连接,然后服务器端进入LAST_ACK状态。

       4)、客户端收到释放请求后,向服务器端发送确认应答,进入TIME_WAIT状态。2m内若没有服务器端的重连请求,进入CLOSE状态,服务器端收到确认之后也进入CLOSE状态。

4、TCP的特点

       1)、面向连接。

       2)、基于流的方式通信。

       3)、“三次握手”保证可靠传输。

       4)、网络不佳时,减少数据注入速率和量,缓解拥塞。

       5)、每条TCP连接维护的是两个端点通信,不支持多端点。

 

三、UDP

1、概念

用户数据报协议(UDP)提供一种无需建立连接就可以发送封装的IP数据包的方法。

2、特点

       1)、无连接协议。

       2)、面向报文。

       3)、不可靠性。

       4)、头部信息只有8字节,减小信息包额外开销。

       5)、一对一、一对多、多对多、多对一。

 

四、HTTP

1、概念

超文本传输协议(HTTP)是一种运行与TCP之上的简单的请求-响应协议。默认端口80。

2、特点

      1)、基于请求/响应模式,即客户端/服务器端模式。

      2)、简单快速:客户端只需发送请求方式(GET、POST、PUT、HEAD等)和路径。

      3)、灵活:允许传输任意类型的数据对象,由Content-Type加以标记。

      4)、无连接:每次只响应一个请求,处理完毕即断开连接。

      5)、无状态:服务器端不保留客户端的任何信息,每个请求之间无关联。

3、GET和POST区别

      1)、数据传输方式不同:GET通过URL传输且有长度限制;POST方法体传输。

      2)、安全性:GET不安全;POST相对安全。

      3)、数据类型不同:GET只允许ASCII;POST无限。

4、HTTP请求报文结构

      1)、请求行:包含请求方法、URL、HTTP版本信息。

      2)、请求头部:关键字/值对组成,key/value通过“:”分隔,Cookie、User-Agent等。

      3)、空行:通过一个空行告诉服务器端请求头到此结束。

      4)、请求体:即GET/POST等请求携带的内容体。

5、HTTP响应报文结构

      1)、响应行:协议版本、状态码、描述组成。

      2)、响应头:用于描述服务器的一些基本信息。

      3)、空行:一个空行隔开响应头。

      4)、响应体:服务器端响应回来的数据体。

6、HTTP版本

      1)、HTTP/0.9 :只GET,仅HTML。

      2)、HTTP/1.0 :请求必须包含头信息;增加了POST和HEAD;支持多数据格式。

      3)、HTTP/1.1 :持久连接,即TCP默认不关闭,一个TCP连接允许多个HTTP请求。

      4)、HTTP/2.0 :多工,不仅客户能同时发多个请求,服务器端也能同时处理多个请求,解决了对头堵塞问题。

7、其它

      1)、keep-alive(持久连接):减少CPU和内存使用;允许请求和响应的管线化;降低拥塞控制;减少请求迟疑。

      2)、HTTP2较HTTP1.x :二进制分帧;服务器推送;头部压缩;多路复用。

 

五、HTTPS

1、概念

HTTPS :以安全为目标的HTTP通道,即安全版HTTP,SSL/TLS+HTTP通过传输加密和身份认证保证传输安全。默认端口443。

2、HTTPS请求过程

Android面试之网络协议篇_第1张图片此图形象生动借用

 

六、Socket

1、概念

套接字(Socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,它是网络通信过程中的断点的抽象表示。

Android面试之网络协议篇_第2张图片

2、Socket通信过程

Android面试之网络协议篇_第3张图片

3、Socket心跳机制:定时发送约定是数据报文维持连接。

 

七、其它

1、Cookie和Session

Cookie:保存在客户端记录服务器端信息的小段文本信息。

Session:服务器端保存会话记录信息的技术。

Cookie和Session区别

       1)、存储位置不同:Cookie存储于客户端;Session存储于服务器端。

       2)、生命周期不同:Session到设定时间之后结束,不设定时间也会随着客户端进程结束而结束;Cookie默认随客户端进程结束而结束,设定之后不受客户端进程的影响。

      3)、安全性Cookie存储于客户端,安全性较弱;Session存储于服务器端,安全性较高,但过多则影响性能。

2、Uri和Url

Uri :统一资源标识符,用于标识某一互联网资源名称的字符串。

Url :统一资源定位符,是Uri的子集。

 

 

你可能感兴趣的:(kotlin,android)