从下往上: 物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
应用层:
传输层:
网络层:
浏览器查看自身缓存
操作系统缓存
本机hosts文件
本地域名服务器
本地域名服务器返回查到的IP给浏览器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zAwg8OQk-1630134046911)(面试八股文.assets/image-20210706084255418.png)]
只有三次握手才能确保双方的发送和接收都是正常的,如果是两次握手的话,不能确保服务端发送正常,客户端接收正常,三次握手还可以防止已经失效的请求后来才传送到服务器,导致再次建立连接浪费服务器资源
TCP设有一个保活计时器,一般定时为2小时,如果期间收到客户端的请求就会重新开始倒计时,当服务端超过2小时未收到客户端的任何请求,服务端就会发送探测报文,没有响应就会认定客户端出现故障,从而断开连接
因为客户端想断开连接的时候,服务端如果还有数据要发给客户端,就要先发一次ACK报文,告知客户端"我知道你想断开了". 然后服务端给客户端发送数据,等数据发完服务端再发送FIN报文. 抓包时发现, 若服务端没有数据要发给客户端, 中间的两次挥手会合并为一次
如果最后一个ACK报文发出后丢失了,服务端就会再次发送FIN报文,所以客户端收到第二次FIN报文的时间最长是2MSL,此时如果客户端直接进入CLOSED状态,就无法再重发最后一个ACK报文,导致服务端无法进入CLOSED状态. 如果设置这样一个时间段,客户端在此期间没有收到FIN报文,说明服务端成功收到最后一个ACK报文
正向代理: 是客户端的代理,代替客户端发起网络请求
反向代理: 是服务端的代理,代替服务端接收网络请求
GET用于从服务器获取数据,POST用于向服务器提交数据
GET请求是安全且幂等的,多用于查询操作
POST请求既不安全也不幂等,多用于注册操作
注: 安全指的是 请求方法不会修改服务器的资源,幂等指的是 多次请求返回的结果都相同
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MTlyMzrG-1630134046913)(面试八股文.assets/image-20210630142543078.png)]
HTTPS: 加密传输,保证安全通信
HTTP/2: 解决队头阻塞
WebSocket: 不再使用“请求-应答”模式,而是全双工实时通信
IO多路复用中,多路指的是有多个文件描述符fd,复用指的是用一个线程来处理。它实现了用一个线程监视多个fd,一旦有fd就绪,select, epoll这些系统调用就会返回,用户态线程就可以对这些就绪的fd进行相应的读写操作。
它的效率很高,因为它由操作系统内核帮我们找出就绪的fd,使得我们不必轮询每个fd的read()函数,从而避免了频繁切换上下文
同步IO: 调用IO函数后等待结果返回
异步IO: 调用IO函数后直接返回,等IO完成后会自动调用回调函数
阻塞IO: 在等待IO结果返回时,会主动让出CPU时间片,进入阻塞态
非阻塞IO: 在等待IO结果返回时,不断轮询直到收到结果
多个TCP数据包传输的数据内容合在了一起,没办法区分数据边界
如何解决?
TCP有状态,是指它不同的请求之间都是有关联的,比如序号seq是递增的,而且它能够记住和它相连的主机的IP和端口
HTTP无状态,是指它不同请求之间是独立的,而且它不会记住刚刚登录的用户
HTTP本身是无状态的,从而导致用户登录之后,下次发送请求还要携带账号密码进行身份验证
所以为了让HTTP有状态,需要额外引入一些机制,记录浏览器和服务端的会话状态
常用的方案有三种: session,cookie,token
都是为了让HTTP实现状态保持
Host: 指定服务器的域名
Connection: 常用于要求服务端使用TCP长连接,HTTP/1.1默认是长连接,但为了兼容老版本设置此字段,一般都是Keep-Alive
Content-type: 告诉对方本次数据的格式,如image/png
Accept: 声明自己可以接受哪些数据格式,*/*代表接受任意类型
Accept-Encoding: 声明自己可以接受哪些压缩方法,如gzip,deflate
User-Agent: 描述客户端是哪个浏览器或者是爬虫
Content-length: 数据长度
Content-type: 告诉对方本次数据的格式,如image/png
Content-encoding: 返回的数据使用的压缩格式,如gzip
Date: 服务器的响应时间
Server: web服务器的名称和版本号
官方文档: https://docs.gitlab.com/runner/install/index.html#doc-navLinux: 1,下载gitlab-runner # Linux x86-64 sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-down..._gitlba jekens
修改配置文件spring: application: name: cms primaryDataSource: dataSourceClassName: com.mysql.jdbc.jdbc2.optional.MysqlDataSource url: jdbc:mysql://localhost:3306/srbairun?useUnicode=true
身为三本的我就是凭借这些前端面试题拿到百度京东offer的,前端面试题2021及答案...此文转载自:https://blog.csdn.net/qq_33277654/article/details/112758362#commentBox点进来之后你的噩梦就要来了,接下来你要面对上百道面试题,那么,如果你——是个小白菜: 推荐使用2~3周的时间来消化接下来的面试题, 遇到不会的没听说过名词请立刻去搜; 文章中只是简答,如果想要详细了解的话还需要你自觉去搜索 如果你._前端面试题
编程之美中的“寻找发帖水王”描述的是这么一个问题,有一个ID列表,其中有一个ID(水王的ID)出现的次数超过了一半,请找出这个ID。书中的思路是每次从列表中删除两个不同的ID,不影响“水王的ID在剩余ID中仍然超过一半”这一事实,因此每次删除两个不同的ID,直到剩下的所有ID都相同,那么剩下的就是水王的ID。具体编程的时候,使用一个candidate记录当前猜测的水王ID,
MapReduce技术的初步了解与学习--包含Google MapReduce中文版 今天咱们学习下MapReduce模型。由于是本人是初次接触,不是很了解。所以,有任何问题,还望各位不吝批评指正。本文中,我会先用最最通俗的语言阐述什么是MapReduce,然后再摘自Google MapReduce中文版上的一些内容,以期对这个模型有个初步的了解与认识。ok,闲不多说,下面进入...
什么是keras中文 https://keras.io/zh/英文 https://keras-cn.readthedocs.io/en/latest/与其他任何深度学习框架相比,Keras 在行业和研究领域的应用率更高(除 TensorFlow 之外,且 Keras API 是 TensorFlow 的官方前端,通过 tf.keras 模块使用)。简单的线性回归Keras..._keras添加regression head
Hp打印机,也就是我们常说的惠普打印机,目前已经成了打印机行业中的最为人们熟知的品牌之一,不过对于大多数打印机来说,无论品牌好坏,总会在使用的过程中出现这样那样的问题,而惠普打印机在使用过程中是故障率也是居高不下,如此看来掌握一定的维修技巧就显得十分必要了。今天小编就为大家总结几种惠普打印机常见的故障解决办法:1、打印时显示遇到DOT400X端口错误这种情况大多是由于USB端口出现了问题,要么是没..._惠普打印机故障编码
昨天比较郁闷,家里的水给停了。在楼下发现了一张欠费单,原因是欠了水务公司半年的水费。无奈,只好联系房东(因为欠水费的时间段发生在我住进来之前),房东也比较恶心,昨天满口答应今天过来,又放鸽子了 (房东这人一向比较恶心,总爱放鸽子)。继续无奈,为了今天能用上水只好自己亲自前往水务公司缴债!到了以后更是奇怪,那的工作人员居然冒出一句“这是以前的单子。。。”,我日啊。。。就这么一张破
题目已知递增有序的单链表A、B(A、B中元素个数分别为m、n,且A、B都带有头结点)分别存储了一个集合,请设计算法,以求出两个集合A和B的差集A-B(仅由在A中出现而不在B中出现的元素所构成的集合)。将差集保存在单链表A中,并保持元素的递增有序性。分析只需从A中删去A与B中共有的元素即可。由于两个链表中的元素是递增有序的,因此可以这么做:设置两个指针p、q开始时分别指向A和B的开始结点。循环进行以下判断和操作:如果p所指结点的值小于q所指结点的值,则p后移一位:如果q所指结点的值小于p所指结.._差集例题
姓名:学号:班级:同组人:指导老师:报告日期:软件设计实验1:清零实验? 实验目的:掌握汇编语言设计和调试方法? 实验内容:使用AT89C52单片机对单片机内部RAM进行清零操作,实验内容如下:把90H-AFH勺内容置为#55H;把90H-9FH的内容清零。? 实验问答:清零之后,90H-9FH的内容是什么? A0H-AFH的内容是什么? 清零之后,90H-9FH的内容是#00H; A0H-AFH..._七巧板实验报告
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar_python 有没有defer
简介OTP全称是One-Time-Password,也称动态口令,是根据专门的算法每隔一定时间(例如:60秒)生成一个与时间相关的、不可预测的随机数字组合,每个口令只能使用一次,每天可以产生43200个密码。它使用密码技术实现的在客户端和服务器之间通过共享秘密的一种认证技术,是一种强认证技术,是增强目前静态口令认证的一种非常方便的技术手段,是一种重要的双因素认证技术。认证原_otp算法