[iOS面试]第8章 网络相关面试问题

注意:本文主讲网络相关面试问题,包括HTTP协议、HTTPS协议与网络安全、TCP/UDP区别、DNS解析。

一、HTTP协议(超文本传输协议)

HTTP协议主要包含内容:
请求/响应报文、连接建立流程、HTTP特点。

1、请求/响应报文

请求报文格式

请求报文格式:
请求方法 +请求URL +协议版本+请求首子段键值对 +报文主体(一般在请求中是没有报文主体的)

响应报文格式

响应报文格式:
协议版本 +状态吗 +响应首字段 +响应报文主体

1)、http的请求方式都有哪些?
GET、POST、HEAD、PUT、DELETE、OPTIONS

(2)、GET和POST方式的区别?
初级工程师回答
1>、GET请求参数以?分割拼接到URL后面,POST请求参数在Body里面。
2>、GET参数长度限制2048个字符,POST一般没有该限制。
3>、GET请求不安全,POST请求比较安全。

高级工程师回答,从语义的角度回答(标准答案)
(语义:指的协议的定义规范. 语法:具体实现手段或者路径)

  • GET:获取资源。安全的、幂等的、可缓存的。

  • POST:处理资源。非安全的、非幂等的、不可缓存的。

  • 安全性:不应该引起Server端的任何状态变化。常见安全性的请求方式 :get、head、options

  • 幂等性:同一个请求方法执行多次和执行一次的效果完全相同。常见幂等性的请求方式 :get、put、delete

  • 可缓存性:请求是否可以被缓存。(代理服务器可以做缓存,多次请求时可能是获取的缓存)。常见可缓存性的请求方式:get、head

(3)、你都了解哪些状态码,他们的含义是什么?
1xx:
2xx:响应成功(200)
3xx:网络重定向(301、302)
4xx:客户端发起请求出错,服务器没有相应(401、404)
5xx:服务器出错(502 503)

2、连接建立流程

  • 三次握手、四次挥手


3、HTTP的特点:无连接、无状态。

(1)、无连接: 指的是http的连接有建立和释放连接的过程。

解决方案:HTTP的持久连接。

1>、持久连接头部字段:
Connection:keep-alive (允许持久连接)
time:20 (持久连接连接时长)
max:10 (该http连接最多可以发生多少次请求)

2>、怎样判断一个请求是否结束?
Content-length :1024 (响应头)
chunked,最后会有一个空的chunked,server会给客户端返回多次响应,根据判断响应报文的头部字段chunked是否为空,为空则表示没有后续了。

(2)、无状态: 多次发送http请求,如果是同一个用户对于server端是不知道是同一个用户的。

解决方案:cookie、session。

问题: Charles抓包原理是咋样的?
利用HTTP中间人攻击漏洞实现的。

二、HTTPS协议与网络安全

1、HTTPS和HTTP有怎样的区别?

HTTPS = HTTP+SSL/TLS。HTTPS是安全版的HTTP, 是由一个SSL/TLS,插在传输层之上,应用层之下的协议来保证的。

https协议栈

2、HTTPS连接建立流程:

https连接建立流程

HTTPS连接过程大致可分为八步:

  • 1、客户端访问HTTPS连接。

客户端会把安全协议版本号、客户端支持的加密算法列表、随机数C发给服务端。

  • 2、服务端发送证书给客户端

服务端接收密钥算法配件后,会和自己支持的加密算法列表进行比对,如果不符合,则断开连接。否则,服务端会在该算法列表中,选择一种对称算法(如AES)、一种公钥算法(如具有特定秘钥长度的RSA)和一种MAC算法发给客户端。

服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,不能将其泄露,公钥可以发送给任何人。
在发送加密算法的同时还会把数字证书和随机数S发送给客户端

  • 3、客户端验证server证书

会对server公钥进行检查,验证其合法性,如果发现发现公钥有问题,那么HTTPS传输就无法继续。

  • 4、客户端组装会话秘钥

如果公钥合格,那么客户端会用服务器公钥来生成一个前主秘钥(Pre-Master Secret,PMS),并通过该前主秘钥和随机数C、S来组装成会话秘钥

  • 5、客户端将前主秘钥加密发送给服务端

是通过服务端的公钥来对前主秘钥进行非对称加密,发送给服务端

  • 6、服务端通过私钥解密得到前主秘钥

服务端接收到加密信息后,用私钥解密得到主秘钥。

  • 7、服务端组装会话秘钥

服务端通过前主秘钥和随机数C、S来组装会话秘钥。
至此,服务端和客户端都已经知道了用于此次会话的主秘钥。

  • 8、数据传输

客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。

同理,服务端收到客户端发送来的密文,用服务端密钥对其进行对称解密,得到客户端发送的数据。

(1)、会话秘钥:
会话秘钥 = random S + random C + 预主秘钥

(2)、https都使用了哪些加密手段?为什么?
1>、连接建立过程使用非对称加密,非对称加密很耗时的。
2>、后续通讯过程使用对称加密

(3)、对称加密(AES):

对称加密

(4)、非对称加密(RSA):

非对称加密

三、TCP/UDP区别

1、UDP(用户数据报协议)

特点:无连接;尽最大努力交付(不保证可靠传输);面向报文(既不合并,也不拆分)。

功能:复用、分用;差错检测。


复用分用
差错检测

2、TCP(传输控制协议)

特点:面向连接;可靠传输;面向字节流;流量控制;拥塞控制。

(1)、面向连接

数据传输开始之前, 需要建立连接。
三次握手
数据传输结束之后, 需要释放连接。
四次挥手

问题:TCP三次握手为什么不是两次?为什么要进行三次握手
答:
三次握手原因(不是两次握手原因):当客户端发送连接报文时,当出现网络超时时,会启动超时重发策略,服务端同时也会返回超时重发的报文,当客户端收到的报文是超时重发的,会取消和服务端创建连接,只保证会创建一个TCP连接。

(2)、可靠传输

如何保证可靠传输:保证我们的报文 ->无差错、不丢失、不重复、按序到达
如何实现可靠传输:通过停止等待协议实现。
停止等待协议四方面: 无差错情况、超时重发、确认丢失、确认迟到。

无差错情况
超时重传
确认丢失
确认迟到
(3)、面向字节流
面向字节流
  • 每次发送多少个字节是由TCP控制的
  • 不管发送方一次性提交给TCP的缓冲是多大的数据, 对于TCP本身来说它会根据实际情况来划分, 并不是发送方发送了10个字节,就把10个字节一次性发给接收方,可能会把10字节拆分成3个字节和7个字节分两次发送给接收方,这个就是面向字节流概念.
  • 可以和UDP面向报文特点比较
(4)、流量控制
流量控制
  • 滑动窗口协议: 发送方定义为客户端, 接收方为server端. 当发送数据, 如果接收方接收缓存没那么大,接收窗口很小,此时发送方窗口很大,会以更快速率往接收方发送数据,需要由接收窗口通过TCP报文首部字段中更改窗口值,调整发送方发送速率.
(5)、拥塞控制

慢开始、拥塞避免(策略);
快恢复、快重传(策略)。

拥塞控制

横轴:交互次数或者轮询次数 纵轴:窗口值大小

问题:请简单描述TCP慢启动特点?
答:考察TCP慢开始、拥塞避免策略

问题:什么是TCP? TCP的理解是怎样?
答:根据TCP五大特点回答.

四、DNS解析

1、了解DNS解析

问题:是否了解DND解析?DNS解析是怎样的过程?

DNS解析: 域名到IP地址的映射,DNS解析请求采用UDP数据报,且明文解析

2、DNS解析查询方式

(1)、递归查询

递归查询

(2)、迭代查询

迭代查询

3、DNS解析存在哪些常见的问题?

  • DNS劫持问题
  • DNS解析转发问题
(1)、DNS劫持问题
DNS劫持

问题: DNS劫持与HTTP的关系是咋样的?
答: 没有关系。
(1)、DNS解析发生在HTTP建立连接之前;
(2)、DNS解析请求使用UDP数据报,端口号53。

(2)、DNS解析转发问题
DNS解析转发

问题: 怎样解决DNS劫持?
答: 两种解决方案: httpDNS 和长连接

1>、httpDNS
DNS解析实质上 ,使用DNS协议向DNS服务器53端口进行请求 -->
使用httpDNS ,实质上使用HTTP协议向DNS服务器80端口进行请求,
不产生正常的DNS解析了,也就不涉及到DNS劫持问题.

httpDNS解决DNS劫持问题流程

2>、长连接


长连接解决DNS劫持问题
  • 长连server理解为代理服务器.
  • 客户端和长连server可以建立TCP的长连通道.(客户端发送http请求,可以通过长连通道把http请求传给长连server.)
  • 长连server通过内网专线进行内网的DNS的解析,这样就规避了公网DNS解析问题.

五、Session/Cookie

  • Session/Cookie 是对HTTP协议无状态特点的补偿.

1>、Cookie

问题:什么是Cookie?
Cookie主要用来记录用户状态, 区分用户; 状态保存在客户端.

1、怎样设置Cookie?
(1)、 客户端发送的Cookie在http请求报文的Cookie首部字段中;
(2)、 服务器端设置http响应报文的Set-Cookie首部字段, 向客户端传递Cookie内容。

2、怎样修改Cookie?
(1)、新Cookie覆盖旧Cookie。
(2)、覆盖规则:请求头部字段 name、path、domain等需要与原Cookie一致。

3、怎样删除Cookie?
(1)、新Cookie覆盖旧Cookie。
(2)、覆盖规则:name、path、domain等需要与原Cookie一致。
(3)、设置Cookie的expires=过去的一个时间点,或者maxAge=0

4、怎样保证Cookie的安全?
(1)、对Cookie进行加密处理。(会有脚本攻击获取Cookie)
(2)、只在HTTPS上携带Cookie。
(3)、设置Cookie为httpOnly,防止跨站脚本攻击。

2>、Session

Session也是用来记录用户状态,区分用户的;状态存放在服务器端
Session和Cookie的关系是怎样的?Session需要依赖于Cookie机制。

Session工作流程

六、网络相关面试问题总结:

1、HTTP中的get和post方式有什么区别?
答: 见上文

2、HTTPS连接建立的流程是咋样的?
答:

3、TCP和UDP有什么区别?
答:(可以从特点和功能回答)
TCP:面向连接;可靠传输;面向字节流;流量控制;拥塞控制。
UDP:复用、分用;差错检测 基本的传输功能。 无连接;尽最大努力交付(不保证可靠传输);面向报文(既不合并,也不拆分)。

4、请简述TCP的慢开始过程?
答: TCP慢开始、拥塞避免策略回答

5、客户端怎样避免DNS劫持?
答: 两种解决方案: httpDNS 和长连接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容