计算机网络面试总结-HTTP相关

6.HTTP相关

HTTP:超文本传输协议 ,应用册层协议

6.1.HTTP的主要特点:

  • 1.支持客户/服务器模式

  • 2.简单快速
    • 客户端向服务器请求服务时,只需传输请求方法和路径,由于http协议简单,是的http服务器的程序规模小,因此通信速度很快
  • 3.灵活
    • 允许传输任意类型的数据对象,由content-type标记
  • 4.无连接
    • 限制每次连接只处理一个请求,服务器处理完请求并收到客户端确认后,即断开连接,这种方式节省传输时间。
    • 在Http1.1,后默认采用长连接,即服务器需要等待一定时间后才断开连接,以保证连接特性
  • 5.无状态
    • 协议对于事物处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则需要重传,这样可能导致每次连接传送的数据量增大。
    • 简单理解为,http服务起不会记住你的登录状态,你是谁,是由另外的机制(cookie\session)解决的。

6.2.HTTP请求结构:

例:

6.3.HTTP请求结构:

6.4.请求响应的步骤:

  • 客户端连接到Web服务器(建立一个TCP套接字连接)
  • 发送HTTP请求(通过TCP套接字发送)
  • 服务器接受请求并返回HTTP响应(将响应数据写到TCP套接字)
  • 释放连接TCP连接
    • 1.若连接模式为close,则服务起主动关闭TCP连接,客户端被动关闭TCP连接。
    • 2.若连接模式为keep-alive,则该连接会保持一段时间,在改时间内,服务器可以继续接收请求
  • 客户端浏览器解析HTML内容

6.5.(面试题)在浏览器地址栏键入RUL,按下回车后经历的流程:

  • 1.DNS连接(解析url中域名对应的IP地址)
    • DNS解析:浏览器缓存、系统缓存、路由器缓存、IPS服务器缓存、根域名服务器缓存、顶级域名缓存
  • 2.TCP连接(三次握手)
  • 3.发送HTTP请求
  • 4.服务器处理请求并返回HTTP报文
  • 5.浏览器解析渲染界面
  • 6.连接结束(四次挥手)

6.5.(面试题)常见HTTP状态码:

  • 五种可能的取值:
  • 1XX:指示信息--表示请求以接收,继续处理
  • 2XX:成功--表示请求已经被成功接收、理解、处理
  • 3XX:重定向--要完成请求必须进行更进一步的操作
  • 4XX:客户端错误--请求有语法错误或请求无法实现
  • 5XX:服务端错误--服务器未能实现合法的请求

常见状态码:

  • 200 OK :正常返回信息
  • 400 Bad Rqquest:客户端请求有语法错误,不能被服务器理解
  • 401 Unauthorized:请求未经授权,这个状态代码和WWW-Authenticate报头域一起使用
  • 403 Forbidden:服务器收到请求,但是拒绝提供服务
  • 404 Not Found:请求资源不存在,eg,输入了错误的URL
  • 500 Internal Server Error:服务器发生了不可预期的错误
  • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

6.6.(面试题)GET请求和POST请求的区别:

  • 1.Http报文层面:
    • GET请求信息放在URL,POST放在报文体中
    • GET请求中一般浏览器对url长度有限制;POST请求数据长度无限制
  • 2.数据库层面:GET服务幂等性和安全性,POST不符合;(幂等性:多次请求结果相同;安全性:即请求没有对数据库做修改)
  • 3.其他层面:GET可以被缓存,被存储,而POST不行
    • GET请求的内容会被保存在浏览器中
    • 超过90%的GET请求都被CDN缓存了,大大减少web服务起的负担

6.7.(面试题)Cookie和Session的区别?(这种机制使http具备状态,eg:能记住登录信息)

参考答案:

  • 1.Cookie数据存放在客户的浏览器上,Session数据存放在服务器上
  • 2.Session相对Cookie更安全
  • 3.若考虑减轻服务器负担,应当使用Cookie

6.7.1.cookie:

  • Cookie简介:
    • 是由服务器发给客户端的特殊信息,以文本的形式存放在客户端
    • 客户端再次请求的时候,会把Cookie回发(存放于响应头)
    • 服务器接收到后,会解析Cookie生成与客户端相对应的内容
  • Cookie的设置以及发送过程:(4步)

6.7.2.session:

  • Session简介:
    • 服务器端的机制,在服务器上保存的信息
    • 解析客户端请求并操作session id(客户端传过来的),按需保存状态信息
      • 如果客户端请求中有session id,说明以为该客户创建session,就会在服务端检索用户信息。
      • 如果客户端请求中无session id,则服务端为客户创建session,并生成session id
  • Session的实现的两种方式(JSESSIONID)
    • 1.使用Cookie来实现
    • 2.使用URL回写来实现

6.8.(面试题)HTTP和HTTPS的区别

参考答案:

  • HTTPS需要到CA申请证书(一般会收费),HTTP不需要
  • HTTPS密文传输,HTTP明文传输
  • 连接方式不同,HTTPS默认使用443端口,HTTP使用80端口
  • HTTPS=HTTP+加密+认证+完整性保护,较HTTP安全

6.8.1.HTTPS简介

6.8.2.SSL(Security Sockets Layer,安全套阶层)

  • 为网络通信提供安全及数据完整性的一种安全协议
  • 是操作系统对外的API,SSL3.0后更名为TLS
  • 采用身份验证和数据加密保证网络通信的安全和数据的安全性

6.8.3.加密的方式:

  • 对称加密:加密和解密都是用同一个密钥
  • 非对称加密:加密使用的密钥和解密使用的密钥是不相同的
  • 哈希算法:将任意长度的信息转换为固定长度的值,算法不可逆(MD5)
  • 数字签名:证明某个消息或者文件是发出/认同的

6.8.4.HTTPS数据传输流程

  • 浏览器将支持的加密算法信息发送给服务器
  • 服务器选择一套浏览器支持的加密算法,以证书的形式回发浏览器
  • 浏览器验证证书合法性,并结合证书公钥加密信息发送给服务器
  • 服务器使用私钥解密信息,验证哈希,加密响应消息回发浏览器
  • 浏览器解密响应消息,并对消息进行验真,之后进行加密交互数据

6.8.5.HTTPS未必真安全:

  • 浏览器默认填充http://,请求需要进行跳转,有被劫持的风险
  • 可以使用HSTS(HTTP Strict Transport Security)优化

猜你喜欢

转载自blog.csdn.net/yajie_china/article/details/88287523