HTTP 超文本传输协议

  • 综述:

    HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息.HTTP遵循请求(Request)/应答(Response)模型。Web浏览器向Web服务器发送请求,Web服务器处理请求并返回适当的应答。所有HTTP连接都被构造成一套请求和应答。

    HTTP使用内容类型,是指Web服务器向Web浏览器返回的文件都有与之相关的类型。所有这些类型在MIME Internet邮件协议上模型化,即Web服务器告诉Web浏览器该文件所具有的种类,是HTML文档、GIF格式图像、声音文件还是独立的应用程序。大多数Web浏览器都拥有一系列的可配置的辅助应用程序,它们告诉浏览器应该如何处理Web服务器发送过来的各种内容类型。

  • 与Http相关的3个协议
    • IP协议:把各种数据包发送给对方,通过ARP协议将IP地址转化为Mac地址
    • Tcp协议:
      • 提供可靠的字节流服务

        • 为了方便传输将大块数据分割成保文段为单位的数据包进行管理
        • 能够把数据可靠的发送给对方
      • 3次握手:若在某个阶段中断,TCP协议会在再次以相同顺序重新发送
        • 发送SYN
        • 回复SYN/ACK表示确认信息
        • 传回ACK数据包表示完成
    • DNS服务:将域名转化为IP地址
    • 在浏览器中输入url后:
      • 查询DNS服务器,得到IP地址
      • HTTP协议的职责,生成HTTP请求报文
      • TCP协议的职责:
        • 把请求报文分割成报文段
        • 可靠地传输
      • IP协议:搜索对方的地址,一边中转一边发送
      • 相应同上逆序
  • Url和Uri
    • Url:是统一资源标示符,可以唯一标识一个资源。
    • Uri:统一资源定位符,可以提供找到该资源的路径
    • URI属于父类,而URL属于URI的子类。URL是URI的一个子集。
    • 举个是个URI但不是URL的例子:urn:isbn:0-486-27557-4,这个是一本书的isbn,可以唯一标识这本书
    • 二者的区别在于,URI表示请求服务器的路径,定义这么一个资源。而URL同时说明要如何访问这个资源(http://)。
      例如,一个URL通常包括三部分:
      方案部分(scheme):http://
      地址部分:www.jikexueyuan.com
      资源部分:/1.png
  • Http 请求格式:
    • 请求方法URI协议/版本
    • 请求头(Request Header)
    • 请求正文

      下面是一个HTTP请求的例子:

      GET/sample.jspHTTP/1.1

      Accept:image/gif.image/jpeg,

      Accept-Language:zh-cn

      Connection:Keep-Alive

      Host:localhost

      User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)

      Accept-Encoding:gzip,deflate



      username=jinqiao&password=1234
  • 响应格式
    HTTP应答与HTTP请求相似,HTTP响应也由3个部分构成,分别是:

    • 协议状态版本代码描述
    • 响应头(Response Header)
    • 响应正文

      下面是一个HTTP响应的例子:

      HTTP/1.1 200 OK

      Server:Apache Tomcat/5.0.12

      Date:Mon,6Oct2003 13:23:42 GMT

      Content-Length:112



      <html>..
  • Http请求方法:
    • Get:GET用于信息获取,而且应该是安全的和幂等的。

      • 所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
      • 幂等的意味着对同一URL的多个请求应该返回同样的结果
    • Post:表示可能修改变服务器上的资源的请求
    • Put、Delete:
      1. 很多人贪方便,更新资源时用了GET,因为用POST必须要到FORM(表单),这样会麻烦一点。
      2. 对资源的增,删,改,查操作,其实都可以通过GET/POST完成,不需要用到PUT和DELETE。
      3. 另外一个是,早期的Web MVC框架设计者们并没有有意识地将URL当作抽象的资源来看待和设计,所以导致一个比较严重的问题是传统的Web MVC框架基本上都只支持GET和POST两种HTTP方法,而不支持PUT和DELETE方法
    • Get和Post区别:
      1. GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),POST把提交的数据则放置在是HTTP包的包体中
      2. GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据
  • Cookie:
    • 无状态优点:减少服务器内存及CPU消耗
    • 使用:
      • 在服务器发送的响应报文中写入set-cookie字段,通知客户端保存cookie
      • 下次客户端访问服务器时,在请求报文中加入cookie值
      • 服务器根据cookie值比对记录得到状态信息
  • Http报文
    • 报文首部

      • 请求行(Uri,Http,请求方法)/响应行(状态码,原因短语,http版本)
      • 首部字段
      • 其他(包括cookie)
    • 空行
    • 报文主体
  • 状态码:
    • 1xx :请求正在处理
    • 2xx : 请求处理正常
    • 3xx : 重定向
      • 301 moved permantently:资源uri永久更新
      • 302 found: 资源暂时定位到其他位置
    • 4xx : 客户端错误
      • 401 unauthorized : 请求认证未通过
      • 403 forbidden : 请求资源禁止访问
      • 404 not found : 请求资源未找到
    • 5xx : 服务器错误
  • 缓存:
    • 代理服务器(在客户端和服务器之间):

      • 缓存,减少网络带宽流量
      • 访问控制
    • 代理服务器和客户端均可进行缓存,但缓存存在有效时间,过期之后要向资源服务器更新内容

Http学习(一)的更多相关文章

  1. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  2. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  3. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  4. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. Unity3d学习 制作地形

    这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...

  7. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  8. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  9. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

  10. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

随机推荐

  1. Arrays 001

    1.1 Array Initalization First of all, we need know Java arrays is static. When the array is initiali ...

  2. 在windows server 2012中安装完oracle 11 client如何使用

    1.首先要添加监听配置,这样才可以没有报错的连接上服务器,至于如何添加,请自行搜索. 2.打开SQL  Plus连接oracle server端,这里因为是小白,看到命令行界面上来就需要输入用户名密码 ...

  3. curl命令测试服务器是否支持断点续传

     通过curl命令测试服务器是否支持断点续传 curl -i --range 0-9 http://www.baidu.com/img/bdlogo.gif HTTP/1.1 206 Partial ...

  4. Delphi提取EXE,DLL文件图标

    //uses ShellAPIprocedure TForm1.Button1Click(Sender: TObject);var IconIndex:Word; h:hICON;begin Icon ...

  5. NX二次开发-UFUN多选菜单对话框uc1605

    NX11+VS2013 #include <uf.h> #include <uf_ui.h> UF_initialize(); //多选菜单对话框 char sPromptSt ...

  6. 在linux中的rpm -ivh 是干什么的呢?

    在linux中的rpm -ivh 是干什么的呢?   RMP 是 LINUX 下的一种软件的可执行程序,你只要安装它就可以了.这种软件安装包通常是一个RPM包(Redhat Linux Packet ...

  7. 如何理解Vue的render函数

    第一个参数(必须) - {String | Object | Function} <!DOCTYPE html> <html lang="en"> < ...

  8. hdu多校第一场1004(hdu6581)Vacation 签到

    题意:有n+1辆车,每辆车都有一定的长度,速度和距离终点的距离,第1-n辆车在前面依次排列,第0辆车在最后面.不允许超车,一旦后车追上前车,后车就减速,求第0辆车最快什么时候能到达终点? 思路:对于每 ...

  9. 其它课程中的python---4、Matplotlib最最最最简单使用

    其它课程中的python---4.Matplotlib最最最最简单使用 一.总结 一句话总结: 慢慢来吧,不着急,心态平和和沉稳:每次和世界交互,你就能感受到无比的自信 1.如何区别python2和p ...

  10. Java-Class-C:org.springframework.http.MediaType

    ylbtech-Java-Class-C:org.springframework.http.MediaType 1.返回顶部 1.1. /* * Copyright 2002-2018 the ori ...