网络相关知识(网络相关知识 面试)
nanshan 2024-10-21 06:02 8 浏览 0 评论
1、http中session和cookies的作用和区别
cookie存在客户端的信息头中,session在服务器端存储,文件、数据库等都可以
一般来说session的验证需要cookie带一个字段来表示这个用户是哪一个session,所以当客户端禁用cookie时,session将失效
cookie就是小一段文本信息
cookie的格式为key:value;key:value
cookie的值由服务器端生成,客户端保存
2、http协议信息头
简要说明请求中accept\accept-encoding、accept-language都代表什么意思
1、请求头
accept:浏览器告诉服务器它所支持的数据类型
accept-charset:浏览器告诉服务器它采用的字符集
accept-encoding:浏览器告诉服务器它所支持的压缩格式
accept-language:浏览器告诉服务器它所采用的语言
host:浏览器告诉服务器我想访问服务器哪台主机
if-modified-since:浏览器告诉服务器它缓存数据时间是多少
referer:浏览器告诉服务器我是从那个网页点过来的(防盗链)
user-agent:浏览器告诉服务器我所使用的浏览器类型、版本等信息
date:浏览器告诉服务器我是什么时间访问的
2、响应头
location:告诉浏览器你去找谁,配合302状态码使用
server:告诉浏览器服务器的类型
content-encoding:告诉浏览器回送的数据采用的压缩格式
content-type:告诉浏览器回送的数据类型
last-modified:告诉浏览器数据的最后修改时间
refresh:用于控制浏览器定时刷新
content- disposition:告诉浏览器需要以下载方式打开的数据
transfer-encoding:告诉浏览器数据是以分块形式回送
3、http正确的响应码
信息响应:1xx:请求已接收到,需要进一步处理才能完成,HTTP1.0 不支持。
100 Continue:上传大文件前使用
由客户端发起请求中携带 Expect:100-continue 头部触发
101 Switch Protocols: 协议升级使用
由客户端发起请求中携带 Upgrade: 头部触发,如升级 websocket 或者 http/2.0
102 Processing:WebDAV 请求可能包含许多涉及文件操作的子请求,需要很长时间
才能完成请求。
该代码表示服务器已经收到并正在处理请求,但无响应可用。这样可
以防止客户端超时,并假设请求丢失
成功响应2xx:成功处理请求
200 OK: 成功返回响应
201 Created: 有新资源在服务器端被成功创建
202 Accepted:服务器接收并开始处理请求,但请求未处理完成。这样一个模
糊的概念是有意如此设计,可以覆盖更多的场景。例如异步、需要长时间处理
的任务。
203Non-Authoritative Information: 当代理服务器修改了 origin server 的
原始响应包体时(例如更换了HTML中的元素值),代理服务器可以通过修改
200为203的方式告知客户端这一事实,方便客户端为这一行为作出相应的处理
203响应可以被缓存。
204 No Content:成功执行了请求且不携带响应包体,并暗示客户端无需
更新当前的页面视图。
205 Reset Content: 成功执行了请求且不携带响应包体,同时指明客户端
需要更新当前页面视图。
206 Partial Content: 使用 range 协议时返回部分响应内容时的响应码
207 Multi-Status: RFC4918,在WEBDAV 协议中以XML 返回多个资源
的状态。
208 Already Reported: RFC5842,为避免相同集合下资源在207响应码
下重复上报,使用208可以使用父集合的响应码。
重定向3xx:重定向使用 Location 指向的资源或者缓存中的资源。在RFC2068
中规定客户端重定向次数不应超过5次,以防止死循环
300 Multiple Choices: 资源有多种表述,通过 300 返回给客户端后由其
自行选择访问哪一种表述。由于缺乏明确的细节,300 很少使用。
301 Moved Permanently: 资源永久性的重定向到另一个 URI中。
302 Found:资源临时的重定向到另一个 URI中。
303See Other: 重定向到其他资源,常用于POST/PUT 等方法的响应中
304NotModified:当客户端拥有可能过期的缓存时,会携带缓存的标识
etag、时间等信息询问服务器缓存是否仍可复用,而304是告诉客户端可以
复用缓存。
307 Temporary Redirect: 类似302,但明确重定向后请求方法必须与原
请求方法相同,不得改变
308 Permanent Redirect: 类似301,但明确重定向后请求方法必须与原请
求方法相同,不得改变
客户端响应4xx
400 Bad Request
1、语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。
2、请求参数有误。
401 Unauthorized
当前请求需要用户验证。该响应必须包含一个适用于被请求资源的 WWW-Authenticate 信息头用以询问用户信息。客户端可以重复提交一个包含恰当的 Authorization 头信息的请求。如果当前请求已经包含了 Authorization 证书,那么401响应代表着服务器验证已经拒绝了那些证书。如果401响应包含了与前一个响应相同的身份验证询问,且浏览器已经至少尝试了一次验证,那么浏览器应当向用户展示响应中包含的实体信息,因为这个实体信息中可能包含了相关诊断信息。
402 Payment Required
此响应码保留以便将来使用,创造此响应码的最初目的是用于数字支付系统,然而现在并未使用。
403 Forbidden
服务器已经理解请求,但是拒绝执行它。与 401 响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。如果这不是一个 HEAD 请求,而且服务器希望能够讲清楚为何请求不能被执行,那么就应该在实体内描述拒绝的原因。当然服务器也可以返回一个 404 响应,假如它不希望让客户端获得任何信息。
404 Not Found
请求失败,请求所希望得到的资源未被在服务器上发现。没有信息能够告诉用户这个状况到底是暂时的还是永久的。假如服务器知道情况的话,应当使用410状态码来告知旧资源因为某些内部的配置机制问题,已经永久的不可用,而且没有任何可以跳转的地址。404这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下。
405 Method Not Allowed
请求行中指定的请求方法不能被用于请求相应的资源。该响应必须返回一个Allow 头信息用以表示出当前资源能够接受的请求方法的列表。 鉴于 PUT,DELETE 方法会对服务器上的资源进行写操作,因而绝大部分的网页服务器都不支持或者在默认配置下不允许上述请求方法,对于此类请求均会返回405错误。
406 Not Acceptable
请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体。
407 Proxy Authentication Required
与401响应类似,只不过客户端必须在代理服务器上进行身份验证。代理服务器必须返回一个 Proxy-Authenticate 用以进行身份询问。客户端可以返回一个 Proxy-Authorization 信息头用以验证。
408 Request Timeout
请求超时。客户端没有在服务器预备等待的时间内完成一个请求的发送。客户端可以随时再次提交这一请求而无需进行任何更改。
409 Conflict
由于和被请求的资源的当前状态之间存在冲突,请求无法完成。这个代码只允许用在这样的情况下才能被使用:用户被认为能够解决冲突,并且会重新提交新的请求。该响应应当包含足够的信息以便用户发现冲突的源头。
410 Gone
被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。这样的状况应当被认为是永久性的。如果可能,拥有链接编辑功能的客户端应当在获得用户许可后删除所有指向这个地址的引用。如果服务器不知道或者无法确定这个状况是否是永久的,那么就应该使用 404 状态码。除非额外说明,否则这个响应是可缓存的。
411 Length Required
服务器拒绝在没有定义 Content-Length 头的情况下接受请求。在添加了表明请求消息体长度的有效 Content-Length 头之后,客户端可以再次提交该请求。
412 Precondition Failed
服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。这个状态码允许客户端在获取资源时在请求的元信息(请求头字段数据)中设置先决条件,以此避免该请求方法被应用到其希望的内容以外的资源上。
413 Payload Too Large
服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器愿意或者能够处理的范围。此种情况下,服务器可以关闭连接以免客户端继续发送此请求。如果这个状况是临时的,服务器应当返回一个 Retry-After 的响应头,以告知客户端可以在多少时间以后重新尝试。
414 URI Too Long
请求的URI 长度超过了服务器能够解释的长度,因此服务器拒绝对该请求提供服务。这比较少见,通常的情况包括:本应使用POST方法的表单提交变成了GET方法,导致查询字符串(Query String)过长。
415 Unsupported Media Type
对于当前请求的方法和所请求的资源,请求中提交的实体并不是服务器中所支持的格式,因此请求被拒绝。
416 Requested Range Not Satisfiable
如果请求中包含了 Range 请求头,并且 Range 中指定的任何数据范围都与当前资源的可用范围不重合,同时请求中又没有定义 If-Range 请求头,那么服务器就应当返回416状态码。
417 Expectation Failed
此响应代码意味着服务器无法满足 期望 请求标头字段指示的期望值。
418 I'm a teapot
服务器拒绝尝试用 “茶壶冲泡咖啡”。
421 Misdirected Request
该请求针对的是无法产生响应的服务器。 这可以由服务器发送,该服务器未配置为针对包含在请求 URI 中的方案和权限的组合产生响应。
422 Unprocessable Entity (WebDAV)
请求格式良好,但由于语义错误而无法遵循。
423 Locked (WebDAV)
正在访问的资源被锁定。
424 Failed Dependency (WebDAV)
由于先前的请求失败,所以此次请求失败。
426 Upgrade Required
服务器拒绝使用当前协议执行请求,但可能在客户机升级到其他协议后愿意这样做。 服务器在 426 响应中发送 Upgrade 头以指示所需的协议。
428 Precondition Required
原始服务器要求该请求是有条件的。 旨在防止“丢失更新”问题,即客户端获取资源状态,修改该状态并将其返回服务器,同时第三方修改服务器上的状态,从而导致冲突。
429 Too Many Requests
用户在给定的时间内发送了太多请求(“限制请求速率”)。
431 Request Header Fields Too Large
服务器不愿意处理请求,因为它的 请求头字段太大( Request Header Fields Too Large)。 请求可以在减小请求头字段的大小后重新提交。
451 Unavailable For Legal Reasons
用户请求非法资源,例如:由政府审查的网页。
服务端响应5xx
500 Internal Server Error
服务器遇到了不知道如何处理的情况。
501 Not Implemented
此请求方法不被服务器支持且无法被处理。只有GET和HEAD是要求服务器支持的,它们必定不会返回此错误代码。
502 Bad Gateway
此错误响应表明服务器作为网关需要得到一个处理这个请求的响应,但是得到一个错误的响应。
503 Service Unavailable
服务器没有准备好处理请求。 常见原因是服务器因维护或重载而停机。 请注意,与此响应一起,应发送解释问题的用户友好页面。 这个响应应该用于临时条件和 Retry-After:如果可能的话,HTTP头应该包含恢复服务之前的估计时间。 网站管理员还必须注意与此响应一起发送的与缓存相关的标头,因为这些临时条件响应通常不应被缓存。
504 Gateway Timeout
当服务器作为网关,不能及时得到响应时返回此错误代码。
505 HTTP Version Not Supported
服务器不支持请求中所使用的HTTP协议版本。
506 Variant Also Negotiates
服务器有一个内部配置错误:对请求的透明内容协商导致循环引用。
507 Insufficient Storage
服务器有内部配置错误:所选的变体资源被配置为参与透明内容协商本身,因此不是协商过程中的适当端点。
508 Loop Detected (WebDAV)
服务器在处理请求时检测到无限循环。
510 Not Extended
服务器需要对请求进一步扩展才能实现它。
511 Network Authentication Required
511 状态码指示客户端需要进行身份验证才能获得网络访问权限。
4、nginx反向代理
nginx是一个高性能的http和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
占有内存少,并发能力强
正向代理:我们平时需要访问国外的浏览器是不是很慢,比如我们要看推特,看GitHub等等。我们直接用国内的服务器却无法访问国外的服务器,或者是访问很慢,所以我们需要再本地搭建一个服务器来帮助我们去访问。
反向代理:多台服务器,访问的服务器时候,因为服务器中间session不共享,那我们是不是在服务器之间访问需要频繁登录,那这个时候搭建一个过演服务器,对我们是没有任何影响的,我们是登录一次,但是访问所有,这种情况就是反向代理。
对我们来说,客户端对代理是无感知的,暴露的是代理服务器地址,隐藏了真实服务器的地址。
5、nginx的负载均衡
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
简单来说:现有的请求使服务器压力太大无法承受,所有我们需要搭建一个服务器集群,去分担原先一个服务器所承受的压力,那现在我们有ABCD等等多台服务器,我们需要把请求分给这些服务器,但是服务器可能大小也有自己的不同,所以怎么分? 如何分面更好?又是一个问题。
Nginx给出来三种关于负载均衡的方式
1.轮询法(默认方法)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动别除。
适合服务器配置相当,无状态且短平快的服务使用。也适用于图片服务器集群和纯静态页面服务器集群。
2.weight权重模式(加权轮询)
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
这种方式比较灵活,当后端服务器性能存在差异的时候,通过配置权重,可以让服务器的性能得到充分发挥,有效利用资源。weight和访问比率成正比,用于后端服务器性能不均的情况。权重越高,在被访问的概率越大
3.ip hash
上述方式存在一个问题就是说,在负载均衡系统中,假如用户在某台服务器上登录了,那么该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样显然是不妥的。
我们可以采用ip hash指令解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
6、使用WAF防止DDoS攻击
WAF是Web应用程序防火墙,是一种网络安全技术,可以在应用程序层面防御攻击,包括DDoS攻击。
DDoS攻击者可以利用互联网的广泛性,将恶意流量注入到网站的流量中,导致网站访问不稳定、用户信息丢失或泄露等一系列问题。
WAF能够对不同类型的攻击进行检测并进行过滤,阻止恶意攻击流量,保证站点顺畅、稳定运行。WAF还可以检测网站的异常流量,并及时预先配置或调整相应的策略,避免DDoS攻击。
相关推荐
- 实战派 | 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...
你 发表评论:
欢迎- 一周热门
-
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
WindowsServer2022|配置NTP服务器的命令
-
Ubuntu系统Daphne + Nginx + supervisor部署Django项目
-
WIN11 安装配置 linux 子系统 Ubuntu 图形界面 桌面系统
-
解决Linux终端中“-bash: nano: command not found”问题
-
Linux 中的文件描述符是什么?(linux 打开文件表 文件描述符)
-
NBA 2K25虚拟内存不足/爆内存/内存占用100% 一文速解
-
K3s禁用Service Load Balancer,解决获取浏览器IP不正确问题
-
- 最近发表
-
- 实战派 | Java项目中玩转Redis6.0客户端缓存
- 轻松掌握redis缓存穿透、击穿、雪崩问题解决方案(20230529版)
- Redis与本地缓存联手:多级缓存架构的奥秘
- 腾讯云国际站:腾讯云服务器如何配置Redis缓存?
- Spring Boot3 整合 Redis 实现数据缓存,你做对了吗?
- 【Redis】Redis应用问题-缓存穿透缓存击穿、缓存雪崩及解决方案
- Spring boot 整合Redis缓存你了解多少
- 揭秘!Redis 缓存与数据库一致性问题的终极解决方案
- 高并发下Spring Cache缓存穿透?我用Caffeine+Redis破局
- Redis缓存三剑客:穿透、雪崩、击穿—手把手教你解决
- 标签列表
-
- 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)