iOS 面试题 计算机网络

以下内用均不是原创,都是在网络摘抄,留着面试用。如若侵权请告知


HTTP 和 HTTPS
  1. HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头
  1. HTTP 是不安全的,而 HTTPS 是安全的
  2. HTTP 标准端口是80 ,而 HTTPS 的标准端口是443
  3. 在OSI 网络模型中,HTTP工作于应用层,而HTTPS 工作在传输层5. HTTP 无法加密,而HTTPS 对传输的数据进行加密
  4. HTTP无需证书,而HTTPS 需要CA机构wosign的颁发的SSL证书

HTTPS缺省工作在TCP协议443端口,它的工作流程一般如以下方式:
1) 完成TCP三次同步握手
2) 客户端验证服务器数字证书,通过,进入步骤3
3) DH算法协商对称加密算法的密钥、hash算法的密钥
4) SSL安全加密隧道协商完成
5)网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改

如果HTTPS是网银服务,以上SSL安全隧道成功建立才会要求用户输入账户信息,账户信息是在安全隧道里传输,所以不会泄密!

HTTPS = HTTP + SSL + 认证 + 完整保护


计算机网络5层网络体系结构
      应用层
      运输层
      网络层(网际层)
      数据链路层
      物理层

物理层:
主要任务:考虑怎样才能在连接各种计算的传输媒体上传输数据比特流

数据链路层(mac层):
主要任务:在同一个局域网中,分组怎样从一个主机传送到另一个主机(不经过路由器)
将网际层交下来的IP数据报组装成帧,在相邻结点间的链路上传送帧
帧包括的数据:同步信息、地址信息、差错控制等
工作: 1、封装成帧:数据的前后添加首部和尾部
2、透明传输:某一个实际存在的事物看起来却是好像不存在一个(方法:字节填充法)
3、差错检测
协议:PPP(点对点协议)

网际层(IP层):
主要任务:分组怎样从一个网络通过路由器转发到另一个网络
为交换网上的不同主机提供通信服务
把传输层产生的报文段或用户数据报封装成分组或包进行传送(IP数据报)
选择合适的路由,使源主机运输层传下来的分组能够通过网络中的路由器找到目的主机

运输层(TCP/UDP):
主要任务:向两个主机中进程之间的通信提供通用的数据传输服务(也就是提供通信服务)
TCP:面向连接的、可靠的数据传输服务,传输的数据单位是报文段
UDP:无连接的、尽最大努力的数据传输服务(不可靠的),数据传输单位是用户数据报

**应用层: **
主要任务:位于不同主机中的多个应用进程之间进行通信和协同工作
DNS:解析域名

数据的整条发送链是:
1、某进程(也就是在应用层)准备好待传输数据,若目的地址是域名则要先通过DNS解析成IP地址
2、交付到运输层(TCP/UDP层),运输层对数据进行适当的分组等操作,后对每一个分组数组加上首部形成报文段(或用户数据报)首部包括源地址、源端口、目的地址、目的端口和一些其他的诸如校验和等数据
3、交付到网际层(IP层),对分组数据加上首部形成IP数据报,首部包括源地址、目的地址(跟运输层的目的地址不同,运输层的目的地址是数据要传送的最终地址,而该目的地址是通过路由表信息得出,是该数据下一步该转移的目的计算机)和校验和等数据
4、交付到数据链路层(mac层),先是对把数据封装成帧(也就是添加首部[SOH]和尾部[EOT]),然后进行透明传输(也就是封装的数据里面,如果出现首部SOH和尾部EOT这样的数据,对其进行转义,也就是加上ESC转义字符,这种方法称为字节/字符填充)
5、交付到物理层,根据数据链路层的mac知道要传输到目的计算机,通过特定的传输介质传送到下一个地址
6、若源主机与最终目的主机在同一个网段,则该地址是最终的目的主机,开始接收数据,进入第7步骤,若源主机和最终目的主机不在同一个网段,进入第11步骤
7、交付到数据链路层,对数据进行卸装,该层会对接收的数据进行差错检测,有差错的数据都会被丢弃
8、交付到IP层,解帧校验
9、交付到运输层,在该主机上,根据端口找到对应的应用,当使用的TCP协议时,提供一种面向连接的可靠的传输服务,可以说是建立了一个虚拟通道,源主机的数据通过该虚拟通道进行传输;若是使用的UDP协议时,提供一种面向的非连接的尽最大努力的不可靠的传输服务,数据传输快,但是无法保证数据100%传输。
10、建立了传输连接后,应用开始接收数据,发送方数据和接收方都必须满足相同的标准应用层协议,如http、ftp、smtp等,通过标准协议应用即可正确的接收源主机发送过来的数据。
11、该计算机不是最终主机,那该计算机就是路由器也就是用于转发分组数据的中转站,首先接收数据的处理同步骤7和8一样,然后接下来的流程又是如同步骤3,
12、如此循环直至找到最终主机,将数据传送到目的应用

简单的说法:
1)主机A首先将数据传送给本主机的应用层,在应用层上,数据加上首部(包含地址),传给运输层。
2)加上首部的数据传到运输层,在加上运输层的控制信息,传给网络层。
3)网络层把运输层传来的数据报或报文段,封装成包或分组,传给数据链路层。
4)数据链路层将ip加上本层的首部和尾部,组装成帧,由物理层传输给主机B的物理层。
5)主机B中物理层的数据传到数据链路层,网络层,运输层,应用层,最后传给主机B。

ip地址和硬件地址MAC的区别:
在网络层,运输层,应用层使用的都是ip地址,而在数据链路层使用的是电脑的硬件地址。两个地址在不同层上。



几种进程间的通信方式

管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。

你可能感兴趣的:(iOS 面试题 计算机网络)