面试之HTTP

网络模型

  • 物理层
  • 数据链路层:逻辑链路控制LLC、媒体接入控制MAC
  • 网络层:IP协议、地址解析协议ARP、逆地址解析协议RARP、因特网控制报文协议ICMP
  • 传输层:传输控制协议TCP、用户数据报协议UDP
  • 应用层:文件传输协议FTP、远程登录协议TELNET、超文本传输协议HTTP、域名系统DNS、简单邮件协议SMTP、简单网络管理协议SNMP

HTTP协议

协议:是指计算机通信网络中两台计算机之间通信所必须共同遵守的规定或者规则。
HTTP协议:超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。

特点:

  • 简单快速
  • 无连接
  • 无状态

URI和URL的区别

URI

uniform resource identifier,统一资源标识符,用来标识唯一的一个资源。

  • 访问资源的命名机制
  • 存放资源的主机名
  • 资源本身的名称,由路径表示,着重强调于资源

URL

uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何定位这个资源。

  • 协议
  • 存有该资源的主机IP地址
  • 主机资源的具体地址

TCP三次握手

面试之HTTP_第1张图片
三次握手.png

TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

  • 第一次握手:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入到SYN_SEND(发送)状态,等待服务器确认;
  • 第二次握手:服务器收到SYN包,必须确认客户的SYN(ack=j+1),同时自己也发送一个syn(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV(准备)状态;
  • 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端与服务器进入ESTABLISHED(建立)状态,完成三次握手;

TCP四次挥手

面试之HTTP_第2张图片
四次挥手.png

TCP采用四次挥手来释放连接:

  • 第一次挥手:Client发送一个FIN,用来关闭ClientServer的数据传送,Client 进入到FIN_WAIT_1状态;
  • 第二次挥手:Server收到FIN后,发送一个ACKClient,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态;
  • 第三次挥手:Server发送一个FIN,用来关闭ServerClient的数据传送,Server进入LAST_ACK状态;
  • 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACKServer,确认序号为收到序号+1,Server进入CLOSE状态,完成四次挥手;

TCP和UDP的区别

  • TCP传输控制协议:面向连接;使用全双工的可靠信道;提供可靠的服务,即无差错、不丢失、不重复且按序到达;拥塞控制、流量控制、超时重发、丢弃重复数据等等可靠性检测手段;面向字节流;每条TCP连接只能是点到点的;用于传输可靠性要求高的数据
  • UDP用户数据报协议:无连接;使用不可靠信道;尽最大努力交付,即不保证可靠交付;无拥塞控制等;面向报文;支持一对一、一对多、多对一和多对多的交互通信;用于传输可靠性要求不高的数据

HTTP1.1和HTTP1.0的区别

  • 缓存处理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tagIf-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

  • 带宽优化及网络连接的使用,HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。

  • 错误通知的管理,在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

  • Host头处理,在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。

  • 长连接,HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connectionkeep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。

Cookie和Session的区别

Cookie

Cookie技术是客户端的解决方案,Cookie就是由服务器发送给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。

Session

Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端的信息以某种形式记录在服务器上。

区别:

  • 存放位置不同
  • 安全性(隐私策略)不同
  • 有效期上不同
  • 对服务器

HTTPS

HTTPS并不是一个单独的协议,而是对工作在常规HTTP协议中加入了SSL/TLS加密协议,通过在TCPHTTP之间加入TLS来加密数据。

HTTPS实际就是在TCP层和HTTP层之间加入了SSL/TLS来为上层的安全保驾护航,主要用到对称加密、非对称加密,证书,等技术进行客户端与服务器的数据加密传输,最终达到保证整个通信的安全性。

HTTP、TCP、IP的区别

  • TCP是传输层协议,定义数据传输和连接方式的规范。通过三次握手建立连接、四次挥手释放连接。
  • HTTP是应用层协议,定义的是传输数据的内容的规范。HTTP的连接使用"请求-响应"方式。基于TCP协议传输,默认端口号是80。
  • IP是网络层,定义了数据传输时的基本单元(数据包)和格式,IP协议还定义了数据包的传递方式和路由选择。

HTTP响应状态码

  • 1xx:表示服务器已接收了客户端请求,客户端可继续发送请求
  • 2xx:表示服务器已成功接收到请求并进行处理
    • 200 OK:表示客户端请求成功
  • 3xx:表示服务器要求客户端重定向
  • 4xx:表示客户端的请求有非法内容
    • 400 Bad Request:表示客户端请求有语法错误,不能被服务器所理解
    • 401 Unauthonzed:表示请求未经授权,该状态代码必须与WWW-Authenticate报头域一起使用
    • 403 Forbidden:表示服务器收到请求,但是拒绝提供服务,通常会在响应正文中给出不提供服务的原因
    • 404 Not Found:请求的资源不存在,例如,输入了错误的URL
  • 5xx:表示服务器未能正常处理客户端的请求而出现意外错误
    • 500 Internal Server Error:表示服务器发生不可预期的错误,导致无法完成客户端的请求
    • 503 Service Unavailable:表示服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常

你可能感兴趣的:(面试之HTTP)