夜鹰教程网-程序员的加油站
 当前位置:文章中心 >> NodeJs视频教程
HTTP协议的详解
夜鹰教程网 来源:www.yyjcw.com 日期:2017-11-3 15:45:51
HTTP协议的详解

我们在用Asp.net技术开发Web应用程序后,当用户在浏览器输入一个网址时就是再向服务

器发送一个HTTP请求,此时就使用了应用层的 HTTP协议,在上一个专题我们简单介绍了

网络协议的知识,主要是为了后面讲HTTP协议做一个铺垫的,只有对HTTP协议有一个清楚

的认识,这样当我们 用Asp.net技术开发Web应用程序时,我们可以多从网络协议的方面去

思考我们的应用程序,而不是只是单单停留在对服务器控件的拖拉的使用,这样也可 以帮助

我们开发一个自己的自定义web服务器。在这里我想同时把我对Asp.net的本质的理解和大家

分享下,如果有什么不对的地方,还请大家指出,首 先,当我们设计一个算法的时候要明确

输入参数和算法的返回(算法也就是也就是一个处理程序),其实Asp.net开发的web网页可

以理解为一个处理程 序,因为我们在web浏览器中所看到的都是HTML文档(HTML也就是

Asp.net网页处理后程序的输出,即算法的返回),然而输入参数也就是用户通 过浏览器输入

的一个Http请求(可以说是请求的一个URI地址),asp.net这门技术就帮助我们把请求的

aspx页面翻译为HTML文档,然后 HTML文档通过HTTP协议把HTML文档发送给浏览器,

浏览器再把这么标签(HTML文档只是一串字符串,如果没有浏览器的解析我们看到的也是

一些字 符串,而不是可视化的界面了)解析为可视化的界面。这样一次web请求也就结束。

后面也会和大家分享下Asp.net中背后替我们所做事情的一些对象,这 里还是回到Http协议

的介绍吧。

一、HTTP协议的简介

 HTTP中文为超文本传输协议,从名字上很容易理解,Http协议就是将超文本标记语言的

文档(即Html文档)从web服务传送到客户端的浏览器。它属于一个应用层的协议。

 

二、网络的工作过程

 当用户要访问网络中的某个网页时,大致要经过以下几个步骤:

  1. 用户首先要确定网页文件所在的URL(统一资源定位符,也就是网页在网络上的家庭住

  2. 址,通过这个地址就可以找到这个网页)如www.cnblogs.com

  3. 浏览器向DNS(域名服务器)发出请求,告诉DNS说:"我要把www.cnblogs.com转化为

  4. 它所定义的IP地址",这里可以简单把DNS理解为一个字典,知道域名就可以知道域名对

  5. 于的IP地址,他们有这个一个映射的关系

  6. DNS收到请求后就开始查询,查到后向浏览器返回结果。如域名为www.cnblogs.com

  7. 对应的IP地址为61.155.169.116

  8. 知道IP地址后, 浏览器向IP地址为61.155.169.116的主机发出与端口号80建议一条TCP

  9. 连接请求(HTTP协议是建立在传输层TCP的基础上的),80端口是服务器提供web服务

  10. 的默认端口

  11. 建立连接后,浏览器发出一条HTTP请求,如 GET http://www.cnblogs.com/ HTTP/1.1

  12. 当域名为www.cnblogs.com的服务器接受到请求后,向浏览器发送一个html文件

  13. 文件发送完后,由服务器主动关闭TCP连接。

  14. 浏览器接收传送来的页面并显示

  15. 如果Html文件中包含图片,还要与服务器再次建立一个TCP连接,以便可以下载图片

上面介绍的步骤中,浏览器发出一个请求后,如何把一个服务器上的HTML文档下载到请求

网页的主机上呢? 这个过程就是由HTTP完成,即完成超文本文件的传送,HTTP协议是web

服务器的基础。

 

二、HTTP请求

      Http请求由三部分组成:请求行、请求头和请求数据,一个HTTP请求的格式一般如下:

请求方法 URL HTTP版本号
请求头信息
 <一个空行>
请求数据

2.png

HTTP请求的方法如下表:

方法

描述

Get

返回URL所指的文档,一般用来请求下载Web网页

Head

请求文档头,它类似Get方法,只是Web服务器返回指定文档的首部信息

Post

它与Get方法相反,请求服务器接受指定文档,但它不替换已有的文档,只是将新数据附加在它的后面

Put

它与Get方法类似,用从客户端传送的数据取代指定文档中的内容,使客户可以向远程Web服务器传送网页等文件

Delete

请求服务器删除指定的页面

Options

允许客户端查看服务器的性能

Trace

用于测试允许客户端查看的消息回收过程

 经常使用的是Get和Post方法,当使用Get方法发出请求时,请求数据为空,所以此时的

HTTP请求行就由两部分组成:请求行和请求头信息,下面我们形象看看具体的HttP的实例:

当在浏览器中地址栏里面输入:www.cnblogs.com,此时我们相当于发出一个HTTP请求,

具体为:


并且从图中可以看出网页中含有图片脚本等文件时,客户端会继续与服务器发出请求,请

求所需要的图片和脚本文件。

 

补充:经一位朋友的留言中,在这里我补充下,现在通常是只建立一个TCP连接,通过

HTPP 请求头的Connetion字段来指明,当服务器收到附带有Connection: Keep-Alive的

请求时,它也会在响应头中添加一个同样的字段来使用Keep-Alive。这样一来,客户端和

服务器之间的HTTP连接就会被保 持,不会断开,(一些特殊情况除外)当客户端发送另

外一个请求时,就使用这条已经建立的连接。

 

下面介绍下请求头的信息:

Accept:表示客户端接收的数据类型。例如,Accept:text/html表示客户端可接收HTML类型的文本

User Agent:表示客户端软件类型

Referer:表示的是上一连接的url,如跳转到本页面的上一页面url。

 3.png

上图是一个通过Get方法把一个HTML文件下载到本例浏览器中显示的过程,当我们在博客

园主页面点登陆后输入用户名和密码后点确认按钮后,此时我们发出的HTTP的请求是通过

Post方法,下面是一个截图:


从图中可以看出, 通过Post方法发出的HTTP请求中有一个空行(空行后为请求数据),

而Get方法发出的请求中没有。

 

三、HTTP响应

 同样,Http响应也是由三部分组成:状态行,响应头和响应数据组成,Http响应格式如下:

状态行
响应头
<一个空行>
响应数据

状态行以HTTP版本号开始,后面跟着3为数字,代表响应代码,响应代码用来告诉客户端,

服务器是否产生了预期的响应。如HTTP/1.1 200 OK.

HTTP/1.1中定义五种响应代码:

1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求

具体响应代码的说明见下:


HTTP响应头用于服务器向客户端提供请求文档信息或服务端的状态信息,如图:

4.png


四、总结

到这里这篇文章也算是说完了,HTTP协议只是应用层中协议的其中之一,应用层还有其他的

一些协议,比如FTP(文件传输协议),SMTP(电子邮 件协议)等,这些协议在后面都会有所

介绍。后面一个专题打算应用HTTP协议的只是自定义一个简单的Web服务器来模拟我们平

常在浏览器中输入网址后发送 Http请求和服务器返回响应的过程。

5.png

复制链接 网友评论 收藏本文 关闭此页
上一条: C#中的TCP网络编程  下一条: 网络协议简介
夜鹰教程网成立于2008年,目前已经运营了将近 13 年,发布了大量关于 html5/css3/C#/asp.net/java/python/nodejs/mongodb/sql server/android/javascript/mysql/mvc/easyui/vue/echarts原创教程。 我们一直都在坚持的是:认证负责、一丝不苟、以工匠的精神来打磨每一套教程,让读者感受到作者的用心。我们默默投入的时间,确保每一套教程都是一件作品,而不是呆板的文字和视频! 目前我们推出在线辅导班试运营,模式为一对一辅导,教学工具为QQ。我们的辅导学科包括 java 、android原生开发、webapp开发、商城开发、C#和asp.net开发,winform和物联网开发、web前端开发,但不仅限于此。 普通班针对的是国内学员,例如想打好基础的大学生、想转行的有志青年、想深入学习的程序员、想开发软件的初学者或者业余爱好者等。 就业办针对即将毕业上岗的大四学生,或者打算转行的初级开发工程师。 留学生班针对的是在欧美、加拿大、澳洲、日本、韩国、新加坡等地留学的中国学子,目的是让大家熟练地掌握编程技能,按时完成老师布置的作业,并能顺利地通过考试。 详细咨询QQ:1416759661   夜鹰教程网  基于角色的权限管理系统(c-s/b-s)。
  夜鹰教程网  基于nodejs的聊天室开发视频教程
  夜鹰教程网  Git分布式版本管理视频教程
  夜鹰教程网  MVC+EasyUI视频教程
  夜鹰教程网  在线考试系统视频教程
  夜鹰教程网  MongoDB视频教程。
  夜鹰教程网 Canvas视频教程
  夜鹰教程网 报表开发视频教程
  热点推荐
在Windows系统下搭建SVN服务器
宽带连接速度慢
在iis下设置伪静态的规则和方法
Oralce 9i安装OID目录服务器说明
需要停止的windows 2003 server服…
.htaccess文件设置技巧16则
Apache SSL证书安装指南
linux下手工修改分区后的挂载
MSN服务器为什么不放置在中国境内…
自定义MIME类型 网络空间支持FLV
稳定的国外网站服务器对SEO排名没…
Windows下定期自动备份网站软件—…
实战讲解:从零开始配置Linux服务器…
IIS错误代码及其含义
服务器领域众“菜鸟”们的几个常见…
  最近更新
nodejs文件上传代码
nodejs如何设置允许跨域请求
npm 项目更换目录后无法启动
Git常用命令学习
Node.js 连接 MongoDB
Node.js JXcore 打包
Node.js 多进程详解
Node.js RESTful API
Node.js Express 框架 文件上传等…
Node.js Web 模块
Node.js 工具模块
Node.js GET/POST请求
Node.js 文件系统
Node.js 常用工具函数
Node.js 全局对象

关于我们 | 网站建设 | 技术辅导 | 常见问题 | 联系我们 | 友情链接

夜鹰教程网 版权所有 www.yyjcw.com All rights reserved 备案号:蜀ICP备08011740号3