本文对面试/笔试过程中经常会被问到的一些关于计算机网络的问题以及一些基础知识进行了梳理和总结,一方面方便自己查看学习,另一方面也希望为找工作的同学们提供一个复习参考。
其它面试知识点突击整理:
序号 | 文章 |
---|---|
1 | Java基础面试突击 |
2 | JVM面试突击 |
3 | 设计模式面试突击 |
4 | 并发编程面试突击 |
5 | 消息队列Kafka面试突击 |
6 | Redis面试突击 |
7 | 计算机网络面试突击 |
8 | Spring面试突击 |
9 | Dubbo面试突击 |
10 | MyBatis面试突击 |
11 | 操作系统面试突击 |
12 | MySQL面试突击 |
13 | Linux命令面试突击 |
文章目录
一、计算机网络模型
TCP/IP 与 OSI 都是为了使网络中的两台计算机能够互相连接并实现通信与回应,但他们最大的不同在于,OSI 是一个理论上的网络通信模型,而 TCP/IP 则是实际上的网络通信标准。
1. OSI七层模型
1、物理层
:实现计算机节点之间比特流的透明传输,规定传输媒体接口的标准,屏蔽掉具体传输介质和物理设备的差异,使数据链路层不必关心网络的具体传输介质,按照物理层规定的标准传输数据就行
2、数据链路层
:通过差错控制、流量控制等方法,使有差错的物理线路变为无差错的数据链路。
数据链路层的几个基本方法:数据封装成桢、透明传输、差错控制、流量控制。
- 封装成桢:把网络层数据报加头和尾,封装成帧,帧头中包括源MAC地址和目的MAC地址。
- 透明传输:零比特填充、转义字符。
- 差错控制:接收者检测错误,如果发现差错,丢弃该帧,差错控制方法有 CRC 循环冗余码
- 流量控制:控制发送的传输速度,使得接收方来得及接收。传输层TCP也有流量控制功能,但TCP是端到端的流量控制,链路层是点到点(比如一个路由器到下一个路由器)
3、网络层
:实现网络地址与物理地址的转换,并通过路由选择算法为分组通过通信子网选择最适当的路径
- 网络层最重要的一个功能就是:路由选择。路由一般包括路由表和路由算法两个方面。每个路由器都必须建立和维护自身的路由表,一种是静态维护,也就是人工设置,适用于小型网络;另一种就是动态维护,是在运行过程中根据网络情况自动地动态维护路由表。
4、传输层
:提供源端与目的端之间提供可靠的透明数据传输,传输层协议为不同主机上运行的进程提供逻辑通信。
- 网络层协议负责的是提供主机间的逻辑通信;
- 传输层协议负责的是提供进程间的逻辑通信。
5、会话层
:是用户应用程序和网络之间的接口,负责在网络中的两节点之间建立、维持、终止通信。
6、表示层
:处理用户数据的表示问题,如数据的编码、格式转换、加密和解密、压缩和解压缩。
7、应用层
:为用户的应用进程提供网络通信服务,完成和实现用户请求的各种服务。
2. TCP/IP模型
TCP/IP协议模型(Transmission Control Protocol/Internet Protocol
),包含了一系列构成互联网基础的网络协议,是Internet的核心协议。TCP/IP协议族按照层次由上到下,层层包装。
上图表示了TCP/IP协议中每个层的作用,而TCP/IP协议通信的过程其实就对应着数据入栈与出栈的过程。入栈的过程,数据发送方每层不断地封装首部与尾部,添加一些传输的信息,确保能传输到目的地。出栈的过程,数据接收方每层不断地拆除首部与尾部,得到最终传输的数据。
二、网络篇
1. 公钥和私钥
公钥和私钥是通过一种算法得到的一个密钥对,公钥是秘钥对中公开的部分,私钥是非公开的部分。如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。
原则:公钥公开,私钥只有自己拥有。
2. 对称加密与非对称加密
对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;
非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。
由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。
总结一下:通过非对称加密的方式把秘钥发送过去,接下来用这个秘钥一直进行对称加密。即:第一次通信采用非对称加密,接下来的通信采用对称加密。
3. HTTP与HTTPS的相关问题
3.1 HTTP概念
HTTP协议:超文本传输协议
。是应用层
协议,是基于TCP
协议的,明文传输,客户端与服务器端都无法验证对方的身份;
超文本:广义上的文本,包括图片、视频、压缩包、超链接等。
3.2 HTTP的特点
-
简单、灵活:HTTP头部的各类字段组成都没有固定要求,允许开发人员自定义和补充。
-
无状态:服务器不会记录HTTP的状态,减轻了服务器的开