从头开始理解http吧

前言

最近在学习http内容,看了本《图解http》深有感触,因此选择记录一下学习的内容,也方便一样想学习的人,可以看到个人内容,对你有所启发前端

开始

说到http,对咱们前端而言,想到最多的确定就是日常的各类网络请求,可是你真的知道http具体是什么,是怎么产生的吗?web

web及网络基础

http其实是用于从客户端到服务端等的一系列运做流程的协议,也称(超文本传输协议)。固然,在了解http以前,咱们能够先理解下tcp/ip协议,由于http实际上这是tcp/ip的一个子集。后端

tcp/ip

tcp/ip协议按照层次分别分为了:缓存

  1. 应用层:决定了向用户提供应用服务时通讯的活动,http、ftp等都属于应用层
  2. 传输层:提供处于网络链接中的两台计算机之间的数据传输
  3. 网络层:用于处理网络上流动的数据包
  4. 数据链路层:用于处理链接网络的硬件部分

tcp/ip 通讯传输流

在数据传输过程当中,层与层之间会添加当前层所属的首部信息,而后接收端会层层解析下去,最后拿到的就是咱们传输的数据 服务器

那么问题来了,发送端与接收端是若是1对1确认的呢?

经过IP传输协议,找到对应的IP地址,而后解析IP地址获取到的MAC地址,MAC地址是你当前网卡所属的固定地址,因此只要能找到MAC地址,那么就能惟一确认这就是咱们要找的接收方,固然,并非一次性就能直接找到对应的地址,有多是经过各类中转而后从MAC地址一直找下去,直到找到所须要的位置。网络

哈哈哈哈哈,这样就能从发送端把数据发送到接收端了,可是总会有个新的问题,如何才能确认这个数据的可靠性?tcp

这就涉及到了咱们耳熟能详的三次握手:post

SYN和ACk是TCP标志 学习

好了,至此咱们已经基本了解tcp/ip协议的简单内容,那么如今来了解下http协议具体作了什么事情吧。编码

http 协议

  1. http协议实际上就是处理客户端与服务端通讯的内容,经过特定的传输内容,让客户端与服务端可以理解传输的意思,这个特定传输内容咱们称之为报文,报文内容极多,后续会慢慢梳理。
  2. http协议是不保存状态的,即每次都会去请求,而不会让http进行判断是否刚刚请求过了。
  3. 页面初始化请求的时候,tcp会创建一个长链接,而不是每次http请求结束tcp就会断开
  4. 因为http是不保存状态的,因此只能经过设置Cookie让服务端去保存状态,确认这我的的信息内容

http 报文

报文分为请求报文与响应报文,即客户端发送给服务端的时候发送的请求报文,以及服务端响应客户端请求时返回去的响应报文。

报文分为报文首部和报文主体,这里我只讲解咱们前端须要去处理的一部份内容,以及须要了解的报文信息。

报文主体

这是咱们请求或相应的主要内容,即前端请求发送的参数,后端返回的数据

报文首部

报文首部的内容就比较多了,为了区分报文的具体类型,因此首部内容及其丰富

  1. 请求首部
    • method: 咱们请求是经过什么样的方式请求
      • get:获取数据
      • post:上传数据
      • put:更新数据
      • delete:删除数据
      • options:查询针对请求URI指定资源的支持
      • trace:追踪路径
      • connect:要求用隧道协议创建链接代理
  2. 响应首部
    • 状态码(经常使用状态码)
      • 1XX:接受的信息正在请求
      • 2XX:请求正常
        • 200 ok: 请求成功
        • 204 no content:请求已处理,可是没有任何内容返回
        • 206 Partial Content:客户端进行范围请求,服务器响应成功
      • 3XX:重定向
        • 301 Moved Permanently:永久重定向
        • 302 Found:临时重定向
        • 303 See Other:临时重定向,标志为用get请求
        • 304 Not Modified:资源为改变直接使用客户端未过时的缓存
        • 307 Temporary Redirect:临时重定向,强制使用get请求
      • 4XX:客户端错误
        • 400 Bad Request:请求报文中存在语法错误
        • 401 Unauthorized:请求须要经过http验证
        • 403 Forbidden:无权限访问
        • 404 Not Found:找不到文件
      • 5XX:服务端错误
        • 500 Internal Server Error:服务端报错
        • 503 Service Unavailable:服务器处于宕机或者超负荷状态

报文首部字段

上面描述了报文首部咱们须要关注的一些内容,接下来咱们了解一下,报文首部的一些配置

  1. 通用首部字段
    首部字段名 说明
    Cache-Control 控制缓存行为
    Connection 逐跳首部、链接的管理
    Date 建立报文的时间
    Pragma 报文指令
    Trailer 报文末端的首部一览
    Transfer-Encoding 指定报文主体的传输编码方式
    Upgrade 升级为其余协议
    Via 代理服务器的相关信息
    Warning 错误通知
  2. 请求首部字段
    首部字段名 说明
    Accept 用户代理可处理的媒体类型
    Accept-Charset 优先的字符集
    Accept-Encoding 优先的内容编码
    Accept-Language 优先的语言
    Expect 期待服务器的特定行为
    Authorization Web认证信息
    From 用户的电子邮箱地址
    Host 请求资源所在的服务器
    If-Match 比较实体标记(ETag)
    If-modified-Since 比较资源的更新时间
    If-None-Match 比较实体标记
    If-Range 资源未更新时发送的Byte的范围请求
    If-Unmodified-Since 比较资源的更新时间(与上一个相反)
    Max-Forwards 最大传输逐跳数
    Proxy-Authorization 代理服务器要求客户端的认证信息
    Range 实体的字节范围请求
    Refer 对请求中URI的原始获取方
    TE 传输编码的优先级
    User-Agent http客户端程序的信息
  3. 响应首部字段
    首部字段名 说明
    Accept-Ranges 是否接受字节范围请求
    Age 推算资源建立通过时间
    ETag 资源的匹配信息
    Location 令客户端重定向至指定URI
    Proxy-Authenticate 代理服务器对客户端的认证信息
    Retry-After 对再次发起请求的时机要求
    Server HTTP服务器的安装信息
    Vary 代理服务器缓存的管理信息
    WWW-Authenticate 服务器对客户端的认证信息

以上就是我整理出来的,咱们日常须要用到的关于http的知识,具体的首部字段内容能够具体去查看下,内容太多,就不一一阐述了

但愿对看到的你有帮助

相关文章
相关标签/搜索