Android面试题精选汇总 - 计算机网络

文章目录

    • 1. 网络体系
    • 2. 描述一次网络请求的流程?
    • 3. TCP 中 3 次握手和 4 次挥手的过程?
    • 4. TCP 与 UDP 的区别及应用?
    • 5. HTTP 协议
    • 6. HTTP 1.0 与 2.0 的区别
    • 7. HTTP 报文结构
    • 8. HTTP 与 HTTPS 的区别以及如何实现安全性
    • 9. WebSocket 与 socket 的区别

1. 网络体系

Android面试题精选汇总 - 计算机网络_第1张图片
参考:
挺重要的网络基础、搞定计算机网络面试,看这篇就够了(补充版)

2. 描述一次网络请求的流程?

Android面试题精选汇总 - 计算机网络_第2张图片

  1. 域名解析
  2. TCP的三次握手
  3. 建立TCP连接后发起HTTP请求
  4. 服务器响应HTTP请求
  5. 浏览器解析html代码,同时请求html代码中的资源(如js、css、图片等)
  6. 浏览器对页面进行渲染并呈现给用户

参考:描述一次完整的网络请求过程

3. TCP 中 3 次握手和 4 次挥手的过程?

Android面试题精选汇总 - 计算机网络_第3张图片

三次握手:为了确保客户端和服务器双方都收发正常,另外客户端第3次握手是为了防止前面的已失效连接请求报文段发送给服务端

四次挥手:是因为可能服务器的数据未传输完成,所以只能先回复一个ACK,等待传输完成再关闭

4. TCP 与 UDP 的区别及应用?

Android面试题精选汇总 - 计算机网络_第4张图片

UDP一般用于即时通信,比如: QQ 语音、 QQ 视频 、直播等等
TCP 一般用于文件传输、发送和接收邮件、远程登录等场景

5. HTTP 协议

Http,超文本传输协议,用于客户端和服务端传输数据的一种应用层协议

HTTP 是一种无状态(stateless)协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。

Http 也是一种不保存连接协议。每次连接只处理一个请求,一次请求完成后就断开连接。因此,每次的请求都会造成无谓的TCP连接建立和断开,增加通信量的开销。

为解决上述 TCP 连接的问题, HTTP/1.1和一部分的 HTTP/1.0 想出了持久连接(HTTP Persistent Connections,也称为 HTTP keep-alive 或HTTP connection reuse) 的方法。 持久连接的特点是, 只要任意一端没有明确提出断开连接, 则保持 TCP 连接状态

6. HTTP 1.0 与 2.0 的区别

  • 新的二进制格式(Binary Format),HTTP1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮。

  • 多路复用(MultiPlexing),即连接共享,即每一个request都是是用作连接共享机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面。

  • header压缩,如上文中所言,对前面提到过HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。

  • 服务端推送(server push),同SPDY一样,HTTP2.0也具有server push功能。

参考:[HTTP1.0、HTTP1.1 和 HTTP2.0 的区别][5]

7. HTTP 报文结构

Android面试题精选汇总 - 计算机网络_第5张图片

Android面试题精选汇总 - 计算机网络_第6张图片

Android面试题精选汇总 - 计算机网络_第7张图片

参考:HTTP报文详解

8. HTTP 与 HTTPS 的区别以及如何实现安全性

一、HTTP和HTTPS的基本概念

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

二、HTTP与HTTPS有什么区别?

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS和HTTP的区别主要如下:

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
  
三、HTTPS的工作原理 
  客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤,如图所示。

(1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。

(2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

(3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。

(4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

(5)Web服务器利用自己的私钥解密出会话密钥。

(6)Web服务器利用会话密钥加密与客户端之间的通信。

9. WebSocket 与 socket 的区别

一、WebSocket介绍与原理

WebSocket同HTTP一样也是应用层的协议,但是它是一种双向通信协议,是建立在TCP之上的。

二、WebSocket 与 socket 的区别
  Socket其实并不是一个协议,而是为了方便使用TCP或UDP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口。

当两台主机通信时,必须通过Socket连接,Socket则利用TCP/IP协议建立TCP连接。TCP连接则更依靠于底层的IP协议,IP协议的连接则依赖于链路层等更低层次。

Socket是传输控制层协议,WebSocket是应用层协议。

参考:WebSocket 与 socket 的区别 、 Java Socket编程

你可能感兴趣的:(【面试】)