仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 687|回复: 8
打印 上一主题 下一主题

[学习教程] NET网页编程之C#收集编程系列专题二:HTTP协定详解

[复制链接]
不帅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:20:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你觉得数据库怎么样?我们在用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协定的先容吧。

1、HTTP协定的简介
HTTP中文为超文本传输协定,从名字上很简单了解,Http协定就是将超文本标志言语的文档(即Html文档)从web服务传送到客户真个扫瞄器。它属于一个使用层的协定。

2、收集的事情历程
当用户要会见收集中的某个网页时,大抵要经由以下几个步骤:
1.用户起首要断定网页文件地点的URL(一致资本定位符,也就是网页在收集上的家庭住址,经由过程这个地点就能够找到这个网页)如www.lmwlove.com。
2.扫瞄器向DNS(域名服务器)收回哀求,告知DNS说:"我要把www.lmwlove.com转化为它所界说的IP地点",这里能够复杂把DNS了解为一个字典,晓得域名就能够晓得域名关于的IP地点,他们有这个一个映照的干系。
3.DNS收到哀求后就入手下手查询,查到后向扫瞄器前往了局。如域名为www.lmwlove.com对应的IP地点为61.155.169.116。
4.晓得IP地点后,扫瞄器向IP地点为61.155.169.116的主机收回与端标语80倡议一条TCP毗连哀求(HTTP协定是创建在传输层TCP的基本上的),80端口是服务器供应web服务的默许端口。
5.创建毗连后,扫瞄器收回一条HTTP哀求,如GEThttp://www.lmwlove.com/HTTP/1.1
6.当域名为www.lmwlove.com的服务器承受到哀求后,向扫瞄器发送一个html文件。
7.文件发送完后,由服务器自动封闭TCP毗连。
8.扫瞄器吸收传送来的页面并显现。
9.假如Html文件中包括图片,还要与服务器再次创建一个TCP毗连,以即可以下载图片。

下面先容的步骤中,扫瞄器收回一个哀求后,怎样把一个服务器上的HTML文档下载到哀求网页的主机上呢?这个历程就是由HTTP完成,即完成超文本文件的传送,HTTP协定是web服务器的基本。

2、HTTP哀求
Http哀求由三部分构成:哀求行、哀求头和哀求数据,一个HTTP哀求的格局一样平常以下:
哀求办法URLHTTP版本号哀求头信息<一个空行>哀求数据
HTTP哀求的办法以下表:
办法形貌Get前往URL所指的文档,一样平常用来哀求下载Web网页Head哀求文档头,它相似Get办法,只是Web服务器前往指定文档的首部信息Post它与Get办法相反,哀求服务器承受指定文档,但它不交换已有的文档,只是将新数据附加在它的前面Put它与Get办法相似,用从客户端传送的数据代替指定文档中的内容,使客户能够向远程Web服务器传送网页等文件Delete哀求服务器删除指定的页面Options同意客户端检察服务器的功能Trace用于测试同意客户端检察的动静接纳历程
常常利用的是Get和Post办法,当利用Get办法收回哀求时,哀求数据为空,以是此时的HTTP哀求行就由两部分构成:哀求行和哀求头信息,上面我们抽象看看详细的HttP的实例:
当在扫瞄器中地点栏内里输出:www.ckuyun.com,此时我们相称于收回一个HTTP哀求,详细为:


而且从图中能够看出网页中含有图片剧本等文件时,客户端会持续与服务器收回哀求,哀求所必要的图片和剧本文件。

增补:经一名伴侣的留言中,在这里我增补下,如今一般是只创建一个TCP毗连,经由过程HTPP哀求头的Connetion字段来指明,当服务器收到附带有Connection:Keep-Alive的哀求时,它也会在呼应头中增加一个一样的字段来利用Keep-Alive。如许一来,客户端和服务器之间的HTTP毗连就会被坚持,不会断开,(一些特别情形除外)当客户端发送别的一个哀求时,就利用这条已创建的毗连。

上面先容下哀求头的信息:
Accept:暗示客户端吸收的数据范例。比方,Accept:text/html暗示客户端可吸收HTML范例的文本
UserAgent:暗示客户端软件范例
Referer:暗示的是上连续接的url,如跳转到本页面的上一页面url。

上图是一个经由过程Get办法把一个HTML文件下载到本例扫瞄器中显现的历程,当我们在博客园主页面点上岸后输出用户名和暗码后点确认按钮后,此时我们收回的HTTP的哀求是经由过程Post办法,上面是一个截图:

从图中能够看出,经由过程Post办法收回的HTTP哀求中有一个空行(空行后为哀求数据),而Get办法收回的哀求中没有。

3、HTTP呼应
一样,Http呼应也是由三部分构成:形态行,呼应头和呼应数据构成,Http呼应格局以下:
形态行呼应头<一个空行>呼应数
形态行以HTTP版本号入手下手,前面随着3为数字,代表呼应代码,呼应代码用来告知客户端,服务器是不是发生了预期的呼应。如HTTP/1.1200OK.

HTTP/1.1中界说五种呼应代码:
1xx:唆使信息--暗示哀求已吸收,持续处置
2xx:乐成--暗示哀求已被乐成吸收、了解、承受
3xx:重定向--要完成哀求必需举行更进一步的操纵
4xx:客户端毛病--哀求有语法毛病或哀求没法完成
5xx:服务器端毛病--服务器未能完成正当的哀求

详细呼应代码的申明见下:

HTTP呼应头用于服务器向客户端供应哀求文档信息或服务真个形态信息,如图:

4、总结
到这里这篇文章也算是说完了,HTTP协定只是使用层中协定的个中之一,使用层另有其他的一些协定,好比FTP(文件传输协定),SMTP(电子邮件协定)等,这些协定在前面城市有所先容。前面一个专题盘算使用HTTP协定的只是自界说一个复杂的Web服务器来摹拟我们寻常在扫瞄器中输出网址后发送Http哀求和服务器前往呼应的历程。简单的说:.net只有微软一家在做的,微软也不允许别人跟他做相同的工具,所以他就把需要的工具全部封装在.net的平台上了;而java是公开了。
再现理想 该用户已被删除
沙发
发表于 2015-1-18 13:10:16 | 只看该作者
ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。
只想知道 该用户已被删除
板凳
发表于 2015-1-26 14:43:56 | 只看该作者
比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。
因胸联盟 该用户已被删除
地板
发表于 2015-2-4 20:19:43 | 只看该作者
但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。
变相怪杰 该用户已被删除
5#
发表于 2015-2-10 07:00:15 | 只看该作者
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
6#
发表于 2015-3-1 03:35:19 | 只看该作者
逐步缩小出错代码段的范围,最终确定错误代码的位置。
海妖 该用户已被删除
7#
发表于 2015-3-10 12:47:32 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
再见西城 该用户已被删除
8#
发表于 2015-3-17 07:14:34 | 只看该作者
虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。
深爱那片海 该用户已被删除
9#
发表于 2015-3-24 02:54:13 | 只看该作者
Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-16 20:24

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表