很多人都知道学习和理解HTTP协议的重要性及必要性,但HTTP相关知识对计算机基础较差,尤其是我这种没有计算机基础的人来说更是晦涩难懂

  乘着最近有空闲时间,开始恶补HTTP相关基础知识,下面请跟着我通过4个问题来学习HTTP协议基础

  

  问题1:HTTP0.9,HTTP1.0,HTTP1.1,HTTP2.0有什么区别?

  HTTP0.9

        ①:服务器只能回应HTML格式的字符串,不能回应别的格式

      ②:服务器发送完毕,就关闭TCP连接

      ③:只有一个命令GET

      ④:没有header等描述数据的信息

    HTTP1.0

        ①:增加了 POST,DELETE,PUT等请求

      ②:增加了 status code(状态码,如 100,200,300,400,500)和 header(请求头)

      ③:任何格式的内容都可以发送(比如文字,图像、视频、二进制文件)

      ④:权限,缓存等

      注:HTTP1.0的缺点是一个TCP连接只能发送一个请求和官方标准还未支持keep-alive(持久链接),只能用非官方标准声明Connection:keep-alive

      

  HTTP1.1

    ①:keep-alive(持久链接)

     ②:增加了host命令

      ③:pipeline(管道机制,即一个TCP链接可以同时发送多个请求【前提在同一个域名】

     注:补充说明持久链接和管道机制

    

       

  HTTP2.0

     ①:浏览器发送多个请求,服务器可以不按照顺序进行回应

    ②:头部信息压缩

    ③:服务器推送

    注:按上面①②③顺序补充说明

    

    

      

    详情见阮一峰大神写的HTTP基础这篇博客:http://www.ruanyifeng.com/blog/2016/08/http.html

  问题2:在浏览器地址栏输入一个网址后按回车到底发生了什么?

  该问题可简单概括为:浏览器地址栏输入一个网址(域名),敲回车后

  DNS服务器会对域名进行解析,解析成IP地址后,通过这个IP地址去查找对应服务器并请求相应资源

  

  这是很多小伙伴都知道的,但不知道的是在敲下回车后,在DNS解析域名为IP地址之前,浏览器还做了2件事

  ①:第一件事是redirectStart(开始跳转),因为浏览器可能记录了访问的地址已经永久跳转成一个新的地址,

    此时浏览器需要判断是否需要开始跳转,跳转到哪里;所以有时访问某个网站会看到状态码301( 永久性转移到其它地方)

    补:http状态码301和302详解及区别——辛酸的探索之路:http://blog.csdn.net/grandPang/article/details/47448395

 
  ②:看缓存cache,因为可能请求的资源已经在浏览器上缓存过了,此时服务器上的资源如果没有新增,修改,删除,就会直接用缓存过的资源,
    而不需要重新向服务器请求并下载资源,这样服务器减少了请求,用户也节省了带宽

    所以我们时常会看到状态码304( 表示此请求的资源,本地缓存有最新的,可以直接使用)
 
    补:网络---关于HTTP 304状态码的理解:http://blog.csdn.net/netdxy/article/details/50670734
 

  

  

  问题3:http如何建立三次握手?

   这篇博客讲的很详细,不再赘述:https://www.imooc.com/article/71293

   问题4:为什么HTTPS比HTTP更安全?(下面截图前者为HTTP的缺点,后者为HTTPS与之对应的优点)

  

   

   补:阮一峰大神HTTPS博客合集:http://www.ruanyifeng.com/blog/2016/08/migrate-from-http-to-https.html

通过四个问题了解HTTP协议基础的更多相关文章

  1. TCP/IP协议基础(转)

    转自 http://www.chinaunix.net 作者:Bernardus160  发表于:2003-12-03 17:33:15 TCP/IP协议基础 -------------------- ...

  2. HTTP协议基础与实验

    一. HTTP协议(Hypetext Transfer Protoacal,超文本传输协议) HTTP协议规定了Web基本的运作过程,以及Web服务器之间的通信细节. Http协议采用客户端/服务器端 ...

  3. udp协议基础(转自疯狂java讲义)

    第17章  网络编程 17.4  基于UDP协议的网络编程 UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发 ...

  4. 接口测试培训:HTTP协议基础

    接口测试培训:HTTP协议基础   引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展. ...

  5. 【RL-TCPnet网络教程】第41章 HTTP超文本传输协议基础知识

    第41章      HTTP超文本传输协议基础知识 本章节为大家讲解HTTP(HyperText Transfer Protocol,超文本传输协议),从本章节开始,正式进入嵌入式Web的设计和学习. ...

  6. 【RL-TCPnet网络教程】第25章 DHCP动态主机配置协议基础知识

    第25章      DHCP动态主机配置协议基础知识 本章节为大家讲解DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),通过前面章节对TCP和UDP ...

  7. 【RL-TCPnet网络教程】第16章 UDP用户数据报协议基础知识

    第16章      UDP用户数据报协议基础知识 本章节为大家讲解UDP(User Datagram Protocol,用户数据报协议),需要大家对UDP有个基础的认识,方便后面章节UDP实战操作. ...

  8. Linux学习(1)- TCP/IP网络协议基础

    Linux学习(1)- TCP/IP网络协议基础 一.TCP/IP 简介 学习内容 TCP/IP(Transmission Control Protocol/Internet Protocol)是传输 ...

  9. HTTP/TCP协议基础

    HTTP协议 基本概念 HTTP协议(超文本传输协议 HyperText Transfer Protocol):是用于从WWW服务器传输超文本到本地浏览器的传送协议.它不仅保证计算机正确快速地传输超文 ...

随机推荐

  1. Python传入参数的几种方法

    写在前面 Python唯一支持的参数传递方式是『共享传参』(call by sharing) 多数面向对象语言都采用这一模式,包括Ruby.Smalltalk和Java(Java的引用类型是这样,基本 ...

  2. Android studio R文件丢失或错误解决方法

    android studio中有时引用资源会出现R文件丢失或报错,大多数情况下是由于引入资源时R文件没有及时更新造成的 (在代码没有错误或资源引用没有错误的前提下) 注意:资源文件的文件名必须小写,即 ...

  3. 修改host指定域名指向ip,Windows脚本与Linux脚本

    修改host指定域名指向ip,Windows脚本与Linux脚本 一,Windows系统修改hosts文件 Windows系统下hosts文件位置:C:\Windows\System32\driver ...

  4. tp5中使用原生sql查询总结【转】

    注意事项: 1.先在database.php中配置好数据库 2.只要是数据库操作必须引用 use/think/Db;严格区分大小写. 下面是方法: public function hello5() { ...

  5. git stash 命令

    摘自: http://blog.csdn.net/longxiaowu/article/details/26815433 关于git stash命令的使用方法网上一大把,我想记录的是我在使用过程中觉得 ...

  6. HDU5050:Divided Land(大数的进制转化与GCD)

    题意:给定大数A和B,求gcd.所有数字都是二进制. 思路:先输入字符串,再转化为大数,然后用大数的gcd函数,最后转化为字符串输出. 利用字符串和大数转化的时候可以声明进制,就很舒服的完成了进制转化 ...

  7. Linux环境下sudo切换用户后执行其他命令

    https://blog.csdn.net/liangxw1/article/details/80106465

  8. python27期day10:函数的动态参数、函数的注释、函数的名称空间、函数的嵌套、global(修改全局的)、nonlocal(修改局部的)、函数名的第一类对象及使用、作业题。

    1.动态参数的作用: 能够接收不固定长度参数 位置参数过多时可以使用动态参数 * args是程序员之间约定俗称(可以更换但是不建议更换) * args获取的是一个元组 ** kwargs获取的是一个字 ...

  9. zz【清华NLP】图神经网络GNN论文分门别类,16大应用200+篇论文最新推荐

    [清华NLP]图神经网络GNN论文分门别类,16大应用200+篇论文最新推荐 图神经网络研究成为当前深度学习领域的热点.最近,清华大学NLP课题组Jie Zhou, Ganqu Cui, Zhengy ...

  10. JDOJ 1790: 高精度A-B

    JDOJ 1790: 高精度A-B JDOJ传送门 洛谷 P2142 高精度减法 洛谷传送门 题目描述 高精度减法 输入格式 两个整数a,b(第二个可能比第一个大) 输出格式 结果(是负数要输出负号) ...