全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通信协议设计通信协议设计是很重要的一个环节。学习下HTTP消息格式,借鉴下:但凡搞WEB开发的人都离不开HTTP(超文本传输协议),而要了解HTTP,除了HTML本身以外,还有一部分不可忽视的就是HTTP消息头。做过Socket编程的人都知道,当我们设计一个通信协议时,消息头/消息体的分割方式是很常用的,消息头告诉对方这个消息是干什么的,消息体告诉对方怎么干。HTTP传输的消息也是这样规定的,每一个HTTP包都分为HTTP头和HTTP体两部分,后者是可选的,而前者是必须的。每当我们打开一个网页,在上面点击右键,选择查看源文件,这时看到的HTML代码就是HTTP的消息体,那么消息头又在哪呢?IE浏览器不让我们看到这部分,但我们可以通过截取数据包等方法看到它。下面就来看一个简单的例子:首先制作一个非常简单的网页,它的内容只有一行:html body hello world/body/html把它放到WEB服务器上,比如IIS,然后用IE浏览器请求这个页面(),当我们请求这个页面时,浏览器实际做了以下四项工作:1解析我们输入的地址,从中分解出协议名、主机名、端口、对象路径等部分,对于我们的这个地址,解析得到的结果如下:协议名:http主机名:localhost端口:8080对象路径:/simple.htm 2把以上部分结合本机自己的信息,封装成一个HTTP请求数据包3使用TCP协议连接到主机的指定端口(localhost,8080),并发送已封装好的数据包4等待服务器返回数据,并解析返回数据,最后显示出来由截取到的数据包我们不难发现浏览器生成的HTTP数据包的内容如下:GET/simple.htm HTTP/1.1 CR Accept:image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/*CR Accept-Language:zh-cn CR Accept-Encoding:gzip,deflate CR User-Agent:Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.1;SV1;.NET CLR 1.1.4322;.NET CLR 2.0.50727)CR Host:localhost:8080 CR Connection:Keep-Alive CR CR为了显示清楚我把所有的回车的地方都加上了CR,注意最后还有一个空行加一个回车,这个空行正是HTTP规定的消息头和消息体的分界线,第一个空行以下的内容就是消息体,这个请求数据包是没有消息体的。消息的第一行GET表示我们所使用的HTTP动作,其他可能的还有POST等,GET的消息没有消息体,而POST消息是有消息体的,消息体的内容就是要POST的数据。后面/simple.htm就是我们要请求的对象,之后HTTP1.1表示使用的是HTTP1.1协议。第二行表示我们所用的浏览器能接受的Content-type,三四两行则是语言和编码信息,第五行显示出本机的相关系信息,包括浏览器类型、操作系统信息等,很多网站可以显示出你所使用的浏览器和操作系统版本,就是因为可以从这里获取到这些信息。第六行表示我们所请求的主机和端口,第七行表示使用Keep-Alive方式,即数据传递完并不立即关闭连接。服务器接收到这样的数据包以后会根据其内容做相应的处理,例如查找有没有/simple.htm这个对象,如果有,根据服务器的设置来决定如何处理,如果是HTM,则不需要什么复杂的处理,直接返回其内容即可。但在直接返回之前,还需要加上HTTP消息头。服务器发回的完整HTTP消息如下:HTTP/1.1 200 OK CR Server:Microsoft-IIS/5.1 CR X-Powered-By:ASP.NET CR Date:Fri,03 Mar 2006 06:34:03 GMT CR Content-Type:text/html CR Accept-Ranges:bytes CR Last-Modified:Fri,03 Mar 2006 06:33:18 GMT CR ETag:5ca4f75b8c3ec61:9eeCR Content-Length:37 CR CR html body hello world/body/html同样,我用CR来表示回车。可以看到,这个消息也是用空行切分成消息头和消息体两部分,消息体的部分正是我们前面写好的HTML代码。消息头第一行HTTP/1.1也是表示所使用的协议,后面的200 OK是HTTP返回代码,200就表示操作成功,还有其他常见的如404表示对象未找到,500表示服务器错误,403表示不能浏览目录等等。第二行表示这个服务器使用的WEB服务器软件,这里是IIS 5.1。第三行是ASP.Net的一个附加提示,没什么实际用处。第四行是处理此请求的时间。第五行就是所返回的消息的content-type,浏览器会根据它来决定如何处理消息体里面的内容,例如这里是text/html,那么浏览器就会启用HTML解析器来处理它,如果
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年陕西省渭南市富平县保安员招聘考试题库附答案解析
- 2025年历年邮政考试试题及答案
- 2025年青海省西宁市城北区保安员招聘考试题库附答案解析
- 2025年人力资源管理师二级真题模拟练习(含答案)
- 2023年无人机资格证考试题库及答案第256期
- 模具制造质量保证合同2025
- 2025年河北省承德市隆化县保安员招聘考试题库附答案解析
- 2025年楚雄州武定县保安员招聘考试题库附答案解析
- 钢结构隔层施工合同(3篇)
- 2025年网络信息流广告投放合同协议
- 湿热灭菌柜验证培训
- 内蒙古呼和浩特市赛罕区2025-2026学年七年级上学期生物期中试卷(含答案)
- 工会考试题库附答案2025年
- 2025年天津红日药业股份有限公司招聘笔试考试参考试题附答案解析
- 四川省凉山州西昌市2025-2026学年高一上学期期中学科素养监测数学试题(无答案)
- 呼和浩特市春华水务集团公司招聘笔试历年参考题库附带答案详解
- 哈三中2026届高三上期期中考试英语试卷(含答案)
- 2025年中学生心理测试题及答案
- 2022北京首都师大附中高一12月月考数学(教师版)
- 宣城市中医院透析患者营养评估与指导考核
- 行业会计教学课件
评论
0/150
提交评论