1. HTTP的操作过程

  HTTP是面向事务的应用层协议。HTTP协议本身是无连接的,为了保证数据的可靠传输,HTTP使用了面向连接的TCP作为运输层协议。所以,在发送HTTP报文之前都需要先建立TCP连接。在建立TCP连接的三次握手的前两部分完成后,万维网客户就把HTTP请求报文作为三次握手的第三个报文的数据发送给万维网服务器,服务器收到HTTP请求后,就把所请求的文档作为响应报文返回给客户。从此可看出,请求一个万维网文档所需的时间是该文档的传输时间加上两倍往返时间RTT。

  HTTP/1.0使用非持续连接,每次请求一个文档都要有两倍RTT的开销。HTTP/1.1使用了持续连接,万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。HTTP/1.1的持续连接有两种工作方式:非流水线方式流水线方式。非流水线方式的特点,是客户在收到前一个响应后才能发出下一个请求。流水线方式的特点,是客户在收到HTTP的响应报文之前就能够接着发送新的请求报文。流水线工作方式使TCP连接中的空闲时间减少,提高了下载文档的效率。

2. 代理服务器

  代理服务器是一种网络实体,它又称为万维网高速缓存。代理服务器把最近的一些请求和响应暂存在本地磁盘中。若一个网络中使用了代理服务器,该网络中的主机浏览器向因特网的服务器请求服务时,就先和代理服务器建立TCP连接,并向代理服务器发出HTTP请求报文。若代理服务器中已经存放了所请求的对象,则把这个对象放入HTTP响应报文中返回给客户浏览器;否则,代理服务器就代表客户浏览器与因特网上的源点服务器建立TCP连接,并发送HTTP请求报文。源点服务器把所请求的对象放在HTTP响应报文中返回给代理服务器。代理服务器收到这个对象后,先复制在自己的本地存储器中,然后再把这个对象放在HTTP响应报文中,通过已经建立的TCP连接返回给客户浏览器。

3. HTTP的报文结构

  HTTP有两类报文:

  (1)请求报文:从客户向服务器发送请求报文。

  (2)响应报文:从服务器到客户的回答。

  由于HTTP是面向文本的,因此在报文中的每一个字段都是一些ASCII码串,因而各个字段的长度都是不确定的

  HTTP请求报文和响应报文都是由三个部分组成。这两种报文格式的区别就是开始行不同。

  (1)开始行:用于区分是请求报文还是响应报文。在请求报文中的开始行叫做请求行,而在响应报文中的开始行叫做状态行。

  (2)首部行:用来说明浏览器、服务器或报文主体的一些信息。首部可以有好几行,但也可以不使用。

  (3)实体主体:在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段。

  请求行包括:方法、请求资源的URL、HTTP的版本。所谓“方法”就是对所请求的对象进行的操作,这些方法实际上也就是一些命令。因此,请求报文的类型是由它所采用的方法决定的。

  请求报文中常用的几种方法:

  OPTION:请求一些选项的信息。

  GET:请求读取由URL所标志的信息。

  HEAD:请求读取由URL所标志的信息的首部。

  POST:给服务器添加信息(例如:注释)

  PUT:在指明的URL下存储一个文档。

  DELETE:删除指明的URL所标志的资源。

  TRACE:用来进行环回测试的请求报文。

  CONNECT:用于代理服务器。

  状态行包括:HTTP的版本、状态码、解释状态码的简单短语。状态码都是三位数字的,分为5大类共33种。

  1xx:表示通知信息,如请求收到了或正在进行处理。

  2xx:表示成功,如接受或知道了。

  3xx:表示重定向,如要完成请求还必须采取进一步的行动。

  4xx:表示客户的错误,如请求中有错误的语法或不能完成。

  5xx:表示服务器的错误,如服务器失效无法完成请求。

超文本传送协议HTTP的更多相关文章

  1. 计算机网络——超文本传送协议HTTP

    一.简述 每个万维网网点都有一个服务器进程,它不断地监听TCP的端口80,以便发现是否有浏览器向它发出连接建立请求.一旦监听到连接建立请求并建立了TCP连接之后,浏览器就向万维网服务器发出浏览某个页面 ...

  2. 超文本传送协议 HTTP

    超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准. HTTP是一个属于应用层的面向对象的协议, ...

  3. HTTPS----安全超文本传输协议

    HTTPS协议详解HTTPS以保密为目标研发,简单讲是HTTP的安全版.其安全基础是SSL协议,因此加密的详细内容请看SSL.全称Hypertext Transfer Protocol over Se ...

  4. HTTP超文本传输协议-HTTP/1.1中文版

    摘要 超文本传输协议(HTTP)是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议.它是一种通用的,不分状态(stateless)的协议,除了诸如名称服务和分布对象管理系统之类的超文本用途外 ...

  5. http 超文本传输协议

    超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和接 ...

  6. 超文本传输协议-HTTP/1.1

    超文本传输协议-HTTP/1.1(修订版) ---译者:孙超进本协议不限流传发布.版权声明Copyright (C) The Internet Society (1999). All Rights R ...

  7. 安全超文本传输协议(HTTPS)详解

    一.概念与摘要 HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议,是一个安全通信通道,它基于HTTP开发用于在客户计算机和服务器之间交换信息.它使 ...

  8. Hyper Text Transfer Protocol(超文本传输协议)

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

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

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

随机推荐

  1. 201521123014 《Java程序设计》第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

  2. PHPStorm调试PHP代码~实际操作+mark~~

    因为wamp自己已经下载了xdebug,只要配置开启就行了. 1. 配置php.ini(有就打开注释,没有就加上) XDEBUG Extension[xdebug]zend_extension =&q ...

  3. CentOS 通过yum安装web环境

    以前有过记录用过linux安装包来安装,但是需要手动配置环境.这次是用yum 来安装web环境,就可以不需要手动配置环境. 1,安装mysql 通过yum安装mysql 输入:rpm -qa | gr ...

  4. Python基础知识总结

    看了一个礼拜Python的书,断断续续的看了一大半.今天刚好没有课,想着也没什么事情干,就把这几天Python总结一下,都是一些基础知识 变量和对象的引用 在python中一切都是对象,不像C,jav ...

  5. Map 基础用法

    import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; p ...

  6. FPGA在其他领域的应用(二)

    计算机和存储领域: 计算机技术和存储技术发展迅猛.如今,云计算正在实现对传统 IT 功能和全新功能的整合.例如,许多大型数据中心目前正在同时提供传统的 IT 服务以及新型的数据分析服务. 因此,这些大 ...

  7. ubuntu mount u盘以及cp拷贝文件夹

    如果是ubuntu桌面环境的话,不用mount,接入的U盘就可以直接被系统识别,访问起来非常方便,但如果没有桌面环境呢,比如在ubuntu server端,如何访问U盘呢? 第一步:查看U盘信息sud ...

  8. WPF 中的 Pack URI地(资源文件加载)

    参考资源网http://msdn.microsoft.com/zh-cn/library/aa970069.aspx#Absolute_vs_Relative_Pack_URIs 在 Windows ...

  9. javascript-OOP基础详解

      前  言 S     N 今天给大家详解一下面向对象编程(简称OOP)基础,OOP 语言使我们有能力定义自己的对象和变量类型 .对象拥有属性和方法 . 所以今天就给大家详解对象和类 . 1-1简介 ...

  10. Lavarel artisan 命令

    [alex@iZ25c5aeyiiZ yiqizou3.0]# php artisan list Laravel Framework version Usage: command [options] ...