美文网首页
iOS开发·计算机网络常考面试题

iOS开发·计算机网络常考面试题

作者: 富城 | 来源:发表于2021-02-04 16:50 被阅读0次

网络相关

1.描述一下网络的三次握手四次挥手,为什么要这样做?

  • 三次握手:

    1、客户端调用connect()发起请求,请求报文SYN = 1, seq = x发送给服务器, 客户端此时为SYN_SENT状态,等待服务器确认;

    2、服务器收到SYN = 1,知道客户端要请求连接,ack = x + 1,ACK = 1,SYN = 1, seq = y发送给客户端,服务器是SYN_RCVD状态;

    3、客户端收到ack = x + 1,然后把ack = y + 1,ACK = 1,发送给服务器, 最后服务器确认ack = y+ 1,然后建立成功,两方进入ESTABLISH状态.

三次握手.png
  • 四次挥手:

    1、客户端发送一个结束FIN = 1, 用来主动关闭和服务器的数据传输,停止发送数据,报文首部:FIN = 1,seq = u,随后客户端进入终止等待状态1, FIN_WAIT_1;

    2、服务端收到这个FIN,发出确认报文 ACK = 1,确认收到的序号是收到的序号+1,即ack = u + 1,且带上自己的序列号,seq = v,和SYN一样,一个FIN将占用一个序号;如果服务器要发送数据,客户端依然要接收,该状态会维持一段时间,服务端会进入关闭等待状态,CLOSE_WAIT,客户端收到服务器的确认请求后,进入终止等待2状态FIN_WAIT_2,等待服务器发送链接释放报文,

    3、服务器向客户端发送链接释放报文, FIN = 1, ack = u + 1,此时服务端还处于半关闭状态,服务器可能还会发送一些数据,此时序列号为seq = w,如此,服务器进入最后确认状态,LAST_ACK,等待客户端的确认.

    4.客户端收到服务器的链接释放报文后,回发确认, ACK = 1, ack = w + 1,序列号是seq = u +1,此时客户端进入时间等待状态TIME_WAIT,此时TCP连接还没有释放,必须经过最长报文段寿命的时间后,才进入CLOSED状态, MSL:最长报文段寿命,一般为2分钟,TCP连接释放时,主动方必须经过2MSL后才进入CLOSED状态,因此主动方关闭比较晚.

四次挥手.png

2.网络的OSI七层模型,并对应说说除了物理层外的各层功能,并说说各层中有什么协议? 还有 TCP/IP四层模型, 各层的协议?

OSI七层模型:

  • 应用层运行访问OSI环境的手段,传输单位为APDU,主要包括的协议为FTPHTTPDNSSMTP

  • 表示层对数据进行翻译、加密和压缩、传输单位为 PPDU, 主要包括的协议为 JPEGASII

  • 会话层建立、管理和终止会话,传输单位为 SPDU,主要包括的协议为RPCNFS

  • 传输层提供端到端的可靠报文传递和错误恢复,传输单位为报文,主要包括的协议为 TCPUDP

  • 网络层负责将数据包从源到宿的传递和网际互联,传输单位是包,主要协议是 IPARPICMP

  • 数据链路层将比特组装成帧和点到点的传递,传输单位是帧,主要协议是 MACLANPPP

  • 物理层 通过媒介传输比特,单位是bit,主要协议是 IEEE802.3CLOCKRJ45

    TCP/IP四层模型:

    • 应用层是用来给用户提供服务的,包含了各种应用服务协议:FTP, HTTPDNS;封装成http数据;

    • 传输层是用来提供两台计算机之间的数据传输;包含TCPUDP;给http数据打上tcp的首部;

    • 网络层是用来处理网络中传输的数据包;与对方计算机之间进行多台计算机或网络设备进行传输时,网络层就是在众多的选项中选择一条传输路线.再打上一层IP首部,

    • 数据链路层用来处理连接网络的硬件部分,如光纤、网卡、驱动、操作系统,再打上以太网首部

    3.HTTPSHTTP之间的区别,为什么要使用HTTPSHTTPS的实现原理(这三个是层层递进的问的,所以不要只知道HTTPS比较安全,使用了什么什么非对称加密和对称加密算法...最好是整个流程都去了解一下,如何获取公钥,数字证书有什么用,虽然工作中不是很重要,但是面试大家都是背八股文长大的,那不是更得知道的多才能显得你与众不同吗)

    区别:

    • 底层:HTTP底层是通过建立socket通道实现数据传输的,是基于TCP的安全可靠的协议;HTTPS是在HTTP的基础上加上安全套接字层SSL协议,构建的可进行加密传输身份认证的协议;

    • 数据传输: HTTP是以明文发送内容,不适合传输敏感信息;HTTPS是依靠证书验证服务器的身份,实现通信加密;

    • 连接方式: 两者使用完全不同的链接方式, HTTP端口是80;HTTPS端口使用443.

    • 响应速度: HTTP要比HTTPS响应速度快,首先都要先经过TCP三次握手,CS之间交换三个包,而HTTPS还要加上SSL握手需要的九个包,一共是12个包.

    HTTPS实现原理:

    1. 客户端发出请求HTTPS与服务端建立SSL链接,然后服务端返回一个公钥证书,

    2. 客户端产生一个随机对称密钥;

    3. 使用公钥加密对称密钥;

    4. 发送加密后的对称密钥,服务器给个回应;

    5. 使用对称密钥进行加密通信.

    4.ARP协议如何工作(这个也比较简单,但是后面会扩展问一些TCPUDP的问题),会问某些场景是否使用TCP或者UDP,后面还转进了http1.0和1.1的长连接,感觉这个也是一个考点,记得不是很深刻了

    5.进程和线程的区别,为什么要有线程,线程拥有什么独立的资源, 多线程如何安全的访问进程中的资源,讲一下各种锁(这个也是八股文,操作系统必问,懂得都懂)

    • 进程就是系统中正在运行的一个应用程序,可以理解为一个app;

    • 线程是程序执行的最小单元,是进城中的一个实体,进程就是一系列的线程执行单元组成的

    • 一个进程中可以有多个线程,但至少得有一个线程

    • 多核CPU中,多个线程一起执行可以提高程序的执行效率

    • 自旋锁:

    • 互斥锁:

    6.操作系统中的虚拟内存是什么,讲一讲 页面置换算法,是否有了解过三级缓存机制(也是递进的问的!三级缓存机制是APP开发常用的也会考查)

    7.最后有一道算法题,leetcode 59,螺旋矩阵

    • 定义上下左右四个边界

    • 内缩遍历

    8.IP地址和MAC地址的区别?

    1. MAC地址物理层数据链路层使用的地址,用来定义网络设备的位置, IP地址网络层和以上各层使用的地址;

    2. IP地址是放在IP数据报的首部,而 MAC地址是放在 MAC帧的首部.

    9.请介绍一个操作系统中的中断

    1. 中断是指CPU对系统发生的某个事件做出的一种反应,CPU 暂停正在执行的程序, 保存现场后自动去执行相应的处理程序,处理完该事件后再返回中断处,继续执行原来的程序.

    2. 中断一般分为三类:一种是由CPU外部引起的,如I/O中断,时钟中断,一种是来自CPU内部事件或程序执行中引起的中断,例如(程序非法操作,地址越界,浮点溢出), 最后一种是在程序中使用了系统调用引起的.

    3. 中断处理一般分为中断响应和中断处理两个步骤,中断响应由硬件实施,中断处理主要由软件实施.

相关文章

网友评论

      本文标题:iOS开发·计算机网络常考面试题

      本文链接:https://www.haomeiwen.com/subject/pvwbtltx.html