• Http(超文本传输协议)是一个属于应用层的面向对象的协议。

  • HTTP结构

    • HTTP请求:

      • 请求行:Method-Request URI HTTP-Version(CRLF),eg:GET /form.html HTTP/1.1(CRLF);
      • 请求报头
      • 请求正文
    • HTTP响应
      • 状态行:HTTP-Version Status-Code Reason-Phrase(CRLF),eg: HTTP/1.1 200 OK(CRLF);
      • 响应报头
      • 响应正文
    • 其中,报头(可选)由若干个报头域组成,每个报头域格式:“Name: Value(CRLF)”。
  • 主要特点:

   (1)支持客户/服务器模式。
   (2)简单快速: 客户向服务器请求服务时, 只需传送请求方法和路径。 请求方法常用的有GET、 HEAD、POST。 每种方法规定了客户与服务器联系的类型不同。 由于HTTP协议简单, 使得HTTP服务器的程序规模小,因而通信速度很快。
   (3)灵活: HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
        (4)无连接: 无连接的含义是限制每次连接只处理一个请求。 服务器处理完客户的请求, 并收到客户的
应答后,即断开连接。采用这种方式可以节省传输时间。
        (5)无状态: HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面, 在服务器不需要先前信息时它的应答就较快

  • 缺点

    (1)通信使用明文(不加密),内容可能会被窃听

    (2)不验证通信方的身份,因此有可能遭遇伪装

    (3)无法证明报文的完整性,所以有可能已遭篡改

  • Https=Http+加密+认证+完整性保护

  • 请求方法

  GET 请求获取Request-URI 所标识的资源
  POST 在Request-URI 所标识的资源后附加新的数据
  HEAD 请求获取由Request-URI 所标识的资源的响应消息报头
  PUT 请求服务器存储一个资源,并用Request-URI 作为其标识
  DELETE 请求服务器删除Request-URI 所标识的资源
  TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
  OPTIONS 请求查询服务器的性能
  CONNECT 保留将来使用

  • 状态代码

  1xx:指示信息--表示请求已接收,继续处理

  2xx:成功--表示请求已被成功接收、理解、接受

  3xx:重定向--要完成请求必须进行更进一步的操作
  4xx:客户端错误
  5xx:服务器端错误

  常见代码:

    200 OK //客户端请求成功
    400 Bad Request //客户端请求有语法错误,不能被服务器所理解
    401 Unauthorized //请求未经授权
    403 Forbidden //服务器收到请求,但是拒绝提供服务
    404 Not Found //请求资源不存在, eg:输入了错误的URL
    500 Internal Server Error //服务器发生不可预期的错误
    503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后,可能恢复正常

  • HTTP的长连接与短连接

    • 本质上是TCP的长连接与短连接
    • HTTP/1.0默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。

    • HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入报头域:Connection:keep-alive。在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。
    • 短连接
      • 优点:管理简单,存在的连接都是有用的连接,不需要额外的控制手段;
      • 缺点:如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽。
    • 长连接
      • 优点:省去较多的TCP建立和关闭的操作,减少浪费,节约时间。
      • 缺点:Client与server之间的连接如果一直不关闭的话,会存在一个问题,随着客户端连接越来越多,server早晚有扛不住的时候
      • 可采取的策略:(1)关闭长时间没有读写事件的连接;(2)限制每个客户端的最大长连接数。
  • CGI(Common Gateway Interface)通用网关接口

    • 作用:服务动态内容。执行动态内容,将其返回值送回客户端。
    • 判断是否动态内容:服务器常常将所有动态内容放在一个固定的文件夹下,通过判断URI的路径来识别是否需要服务动态内容。
    • CGI的输入输出
      • 服务器子线程通过环境变量将请求参数传送给CGI程序
      • 通过将stdin和stdout重定向至已连接描述符实现CGI对客户端的直接通信。
  • HTTP1.1与HTTP1.0区别

    • 默认长连接;
    • 新增24个状态响应码,HTTP1.0只有16个;
    • 可拓展性:如果HTTP的某个实现接收到了自身未定义的头域,将自动忽略它;
    • 带宽优化。

HTTP/HTTPs要点的更多相关文章

  1. Https要点

    http和https的区别 1.https协议需要到ca申请证书 2.http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议 3.http和https使用的是完全不同 ...

  2. 推荐Linux管理员不可不知十大PHP安全要点 - SCutePHP

    PHP是使用最广泛的脚本编程语言之一.市场份额颇能说明其主导地位.PHP 7已推出,这个事实让这种编程语言对当前的开发人员来说更具吸引力.尽管出现了一些变化,但是许多开发人员对PHP的未来持怀疑态度. ...

  3. 一次部署HTTPS的相关事件引发的思考

    前言: 上周五快要下班的时候,突然收到通知客户希望了解一下部署HTTPS的流程,这种事情谁听了都会有几分诧异的.因为这件事虽然和工作有一定的相关度,但平时不会走这个方向,实际上也较少接触.此外,客户手 ...

  4. Linux运维入门到高级全套常用要点

    Linux运维入门到高级全套常用要点 目 录 1. Linux 入门篇................................................................. ...

  5. 【C#】第2章学习要点

    分类:C#.VS2015 创建日期:2016-06-15 教材:(十二五国家级规划教材)<C#程序设计及应用教程>(第3版) 一.本章要点 C#数据类型分两大类:值类型.引用类型. 值类型 ...

  6. https加密解密过程详解

    要点: https协议对传输内容进行加密,具有更强的安全性,防止被抓包后解析出请求内容. https是建立在ssl之上的http协议. 服务器支持https协议必须安装一套数字证书,所谓数字证书就是一 ...

  7. Android响应式界面开发要点

    现在很多项目需要到达同一个Apk既可以在Phone上跑也尅在tablet上跑,即界面要适应不同尺寸和类型的需要而自动调整.这个即为响应式设计.在web开发商响应式设计已经是个常谈的内容了,而对于and ...

  8. kafka技术要点

    转载:http://blog.csdn.net/caisini_vc/article/details/48007297 Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为 ...

  9. Java 编程要点之并发(Concurrency)详解

    计算机用户想当然地认为他们的系统在一个时间可以做多件事.他们认为,他们可以工作在一个字处理器,而其他应用程序在下载文件,管理打印队列和音频流.即使是单一的应用程序通常也是被期望在一个时间来做多件事.例 ...

随机推荐

  1. HMM 自学教程(四)隐马尔科夫模型

    本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...

  2. 15款提高工作效率的 Web 项目管理工具

    在今天的快节奏的商业世界里,能够通过计划.组织.和管理资源池以及评估开发资源的模式来管理一个项目,是一个很艰巨的任务. 有很多现成的项目管理软件来帮助减轻项目管理的负担,并且他们几乎覆盖了所有类型的业 ...

  3. Web 项目可能会用到的20款优秀的开源工具

    开源的应用程序和它们的源代码可以免费获得,因为版权是属于任何进行过修改或者提交代码的人.大多数提供开源软件的公司都可以建立行业标准,因此可以获得有利的竞争优势. 很多的开源应用程序和工具都有很强的替代 ...

  4. 使用 GistBox 轻松组织和管理你的代码片段

    GistBox 用简便的方式来组织和管理代码片段.你的代码会保存到云端进行备份,再也不用担心迷失在杂乱的代码片段中.GistBox 是建立在标准的 HTML5 技术基础上.在旅途中或在办公室,你都可以 ...

  5. 转载:第四弹!全球首个微信小程序(应用号)开发教程!通宵吐血赶稿,每日更新!

    感谢大家支持!博卡君周末休息了两天,今天又回到战斗状态了.上周五晚上微信放出官方工具和教程了,推荐程序猿小伙伴们都去试一试,结合教程和代码,写写自己的 demo 也不错. 闲话不多说,开始更新! 第七 ...

  6. VS问题汇总——竹子整理

    VS这个宇宙第一IDE有时候也会淘气一把,此贴记录下日后遇到的VS本身的问题 1.VS显示正忙!!!其他项目能打开,就这个不行,关闭vs进程重启vs还是无法解决. 这个问题从VS2010开始就遇到过, ...

  7. 重构第17天提取父类(Extract SuperClass)

    今天的重构来自 Martin Fowler的http://refactoring.com/catalog/extractSuperclass.html. 理解:本文中的“提取父类”是指类中有一些字段或 ...

  8. Tesseract-OCR引擎 入门

    OCR(Optical Character Recognition):光学字符识别,是指对图片文件中的文字进行分析识别,获取的过程. Tesseract:开源的OCR识别引擎,初期Tesseract引 ...

  9. csharp: NHibernate and Entity Framework (EF) (object-relational mapper)

    代码生成器: 1. http://www.codesmithtools.com/ 2.https://sourceforge.net/projects/mygeneration/ 3. http:// ...

  10. .Net开源项目之开源论坛

    .Net开源项目非常多,但是开源并且直接就能用的BBS项目就很少了,至少最近我在这上面没有找到一个合适的开源论坛.可能是因为我要求比较特殊,不但要开箱即用,还要用MVC+MySql开发. Discuz ...