60 # http 的基本概念

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 60 # http 的基本概念

什么是 HTTP?

通常的网络是在 TCP/IP 协议族的基础上来运作的,HTTP 是一个子集。http 基于 tcp 的协议,在 tcp 的基础上增加了一些规范,就是 header,学习 http 就是学习每个 header 它有什么作用。

TCP/IP 协议族

协议简单来说就是通信规则,例如:通信时谁先发起请求,怎样结束,如何进行通信。把互联网相关的协议统称起来称为 TCP/IP

协议分层

OSI (Open System Interconnection 开放式系统互联参考模型)定义了网络互连的七层模型:

  • 物理层:管理通信设备和网络媒体之间的互联互通。
  • 数据链路层:提供介质访问和链路管理。
  • 网络层:IP选址及路由选择。
  • 传输层:数据通信。
  • 会话层:创建、管理和维护会话。
  • 表示层:数据编码、格式转换、数据加密。
  • 应用层:为应用程序或用户请求提供各种请求服务。

如下图所示:

实现的时候一般分层四层:

  • 链路层(物,数):网络连接的硬件部分
  • 网络层:IP 选择传输路线(通过 ip 地址和 mac 的地址)(使用 ARP 协议凭借 mac 地址进行通信)
  • 传输层:TCP 协议(可靠),UDP 协议,数据传输(HTTP -> TCP,DNS -> UDP)
  • 应用层(会,表,应):HTTP,FTP,DNS(与其他计算机进行通讯的一个应用服务,向用户提供应用服务时的通信活动)

访问页面过程 TCP/IP 通信协议:

  • 通过 DNS 协议解析域名获取对应的 ip 地址
  • 通过 HTTP 协议传输数据,生成针对目标 Web 服务器的 HTTP 请求报文
  • 为了方便通信,通过 TCP 协议会将 HTTP 请求的报文分割成报文段,按序号分为多个报文段,把每个报文段可靠的传给对方
  • 通过 IP 协议搜索对方的地址,一边中转一边传送
  • 通过 TCP 协议从对方那里接收到的报文段,在重组到达的报文段,按序号以原来的顺序重组请求报文
  • 通过 HTTP 协议对 web 服务器请求的内容处理

HTTP 特点

创建一个服务器必须要有一个特定的 ip 地址,一个端口号,客户端给服务器发的 request 对象,服务端给客户端发信息 response 对象。

  1. 默认无状态:http 是不保存状态的协议,可以使用 cookie 来管理状态
  2. http(1.1) 使用 keep-alive:不会断开连接保持链接,防止每次请求都会造成无谓的 tcp 链接建立和断开
  3. 默认管线化:以前发送请求后需要等待并收到响应,才能发下一个,现在都是管线化的方式,可以并发请求

HTTP 缺点

  • 通信采用明文
  • 不验证通信方的身份
  • 无法验证内容的完整性(内容可能被篡改)(可使用 https 处理)

HTTP 方法

请求方法:

  • GET:通过 url 传递数据
  • POST:请求体传递数据

工具

  • postman:(可视化请求工具)
  • curl:需要安装 git (命令行)

RESTFUL 风格:不是规范,就是根据不同的请求的方法来实现对服务器的资源进行操作

  • get:请求数据
  • post:增加数据
  • delete:删除数据
  • put:修改数据
  • options:预检请求(跨域默认情况下就有可能发 options 请求)

简单请求:get 和 post 就是简单请求

复杂请求:get 和 post 如果加了自定义 header,会变成复杂请求。其他的方法都是复杂请求。如果发送的是复杂的请求默认会先发送 options 请求。

跨域:协议、域名、端口号有一个不相等都是跨域。

解决跨域的常见方式:

  • cors(服务端解决跨域,添加跨域头)
  • jsonp
  • nginx(反向代理)
  • websocket

不常见的解决跨域方式:

  • iframe
  • postMessage
  • window.name
  • document.domain
  • location.hash

HTTP 状态码

  • 101:websocket
  • 2xx
  • 200:成功
  • 204:成功了但没有响应体
  • 206:断点续传(返回部分数据)curl -v --header Range:bytes=0-1024 www.baidu.com
  • 3xx
  • 301:永久重定向
  • 302:临时重定向
  • 304:服务器缓存
  • 307:重定向(不会把 POST 转为 GET)
  • 4xx
  • 400:客户端参数不正确
  • 401:没有权限,没登录
  • 403:没有权限,登陆了没权限
  • 404:找不到
  • 405:服务器不支持此方法 not allowed method
  • 5xx
  • 500:服务端的问题
  • 502:负载均衡出现问题
  • 503:服务端报错

报文

请求的报文

  • 请求行:包含请求方法、请求路径(不包括 hash)、http 的版本号(可以通过传参)
  • 请求头:也可以传递数据,自定义的 header
  • 请求体:可以放数据,传递数据二进制…

响应的报文

  • 响应行:http 的版本、状态码、响应短语
  • 响应头:自定义响应信息
  • 响应体:返回给浏览器的内容
目录
相关文章
|
7月前
|
缓存 自然语言处理 前端开发
第一章 引言-HTTP协议基础概念和前后端分离架构请求交互概述
第一章 引言-HTTP协议基础概念和前后端分离架构请求交互概述
162 0
|
XML 缓存 安全
Web-Http基本概念(请求与响应)
Web-Http基本概念(请求与响应)
165 0
|
存储 域名解析 安全
计算机网络面试专题:HTTP协议基本概念以及通信过程
计算机网络面试专题:HTTP协议基本概念以及通信过程、HTTPS基本概念、SSL加密原理、通信过程、中间人攻击问题、HTTP协议和HTTPS协议区别
119 1
|
安全 网络协议 数据格式
HTTP的概念以及请求消息的数据格式
HTTP的概念以及请求消息的数据格式
71 0
|
Java 数据库连接 Android开发
【基于HTTP的远程调用框架 一】深度详解Retrofit2框架概念和使用(下)
【基于HTTP的远程调用框架 一】深度详解Retrofit2框架概念和使用(下)
120 0
|
XML JSON 缓存
【基于HTTP的远程调用框架 一】深度详解Retrofit2框架概念和使用
【基于HTTP的远程调用框架 一】深度详解Retrofit2框架概念和使用
600 0
|
监控 网络协议 安全
一文了解HTTP、HTTPS、TCP、UDP、Websocket(论点:概念、通信流程、异同点、应用领域)
一文了解HTTP、HTTPS、TCP、UDP、Websocket(论点:概念、通信流程、异同点、应用领域)
|
缓存 安全 网络协议
HTTP&HTTPS概念及优缺点
HTTP&HTTPS概念及优缺点
HTTP&HTTPS概念及优缺点
|
域名解析 缓存 负载均衡
与HTTP相关的各种概念(下)
与HTTP相关的各种概念
212 0
与HTTP相关的各种概念(下)
|
Web App开发 缓存 安全
与HTTP相关的各种概念
与HTTP相关的各种概念
190 0
与HTTP相关的各种概念