计算机网络 -应用层 - HTTP、HTTPS

HTTP

参考:https://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html#urlexplain

基本

  1. 哑服务:连接上时不会回显,要有其他行为时
  2. URL:<协议>://< hosts >(主机:端口)/< uri >(路径)
  3. 1.0 时每一个HTTP都要建立一次TCP,1.0后可设置Connection: keep-alive来让TCP持续
  4. 客户端发送request,服务端回应response

HTTP消息结构

request

在这里插入图片描述

  1. 第一行(Request line):
    • 第一行中的Method表示请求方法,比如"POST",“GET”
    • Path-to-resoure表示请求的资源
    • Http/version-number 表示HTTP协议的版本号
    • 当使用的是GET方法的时候, body是为空的,POST时数据在Body中
  2. 第二行(Request header): 存放各种头信息
  3. 第三行:空着
  4. 第四行(body):存放数据

response

在这里插入图片描述

  1. 区别只在第一行:
    • HTTP/version-number表示HTTP协议的版本号
    • status-code 和message表示状态和信息

状态码

  1. 1XX 提示信息 - 表示请求已被成功接收,继续处理
  2. 2XX 成功 - 表示请求已被成功接收,理解,接受
    如200:成功
  3. 3XX 重定向 - 要完成请求必须进行更进一步的处理
    如302 Found:重定向,新的URL会在response 中的Location中
  4. 4XX 客户端错误 - 请求有语法错误或请求无法实现
    如:403、404、400(请求语法错误)
  5. 5XX 服务器端错误 - 服务器未能实现合法的请求
    如:500、503(暂时无法处理)

Request请求头

在这里插入图片描述
常见信息:

  1. Cache(缓存)

    • If-Modified-Since: 把浏览器端缓存页面的最后修改时间发送到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行对比。如果时间一致,那么返回304,客户端就直接使用本地缓存文件。如果时间不一致,就会返回200和新的文件内容。客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示在浏览器中
    • If-None-Match:: If-None-Match和ETag一起工作,工作原理是在HTTP Response中添加ETag信息。 当用户再次请求该资源时,将在HTTP Request 中加入If-None-Match信息(ETag的值)。如果服务器验证资源的ETag没有改变(该资源没有更新),将返回一个304状态告诉客户端使用本地缓存文件。否则将返回200状态和新的资源和Etag
    • Cache-Control:用来指定Response-Request遵循的缓存机制,其中,public表示可以被任何缓存缓存,Private表示只缓存到私有缓存中,no-cache表示所有内容不被缓存
  2. Client(客户端)

    • Accept:浏览器端可以接受的媒体类型,* / * 代表浏览器可以处理所有类型, text/html是html类型
    • Accept-Encoding:浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate),如 Accept-Encoding: gzip, deflate
    • Accept-Language:浏览器申明自己接收的语言(en-us)
    • User-Agent:用户浏览器
    • Accept-Charset:浏览器申明接收的字符集,如gb2312,utf-8
  3. Cookie/Login 头域

    • Cookie: 最重要的header, 将cookie的值发送给HTTP 服务器
  4. Entity头域

    • Content-Length:发送给HTTP服务器数据的长度
  5. Miscellaneous(各种各样的)头域

    • Referer: 提供了Request的上下文信息的服务器,告诉服务器我是从哪个链接过来的,
      如Referer:http://translate.google.cn/?hl=zh-cn&tab=wT
  6. Transport 头域

    • Connection: keep-alive表示TCP不会断开,close表示会
    • Host(发送请求时,该报头域是必需的): 请求报头域主要用于指定被请求资源的Internet主机和端口号
      如:我们在浏览器中输入:http://www.guet.edu.cn/index.html
      浏览器发送的请求消息中,就会包含Host请求报头域,如下:
      Host:http://www.guet.edu.cn
      此处使用缺省端口号80,若指定了端口号,则变成:Host:指定端口号

Response请求头

  1. Cache头域
    • Date: 生成消息的具体时间和日期
    • Expires: 浏览器会在指定过期时间内使用本地缓存
  2. Cookie/Login 头域
    • P3P: 用于跨域设置Cookie, 这样可以解决iframe跨域访问cookie的问题
    • Set-Cookie: 非常重要的header, 用于把cookie 发送到客户端浏览器, 每一个写入cookie都会生成一个Set-Cookie
  3. Entity头域
    • ETag: 和If-None-Match 配合使用
    • Last-Modified: 用于指示资源的最后修改日期和时间
    • Content-Type:服务器告诉浏览器自己响应的对象的类型和字符集
  4. Miscellaneous 头域
    • Server:指明HTTP服务器的软件信息
  5. Transport头域
    • Connection: keep-alive;close
  6. Location头域:
    • Location: 用于重定向一个新的位置, 包含新的URL地址

HTTPS

发布了45 篇原创文章 · 获赞 1 · 访问量 551

猜你喜欢

转载自blog.csdn.net/BNMZY/article/details/105283648
今日推荐