前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 面试 - 网络基础会问哪些问题及其解答

Android 面试 - 网络基础会问哪些问题及其解答

作者头像
非著名程序员
发布2018-02-02 17:35:15
7530
发布2018-02-02 17:35:15
举报
文章被收录于专栏:非著名程序员非著名程序员

Android 面试中问到网络基础,基本是围绕 OSI 七层模型或者是 TCP/IP 四层模型展开的,主要包括各层名称及功能、每层有哪些协议。

另外会深入考察应用层和传输层。

应用层:(HTTP、DNS 等)

  • HTTP 报文格式、头部有哪些字段
  • HTTP 状态码
  • HTTP 和 HTTPS 的区别
  • HTTPS 中 SSL/TLS 加密的握手过程
  • HTTP 一次连接的具体过程
  • GET、POST 的区别
  • DNS 解析过程
  • Cookie、Session 原理

传输层:(TCP、UDP 等)

  • TCP/IP 四层模型(和 OSI 的层次对应关系)
  • TCP 三次握手、四次握手的过程,状态变化和原因
  • TCP、UDP 区别
  • TCP 拥控、流控原理

Socket 原理 更多 Android 面试相关请点击

  • 四步准备 Android 面试(http://www.jianshu.com/p/5c92689c9be2)
  • Android 开发概要(http://www.jianshu.com/p/03068ab22340)
  • 大疆提前批第一次电面(http://www.jianshu.com/p/eb7547990141)
  • 大疆提前批第二次电面(http://www.jianshu.com/p/6bb7224275f0)
  • 大疆提前批终面(http://www.jianshu.com/p/4973964c4443)
  • 大疆提前批终面后加面(http://www.jianshu.com/p/f40acf8c95e7)

以下是正文,其中空出的标题是我目前还没有整理完毕,或者是整理不够完整的内容。在对应内容完善后会进行更新。其中包括 Cookie、Session 原理,TCP 拥控、流控原理,Socket 原理。

OSI 七层模型及其功能

TCP/IP 四层模型及对应协议

注:DNS 作用是将域名转为 IP 地址;ARP 作用是将 IP 地址转为 MAC 地址

HTTP 报文格式、头部有哪些字段

先说一下 HTTP。

HTTP:HyperText Transfer Protocol 超文本传输协议,处于应用层,基于请求响应模式,无状态协议。

URL:Uniform Resource Location 统一资源定位符,就是常说的网页地址。

HTTP 报文

  • 请求报文
    • 请求行:包括请求方法类型:GET、POST 等,请求地址,协议版本
    • 请求头部字段
    • 通用头部字段
    • 实体头部字段
    • 其他
    • 报文头部
    • 报文主体:包括如 POST 中的请求参数、文件上传数据、邮件传输数据等内容
  • 响应报文
    • 状态行
    • 响应头部字段
    • 通用头部字段
    • 实体头部字段
    • 其他
    • 报文头部
    • 报文主体:包括网页正文等内容

根据上述内容,HTTP 头部字段包括:

  • 请求头部字段:补充请求的附加内容、客户端信息、响应内容相关优先级等。有 Accept、From、Host 等字段
  • 响应头部字段:补充响应的附加内容
  • 通用头部字段:请求报文、响应报文都会使用,包括 Cache-Control 字段,作用是控制 HTTP 缓存机制 实体头部字段:补充资源内容的更新时间等

HTTP 状态码

HTTP 和 HTTPS 的区别

简单来说,HTTPS 是加密的 HTTP。

HTTPS = HTTP + SSL/TLS

HTTPS 使用 SSL/TLS 进行加密,这既是它的优点也是它的缺点,加密使 HTTPS 的安全性大大提高,但是加密的过程也导致通信过程中性能的下降。

但总的来说用失去的一点点性能换来极高的安全性是非常值得的,苹果和谷歌也大力支持 HTTPS 的使用。

HTTPS 的关键是加密过程,见下一标题。

HTTPS 中 SSL/TLS 加密的握手过程

以下的 C 代表 Client 客户端,S 代表 Server 服务端。

  1. C 告诉 S:协议版本号,支持的加密方法,以及自己生成的随机数
  2. S 确认加密方法,给 C 方松证书和自己产生的随机数
  3. C 确认证书有效性,产生新的随机数,并使用数字证书中的公钥加密随机数,发送给 S
  4. S 使用对应的私钥解密得到 C 发过来的随机数
  5. C 和 S 使用约定的加密方法,使用前面的三个随机数,生成对话密钥,然后用此密钥加密接下来的整个对话过程

总的来说,整个过程就是使用非对称加密算法交换 “对话中要使用的对称加密算法的密钥”,然后使用对称加密算法进行对话。

注:

  • 加密算法分为两种:对称和非对称。
    • 对称加密是指对话双方使用同一密钥进行加密和解密。特性是速度快,但存在如何安全确认密钥的问题。
    • 非对称加密是指拥有两个密钥,公钥和私钥。公钥加密的内容只有私钥能够解密,私钥加密的内容只有公约能够解密。C 向 S 发送内容时使用 S 的公钥加密,这样就只有持有对应私钥的 S 能够解密。特性是安全,但速度慢。同时存在如何证明公钥是 S 的问题,因为可能有人从中间劫持,伪装 S 发送劫持人的公钥。为了解决这个问题,引入了数字证书来保证公钥的有效性。
  • SSL/TLS 结合了两个加密算法的优点,利用非对称加密的安全来交换对称加密的密钥,然后利用对称加密的速度快来对这个会话进行加密。 ## HTTP 一次连接的具体过程

域名解析(DNS)——> TCP 三次握手,建立连接 ——> 发起 HTTP 请求 ——> 服务器响应请求,返回数据 ——> 客户端处理数据 ——> 合适时刻四次握手,断开连接

这里可能会继续追问诸如 DNS 解析过程、三次握手四次握手过程和原因等等问题,解答见下文

GET、POST 的区别

  • GET 请求可以被浏览器缓存,POST 不可以
  • POST 安全一些,因为 GET 请求都在 URL 中,也会被浏览器保存记录;而 POST 请求可以放到 Body 中
  • POST 可以用 RequestBody 传输更多的数据,GET 的数据量受到 URL 长度限制
  • POST 支持更多编码,且不对数据类型限制
  • GET 的目标功能是查询数据,POST 的目标功能是修改数据,或者上传数据

DNS 解析过程

DNS 功能是将域名解析为 IP 地址。

  1. 查找浏览器缓存,是否有解析记录,没有则进入第二步
  2. 查找系统缓存,是否有解析记录,没有则进入第二步
  3. 给配置的 DNS 服务器(LDNS)发送请求,LDNS 查找到则返回
  4. LDNS 没有找到时会请求 RootServer,返回一个顶级域名服务器
  5. LDNS 请求顶级域名服务器,返回 NameServer 地址
  6. NameServer 返回 IP 给 LDNS,LDNS 会进行缓存
  7. LDNS 返回给用户

注:各级都会对 IP 的解析进行缓存,同时会根据各自的缓存策略对一些记录进行清理

Cookie、Session 原理

TCP 三次握手、四次握手的过程,状态变化和原因

为什么需要三次握手建立连接?

为了防止已失效的连接请求报文段突然又传到了服务端,服务端以为要建立连接,造成资源浪费(无效连接)。发生场景是,客户端发送第一个建立连接的请求由于网络原因服务端一开始没有接收到,因此客户端发了第二个连接请求,这个请求成功,建立起了连接。但是第一个请求后来又到达服务端,如果没有第三次确认,服务端将多形成一个连接,造成资源浪费。

为什么需要四次握手断开连接?

断开连接时,分为两个阶段。一次是客户端通知服务器,告知自己不会再发送数据。注意,此时服务器仍可以发数据给客户端。第二次是服务器告知客户端自己不会再发送数据。

要弄清楚的是,断开时,任意一方都可以主动断开,表明自己不再发送数据,但仍可接收数据。所以中间的 FIN 和 ACK 不能合并。另外每次断开连接需要 FIN 请求 + ACK,所以断开需要四次。

TIME_WAIT 等待 2MSL 的意义?

  1. 确保连接可靠关闭,防止最后一个 ACK 的丢失。
  2. 避免套接字混淆(同一个端口对应多个 socket)

注:主要目的是,对客户端回发 ACK 丢失的情况做处理,可以在服务端再次发送 FIN 时回发 ACK。

TCP、UDP 区别

TCP 拥控、流控原理

Socket 原理

如有任何遗漏或错误,请联系我,我会把你作为此博客的共同作者。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-09-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 非著名程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • OSI 七层模型及其功能
  • TCP/IP 四层模型及对应协议
  • HTTP 报文格式、头部有哪些字段
    • HTTP 报文
      • 根据上述内容,HTTP 头部字段包括:
      • HTTP 状态码
      • HTTP 和 HTTPS 的区别
      • HTTPS 中 SSL/TLS 加密的握手过程
      • GET、POST 的区别
      • DNS 解析过程
      • Cookie、Session 原理
      • TCP 三次握手、四次握手的过程,状态变化和原因
      • TCP、UDP 区别
      • TCP 拥控、流控原理
      • Socket 原理
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档