HTTP 协议通信流程

超文本

除了文本以外,还有其他数据类型的内容

HTTP 协议

指计算机网络通信中 两台计算机之间所必须遵守的规定或规则

  • Hypertext Transport Protocol 超文本传输协议

是一种基于 TCP/IP 的应用层通信协议,

这个协议详细规定了 浏览器万维网服务器 之间的通信规则

浏览器 发送请求 给服务器    ——request

服务器 返回响应 给浏览器    ——response

  • 通信时传输的内容,我们称之为 "报文"

HTTP 规定了报文格式(使用 Fiddler 抓包工具分析,网络通信包)

请求行(request line)请求头部(header)空行请求数据四个部分组成

  • 请求报文 Request Header

  • 响应报文 Response Header

  • FIddler

All Process__切换成 WebBrowsers

Capturing__指定抓包

  • Inspector---->Raw    请求报文----响应报文
  • 请求报文 Request Header
  • 常见的 get 请求的方式

浏览器 地址栏 输入url 地址访问

所有的标签 默认发送的都是 get 请求

form 表单 默认也是 get 请求,可以通过设置 method="post" 请求

  • 请求首行(request line)

GET http://localhost:3000/?username=Ryen&password=123456 HTTP/1.1

请求方式    请求完整地址(查询字符串)    协议名/版本号

HTTP 协议版本----1.0 过去----1.1 现在常用的----2.0 最新的,兼容性不好

域名地址 / IP 地址____IP 地址不好记,所以才有了域名地址,简化记忆

所以如果输入的是 域名地址,浏览器会进行 DNS 解析,最终解析成 IP 地址去访问

http://localhost:3000 本地计算机的 IP 地址

http://127.0.0.1:3000 本地计算机的 IP 地址

  • 请求头request header)

Connection: Keep-Alive

保持一个长久连接,而不用重复进行 TCP 连接(三次握手)

Pragma: no-cache        1.1

Cache-Control: no-cache        2.0

不走强缓存,而走协商缓存

Upgrade-Inscure-Requests: 1

允许使用 https 协议

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebkit/537.36 (KHTML, like Gecko) Chremo/70.0.3538.110 Safari/537.36

用户代理,浏览器内核版本

在过去,使用这个字段来区别浏览器,区别处理

在现在,主要是为了兼容老的服务器

Accept: text/html, application/xhtml+xml, application/xml; q=0.9, image/webp, image/apng/ */*; q=0.8

浏览器允许接收的数据类型

text/html,        html 文件

application/xhtml+xml,       xhtml 文件

application/xml; q=0.9,        xml 数据 优先级低

image/webp,image/apng/        新的图片格式,在同清晰度情况下,体积更小

*/*; q=0.8        其他文件默认使用,优先级低

Accept-Encoding: gzip, deflate, br

浏览器运行接收的文件压缩格式

Accept-Language: zh-CN, cn;q=9.0

浏览器允许接受的语言

  • 空行           空格 
  • 报文体        get 请求 没有报文体
  • 常见的发送 post 请求的方式

目前只有 form 设置 method="post"

以后会使用 ajax

  • 请求首行(request line)

POST http://localhost:3000/ HTTP/1.1

  • 请求头request header)

Content-Length: 29

请求体内容长度

Cache-Control: max-age=0

有限期为 0

Origin: http://localhost:63342

请求来源的地址

Content-type: application/x-www-form-urlencodded

请求体内容格式:from 提交的内容(key=value&key=value),采用的 urlencoded 编码

Referer: http://localhost:63342/class0920/?_ijt=dasffnjd4nfjnf4jfn4jf4f4n

请求来源的完成地址: 防盗链,减少服务器压力;防止别人盗取链接对应的资源;广告计费等等

Cookie: Webstorm-asdasdaf30=fefffdcsc-sdcs-dcs-dcs-dc-sdc

会话控制,浏览器存储技术的一种

  • 空行
  • 请求体        username=Ryen&pwd=123564

post 请求往往有请求体,包含请求参数(请求体参数

  • 响应请求 Response Header
  • 响应首行(response line)       HTTP/1.1 200 OK

协议名/协议版本    响应状态码

常见的响应状态码____告诉接收响应的浏览器,根据响应内容的状态做出处理

1xx :  基本不用

2xx :  代表响应成功的状态

200        

3xx :  请求资源重定向    

302        请求的资源/网址,重新定向到 新网址

304        请求的资源/网址,重新定向到 缓存中

4xx :  请求资源未找到

404        服务器没问题,资源在服务器中找不到

5xx :  服务器内部错误

500        服务器出错了

  • 响应头response header)
  • X-Powered-By: Express

一般来讲,X 开头的字段,代表是自定义的字段(不是 http 协议规定的内容)

Content-Type: text/html; charset=utf-8

响应体内容的类型

Content-length: 49

响应体长度

ETag: W/"31-TNprVsD5wSGk8shE21bcRfKPzNg"

协商缓存

Date: Fri, 21 Dec 2018 02:41:40 GMT

响应时间戳

Connection: Keep-Alive

长连接

  • 空行
  • 响应体    <h2>Hello Node Express</h2>

response 响应体 代表浏览器要显示的内容

 面试题: 从浏览器输入 url 地址,到最终页面渲染完成,中间发生了什么

1. DNS 解析____将 域名地址 解析成 IP 地址

2. TCP 连接(TCP 三次握手)

第一次握手: 浏览器 发送给 服务器

告诉服务器,将要发送请求

第二次握手: 服务器 发送给 浏览器,确定可以接受数据

告诉浏览器,可以发送请求

第三次握手: 确定发送还是不发送

告诉服务器,将要发送数据

3. 浏览器发送请求报文

4. 浏览器接受响应报文

5. 浏览器解析响应报文,渲染页面

html____调用 html 解析器,将 html 的 DOM 结构 解析为 DOM 树

css____调用 css 解析器,将 css 样式 解析为 CSSOM 树

将 DOM 树 和 CSSOM 树 组合到一起,形成 render 树

先布局 layout ,在渲染 render

js____调用 js 引擎,解析 js 代码

如果 js 有操作 DOM,则修改 DOM 树

如果 js 有操作 CSS,则修改 CSSOM 树

再组合 DOM 树 和 CSSOM 树

最后布局 layout,渲染 render____重排 和 重绘

6. 断开连接:TCP 四次挥手(断开浏览器发送请求的连接;断开浏览器接受响应的连接)        (因为长连接的存在)

第一次挥手: 浏览器 发送给 服务器,告诉服务器,请求报文发完了,准备关闭连接

第二次挥手: 服务器 发送给 浏览器,告诉浏览器,请求报文接收完了,可以关闭连接了

第三次挥手: 服务器 发送给 浏览器,告诉浏览器,响应报文发送完了,准备关闭连接

第四次挥手: 浏览器 发送给 服务器,告诉服务器,响应报文接收完了,可以关闭连接了

数据结构: 二叉树,红黑树

算法: 二叉查找法,快速排序,希尔排序。

__http原理__HTTP 协议简介的更多相关文章

  1. HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端

    协议简介 协议,自然语言里面就是契约,也是双方或者多方经过协商达成的一致意见; 契约也即类似于合同,自然有甲方123...,乙方123...,哪些能做,哪些不能做; 通信协议,也即是双方通过网络通信必 ...

  2. Fiddler--一、HTTP协议简介

    在学习Fiddler之前,最好先学习一下HTTP协议. HTTP协议简介 什么是HTTP协议 超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端 ...

  3. Tsung MQTT协议简介及MQTT xml文档配置介绍

    MQTT协议简介及MQTT xml文档配置介绍 by:授客 QQ:1033553122 1. MQTT协议介绍 MQTT(Message Queuing Telemetry Transport,消息队 ...

  4. Http协议简介【转】

    HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送 ...

  5. TCP 协议简介-阮一峰(转载)

      TCP 协议简介 作者: 阮一峰 日期: 2017年6月 8日 TCP 是互联网核心协议之一,本文介绍它的基础知识. 一.TCP 协议的作用 互联网由一整套协议构成.TCP 只是其中的一层,有着自 ...

  6. MODBUS-RTU通讯协议简介

    MODBUS-RTU通讯协议简介   什么是MODBUS? MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规 ...

  7. JavaWeb:Web与HTTP协议简介

    JavaWeb:Web与HTTP协议简介 Web的概念 什么是Web: Web是网络上使用最广泛的分布式应用架构. 旨在共享分布在网络上的各个Web服务器中的所有互相连接的信息. 三个特征: 用HTM ...

  8. CC2540开发板学习笔记(九)—— BLE协议简介

    一.BLE协议简介 1.协议是什么? 协议是一系列的通信标准,双方需要共同按照这进行正常数据 协议是一系列的通信标准,双方需要共同按照这进行正常数据发射和 接收.协议栈是的具体实现形式,通俗点来理解就 ...

  9. HTTP 协议简介

    HTTP 协议简介 博客分类: acl开发--HTTP协议篇 网络协议http协议  一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是 ...

随机推荐

  1. Form -- 文件上传

    当我们选中文件,点击上传时即可. 而此按钮一般是一张图片覆盖了一个input标签而以.基于这个原理我们可以定制自己喜欢的样式 <div style="text-align: cente ...

  2. Resources (being shared)

    论文下载求助论坛 数学杂志的模版 答辩PPT模版 发一篇文章的经历 数学期刊名称缩写 英文书籍下载 英文书籍下载 中文书籍下载 数学分析高等代数考研试题官方下载地址

  3. java Concurrent并发容器类 小结

    Java1.5提供了多种并发容器类来改进同步容器的性能. 同步容器将所有对容器的访问都串行化,以实现他们的线程安全性.这种方法的代价是严重降低并发性,当多个线程竞争容器的锁时,吞吐量将严重减低.  一 ...

  4. SSH框架之hibernate《四》

    hibernate第四天     一.JPA相关概念         1.1JPA概述             全称是:Java Persistence API.是sun公司推出的一套基于ORM的规范 ...

  5. mysql root password

    """centos:mysql忘记root密码解决 1.修改MySQL的登录设置: # vim /etc/my.cnf 在[mysqld]的段中加上一句:skip-gra ...

  6. Spring系列(六) Spring Web MVC 应用构建分析

    DispatcherServlet DispatcherServlet 是Spring MVC的前端控制器名称, 用户的请求到达这里进行集中处理, 在Spring MVC中, 它的作用是为不同请求匹配 ...

  7. 第八节,Opencv的基本使用------存取图像、视频功能、简单信息标注工具

    1.存取图像 import cv2 img=cv2.imread('test.jpg') cv2.imwrite('test1.jpg',img) 2.图像的仿射变换 图像的仿射变换涉及图像的形状位置 ...

  8. 帆软报表(finereport)图表——扇形图/等弧度的玫瑰图

    扇形图/等弧度的玫瑰图,展示的是展示数据所占的比例,需要所有数据的和加起来为1. 下面利用一个实例说明玫瑰图的用法和设置起始角度和终止角度,操作如下: 1.配置一个内置数据集 新增一个等弧度的玫瑰图模 ...

  9. Python-爬虫-requests

    简介 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) #注意:requests库发送请求将网页内容下 ...

  10. Xcode注释快捷键和Alfred 快捷键冲突解决方案

    在Alfred 中的Features -> File Search ->Navigation ->Previous Path 中的快捷方式改掉就可以了