面经知识学习笔记
互联网公司
网络几层模型、不同模型之间的区别
国际标准化组织 ISO 提出了 OSI 开放互连的七层计算机网络模型,从上到下分别是应用层、表示层、会话层、运输层、网络层、链路层和物理层。OSI 模型的概念清楚,理论也比较完善,但是既复杂又不实用。还有一种是 TCP/IP 体系结构,它分为四层,从上到下分别是应用层、运输层、网际层和网络接口层,不过从实质上将只有三层,因为最下面的网络接口层并没有什么具体内容。因特网的协议栈使用一种五层的模型结构,从上到下依次是应用层、运输层、网络层、链路层和物理层,其中下层是为上层提供服务的,每层执行某些动作或使用下层的服务来提高服务。
网络协议分层
物理层:
原始比特流传输,网卡,网线,集线器,中继器,调制解调器
物理层上所传送的数据单位是比特。**物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。**使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流” 表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。
数据链路层:
定义了internet与各物理网络之间的网络接口【PPP、以太网(交换机)】网桥,交换机
该层的主要功能是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装程帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。在计算机网络中由于各种干扰的存在,物理链路是不可靠的。因此,这一层的主要功能是在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。数据链路层的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层;并且,还负责处理接收端发回的确认帧的信息,以便提供可靠的数据传输。
网络层:
从源到目的地数据报的选路【IP、选路协议(路由器)】
在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。网络层的另一个任务就是选择合适的路由,使源主机传输层所传下来的分组,能通过网络层中的路由器找到目的主机。一般地,数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信。例如在广域网之间通信时,必然会遇到路由(即两节点间可能有多条路径)选择问题。
传输层:
**向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。**传输层的作用是向高层屏蔽下层数据通信的细节,即向用户透明地传送报文。传输层提供会话层和网络层之间的传输服务,这种服务从会话层获得数据,并在必要时,对数据进行分割。然后,传输层将数据传递到网络层,并确保数据能正确无误地传送到网络层。因此,传输层负责提供两节点之间数据的可靠传送,当两节点的联系确定之后,传输层则负责监督工作。综上,传输层的主要功能如下:监控服务质量。【TCP、UDP】,网关工作在第四层传输层及其以上
应用层:
应用层是网络体系结构中的最高层,应用层的任务就是通过应用进程之间的交互来完成特定网络应用,这一层的数据单元叫做报文
应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议【FTP、SMTP、HTTP等】,提供各种网络应用服务
域名解析系统 DNS
DNS,就是Domain Name System的缩写,翻译过来就是域名系统,是互联网上作为域名和IP地址相互映射的一个分布式数据库。DNS能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。
一张图看懂DNS域名解析全过程
DNS寻址过程
- 客户机发出查询请求,在本地计算机缓存查找,若没有找到,就会将请求发送给dns服务器
- 先发送给本地dns服务器,本地的就会在自己的区域里面查找,若找到,根据此记录进行解析,若没有找到,就会在本地的缓存里面查找
- 本地DNS服务器没有找到客户机查询的信息,就会将此请求发送到根域名dns服务器
- 根域名服务器解析客户机请求的根域部分,它把包含的下一级的dns服务器的地址返回到客户机的dns服务器地址
- 客户机的dns服务器根据返回的信息接着访问下一级的dns服务器
- 这样递归的方法一级一级接近查询的目标,最后在有目标域名的服务器上面得到相应的IP信息
- 客户机的本地的dns服务器会将查询结果返回给我们的客户机
- 客户机根据得到的ip信息访问目标主机,完成解析过程
DNS 被设计为一个联机分布式数据库系统,并采用客户服务器方式。DNS 使大多数名字都在本地进行解析,仅少量解析需要在互联网上通信,因此 DNS 的效率很高。由于 DNS 是分布式系统,即使单个计算机出现了故障也不会妨碍到整个 DNS 系统的正常运行。
主机向本地域名服务器的查询一般都采用递归查询,递归查询指如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份向其他根域名服务器继续发出查询请求报文。递归查询的结果是要查询的 IP 地址,或者是报错,表示无法查询到所需的 IP 地址。
本地域名服务器向根域名服务器查询通常采用迭代查询,迭代查询指当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉它该向哪一个域名服务器进行查询。本地域名服务器也可以采用递归查询,这取决于最初的查询请求报文设置的查询方式。
HTTP请求方法有哪些?
HTTP协议——通信协议学习笔记(一)
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
方法 | 描述 |
---|---|
GET | 请求指定的页面信息,并返回实体主体。 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |
HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
DELETE | 请求服务器删除指定的页面。 |
CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
OPTIONS | 返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送’*'的请求来测试服务器的功能性。 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新 。 |
在实际应用中常用 get 和 post,其他请求方式也都可以通过这两种方式间接的来实现。
GET、POST、HEAD、PUT请求:
GET
:GET方法用于获取请求页面的指定信息。如果请求资源为动态脚本(非HTML),那么返回文本是Web容器解析后的HTML源代码。GET请求没有消息主体,因此在消息头后的空白行是没有其他数据。POST
:POST方法也与GET方法相似,但最大的区别在于,GET方法没有请求内容,而POST是有请求内容的。HEAD
:这个请求的功能与GET请求相似,不同之处在于服务器不会再其响应中返回消息主体,因此,这种方法可用于检查某一资源在向其提交GET请求前是否存在。PUT
:PUT方法用于请求服务器把请求中的实体存储在请求资源下,如果请求资源已经在服务器中存在,那么将会用此请求中的数据替换原先的数据。向服务器上传指定的资源。- 【注意考虑幂等性问题】
HTTPS、SSL过程
HTTP、HTTPS、SPDY、HTTP2.0、HTTP3.0 —— 通信协议学习笔记(二)
三次握手
java class区别
HTTP状态码 怎么分类的
两个栈实现队列
输入网址的过程
IP路由的过程
其他待解决:
牛客面经问题:
get和post的区别?有说到get是幂等的,如果在两个get期间数据库发生改变了那结果还是一样吗?(不一样)。那怎么是幂等的?
比如我要去换一个头像是用get还是post?
SSL握手过程,第一次握手是什么加密,第二次握手怎么加密
对称加密的安全性
操作系统层面的线程同步
信号量和互斥量的区别
synchronized介绍
两个线程轮流打印奇数和偶数
wait()和sleep()的区别
hashcode场景,hashMap
脏读,怎么解决脏读(怎么加锁)
类加载过程
ClassLoader的作用,双亲委派
DNS劫持
包传输的过程+mac地址
操作系统虚拟内存管理
2020.09.07
AI领域9种常见的监督学习算法
哪些是大数据处理性能的基本考虑因素?
如何处理大数据性能问题?
虚拟机内存扩容问题
大数据处理 性能影响因素有哪些:
数据本地化、网络带宽、复制因子
影响数据检索效率的几个因素
算法题:
1、碟子 苹果
2、括号合法
3、湖泊
4、链表
(华为&腾讯)
某散列表的长度为100,散列函数H(k)=k % P,则P通常情况下最好选择( )
A. 99
B.97
C.91
D.93
选B:P选择小于长度的最大质数
银行
农行总行研发中心
输入一个网址,到网址加载出来,发生了哪些事情
java可不可以被多重继承
private的作用
构造方法可不可以被private
继承中,private的作用
list和set的区别
set中元素是否可以重复
list有哪些
acitivity的生命周期
页面渲染的过程
用过数据库吗?
sql中where和having的区别
网络安全
安全证书