计算机网络:HTTP协议入门

1、起源

  • 1990年伯纳斯.李,发明了万维网(WWW),写了第一个Web Server
  • HTTP协议:浏览器和Web Server之间通信的协议

2、定义

  • HTTP协议(Hyper Text Transfer Protocol): 应用层协议
  • 目标: 是处理客户端和服务端之间的通信 客户端和服务端之间的通信

3、请求/响应

  • 请求

    • 一次请求,分成头(Header)和体(Body)。 下面是一个请求头+消息体的 请求头和消息体
  • 响应

    • 一次返回,也同样分(Header)和体(Body)。 下面是一个返回头+消息体 返回头和消息体

4、请求头/响应头

  • HTTP协议通过请求头和返回头控制协议工作。无论是请求头还是返回头都是Key/Value的形式。
  • 常见头部
    • Content-Length:发送/接收Body内容的字节数。
    • User-Agent:这个字段可以帮助统计客户端用了什么浏览器、操作系统等 User-Agent
    • Content-Type:请求的时候,告知服务端数据的媒体类(MediaType/MIME Type)。返回的时候告知客户端,数据的媒体类型。
    • Origin:描述请求来源地址
    • Accept:是HTTP协议协商能力的体现,用于建议服务端返回何种媒体类型(MIME Type)
    • Referer:告诉服务端打开当前页面的上一张页面的URL,非浏览器环境有时候不发送Referer(或者虚拟Referer,通常是爬虫),常用于用户行为分析
    • Connection:决定HTTP连接(不是TCP连接)是否在当前事务完成后关闭。(Http1.0 默认是 close ,Http1.1 后默认是 keep-alive)

5、HTTP的方法和状态码

  • 方法
    • GET:从服务器获取资源
    • POST:在服务器创建资源(幂等性)
    • PUT:在服务器修改资源
    • DELETE:在服务器删除资源
    • OPTION :跨域部分讲解
    • TRACE :用于显示调试信息 多数网站不支持
    • CONNECT: 代理部分讲解
    • PATCH :对资源进行部分更新(极少用)
  • 状态码
    • 1xx:提供信息
    • 2xx:成功
    • 3xx:重定向
    • 4xx:客户端错误
    • 5xx:服务端错误

注: 常用状态码速查表

6、HTTP缓存

  • HTTP缓存最重要的配置项为Cache-Control HTTP 返回头。 不仅浏览器可以缓存,浏览器和服务器之间的HTTP代理服务器也可以缓存。 HTTP缓存

7、代理服务器

  • 概念:代理服务器接收一个请求,然后把请求转发给另一个服务器;从另一个服务器接收结果,然后再返回给请求方。根据工作方式的不同,分成正向代理和反向代理。 代理服务器

  • 正向代理:把要请求的网址(资源)发送给代理服务器,由代理服务器向目标发送请求后获取资源再返回给请求方。 正向代理

  • 反向代理:当请求方向一个网址发送一个请求的时候,请求方意识不到,请求的其实是一个反向代理服务器,这个代理服务器将请求代理给了内部的网络。 反向代理

8、HTTP连接

  • Keep-Alive:多次请求复用一个TCP连接。 Keep-Alive

  • keep-alive的断开

    • 单个请求:请求完成后,在timeout时间内没第二个请求进来则会关闭。
    • 多个请求:在一个请求响应之后,在 timeout 时间内有另一个请求进来,就会利用相同的 TCP 连接继续响应这个请求,直到没有更多请求进来,可以通过 max 字段设定最多响应的请求数。
  • 思考:keep-alive是不是长连接?

    • keep-alive并不是长连接
    • WebSocket:长连接,提供在HTTP协议退化成TCP协议的方式。让客户端和服务器之间保持很长时间的连接且不中断

9、网址

  • URL(Uniform Resource Locator):用于在互联网上定为一个资源,也称为网址,比如我们输入的网址: URL

10、DNS

  • DNS(Domain Name System):域名解析系统。

  • 工作原理工作原理

  • DNS Query的分级缓存策略 分级缓存策略 描述:

    • 1、先查询浏览器的本地缓存(通常在内存中)
    • 2、本地没缓存,查找操作系统的hosts文件,该文件在linux 中在 /etc/hosts里
    • 3、上述步骤没有找到,DNS会查询本地服务提供商(ISP)
    • 4、ISP没找到,请求指向Root根服务器,返回顶级域名服务器地址
    • 5、浏览器发送请求给顶级域名服务器,返回权威域名服务器地址
    • 6、浏览器发送Lookup请求给权威域名服务器,找到具体DNS记录,返回给浏览器
  • DNS记录

    • 概述:DNS的数据以记录形式存储,就叫DNS记录。DNS记录的种类非常多, 有30多种。每条DNS记录描述了网址(URL)的一种关系。

    • A记录

      • 功能:定义主机的IP地址 A记录
    • AAAA记录

      • 功能:定义主机的IPv6地址 AAAA记录
    • CNAME记录(Canonical Name Record)

      • 功能:定义域名的别名 CNAME记录
    • MX记录(Mail exchanger record)

      • 功能:定义邮件服务器所在的位置 MX记录
    • NS记录(Name Server Record)

      • 功能:定义DNS信息服务器所在的位置 NS记录
    • SOA记录(Start of Authority Record)

      • 功能:定义在多个ns服务器中哪个是主服务器 SOA记录
    • TXT记录

      • 功能:提供一个文本信息 TXT记录

11、内容分发网络(CDN)

  • CDN(Content Delivery Network):将请求分散到全世界各地,分发流量,加快访问速度。
  • CDN上无法部署业务逻辑,更新慢,无法保证一致性,比较适合纯的静态资源,比如图片、视频、脚本文件、样式文件等。 内容分发网络