【PHP常见面试题 PHP基础-网络协议】HTTP/1.1中,状态码 200 301 304 403 404 500 的含义。

一、考点

1、HTTP协议状态码

① 状态码的作用:
HTTP状态码本身负责客户端HTTP请求返回的结果,标记服务器端的处理是否正常,通知出现的一些错误等等工作。状态码的职责是当我们的客户端向我们的服务器端发送请求的时候,描述返回的结果,使得用户可以知道服务器端是否处理了请求。
② 五类响应:1XX、2XX、3XX、4XX、5XX
1XX : 信息类状态码(表示接收请求状态处理)
2XX : 成功状态码(表示请求正常处理完毕)
3XX : 重定向(表示需要进行附加操作,已完成请求)
4XX : 客户端错误(表示服务器无法处理请求)
5XX : 服务器错误状态码(表示服务器处理请求的时候出错)
③ 常见状态码:
200 : 从状态码发出的请求被服务器正常处理。
204 : 服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分【即没有内容】。
206 : 部分的内容(如:客户端进行了范围请求,但是服务器成功执行了这部分的干请求)。
301 : 跳转,代表永久性重定向(请求的资源已被分配了新的URI,以后已使用资源,现在设置了URI)。
302 : 临时性重定向(请求的资源已经分配了新的URI,希望用户本次能够使用新的URI来进行访问)。
303 : 由于请求对应的资源存在的另一个URI(因使用get方法,定向获取请求的资源)。
304 : 客户端发送附带条件的请求时,服务器端允许请求访问资源,但因发生请求未满足条件的情况后,直接返回了 304。
307 : 临时重定向【该状态码与302有着相同的含义】。
400 : 请求报文中存在语法错误(当错误方式时,需修改请求的内容后,再次发送请求)。
401 : 发送的请求需要有通过HTTP认证的认证信息。
403 : 对请求资源的访问被服务器拒绝了。
404 : 服务器上无法找到请求的资源。
500 : 服务器端在执行请求时发生了错误。
503 : 服务器暂时处于超负载或者是正在进行停机维护,现在无法处理请求。

2、延伸

1) OSI 七层模型

物理层、数据链路成、网络层、传输层、会话层、表示层、应用层。
第一层: 物理层

作用:建立、维护、断开物理连接。

第二层: 数据链路层

作用:建立逻辑连接、进行硬件地址寻址、差错校验等功能。

第三层: 网络层

作用:进行逻辑地址寻址,实现不同网络之间的路径选择。

第四层: 传输层

作用:定义传输数据的协议端口号,以及流控和差错校验。

协议有:TCP、UDP,数据包一旦离开网卡即进入网络传输层。

第五层: 会话层

作用:建立、管理、终止会话。

第六层: 表示层

作用:数据的表示、安全、压缩。

第七层: 应用层

作用:网络服务于最终用户的一个接口。

协议有:HTTP、FTP、TFTP、SMTP、SNMP、DNS、TELNET、HTTPS、POP3、DHCP等。


2) HTTP协议的工作特点和工作原理

① 工作特点:
  • 基于 B/S 模式;
  • 通信开销小、简单快速、传输成本低;
  • 使用灵活、可使用超文本传输协议;
  • 节省传输时间;
  • 无状态
② 工作原理:
客户端发送请求给服务器,创建一个TCP连接,指定端口号,默认80, 连接到服务器,服务器监听浏览器请求,一旦监听到客户端请求,分析请求类型后,服务器会向客户端返回状态信息和数据内容。

3) HTTP协议常见请求/响应头和请求方法

① HTTP协议常见请求/响应头
Content-Type;                // 请求到与实体对于的MIME信息
Accept;                      // 指定客户端能接受的内容类型
Origin;                      // 最初的请求来源于哪【主要用于POST请求】
Cookie;                      // HTTP请求发起时,发送给服务端的 cookie的值
Cache-Control;               // 指定请求和响应的缓存机制
User-Agent;                  // 用户信息
Referrer;                    // 上级请求路径
X-Forwarded-For;             // 请求端真实的IP 【做代理的时候,可以用该项来进行获取】
Access-Control-Allow-Origin; // 允许特定的域名来进行访问【通常情况下来做(跨域)使用】
Last-Modified;               // 请求资源的最后响应时间
② HTTP协议的请求方法
  • GET : 会显示请求指定的资源(主要用于【数据的读取】,GET方法是幂等方法)【幂等:每次GET拿到的数据都是一样的】。【查】
  • POST :会向指定资源提交数据,请求服务器进行处理(请求可能会创建新的资源和修改现有的资源)【非幂等资源:POST每次在提交的时候,根据数据的不同,会创建不同的数据】,POST是非幂等方法【通常情况下,创建用 POST方法,遵循的是 RESTful API 的规则】【增】
  • HEAD : 与 GET方法 一样,都是向服务器发送指定资源的请求,但是服务器在响应 HEAD请求 时,不会回传资源的内容部分,只会回传 HEAD信息(即头信息)。
  • OPTIONS : 与 HEAD方式 类似,一般也是用于客户端查看服务器的性能(该方法会请求服务器,返回该资源支持的所有 HTTP请求方法,该方法会用 * 来代替资源名称,向服务器发送 OPTIONS请求)【可以测试服务器功能是否正常】
  • PUT : 会向指定资源位置上上传最新的内容,PUT方法是幂等的方法, 通过该方法客户端可以将 指定资源的最新数据 传送给服务器 取代指定资源的内容【通常情况下,修改用PUT方法,遵循的是RESTful API 规则【改】
  • DELETE :请求服务器删除所请求的URI所标识的资源,DELETE请求后指定资源会被删除,DELETE方法是幂等的方法【删】
  • TRACE : 请求服务器回显其收到的请求信息,该方法主要用于HTTP请求的测试或者诊断。
③ 常考点:HTTP协议的GET和POST请求方法的区别
1)在做后退按钮和刷新的时候,get是没有太大变化的;但是post数据就会被重新提交;
2)get可以收藏为书签;post不可能被收藏为书签;
3)get请求可以被浏览器缓存;post不可以被缓存;
4)get请求的时候,编码类型是application/x-www-form-urlencoded;post请求的时候,除了get的编码类型,编码类型还可以是multipart/form-data为二进制数据使用多重编码,该变量类型在做上传的时候使用;
5)get在历史记录中,参数会保留在浏览器历史记录中;post参数不会存于浏览器的历史记录中;
6)对于数据的长度限制,在get中是有长度的限制的,当发送数据的时候,get方法会向URL添加数据,URL的长度是受限制的,最大限制是2048个字符;post是没有限制的;
7)对于数据类型的限制,get只允许GB2312;post是没有限制的,也允许二进制的数据;
8)对于安全性,get安全性比较差,所发送的数据是URL的一部分,在发送密码或者是其他敏感信息的时候,绝对不能使用get;post安全性比较高,因为 参数不会被保存在浏览器历史记录 或者是 web服务器日志 中;
9)对于可见性,get请求数据在URL中对所有人都是可见的;post请求的数据不会显示在URL中。

4) HTTPS协议的工作原理

HTTPS是一种基于SSL/TLS的HTTP协议,所有的HTTP数据都是在SSL/TLS协议封装之上传输的。
HTTPS协议在HTTP协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议。

5) 常见网络协议含义及端口

  • FTP : 文件传输协议,用来下载文件,上传主页【默认端口:21】
  • Telnet : 一种用于远程登录的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口,可以提供一种基于DOS模式下的通信服务【端口:23】
  • SMTP : 定义了简单邮件传输协议,现在很多邮件服务器都用该协议,用于发送邮件【端口:25】
  • POP3 : 接收邮件协议 ,与 SMTP对应【默认端口:110】
  • HTTP : 超文本传输协议【端口:80】
  • DNS : 用于域名解析服务,该服务在 WINDOWS NT系统中使用最多【默认端口:53】

二、解题方法

理解并牢记以上知识点。


三、真题

我们常见的HTTP协议、TCP协议分别位于OSI网络模型的第几层?

HTTP协议:第七层【应用层】。
TCP协议:第四层【传输层】。

猜你喜欢

转载自blog.csdn.net/studyphp123/article/details/83620154