超文本传输协议HTTPHyperTextTransferProtocol太原大学计算机工程系:白文江startend20min124HTTP简介HTTP的工作原理3HTTP报文结构HTTP代理【目录】HTTP简介HyperTextTransferProtocol什么是超文本(HyperText)?包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(WebPage)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。site5site1site2site3site4什么是URL?URL即统一资源定位符(UniformResourceLocator),用来唯一地标识万维网中的某一个文档。URL由协议、主机和端口(默认为80)以及文件名三部分构成。如:协议://主机:端口(80)/文件名及其路径什么是超文本传输协议HTTP?是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能。startend20min12HTTP简介HTTP的工作原理请求/响应交互模型HTTP的工作原理InternetWeb服务器客户机(浏览器)Index.htmlIP:202.2.16.21在用户点击URL为的链接后,浏览器和Web服务器执行以下动作:1浏览器分析超链接中的URL2浏览器向DNS请求解析连接(80端口)5浏览器请求文档:GET/index.html6服务器给出响应,将文档index.html发送给浏览器7释放TCP连接8浏览器显示index.html中的内容TCP连接建立TCP连接请求文档1HTTP请求报文响应文档2HTTP响应报文释放TCP连接HTTP的工作原理HTTP的连接方式和无状态性非持久性连接持久性连接无状态性即浏览器每请求一个Web文档,就创建一个新的连接,当文档传输完毕后,连接就立刻被释放。HTTP1.0、HTTP0.9采用此连接方式。对于请求的Web页中包含多个其他文档对象(如图像、声音、视频等)的链接的情况,由于请求每个链接对应的文档都要创建新连接,效率低下。即在一个连接中,可以进行多次文档的请求和响应。服务器在发送完响应后,并不立即释放连接,浏览器可以使用该连接继续请求其他文档。连接保持的时间可以由双方进行协商。是指同一个客户端(浏览器)第二次访问同一个Web服务器上的页面时,服务器无法知道这个客户曾经访问过。HTTP的无状态性简化了服务器的设计,使其更容易支持大量并发的HTTP请求。InternetWeb服务器客户机(浏览器)建立TCP连接释放TCP连接请求文档1响应文档1请求文档2响应文档2请求文档n响应文档n……startend20min12HTTP简介3HTTP报文结构HTTP的工作原理HTTP报文结构请求报文即从客户端(浏览器)向Web服务器发送的请求报文。报文的所有字段都是ASCII码。方法URL版本CRLF首部字段名:值CRLF首部字段名:值CRLF首部字段名:值CRLF…CRLF实体主体(Entitybody)空格CRLF回车换行请求行如:GET/index.htmlHTTP/1.1首部行:用来说明浏览器、服务器或报文主体的一些信息。如:Host::Mozilla/5.0Accept-Language:cn请求报文HTTP报文结构响应报文即从Web服务器到客户机(浏览器)的应答。报文的所有字段都是ASCII码。版本状态码短语CRLF首部字段名:值CRLF首部字段名:值CRLF首部字段名:值CRLF…CRLF实体主体(Entitybody)空格CRLF回车换行状态行如:HTTP/1.1200OK首部行:用来说明浏览器、服务器或报文主体的一些信息。如:Date:Wed,08May200822Sever:Apache/1.3.2(Unix)Content-Length:4096Content-Type:text/html响应报文HTTP报文结构请求报文中的方法方法(操作)含义方法(操作)含义GET请求读取一个Web页面HEAD请求读取一个Web页面的首部POST附加一个命名资源(如Web页面)PUT请求存储一个Web页面DELETE删除Web页面TRACE用于测试,要求服务器送回收到的请求CONNECT用于代理服务器OPTION查询特定选项方法(Method)是对所请求对象所进行的操作,也就是一些命令。请求报文中的操作有:HTTP报文结构响应报文中的状态码状态码(Status-Code)是响应报文状态行中包含的一个3位数字,指明特定的请求是否被满足,如果没有满足,原因是什么。状态码分为以下五类:状态码含义例子1xx通知信息100=服务器正在处理客户请求2xx成功200=请求成功(OK)3xx重定向301=页面改变了位置4xx客户错误403=禁止的页面;404=页面未找到5xx服务器错误500=服务器内部错误;503=以后再试具体各状态码的含义,请参考W3C的HTTP1.1标准规范RFC2616[]HTTP报文结构首部字段或消息头头(header)类型说明User-Agent请求关于浏览器和它平台的信息,如Mozilla5.0Accept请求客户能处理的页面的类型,如text/htmlAccept-Charset请求客户可以接受的字符集,如Unicode-1-1Accept-Encoding请求客户能处理的页面编码方法,如gzipAccept-Language请求客户能处理的自然语言,如en(英语),zh-cn(简体中文)Host请求服务器的DNS名称。从URL中提取出来,必需。Authorization请求客户的信息凭据列表Cookie请求将以前设置的Cookie送回服务器器,可用来作为会话信息Date双向消息被发送时的日期和时间Server响应关于服务器的信息,如Microsoft-IIS/6.0Content-Encoding响应内容是如何被编码的(如gzip)Content-Language响应页面所使用的自然语言Content-Length响应以字节计算的页面长度Content-Type响应页面的MIME类型Last-Modified响应页面最后被修改的时间和日期,在页面缓存机制中意义重大Location响应指示客户将请求发送给别处,即重定向到另一个URLSet-Cookie响应服务器希望客户保存一个CookieHTTP报文结构实例请求行首部字段(行)状态行首部字段(行)startend20min124HTTP简介3HTTP报文结构HTTP代理HTTP的工作原理HTTP代理什么是HTTP代理?HTTP代理又称Web缓存或代理服务器(ProxyServer),是一种网络实体,能代表浏览器发出HTTP请求,并将最近的一些请求和响应暂存在本地磁盘中,当请求的Web页面先前暂存过,则直接将暂存的页面发给客户端(浏览器),无须再次访问Internet。使用HTTP代理的Web访问过程Internet源Web服务器校园网浏览器HTTP代理浏览器向HTTP代理发出页面请求HTTP代理查找缓存页面用缓存页面响应请求找到代表浏览器向源Web服务器发出请求未找到源Web服务器响应HTTP代理HTTP代理缓存请求到的页面将请求到的页面响应给浏览器ThanksForYourTimeThanksForYourTimeThanksForYourTime