面试官:如何理解OSI七层模型?
面试官:如何理解OSI七层模型?
一、是什么OSI (Open System Interconnect)模型全称为开放式通信系统互连参考模型,是国际标准化组织 ( ISO ) 提出的一个试图使各种计算机在世界范围内互连为网络的标准框架
OSI 将计算机网络体系结构划分为七层,每一层实现各自的功能和协议,并完成与相邻层的接口通信。即每一层扮演固定的角色,互不打扰
二、划分OSI主要划分了七层,如下图所示:
应用层应用层位于 OSI 参考模型的第七层,其作用是通过应用程序间的交互来完成特定的网络应用
该层协议定义了应用进程之间的交互规则,通过不同的应用层协议为不同的网络应用提供服务。例如域名系统 DNS,支持万维网应用的 HTTP 协议,电子邮件系统采用的 SMTP 协议等
在应用层交互的数据单元我们称之为报文
表示层表示层的作用是使通信的应用程序能够解释交换数据的含义,其位于 OSI 参考模型的第六层,向上为应用层提供服务,向下接收来自会话层的服务
该层提供的服务主要包括数据压缩,数据加密以及数据描述,使应用程序不必担心在各台计算机中表示和存储的内部格式差异
会话层会话层就是负责建 ...
面试官:为什么说HTTPS比HTTP安全? HTTPS是如何保证安全的?
面试官:为什么说HTTPS比HTTP安全? HTTPS是如何保证安全的?
一、安全特性在上篇文章中,我们了解到HTTP在通信过程中,存在以下问题:
通信使用明文(不加密),内容可能被窃听
不验证通信方的身份,因此有可能遭遇伪装
而HTTPS的出现正是解决这些问题,HTTPS是建立在SSL之上,其安全性由SSL来保证
在采用SSL后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能
SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议
二、如何做SSL 的实现这些功能主要依赖于三种手段:
对称加密:采用协商的密钥对数据加密
非对称加密:实现身份认证和密钥协商
摘要算法:验证信息的完整性
数字签名:身份验证
对称加密对称加密指的是加密和解密使用的秘钥都是同一个,是对称的。只要保证了密钥的安全,那整个通信过程就可以说具有了机密性
非对称加密非对称加密,存在两个秘钥,一个叫公钥,一个叫私钥。两个秘钥是不同的,公钥可以公开给 ...
面试官:如何理解TCP/IP协议?
面试官:如何理解TCP/IP协议?
一、是什么TCP/IP,传输控制协议/网际协议,是指能够在多个不同网络间实现信息传输的协议簇
TCP(传输控制协议)
一种面向连接的、可靠的、基于字节流的传输层通信协议
IP(网际协议)
用于封包交换数据网络的协议
TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇,
只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以通称为TCP/IP协议族(英语:TCP/IP Protocol Suite,或TCP/IP Protocols)
二、划分TCP/IP协议族按层次分别了五层体系或者四层体系
五层体系的协议结构是综合了 OSI 和 TCP/IP 优点的一种协议,包括应用层、传输层、网络层、数据链路层和物理层
五层协议的体系结构只是为介绍网络原理而设计的,实际应用还是 TCP/IP 四层体系结构,包括应用层、传输层、网络层(网际互联层)、网络接口层
如下图所示:
...
面试官:如何理解UDP 和 TCP? 区别? 应用场景?
面试官:如何理解UDP 和 TCP? 区别? 应用场景?
一、UDPUDP(User Datagram Protocol),用户数据包协议,是一个简单的面向数据报的通信协议,即对应用层交下来的报文,不合并,不拆分,只是在其上面加上首部后就交给了下面的网络层
也就是说无论应用层交给UDP多长的报文,它统统发送,一次发送一个报文
而对接收方,接到后直接去除首部,交给上面的应用层就完成任务
UDP报头包括4个字段,每个字段占用2个字节(即16个二进制位),标题短,开销小
特点如下:
UDP 不提供复杂的控制机制,利用 IP 提供面向无连接的通信服务
传输途中出现丢包,UDP 也不负责重发
当包的到达顺序出现乱序时,UDP没有纠正的功能。
并且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。即使是出现网络拥堵的情况,UDP 也无法进行流量控制等避免网络拥塞行为
二、TCPTCP(Transmission Control Protocol),传输控制协议,是一种可靠、面向字节流的通信协议,把上面应用层交下来的数据看成无结构的字节流来发送
可以想象成流水形式的 ...
面试官:说说地址栏输入 URL 敲下回车后发生了什么?
面试官:说说地址栏输入 URL 敲下回车后发生了什么?
一、简单分析简单的分析,从输入 URL到回车后发生的行为如下:
URL解析
DNS 查询
TCP 连接
HTTP 请求
响应请求
页面渲染
二、详细分析URL解析首先判断你输入的是一个合法的 URL 还是一个待搜索的关键词,并且根据你输入的内容进行对应操作
URL的解析第过程中的第一步,一个url的结构解析如下:
DNS查询在之前文章中讲过DNS的查询,这里就不再讲述了
整个查询过程如下图所示:
最终,获取到了域名对应的目标服务器IP地址
TCP连接在之前文章中,了解到tcp是一种面向有连接的传输层协议
在确定目标服务器服务器的IP地址后,则经历三次握手建立TCP连接,流程如下:
发送 http 请求当建立tcp连接之后,就可以在这基础上进行通信,浏览器发送 http 请求到目标服务器
请求的内容包括:
请求行
请求头
请求主体
响应请求当服务器接收到浏览器的请求之后,就会进行逻辑操作,处理完成之后返回一个HTTP响应消息,包括:
状态行
响应头
响应正文
在服务器响应之后,由于现在http默认开 ...
面试官:说说对WebSocket的理解?应用场景?
面试官:说说对WebSocket的理解?应用场景?
一、是什么WebSocket,是一种网络传输协议,位于OSI模型的应用层。可在单个TCP连接上进行全双工通信,能更好的节省服务器资源和带宽并达到实时通迅
客户端和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输
从上图可见,websocket服务器与客户端通过握手连接,连接成功后,两者都能主动的向对方发送或接受数据
而在websocket出现之前,开发实时web应用的方式为轮询
不停地向服务器发送 HTTP 请求,问有没有数据,有数据的话服务器就用响应报文回应。如果轮询的频率比较高,那么就可以近似地实现“实时通信”的效果
轮询的缺点也很明显,反复发送无效查询请求耗费了大量的带宽和 CPU 资源
二、特点全双工通信允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合
例如指 A→B 的同时 B→A ,是瞬时同步的
二进制帧采用了二进制帧结构,语法、语义与 HTTP 完全不兼容,相比http/2,WebSocket 更侧重于“实时通信”,而HTTP/2 更侧重于提高传输效率,所以两者的帧结 ...
面试官:说说TCP为什么需要三次握手和四次挥手?
面试官:说说TCP为什么需要三次握手和四次挥手?
一、三次握手三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包
主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备
过程如下:
第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN(c),此时客户端处于 SYN_SENT 状态
第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,为了确认客户端的 SYN,将客户端的 ISN+1作为ACK的值,此时服务器处于 SYN_RCVD 的状态
第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,值为服务器的ISN+1。此时客户端处于 ESTABLISHED 状态。服务器收到 ACK 报文之后,也处于 ESTABLISHED 状态,此时,双方已建立起了连接
上述每一次握手的作用如下:
第一次握手:客户端发送网络包,服务端收到了这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。 ...
面试官:说说 HTTP 常见的请求头有哪些? 作用?
面试官:说说 HTTP 常见的请求头有哪些? 作用?
一、是什么HTTP头字段(HTTP header fields),是指在超文本传输协议(HTTP)的请求和响应消息中的消息头部分
它们定义了一个超文本传输协议事务中的操作参数
HTTP头部字段可以自己根据需要定义,因此可能在 Web 服务器和浏览器上发现非标准的头字段
下面是一个HTTP请求的请求头:
123456789101112GET /home.html HTTP/1.1Host: developer.mozilla.orgUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflate, brReferer: https://developer ...
面试官:说说HTTP 常见的状态码有哪些,适用场景?
面试官:说说HTTP 常见的状态码有哪些,适用场景?
一、是什么HTTP状态码(英语:HTTP Status Code),用以表示网页服务器超文本传输协议响应状态的3位数字代码
它由 RFC 2616规范定义的,并得到 RFC 2518、RFC 2817、RFC 2295、RFC 2774与 RFC 4918等规范扩展
简单来讲,http状态码的作用是服务器告诉客户端当前请求响应的状态,通过状态码就能判断和分析服务器的运行状态
二、分类状态码第一位数字决定了不同的响应状态,有如下:
1 表示消息
2 表示成功
3 表示重定向
4 表示请求错误
5 表示服务器错误
1xx代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束
常见的有:
100(客户端继续发送请求,这是临时响应):这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应
101:服务器根据客户端的请求切换协议,主要用于websocket或 ...
面试官:说说 linux系统下 文件操作常用的命令有哪些?
面试官:说说 linux系统下 文件操作常用的命令有哪些?
一、是什么Linux 是一个开源的操作系统(OS),是一系列Linux内核基础上开发的操作系统的总称(常见的有Ubuntu、centos)
系统通常会包含以下4个主要部分
内核
shell
文件系统
应用程序
文件系统是一个目录树的结构,文件系统结构从一个根目录开始,根目录下可以有任意多个文件和子目录,子目录中又可以有任意多个文件和子目录
二、文件操作常见处理目录的命令如下:
ls(英文全拼:list files): 列出目录及文件名
cd(英文全拼:change directory):切换目录
pwd(英文全拼:print work directory):显示目前的目录
mkdir(英文全拼:make directory):创建一个新的目录
rmdir(英文全拼:remove directory):删除一个空的目录
cp(英文全拼:copy file): 复制文件或目录
rm(英文全拼:remove): 删除文件或目录
mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称
ls列出目录文 ...