百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

全网最全,高频网络基础面试题目,你get到了吗?

nanshan 2024-10-21 06:03 6 浏览 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 协议的应用如:语音,视频。

相关推荐

实战派 | Java项目中玩转Redis6.0客户端缓存

铺垫首先介绍一下今天要使用到的工具Lettuce,它是一个可伸缩线程安全的redis客户端。多个线程可以共享同一个RedisConnection,利用nio框架Netty来高效地管理多个连接。放眼望向...

轻松掌握redis缓存穿透、击穿、雪崩问题解决方案(20230529版)

1、缓存穿透所谓缓存穿透就是非法传输了一个在数据库中不存在的条件,导致查询redis和数据库中都没有,并且有大量的请求进来,就会导致对数据库产生压力,解决这一问题的方法如下:1、使用空缓存解决对查询到...

Redis与本地缓存联手:多级缓存架构的奥秘

多级缓存(如Redis+本地缓存)是一种在系统架构中广泛应用的提高系统性能和响应速度的技术手段,它综合利用了不同类型缓存的优势,以下为你详细介绍:基本概念本地缓存:指的是在应用程序所在的服务器内...

腾讯云国际站:腾讯云服务器如何配置Redis缓存?

本文由【云老大】TG@yunlaoda360撰写一、安装Redis使用包管理器安装(推荐)在CentOS系统中,可以通过yum包管理器安装Redis:sudoyumupdate-...

Spring Boot3 整合 Redis 实现数据缓存,你做对了吗?

你是否在开发互联网大厂后端项目时,遇到过系统响应速度慢的问题?当高并发请求涌入,数据库压力剧增,响应时间拉长,用户体验直线下降。相信不少后端开发同行都被这个问题困扰过。其实,通过在SpringBo...

【Redis】Redis应用问题-缓存穿透缓存击穿、缓存雪崩及解决方案

在我们使用redis时,也会存在一些问题,导致请求直接打到数据库上,导致数据库挂掉。下面我们来说说这些问题及解决方案。1、缓存穿透1.1场景一个请求进来后,先去redis进行查找,redis存在,则...

Spring boot 整合Redis缓存你了解多少

在前一篇里面讲到了Redis缓存击穿、缓存穿透、缓存雪崩这三者区别,接下来我们讲解Springboot整合Redis中的一些知识点:之前遇到过,有的了四五年,甚至更长时间的后端Java开发,并且...

揭秘!Redis 缓存与数据库一致性问题的终极解决方案

在现代软件开发中,Redis作为一款高性能的缓存数据库,被广泛应用于提升系统的响应速度和吞吐量。然而,缓存与数据库之间的数据一致性问题,一直是开发者们面临的一大挑战。本文将深入探讨Redis缓存...

高并发下Spring Cache缓存穿透?我用Caffeine+Redis破局

一、什么是缓存穿透?缓存穿透是指查询一个根本不存在的数据,导致请求直接穿透缓存层到达数据库,可能压垮数据库的现象。在高并发场景下,这尤其危险。典型场景:恶意攻击:故意查询不存在的ID(如负数或超大数值...

Redis缓存三剑客:穿透、雪崩、击穿—手把手教你解决

缓存穿透菜小弟:我先问问什么是缓存穿透?我听说是缓存查不到,直接去查数据库了。表哥:没错。缓存穿透是指查询一个缓存中不存在且数据库中也不存在的数据,导致每次请求都直接访问数据库的行为。这种行为会让缓存...

Redis中缓存穿透问题与解决方法

缓存穿透问题概述在Redis作为缓存使用时,缓存穿透是常见问题。正常查询流程是先从Redis缓存获取数据,若有则直接使用;若没有则去数据库查询,查到后存入缓存。但当请求的数据在缓存和数据库中都...

Redis客户端缓存的几种实现方式

前言:Redis作为当今最流行的内存数据库和缓存系统,被广泛应用于各类应用场景。然而,即使Redis本身性能卓越,在高并发场景下,应用于Redis服务器之间的网络通信仍可能成为性能瓶颈。所以客户端缓存...

Nginx合集-常用功能指导

1)启动、重启以及停止nginx进入sbin目录之后,输入以下命令#启动nginx./nginx#指定配置文件启动nginx./nginx-c/usr/local/nginx/conf/n...

腾讯云国际站:腾讯云怎么提升服务器速度?

本文由【云老大】TG@yunlaoda360撰写升级服务器规格选择更高性能的CPU、内存和带宽,以提供更好的处理能力和网络性能。优化网络配置调整网络接口卡(NIC)驱动,优化TCP/IP参数...

雷霆一击服务器管理员教程

本文转载莱卡云游戏服务器雷霆一击管理员教程(搜索莱卡云面版可搜到)首先你需要给服务器设置管理员密码,默认是空的管理员密码在启动页面进行设置设置完成后你需要重启服务器才可生效加入游戏后,点击键盘左上角E...

取消回复欢迎 发表评论: