﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-小李飞刀-随笔分类-Web浏览器技术</title><link>http://www.blogjava.net/fourlee/category/29358.html</link><description>我就是我，我不是我，我还是我</description><language>zh-cn</language><lastBuildDate>Mon, 04 Feb 2008 12:28:55 GMT</lastBuildDate><pubDate>Mon, 04 Feb 2008 12:28:55 GMT</pubDate><ttl>60</ttl><item><title>HTTP(一)</title><link>http://www.blogjava.net/fourlee/archive/2008/02/04/179305.html</link><dc:creator>李四飞刀</dc:creator><author>李四飞刀</author><pubDate>Mon, 04 Feb 2008 10:57:00 GMT</pubDate><guid>http://www.blogjava.net/fourlee/archive/2008/02/04/179305.html</guid><wfw:comment>http://www.blogjava.net/fourlee/comments/179305.html</wfw:comment><comments>http://www.blogjava.net/fourlee/archive/2008/02/04/179305.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fourlee/comments/commentRss/179305.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fourlee/services/trackbacks/179305.html</trackback:ping><description><![CDATA[<div class="main"> <h2>HTTP</h2> <p>HTTP就是一种请求/响应模式。</p> <h2>HTTP事务</h2> <ol> <li>连接 建立和服务器的连接  <li>查询 请求服务器上的资源  <li>处理 服务器接受和处理请求  <li>响应 服务器将请求的资源发送回客户端  <li>终止 事务完成后，关闭连接，除非客户机与服务器之间立即发生另一事务。 </li></ol> <h2>用telnet程序验证这个过程</h2> <h3>连接</h3> <div class="console_box"> <div class="console" style="height: 32px"> <p>telnet www.baidu.com 80</p></div></div> <p>80是HTTP协议默认的端口。</p> <h3>查询</h3> <div class="console_box"> <div class="console" style="height: 48px"> <p>GET / HTTP/1.0↙<br>↙</p></div></div> <p>↙表示回车。</p> <table width="346" border="0"> <tbody> <tr> <th scope="col" width="181">GET</th> <th scope="col" width="88">/</th> <th scope="col" width="63">HTTP/1.0</th></tr> <tr> <td>查询方法名，有GET和POST<br>GET方法不支持消息体</td> <td>服务器资源</td> <td>HTTP版本</td></tr></tbody></table> <p>在telnet中测试HTTP的POST是很麻烦的事。这里就不讲了，何况GET和POST很类似。</p> <h3>处理</h3> <p>Baidu服务器根据请求，处理请求。如果用的是Servlet，就是执行那个Servlet的doGet方法。</p> <h3>响应</h3> <div class="console_box"> <div class="console" id="html"> <p><br><br>HTTP/1.1 200 OK<br>Date: Sun, 03 Feb 2008 08:08:44 GMT<br>Server: BWS/1.0<br>Content-Length: 3022<br>Content-Type: text/html<br>Cache-Control: private<br>Expires: Sun, 03 Feb 2008 08:08:44 GMT<br>Set-Cookie: BAIDUID=2BB1B837C8EC6794A132C5D8DDD76721:FG=1; expires=Sun, 03-Feb-38 08:08:44 GMT; path=/; domain=.baidu.com<br>P3P: CP=" OTI DSP COR IVA OUR IND COM "</p> <p>&lt;html&gt;&lt;head&gt;&lt;meta http-equiv=Content-Type content="text/html;charset=gb2312"&gt;&lt;title&gt;百度一下，你就知道 &lt;/title&gt;&lt;style&gt;body{margin:4px 0}p{margin:0;padding:0}img{border:0}td,p,#u{font-size:12px}#b,#u,#l td,a{font-family:arial}#kw{font:16px Verdana;height:1.78em;padding-top:2px}#b{height:30px;padding-top:4px}#b,#b a{color:#77c;font-size:12px}#u{padding-right:10px;line-height:19px;text-align:right;margin-bottom:3px !important;margin-bottom:10px}#sb{height:2em;width:5.6em}#km{height:50px}#km a{font-family:宋体}#l{margin-bottom:5px}#m{margin-left:100px;width:22.1em;text-align:center}p,#b,table{width:600px;border:0}#sb,#km,#l,#m{font-size:14px}#m a,#m b{margin-right:1.14em}a{color:#00c}a:active{color:#f60}&lt;/style&gt;&lt;/head&gt;<br>&lt;body&gt;&lt;div id=u&gt;&lt;/div&gt;&lt;center&gt;&lt;a href=http://hi.baidu.com/baidu target=_blank&gt;&lt;img src=http://www.baidu.com/img/logo.gif width=174 height=59 alt="点此进入 百度空间"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;table cellpadding=0 cellspacing=0 id=l&gt;&lt;tr&gt;&lt;td align=left&gt;&lt;div id=m&gt;&lt;a onclick=s(this) href=http://news.baidu.com&gt;新&amp;nbsp;闻&lt;/a&gt;&lt;b&gt;网&amp;nbsp;页&lt;/b&gt;&lt;a onclick=s(this) href=http://tieba.baidu.com&gt;贴&amp;nbsp;吧&lt;/a&gt;&lt;a onclick=s(this) href=http://zhidao.baidu.com&gt;知&amp;nbsp;道&lt;/a&gt;&lt;a onclick=s(this) href=http://mp3.baidu.com&gt;MP3&lt;/a&gt;&lt;a onclick=s(this) href=http://image.baidu.com&gt;图&amp;nbsp;片&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br>&lt;table cellpadding=0 cellspacing=0&gt;&lt;tr valign=top&gt;&lt;td width=92&gt;&lt;/td&gt;&lt;td height=62 nowrap&gt;&lt;form name=f action=/s&gt;&lt;input type=text name=wd id=kw size=36 maxlength=100&gt;&lt;script&gt;var w=document.f.wd;w.focus();document.getElementById("u").innerHTML='&lt;a href="http://passport.baidu.com/?login&amp;tpl=mn&amp;u='+escape(location.href)+'"&gt;登录&lt;/a&gt;';function s(o){if(w.value.length&gt;0){var h=o.href;var q=encodeURIComponent(w.value);if(h.indexOf("q=")!=-1){o.href=h.replace(new RegExp("q=[^&amp;$]*"),"q="+q)}else{o.href+="?q="+q}}};(function(){if(new RegExp("q=([^&amp;]+)").test(location.search)){w.value=decodeURIComponent(RegExp.$1)}})()&lt;/script&gt;&lt;input type=hidden name=cl value=3&gt; &lt;input type=submit value=百度一下 id=sb&gt;&lt;br&gt;&lt;br&gt;&lt;/form&gt;&lt;/td&gt;&lt;td width=100&gt;&lt;a href=/search/jiqiao.html&gt;帮助&lt;/a&gt;&lt;br&gt;&lt;a href=/gaoji/advanced.html&gt;高级&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br>&lt;p id=km&gt;&amp;nbsp;&lt;a href=http://hi.baidu.com&gt;空间&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href=http://www.baidu.com/more&gt;更多&gt;&gt;&lt;/a&gt;&lt;/p&gt;<br>&lt;p style=height:60px&gt;&lt;/p&gt;<br>&lt;p style=height:30px&gt;&lt;a onClick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.baidu.com')" href=http://utility.baidu.com/traf/click.php?id=215&amp;url=http://www.baidu.com&gt;把百度设为首页&lt;/a&gt;&lt;/p&gt;&lt;p style=height:14px&gt;&lt;a href=http://jingjia.baidu.com&gt;企业推广&lt;/a&gt; | &lt;a href=http://top.baidu.com&gt;搜索风云榜&lt;/a&gt; | &lt;a href=/home.html&gt;关于百度&lt;/a&gt; | &lt;a href=http://ir.baidu.com&gt;About Baidu&lt;/a&gt;&lt;/p&gt;&lt;p id=b&gt;&amp;copy;2008 Baidu &lt;a href=http://www.baidu.com/duty&gt;使用百度前必读&lt;/a&gt; &lt;a href=http://www.miibeian.gov.cn target=_blank&gt;京ICP证030173号&lt;/a&gt; &lt;a href=http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001092500412&gt;&lt;img src=http://gimg.baidu.com/img/gs.gif&gt;&lt;/a&gt;&lt;/p&gt;&lt;/center&gt;&lt;/body&gt;&lt;/html&gt;&lt;!--4eca38de351397c2--&gt;</p> <p>失去了跟主机的连接。<br></p></div></div> <h3>终止</h3> <p>用telnet连接web服务器，连接会立马终止。如果用浏览器访问，浏览器会取得与页面有关的所有图像、样式表和脚本文件等，才终止连接。</p> <h2>HTTP查询和响应的消息格式</h2> <p>HTTP查询和响应的消息格式差不多。</p> <table border="0"> <tbody> <tr> <th scope="col">格式</th> <td scope="col" height="105"> <div class="code" style="width: 300px">initliaze line<br>key1:value1<br>key2:value2<br><br>[Optional message body]</div></td></tr> <tr> <th scope="col">查询格式</th> <td scope="col"> <div class="code" style="width: 300px">GET /newaddr?name=jack&amp;email=2 HTTP/1.0<br>accept:*/*<br>accept-language:zh-cn<br>... ...<br><br><br></div></td></tr> <tr> <th scope="col">响应格式<br>(具体见上面)</th> <td scope="col"> <div class="code" style="width: 300px">HTTP/1.1 200 OK<br>Date: Sun, 03 Feb 2008 08:08:44 GMT<br>Server: BWS/1.0<br>... ...<br><br>&lt;html&gt;...&lt;/html&gt;</div></td></tr></tbody></table> <h2>后记</h2> <p>HTTP定义了查询和响应的消息格式。但每个浏览器和服务器在这种格式下，有自己定义的内容。服务器通过浏览器请求的消息，知道浏览器具体是什么型号的，是什么操作系统。这些具体怎么做的，下文分解</p></div><img src ="http://www.blogjava.net/fourlee/aggbug/179305.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fourlee/" target="_blank">李四飞刀</a> 2008-02-04 18:57 <a href="http://www.blogjava.net/fourlee/archive/2008/02/04/179305.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>