文章目录
- 计算机网络
- 1. 说下计算机网络体系结构
- 2. 说一下每层协议有哪些?
- 3. 数据在各层之间是如何传输的呢?
- 4. [从浏览器地址栏输入 url 到显示主页的过程?](https://blog.csdn.net/weixin_46351593/article/details/115386029)
- 5. 说说 HTTP 常用的状态码及其含义?
- 6. HTTP 有哪些请求方式?
- 7. 说⼀下 GET 和 POST 的区别?
- 8. 三次握手过程
- 9. 为什么不是两次握手
- 10. 四次挥手过程
- 11. 四次挥手中为什么等待2MSL
- 12. 电路交换、报文交换和分组交换
计算机网络
1. 说下计算机网络体系结构
计算机网络体系结构,一般有三种:OSI 七层模型、TCP/IP 四层模型、五层结构。简单说,OSI是一个理论上的网络通信模型,TCP/IP是实际上的网络通信模型,五层结构就是为了介绍网络原理而折中的网络通信模型。
-
OSI七层模型
-
OSI 七层模型是国际标准化组织(International Organization for Standardization)制定的一个用于计算机或通信系统间互联的标准体系。
-
应用层:通过应用进程之间的交互来完成特定网络应用,应用层协议定义的是应用进程间通信和交互的规则,常见的协议有:HTTP FTP SMTP SNMP DNS.
-
表示层:数据的表示、安全、压缩。确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。
-
会话层:建立、管理、终止会话,是用户应用程序和网络之间的接口。
-
运输层:提供源端与目的端之间提供可靠的透明数据传输,传输层协议为不同主机上运行的进程提供逻辑通信。
-
网络层:将网络地址翻译成对应的物理地址,实现不同网络之间的路径选择, 协议有 ICMP IGMP IP 等.
-
数据链路层:在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路。
-
物理层:建立、维护、断开物理连接。
-
2. 说一下每层协议有哪些?
3. 数据在各层之间是如何传输的呢?
对于发送方而言,从上层到下层层层包装,对于接收方而言,从下层到上层,层层解开包装。
- 发送方的应用进程向接收方的应用进程传送数据
- AP先将数据交给本主机的应用层,应用层加上本层的控制信息H5就变成了下一层的数据单元
- 传输层收到这个数据单元后,加上本层的控制信息H4,再交给网络层,成为网络层的数据单元
- 到了数据链路层,控制信息被分成两部分,分别加到本层数据单元的首部(H2)和尾部(T2)
- 最后的物理层,进行比特流的传输
这个过程类似写信,写一封信,每到一层,就加一个信封,写一些地址的信息。到了目的地之后,又一层层解封,传向下一个目的地。
4. 从浏览器地址栏输入 url 到显示主页的过程?
这道题,大概的过程比较简单,但是有很多点可以细挖:DNS解析、TCP三次握手、HTTP报文格式、TCP四次挥手等等。
- DNS 解析:将域名解析成对应的 IP 地址。
- TCP连接:与服务器通过三次握手,建立 TCP 连接
- 向服务器发送 HTTP 请求
- 服务器处理请求,返回HTTP响应
- 浏览器解析并渲染页面
- 断开连接:TCP 四次挥手,连接结束
5. 说说 HTTP 常用的状态码及其含义?
HTTP状态码首先应该知道个大概的分类:
- 1XX:信息性状态码
- 2XX:成功状态码
- 3XX:重定向状态码
- 4XX:客户端错误状态码
- 5XX:服务端错误状态码
几个常用的,面试之外,也应该记住:
6. HTTP 有哪些请求方式?
其中,POST、DELETE、PUT、GET的含义分别对应我们最熟悉的增、删、改、查。
7. 说⼀下 GET 和 POST 的区别?
- 传参方式不同:
从 HTTP 报文层面来看,GET 请求将信息放在 URL,POST 将请求信息放在请求体中。这一点使得 GET 请求携带的数据量有限,因为 URL 本身是有长度限制的,而 POST 请求的数据存放在报文体中,因此对大小没有限制。而且从形式上看,GET 请求把数据放 URL 上不太安全,而 POST 请求把数据放在请求体里想比较而言安全一些。
- 幂等和安全性不同:
从数据库层面来看,GET 符合幂等性和安全性,而 POST 请求不符合。这个其实和 GET/POST 请求的作用有关。按照 HTTP 的约定,GET 请求用于查看信息,不会改变服务器上的信息;而 POST 请求用来改变服务器上的信息。正因为 GET 请求只查看信息,不改变信息,对数据库的一次或多次操作获得的结果是一致的,认为它符合幂等性。安全性是指对数据库操作没有改变数据库中的数据。
- 可被缓存不同:
从其他层面来看,GET 请求能够被缓存,GET 请求能够保存在浏览器的浏览记录里,GET 请求的 URL 能够保存为浏览器书签。这些都是 POST 请求所不具备的。缓存是 GET 请求被广泛应用的根本,他能够被缓存也是因为它的幂等性和安全性,除了返回结果没有其他多余的动作,因此绝大部分的 GET 请求都被 CDN 缓存起来了,大大减少了 Web 服务器的负担。
8. 三次握手过程
9. 为什么不是两次握手
10. 四次挥手过程
11. 四次挥手中为什么等待2MSL
12. 电路交换、报文交换和分组交换
-
电路交换
- 电路交换就是计算机终端之间通信时,一方发起呼叫,独占一条物理线路。当交换机完成接续,对方收到发起端的信号,双方即可进行通信。在整个通信过程中双方一直占用该电路。
- 优点:
- 通信时延小。
- 有序传输。
- 没有冲突。
- 适用范围广。
- 实时性强。
- 控制简单。
- 缺点:
- 建立连接时间长。
- 线路独占。
- 灵活性差。
- 难以规格化。
- 电路交换比较适用于信息量大、长报文,经常使用的固定用户之间的通信。
-
报文交换
- 报文交换将用户的报文存储在交换机的存储器中。当所需要的输出电路空闲时,再将该报文发向接收交换机或终端,它以“存储——转发”方式在网内传输数据。
- 优点:
- 无须建立连接。
- 动态分配线路。
- 提高线路可靠性。
- 提供多目标服务。
- 缺点:
- 引起转发时延。
- 需要较大的缓存空间。
- 报文交换适用于传输的报文较短、实时性要求较低的网络用户之间的通信,如公用电报网。
-
分组交换:
- 分组交换也采用存储转发方式,但解决了报文交换中大报文传输的问题。
- 优点:
- 无建立连接。
- 线路利用率高。
- 简化了存储管理。
- 加速传输。
- 减少了出错概率和重发数据量。
- 缺点:
- 存在传输时延。
- 需要额外的信息量。
- 可能会出现失序(数据报方式,若采用虚电路服务,虽无失序问题,但也有呼叫建立、数据传输、虚电路释放三个过程)