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. 201521123074 《Java程序设计》第1周学习总结

    1. 本章学习总结第一周学习总结: 学习了java语言的历史与发展,运行过程,安装了eclipse编程平台,试着编写了java程序. 2. 书面作业: Q 1.为什么java程序可以跨平台运行?执行j ...

  2. Eclipse rap 富客户端开发总结(13) :Rap/Rcp保存按钮处理方式

    一.概述 在做项目的过程中,处理编辑区的保存机制的时候.发现,同样是扩展eclipse 自带的保存和全部保存按钮时候,rcp 工程下,保存按钮可以正常的灰显和可用,但是rap 的按钮就是始终呈现灰显的 ...

  3. 读取properties属性文件

    1.通过类加载器加载 InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("Chap ...

  4. 第6章 Overlapped I/O, 在你身后变戏法 ---Win32 文件操作函数 -2

    Win32 之中有三个基本的函数用来执行 I/O,它们是:        i CreateFile()        i ReadFile()        i WriteFile()    没有另外 ...

  5. 批处理之 for/f 详解

    含有/F的for格式:FOR /F ["options"] %%i IN (file) DO command FOR /F ["options"] %%i IN ...

  6. C - Coin Change (III)(多重背包 二进制优化)

    C - Coin Change (III) Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu ...

  7. 斐波那契数列第N项f(N)[矩阵快速幂]

    矩阵快速幂 定义矩阵A(m*n),B(p*q),A*B有意义当且仅当n=p.即A的列数等于B的行数. 且C=A*B,C(m*q). 例如: 进入正题,由于现在全国卷高考不考矩阵,也没多大了解.因为遇到 ...

  8. Reverse Words in a String III

    Given a string, you need to reverse the order of characters in each word within a sentence while sti ...

  9. windows下PHP中Fatal error Call to undefined function curl_init()的解决方法

    参考官方解决方法:http://nz.php.net/manual/en/curl.installation.php 1.php安装目录下的ext文件夹下面是否有php_curl.dll文件,然后右键 ...

  10. centos7基础学习第一天

    Linux是一个操作系统: 智能手机,Android和ios.Windows: 网站.游戏.QQ.微信等都是运行在Linux系统之上的应用:客户端.服务器端交互的: Linux的起源: Linux之前 ...