一、概述

1、什么是HTTP

HTTP是一种可以获取HTML这样的网络资源的一种通讯协议protocol。是在WEB上进行数据交换的基础,是一种客户端--服务器协议。HTTP是一种可扩展的应用层协议,通过TCP或者TLS-加密的TCP连接来发送。

2、基于HTTP的组件系统

HTTP是一种client-server协议:请求通过一个实体被发出,实体也就是用户代理(大部分指的是浏览器,也可以是一个爬取网页生成维护机器索引的机器爬虫)

如图:client--->proxy---->protoxy--->server

   client<---proxy<---protoxy<---server

在用户发起服务器请求时,会被服务器处理,并返回一个消息---response

实际上。在一个浏览器和处理请求的服务器间,还有路由器、调制解调器。由于web开发基于web的层次设计。那些在网络层和传输层的细节都被隐藏了。HTTP位于最上册的应用层。虽然底层很重要,但对前端来说,底层的大多数和HTTP无关

3、客户端:

user-agent 就是能够为用户发起的为的工具。浏览器总是作为发起一个请求的实体,永远不是服务器。要展现一个网页,浏览器首先发送一个请求来获取页面的HTML文档,再解析文档中的资源信息发送其他请求,获取可执行脚本或CSS样式来进行页面布局渲染,以及一些其它页面资源(如图片和视频等)。然后,浏览器将这些资源整合到一起,展现出一个完整的文档,也就是网页。浏览器执行的脚本可以在之后的阶段获取更多资源,并相应地更新网页。

  浏览器负责发送HTTP请求,并进一步解析HTTP返回的信息,以向用户提供明确的响应。

4、Web服务端

  在客户端通信过程的另一端,是有Web Server来服务并提供客户端所请求的文档。

5、代理(Proxies)

  在浏览器和服务器之间,很多设备转发了HTTP消息,由于Web栈层次结构的原因,T它们大多出现在传输层、网络层和物理层上,对于HTTP应用层而言就是透明的,还有一部分是表现在应用层上的,被称为代理(Proxies).代理既可以表现的透明,也可以表现的不透明(“改变请求”不会通过他们)。

  代理的作用:缓存、过滤、家长控制、负载均衡、认证、日志记录

二、HTTP的基本性质

  HTTP是简单的、可扩展的、无状态可会话的、连接。

  注解:在互联网中,最常用的传输层协议:TCP是可靠的、UDP不是。所以HTTP是依赖于面向连接TCP进行消息传递,但是连接不是必须的。

     HTTP/1.0为每个请求/响应都打开一个TCP连接,这就导致了2个缺点:打开一个TCP连接需要多次往返消息传递,因此速度慢,如果多个消息周期性发送时,这样就会变得更加高效:暖连接比冷连接更高效。

  HTTP/1.1引入了流水线和持久连接:底层的TCP连接可以通过Connection头部来被控制。HTTP/2.0则是通过在一个连接复用消息的方式来让这个链接始终为暖连接

三、HTTP特性

缓存:服务器端告诉代理和客户端哪些文档需要缓存,缓存多久,而客户端也可以命令中间的缓存代理来忽略存储的文档。

   开放同源限制:为防止网络窃听和其他隐私的泄露,浏览器强制对Web网站做了分割限制,只有来源相同的网页才可以获取网站的全部信息

   认证:基本的认证可以直接通过HTTP提供,使用Authenticate相似的头部即可,或使用HTTP Cookies来设置指定的对话

  代理和隧道:通常情况下,服务器/客户端是处于内网的,对外网是隐藏自己真实的IP的,因此HTTP请求就是要通过代理越过这个网络屏障,但是并非所有的代理都是HTTP代理.

   会话:使用HTTP Cookies允许你用一个服务器端的状态发起请求,就创建了会话。

三、HTTP流---客户端和服务器交互过程

打开一个TCP连接---->发送一个HTTP报文--->读取服务器端返回的报文信息--->关闭连接或为后续的请求重用连接

HTTP流水线已被HTTP/2的帧替代

四、HTTP报文

  1、有两种HTTP报文类型:请求与回应

   请求:

   回应:

HTTP/1.0与HTTP/1.1的区别

1、支持虚拟主机技术,在一个WEB服务器上同时并存多个域名网站;

2、支持持久化连接:三次握手、四次挥手。客户端和服务器连接要保存一段时间Conection:Keep-alive

3、支持代理连接

4、HTTP 1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头。

用户在浏览器中输入www.baidu.com直到看到页面之间发生了什么?

①操作系统访问DNS服务器,把域名转换为IP地址

②浏览器发起HTTP请求

③找到指定资源,可能访问数据库,构建并返回HTTP响应消息

④浏览器接收并解析消息

⑤浏览器缓存接收响应的内容,解析并渲染相应内容

    

    

http相关知识点回顾的更多相关文章

  1. php文件上传相关知识点回顾

    近来正在回顾PHP的文件上传.在此做个记录. <?php date_default_timezone_set('PRC'); if(isset($_POST['submit'])) { echo ...

  2. Python--day63--单表的增删改查/GET和POST/request相关知识点回顾

  3. Java进阶(二十六)公司项目开发知识点回顾

    公司项目开发知识点回顾 前言 "拿来主义"在某些时候并不是最佳选择,尤其是当自己遇到问题的时候,毫无头绪. 在一次实验过程中,需要实现数据库的CRUD操作.由于之前项目开发过程中, ...

  4. UITableView相关知识点

    //*****UITableView相关知识点*****// 1 #import "ViewController.h" // step1 要实现UITableViewDataSou ...

  5. Android开发涉及有点概念&相关知识点(待写)

    前言,承接之前的 IOS开发涉及有点概念&相关知识点,这次归纳的是Android开发相关,好废话不说了.. 先声明下,Android开发涉及概念比IOS杂很多,可能有很多都题不到的.. 首先由 ...

  6. IOS开发涉及有点概念&相关知识点

    前言,IOS是基于UNIX的,用C/C+/OC直通系统底层,不想android有个jvm. 首先还是系统架构的分层架构 1.核心操作系统层 Core OS,就是内存管理.文件系统.电源管理等 2.核心 ...

  7. IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) + xib相关知识点总结

    添加商品和商品名小项目(使用xib文件终结版) 小贴士:博文末尾有项目源码在百度云备份的下载链接. xib相关知识点总结 01-基本使用 一开始使用xib的时候,如果要使用自定义view的代码,就需要 ...

  8. 学习记录013-NFS相关知识点

    一.NFS相关知识点 1.NFS常用的路径/etc/exports NFS服务主配置文件,配置NFS具体共享服务的地点/usr/sbin/exportfs NFS服务的管理命令,exportfs -a ...

  9. TCP/IP 相关知识点与面试题集

    第一部分:TCP/IP相关知识点 对TCP/IP的整体认 链路层知识点 IP层知识点 运输层知识点 应用层知识点 (这些知识点都可以参考:http://www.cnblogs.com/newwy/p/ ...

随机推荐

  1. markdown 的一些字体

    <font face='Comic Sans MS', size=5> 看看字体 1 one Hello 2 two Hello <font face='Kristen ITC', ...

  2. 比率(ratio)|帕雷托图|雷达图|轮廓图|条形图|茎叶图|直方图|线图|折线图|间隔数据|比例数据|标准分数|标准差系数|离散系数|平均差|异众比率|四分位差|切比雪夫|右偏分布|

    比率是什么? 比率(ratio) :不同类别数值的比值 在中文里,比率这个词被用来代表两个数量的比值,这包括了两个相似却在用法上有所区分的概念:一个是比的值:另一是变化率,是一个数量相对于另一数量的变 ...

  3. 吴裕雄--天生自然 JAVASCRIPT开发学习:对象 实例(2)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. 在python的web框架Django中使用SQL Server

    在pycharm中安装 安装pyodbc和Django——pyodbc是一个用python写的ODBC引擎 安装Django-pyodbc-azure                  在后方网址中查 ...

  5. 基于Python的Flask基础知识

    Flask简介 Flask 是一个使用 Python 编写的轻量级 Web 应用程序框架.Armin Ronacher带领一个名为Pocco的国际Python爱好者团队开发了Flask. 下面我们简单 ...

  6. 最大流/最小割模板(isap) POJ1273

    isap模板核心代码: //d[]为距离标号数组,d[i]表示节点i到汇点的距离 //gap[]为GAP优化数组,gap[i]表示到汇点距离为i的节点个数 int dfs(int k,int flow ...

  7. deeplearning.ai 构建机器学习项目 Week 1 机器学习策略 I

    这门课是讲一些分析机器学习问题的方法,如何更快速高效的优化机器学习系统,以及NG自己的工程经验和教训. 1. 正交化(Othogonalization) 设计机器学习系统时需要面对一个问题是:可以尝试 ...

  8. Modelsim自动化仿真之do文件书写

    创建本地库 vlib ./work You must use vlib rather than operating system commands to creat a library directo ...

  9. 吴裕雄--天生自然 R语言开发学习:图形初阶(续二)

    # ----------------------------------------------------# # R in Action (2nd ed): Chapter 3 # # Gettin ...

  10. Ubuntu gnome安装Monaco字体,FontForge module is probably not installed

    首先下载原始Monaco字体,注意我只找到了这一款在ubuntu的gnome下可见,其他的各种monaco即使安装了也看不到. https://gist.github.com/epegzz/16342 ...