全网最全,高频网络基础面试题目,你get到了吗?
nanshan 2024-10-21 06:03 13 浏览 0 评论
Cookie和Session的区别????
Cookie 是访问某些网站以后在本地存储的一些网站相关的信息,下次再访问的时候减少一些步骤。另外一个更准确的说法是:Cookie 是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器,是一种在客户端保持状态的方案。由于 HTTP 协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是 Session。
Cookie和Session是解决http协议的无状态性,区别如下:
1.存储位置不同
Cookie是将用户数据通过加密的方式保存在客户端,大多数情况Cookie存储在浏览器;Session是用于控制客户端和服务端的连接,Session存储在服务器;
2.存储容量不同
单个Cookie保存的数据不得超过4kb,一个站点最多20个Cookie,Session一般情况下没有上限,不过建议不要存放太多东西,否则影响性能;
3.存取方式不同
Cookie只能用ASCII字符串,通过编码方式获取Unicode字符或者二进制数据,不好存储复杂的信息,而Session能存储任何类型的数据;
4.隐私策略/安全性不同
Cookie放在客户端,可以进行Cookie欺骗,所以不安全,Session放在服务端,更加安全;
5.有效期不同
Cookie可以设置属性达到长期有效,Session依赖于JSESSIONID的Cookie,Cookie JSESSIONID的过期时间默认为-1,只需要关闭窗口Session就会失效,就算不依赖Cookie,用UrL重写也不能完成,如果Session超时时间过长,容易导致内存溢出;
6.服务器压力不同
Cookie保存在本地,不存在服务端压力,Session保存在服务端,每个用户产生一个Session,当访问增多,会比较占用服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用Cookie;
7.浏览器支持不同
如果浏览器禁用Cookie,那么Cookie直接失效,Session比较好点,可以用URL重写;
8.cookie和session应用的场景
cookie:用户的登录状态,记录用户的习惯,如购物车;
session:登录验证;
HTTP与HTTPS的区别???
HTTP协议传输的数据是未加密的,也就是明文,所以用HTTP协议传输隐私信息是非常不安全的。为了保证这些私有数据能够被加密传输,网景设计了SSL(SecureSocketsLayer)协议对HTTP协议传输的数据进行加密,由此诞生了HTTPS。简单来说,httpS协议是由SSL+HTTP协议构建的网络协议,可以用于加密传输和认证,比HTTP协议更安全。
HTTP和HTTPS都是应用层协议,本质上没有区别。他们的区别是,HTTPS是安全版的HTTP,HTTP信息是明文传输的,HTTPS是安全的SSL加密传输,比HTTP协议更安全。它们使用不同的端口。默认情况下,HTTP使用端口80,而HTTPS使用端口443。
HTTPS和HTTP的主要区别如下:一般来说:HTTPS=SSL+HTTP。
Https协议需要向ca申请证书,一般免费的证书很少,所以需要一定的费用。
Http是一种超文本传输协议,信息以明文形式传输,https是一种安全的ssl加密传输协议。
Http和https使用完全不同的连接方法和不同的端口。前者是80,而后者是443(这只是一个不同的默认端口,实际上可以更改)。
http连接非常简单且无状态;HttpS协议是由SSL+HTTP协议构建的网络协议,可用于加密传输和认证。它比HTTP协议更安全。
get请求与post请求的区别??
1.提交数据的形式
- GET方法一般指从服务器获取数据,请求参数(查询字符串)后面直接跟URL,后面跟?分区URL和传输数据,参数之间用&(?1 = value1 & key2 = value2),可以直接放入浏览器的地址栏。例如,登录是使用GET方法。
示例:log in . action name = itester & password = idonknow & verify = % E4 % BD % A0 % E5 % a5 % BD。如果数据是英文字母/数字,则按原样发送,如果是空格,则转换为+,如果是中文/其他字符,则直接用BASE64加密字符串,结果如下:%E4 %BD%A0%E5%A5%BD,其中%XX中的XX是十六进制符号表示的ASCII。
POST意味着客户端将表单数据提交给服务器,数据将放在请求数据字段中,用&分隔字段。请求行不包含数据参数,地址栏也没有其他参数。因此,POST是通过表单提交的,请求参数放在正文中。比如网页上新用户的注册、问卷、回答都采用POST的方式。
2.提交数据的大小/长度
- Get是直接在浏览器地址栏中输入的,直接影响到URL的长度。但是,在HTTP协议规范中对URL的长度没有限制。对URL长度的限制受客户端或服务器不同支持的影响:比如IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如网景、火狐等。,理论上没有长度限制,而且这个限制取决于操作系统的支持。由于浏览器的限制,整个URL的长度可以很长,但不能超过2049KB的大小限制,发文也没有大小限制。
- post模式在HTTP协议规范中不受限制,但起限制作用的是服务器处理器的处理能力。因此,大小限制仍然受到每个web服务器的不同配置的影响。
3.提交数据的安全性
- 由于get的参数直接拼接在浏览器地址栏的URL中,用户名和密码会以明文形式出现在URL上,暴露在互联网上,安全性差,无法用于传输敏感信息。
- post请求参数放在正文中,通过表单数据提交。post比get更安全。
- get方法的安全性较弱,原因如下:
- 登录页面可能被浏览器缓存;
- 其他人查看浏览器历史,然后其他人可以获得账号和密码;
- 遇到跨站点攻击时,安全性能更差;
4.编码方式
- get的参数只能支持ASCII;
- post没有限制,也允许二进制数据;
5.请求方式
- get是获取指定的资源;
- post是向指定的资源提交要被处理的数据;
6.请求体
- get没有请求体;
- post有请求体;
7.效率方面
- get产生一个tcp数据包;
- post产生两个tcp数据包,post需要两步,时间上消耗要多一点,get比post更有效;
8.请求过程
- 对于get方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据),get请求的过程:
1)浏览器请求tcp连接(第一次握手);
2)服务器答应进行tcp连接(第二次握手);
3)浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以 http会在此时进行第一次数据发送);
4)服务器返回200OK响应;
- 而对于post,浏览器先发送header,服务器响应100continue,浏览器再发送data,服务器响应200ok(返回数据),post请求的过程:
1)浏览器请求tcp连接(第一次握手);
2)服务器答应进行tcp连接(第二次握手);
3)浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以 http 会 在此时进行第一次数据发送);
4)服务器返回100 Continue响应;
5)浏览器发送数据;
6)服务器返回200 OK响应;
OSI七层模型的作用分别是??
1.应用层
OSI参考模型中最接近用户的层为计算机用户提供应用接口,也直接为用户提供各种网络服务。我们常用的应用层网络服务协议包括HTTP、HTTPS、FTP、POP3、SMTP等。
2.表示层
为应用层数据提供各种编码和转换功能,保证一个系统的应用层发送的数据能够被另一个系统的应用层识别。如果需要,该层可以提供一种标准表示,用于将计算机内部的各种数据格式转换为通信中使用的标准表示;
3.会话层
负责建立、管理和终止表示层实体之间的通信会话。这一层的通信由不同设备中应用程序之间的服务请求和响应组成;
4.传输层
主机之间建立了端到端的链路,传输层的作用是为上层协议提供端到端的可靠透明的数据传输服务,包括差错控制和流量控制。这一层将下层数据通信的细节与上层屏蔽开来,使得上层用户只能看到两个传输实体之间从主机到主机的可靠数据路径,可以由用户进行控制和设置。我们通常说TCP/ UDP就在这一层。这里的端口号是“end”;
5.网络层
通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层;
6.数据链路层
将比特组合成字节,然后将字节组合成帧,使用链路层地址(以太网使用MAC地址)访问介质,并进行错误检测。数据链路层分为两个子层:逻辑链路控制子层和媒体访问控制子层。媒体访问控制子层处理CSMA/光盘算法、数据错误检查、成帧等。LLC子层定义了一些字段,使最后一个协议能够共享数据链路层。实际上,LLC子层不是必需的;
7.物理层
实际信号的传输通过物理层实现,比特流通过物理介质传输。规定了液位、速度和电缆引脚。常用的设备包括(各种物理设备)集线器、中继器、调制解调器、网线、双绞线和同轴电缆,这些都是物理层的传输介质。
编辑 搜图
请简述TCP三次握手和四次挥手??
1.三次握手
三次握手指的是创建连接的过程:首先,客户端向服务器发送请求,询问是否可以发送数据;服务器收到请求后,如果同意,会回复确认消息;收到确认消息后,客户端开始发送数据。
第一次握手:建立连接时,客户端向服务器发送请求消息(SYN),“我要建立连接”;
第二次握手:收到请求消息后,如果服务器同意连接,则向客户端发送确认消息(SYN/ACK),“同意建立”;
三次握手:客户端收到服务器的确认后,再次向服务器发送确认消息,完成连接(ACK);
2.挥手四次
四次波指的是断开的过程:客户端向服务器发送请求,询问是否有可能断开;服务器将响应其当前状态;如果服务器准备好了,它将向客户端发送断开请求。如果还没有准备好,还有数据没有响应,它会等待响应完成后再向客户端发送请求;最后,服务器和客户端断开连接。
第一波:客户端想分手,给服务器发消息(FIN);
第二波:服务器通知客户端已经接受该波请求,并返回确认消息(ACK),但还没有准备好分手;
第三波:服务器准备分手通知客户端(FIN);
第四波:客户端向服务器发送消息(ACK)确认分手,服务器关闭连接。
浏览器输入URL到将页面渲染出来发生了什么??
1.首先在浏览器地址栏输入网址,先分析网址,检查网址是否合法;
2.浏览器首先检查浏览器缓存-系统缓存-路由器缓存,如果缓存中有,页面内容会直接显示在屏幕上。如果没有,请跳到步骤3。
浏览器缓存:浏览器会记录一段时间的DNS,所以只是第一个解析DNS请求的地方;操作系统缓存:如果这个记录没有包含在浏览器缓存中,系统会调用操作系统获取操作系统的记录(保存最新的DNS查询缓存);
路由器缓存:如果上述两个步骤都无法成功获取DNS记录,则继续搜索路由器缓存;
ISP缓存:如果以上都失败,继续搜索ISP。
3.在发送http请求之前,需要进行域名解析(DNS解析)来获取对应的IP地址。
4.浏览器发起与服务器的TCP连接,并与浏览器建立TCP三次握手。
5.握手成功后,浏览器向服务器发送一个HTTP请求,请求数据包。
6.服务器处理收到的请求,并将数据返回给浏览器。
7.浏览器接收到HTTP响应。
8.浏览器对响应进行解码,如果响应可以被缓存,则存储在缓存中。
9.浏览器发送请求以获取嵌入在HTML中的资源(HTML、CSS、JavaScript、图片、音乐...),对于未知类型会弹出一个对话框。
10.浏览器发送异步请求。
11.最后,渲染所有页面。
编辑 搜图
常用HTTP状态码?
关于常见的HTTP状态码,这是一个面试经常问的题目。
状态码 | 类别 |
1XX | 信息性状态码 |
2XX | 成功状态码 |
3XX | 重定向状态码 |
4XX | 客户端错误状态码 |
5XX | 服务端错误状态码 |
常见的HTTP状态码:
1.1XX
- 100 Continue:表示正常,客户端可以继续发送请求
- 101 Switching Protocols:切换协议,服务器根据客户端的请求切换协议。
2.2XX
- 200 OK:请求成功
- 201 Created:已创建,表示成功请求并创建了新的资源
- 202 Accepted:已接受,已接受请求,但未处理完成。
- 204 No Content:无内容,服务器成功处理,但未返回内容。
- 205 Reset Content:重置内容,服务器处理成功,客户端应重置文档视图。
- 206 Partial Content:表示客户端进行了范围请求,响应报文应包含Content-Range指定范围的实体内容
3.3XX
- 301 Moved Permanently:永久性重定向
- 302 Found:临时重定向
- 303 See Other:和301功能类似,但要求客户端采用get方法获取资源
- 304 Not Modified:所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。
- 305 Use Proxy:所请求的资源必须通过代理访问
- 307 Temporary Redirect:临时重定向,与302类似,要求使用get请求重定向。
4.4XX
- 400 Bad Request:客户端请求的语法错误,服务器无法理解。
- 401 Unauthorized:表示发送的请求需要有认证信息。
- 403 Forbidden:服务器理解用户的请求,但是拒绝执行该请求
- 404 Not Found:服务器无法根据客户端的请求找到资源。
- 405 Method Not Allowed:客户端请求中的方法被禁止
- 406 Not Acceptable:服务器无法根据客户端请求的内容特性完成请求。
- 408 Request Time-out:服务器等待客户端发送的请求时间过长,超时。
5.5XX
- 500 Internal Server Error:服务器内部错误,无法完成请求
- 501 Not Implemented:服务器不支持请求的功能,无法完成请求
如果已经建立了连接,但是客户端突然出现故障了怎么办??
如果TCP连接已经建立,并且客户端在通信过程中突然出现故障,那么服务器不会永远等待,过一会儿再关闭连接。具体原理是TCP有一个保活机制,主要用于服务器端检测已经建立TCP链路的客户端的状态,防止服务器端因为Linux系统中可以创建的TCP链路总数有限而一直维护TCP链路。
保活机制原理:设置TCP保活机制的保活时间,即在TCP链路超过这个时间时发送保活检测消息,不进行任何数据交互;将保活检测消息的发送时间间隔设置为保活间隔;;设置保持活动探测消息的总发送时间,保持计数。如果保持计数时间的保持活动探测消息没有收到客户端的响应,服务器将关闭与客户端的TCP链接。
TCP 和 UDP 区别及应用场景??
1.TCP和UDP区别
面向连接 vs 无连接
可靠性:TCP 可靠,丢包重传;UDP 不可靠。
有序性:TCP 利用序列号保证了数据的有序性(数据到达会排序)
速度:TCP 创建连接,速率较慢;UDP 较快
TCP 流模式,UDP 报文模式
2.TCP和UDP应用场景
TCP:
当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如 HTTP、HTTPS、FTP 等传输文件的协议,POP、SMTP 等邮件传输的协议。在日常生活中,常见使用 TCP 协议的应用如下:
- 万维网(HTTP);
- 邮件(POP、SMTP);
- 文件传输(FTP);
UDP:
当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用 UDP。日常生活中常见使用 UDP 协议的应用如:语音,视频。
相关推荐
- 如何为MySQL服务器和客户机启用SSL?
-
用户想要与MySQL服务器建立一条安全连接时,常常依赖VPN隧道或SSH隧道。不过,获得MySQL连接的另一个办法是,启用MySQL服务器上的SSL封装器(SSLwrapper)。这每一种方法各有其...
- Mysql5.7 出现大量 unauthenticated user
-
线上环境mysql5.7突然出现大量unauthenticateduser,进mysql,showprocesslist;解决办法有:在/etc/hosts中添加客户端ip,如192.16...
- MySQL 在 Windows 系统下的安装(mysql安装教程windows)
-
更多技术文章MySQL在Windows系统下的安装1.下载mysql和Framework链接链接:百度网盘请输入提取码提取码:6w3p双击mysql-installer-communit...
- MySql5.7.21.zip绿色版安装(mysql数据库绿色版安装)
-
1、去网上下载满足系统要求的版本(mysql-5.7.21-winx64.zip)2、直接解压3、mysql的初始化(1)以管理员身份运行cmd,在mysql中的bin目录下shift+右键-在...
- MySQL(8.0)中文全文检索 (亲测有效)
-
在一堆文字中找到含有关键字的应用。当然也可以用以下语句实现:SELECT*FROM<表名>WHERE<字段名>like‘%ABC%’但是它的效率太低,是全盘扫描。...
- 新手教程,Linux系统下MySQL的安装
-
看了两三个教程。终于在哔哩哔哩找到一个简单高效的教程,成功安装,up主名叫bili逍遥bili,感兴趣可以去看看。下面这个是我总结的安装方法环境:CentOS764位1.下载安装包,个人觉得在...
- 麒麟服务器操作系统安装 MySQL 8 实战指南
-
原文连接:「链接」Hello,大家好啊,今天给大家带来一篇麒麟服务器操作系统上安装MySQL8的文章,欢迎大家分享点赞,点个在看和关注吧!MySQL作为主流开源数据库之一,被广泛应用于各种业务...
- 用Python玩转MySQL的全攻略,从环境搭建到项目实战全解析
-
这是一篇关于“MySQL数据库入门实战-Python版”的教程,结合了案例实战分析,帮助初学者快速掌握如何使用Python操作MySQL数据库。一、环境准备1.安装Python访问Pytho...
- 安装MySQL(中标麒麟 安装mysql)
-
安装MySQL注意:一定要用root用户操作如下步骤;先卸载MySQL再安装1.安装包准备(1)查看MySQL是否安装rpm-qa|grepmysql(2)如果安装了MySQL,就先卸载rpm-...
- Mysql最全笔记,快速入门,干货满满,爆肝
-
目录一、MySQL的重要性二、MySQL介绍三、软件的服务架构四、MySQL的安装五、SQL语句六、数据库相关(DDL)七、表相关八、DML相关(表中数据)九、DQL(重点)十、数据完...
- MAC电脑安装MySQL操作步骤(mac安装mysqldb)
-
1、在官网下载MySQL:https://dev.mysql.com/downloads/mysql/根据自己的macOS版本,选择适配的MySQL版本根据自己需求选择相应的安装包,我这里选择macO...
- mysql主从(mysql主从切换)
-
1、本章面试题什么是mysql主从,主从有什么好处什么是读写分离,有什么好处,使用mycat如何实现2、知识点2.1、课程回顾dubboORM->MVC->RPC->SOApro...
- 【linux学习】以MySQL为例,带你了解数据库
-
做运维的小伙伴在日常工作中难免需要接触到数据库,不管是MySQL,mariadb,达梦还是瀚高等其实命令都差不多,下面我就以MySQL为例带大家一起来了解下数据库。有兴趣的小伙伴不妨评论区一起交流下...
- 玩玩WordPress - 环境简介(0)(玩玩网络科技有限公司)
-
简介提到开源博客系统,一般都会直接想到WordPress!WordPress是使用PHP开发的,数据库使用的是MySQL,一般会在Linux上运行,Nginx作为前端。这时候就需要有一套LNMP(Li...
- 服务器常用端口都有哪些?(服务器端使用的端口号范围)
-
下面为大家介绍一下,服务器常用的一些默认端口,以及他们的作用: 21:FTP服务所开放的端口,用于上传、下载文件。 22:SSH端口,用于通过命令行模式远程连接Linux服务器或vps。 23:...
你 发表评论:
欢迎- 一周热门
-
-
极空间如何无损移机,新Z4 Pro又有哪些升级?极空间Z4 Pro深度体验
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
UOS服务器操作系统防火墙设置(uos20关闭防火墙)
-
日本海上自卫队的军衔制度(日本海上自卫队的军衔制度是什么)
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
如何修复用户配置文件服务在 WINDOWS 上登录失败的问题
-
10个免费文件中转服务站,分享文件简单方便,你知道几个?
-
手机如何设置与显示准确时间的详细指南
-
【系统配置】信创终端挂载NAS共享全攻略:一步到位!
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)