iOS面试iOS基础知识iOS开发技术

最新整理:iOS面试题-网络相关问题(七)

2021-03-25  本文已影响0人  iOS猿_员

前言:

最近把 iOS 面试中可能会遇到的问题整理了一番, 题目大部分是网上收录的, 方便自己巩固复习, 也分享给大家; 希望对大家有所帮助!

目录合集

iOS面试题-网络相关问题(七)

1.如何理解HTTP?

HTTP本质上是一种协议,全称是Hypertext Transfer Protocol,即超文本传输协议。HTTP是一个基于TCP/IP通信协议来传递数据, 该协议用于规定客户端与服务端之间的传输规则,所传输的内容不局限于文本(其实可以传输任意类型的数据)。

一次HTTP可以看做是一个事务,其工作过程分为4步:

  1. 客户端与服务器建立连接
  2. 建立连接后,客户端给服务端发送请求
  3. 服务器收到消息后,给与响应操作
  4. 客户端收到消息后,展示到屏幕上,断开连接.

2.说一下 http中的 get 和 post 区别?

3. 一次完整的HTTP请求过程?当我们在浏览器的地址栏输入 'http://www.baidu.com ,然后回车,回车这一瞬间到看到页面到底发生了什么呢?

域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户

4.请求报文简要说明?

请求报文主要包括: 请求行,请求头,请求体

  1. 请求行: 请求行包含请求方法(Method)、请求统一资源标识符(URI)、HTTP版本号
  2. 请求头:请求头主要存放对客户端想给服务端的附加信息下Host: 目标服务器的网络地址 Accept: 让服务端知道客户端所能接收的数据类型,如text/html /Content-Length: body的长度 等等
  3. 请求体: 真正需要发给服务端的数据

5.响应报文简要说明?

响应报文也包括三部分: 响应行,响应头和响应实体
1.状态行 :是服务端返回给客户端的状态信息,包含HTTP版本号、状态码、状态码对应的英文名称。
2.响应头: 附加信息和请求头类似
3.响应体: 服务器返回的真正数据

6.HTTP的特点有什么?

HTTP 是一个属于应用层的面向对象的协议,HTTP 协议一共有五大特点:

  1. 支持客户/服务器模式。
  2. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  3. 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type(Content-Type是HTTP包中用来表示内容类型的标识)加以标记。
  4. 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  5. 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

7.常用的HTTP方法有哪些?

HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法: OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

  1. GET 请求指定的页面信息,并返回实体主体。
  2. HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
  3. POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
  4. PUT 从客户端向服务器传送的数据取代指定的文档的内容。
  5. DELETE 请求服务器删除指定的页面。
  6. CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
  7. OPTIONS 允许客户端查看服务器的性能。
  8. TRACE 回显服务器收到的请求,主要用于测试或诊断。

8.TCP是什么?

9.UDP是什么?

10.TCP和UDP区别

  1. TCP面向连接(三次握手);UDP是无连接的,即发送数据之前不需要建立连接
  2. TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付, Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。
  3. UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
  4. 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
  5. TCP对系统资源要求较多,UDP对系统资源要求较少。

11.什么是三次握手?

所谓三次握手(Three-Way Handshake)即建立TCP连接,是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。

参考: https://www.jianshu.com/p/2eec9eea967b

12.什么是四次挥手?

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

  1. TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送。
  2. 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
  3. 服务器关闭客户端的连接,发送一个FIN给客户端。
  4. 客户端发回ACK报文确认,并将确认序号设置为收到序号加1。

13.什么是HTTTS?

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

14.HTTPS连接过程简述

  1. 客户端向服务端发起 https 请求
  2. 服务器(需要申请 ca 证书),返回证书(包含公钥)给客户端
  3. 客户端使用根证书验证 服务器证书的有效性,进行身份确认
  4. 客户端生成对称密钥,通过公钥进行密码,发送给服务器
  5. 服务器使用私钥进行 解密,获取对称密钥
  6. 双发使用对称加密的数据进行通信

15.什么是对称加密

对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。
常见的有AES,DES,3DES等

16.非对称加密

非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。
常见的: RSA算法

17. http 与https区别

HTTPS和HTTP的区别主要为以下四点:

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

18.说一下Session 和 Cookie 的概念?

19.什么Socket?

20.什么是DNS?

域名系统(DomainNameSystem,缩写:DNS)是[互联网]的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问[互联网]

21.DNS劫持问题?

DNS劫持又称(域名劫持), 是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能访问或访问的是假网址。
解决办法: 使用HTTPDNS

22.网络七层是什么?

OSI模型有7层结构,每层都可以有几个子层。 OSI的7层从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 ;其中高层(即7、6、5、4层)定义了应用程序的功能,下面3层(即3、2、1层)主要面向通过网络的端到端的数据流。

  1. 应用层
    网络服务与最终用户的一个接口。
    协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
  2. 表示层
    数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
    格式有,JPEG、ASCll、DECOIC、加密格式等
    3 .会话层
    建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
    对应主机进程,指本地主机与远程主机正在进行的会话
  3. 传输层
    定义传输数据的协议端口号,以及流控和差错校验。
    协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层
  4. 网络层
    进行逻辑地址寻址,实现不同网络之间的路径选择。
    协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
  5. 数据链路层
    建立逻辑连接、进行硬件地址寻址、差错校验 [2] 等功能。(由底层网络定义协议)
    将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
  6. 物理层
    建立、维护、断开物理连接。(由底层网络定义协议)

23.项目中网络层如何做安全处理?

  1. 尽量使用https
  2. 不要传输明文密码
  3. Post并不比Get安全
  4. 不要使用301跳转
  5. http请求都带上MAC
  6. http请求使用临时密钥
  7. AES使用CBC模式

24.断点续传如何实现?

通过HTTP,可以非常方便的实现断点续传。

通过这个关键字可以告诉服务器返回哪些数据给我。
比如:

25.什么是WebSocket,解决了什么问题?

WebSocket是应用层第七层上的一个应用层协议,它必须依赖 HTTP 协议进行一次握手 ,握手成功后,数据就直接从 TCP 通道传输,与 HTTP 无关了
Websocket的数据传输是frame形式传输的,比如会将一条消息分为几个frame,按照先后顺序传输出去。这样做会有几个好处:

  1. 大数据的传输可以分片传输,不用考虑到数据大小导致的长度标志位不足够的情况。
  2. 和http的chunk一样,可以边生成数据边传递消息,即提高传输效率。
    总之:WebSocket 的实现分为握手,数据发送/读取,关闭连接。

26.什么是心跳?

27.如何保证公钥不被篡改?

28. 公钥加密计算量太大,如何减少耗用的时间?

29.AF中常驻线程的实现

- (AFURLSessionManagerTaskDelegate *)delegateForTask:(NSURLSessionTask *)task {
    NSParameterAssert(task);
    AFURLSessionManagerTaskDelegate *delegate = nil;
    [self.lock lock];
    //给所要访问的资源加锁,防止造成数据混乱
    delegate = self.mutableTaskDelegatesKeyedByTaskIdentifier[@(task.taskIdentifier)];
    [self.lock unlock];
    return delegate;
}

这边对 self.mutableTaskDelegatesKeyedByTaskIdentifier 的访问进行了加锁,目的是保证多线程环境下的数据安全
面试官可能会问你:为什么AF3.0中需要设置self.operationQueue.maxConcurrentOperationCount = 1;而AF2.0却不需要?
--->>>
AF3.0的operationQueue是用来接收NSURLSessionDelegate回调的,鉴于一些多线程数据访问的安全性考虑,设置了maxConcurrentOperationCount = 1来达到串行回调的效果
--->>>
AF2.0的operationQueue是用来添加operation并进行并发请求的,所以不要设置为1。

30. XMPP是什么?

  1. XMPP 是一种基于XML的协议,XMPP是一个分散型通信网络
  2. XMPP是一种基于标准通用标记语言的子集XML的协议,它继承了在XML环境中灵活的发展性,XMPP有超强的扩展性。XMPP中定义了三个角色,客户端,服务端,网关。通信能够在这个三者的任意两个之间双向发生,而他们的传输是XML流
  3. XMPP工作原理:所有从一个客户端到另一个客户端的消息和数据都要通过服务端
  4. XMPP允许建立并行的TCP套接字链接对所有连接上的客户端和服务器端。持久的套接字的连接使得XMPP能够更有效的支持高级的具有存在能力的应用在带宽和处理资源的使用中。

小结:
而XMPP的核心部分就是一个在网络上分片断发送XML的流协议。这个流协议是XMPP的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议。所以可以说,XMPP用TCP传的是XML流。

31.MAC地址和ip地址的区别?

32 .抓包工具抓取HTTPS的原理

需要做的事情是对客户端伪装服务端,对服务端伪装客户端,具体

没有配置HTTPS 证书时,虽然是HTTPS请求确是能抓到数据,如果APP内配置了https证书,就抓不到数据了,

33.Ping是什么协议

收录 | 原文地址


结语

再次说一声,对于答案,不一定都合适,欢迎大家积极讨论;整理不易,如果您觉得还不错,麻烦在文末 “点个赞” ,或者留下您的评论“Mark” 一下,谢谢您的支持


推荐文集

上一篇下一篇

猜你喜欢

热点阅读