1、HTTP 的请求处理过程是什么?
那个叫名称解析过程:
当客户端向DNS服务器发送请求,要求解析地址地址www.baidu.com时,将执行如下步骤:
1.为了查询www.baidu.com的IP地址,客户端发出请求并向所设置的DNS服务器发送递归查询。
2.若所设DNS服务器无法在其数据库中找到www.baidu.com的匹配项,则向根目录域的权威DNS发送迭代查询。
3.若根目录域权威DNS服务器也找不到www.baidu.com的匹配项,则以com域的权威DNS服务器的IP地址返回给1中的服务器。
4.1中的DNS服务器收到根目录域返回信息后,向com域的权威DNS服务器发送迭代查询。
5.若com域的权威DNS服务器也找不到www.baidu.com的匹配项,则以web.com域的权威DNS服务器的IP地址返回给1中的服务器。
6.1中的DNS服务器收到com域返回信息后,向web.com域的权威DNS服务器发送迭代查询。
7.若web.com域的权威DNS服务器在其数据库中找到了www.baidu.com的匹配项,则以www.baidu.com的IP地址返回给1中的服务器。
8.1中的DNS服务器收到web.com域返回信息后,将www.baidu.com的IP地址作为响应发送给客户端。
2、服务器如何处理http请求
1.需求
了解服务端如何处理http请求,了解基本的处理流程
2.实战
处理http请求分为7个步骤
2.1 Tcp连接
建立一条tcp链接,(若之前不存在持久链接keep-alive),把客户端的ip和port,服务端的ip和port数据放到web服务器连接表中。服务器随时监听链接表中的链接,看有没有数据变化
2.2 接收http请求
一旦我们发送http请求了,这条tcp链接就开始工作了。因为web服务器链接表中有许多链接需要被处理,处理的方式有单线程,多线程这些(这些涉及操作系统的知识)。
2.3 处理http请求
处理的过程大致是把请求的信息解析出来,如下图
2.4 访问资源
访问资源可以是访问静态资源,这个就直接根据url地址去服务器里找就好了。
访问动态资源的话要经过一个叫cgi的东西,再用服务端脚本处理,再返回给前端。如下图所示
2.5 构建响应
要是找到资源,则构建响应信息,包括响应的对象类型,长度,状态码。
另一个情况是重定向响应,就是直接返回一个重定向,客户端看到之后,立刻再向重定向的地址发起请求。重定向的响应的状态码一般是3xx。
2.6 发送响应
把构建的响应发送给客户端
2.7 记录日志
服务端对这个请求响应过程进行记录。(另外专门再讲)
3.总结
以上是服务端处理http请求的大致过程。能让大家有个大致轮廓,当然里面有很多细节的知识没讲到,要另外查询资料并学习
3、服务器工作原理是什么
服务器的工作原理就是通过网络对服务器进行连接,从连接过程、请求过程、应答过程以及关闭连接,这四个方面来达到数据连接、页面访问、权限管理等操作。
(3)服务器请求过程扩展资料:
服务器访问过程
1、连接过程
服务器和其浏览器之间所建立起来的一种连接。查看连接过程是否实现,用户可以找到和打开socket这个虚拟文件,这个文件的建立意味着连接过程这一步骤已经成功建立。
2、请求过程
浏览器运用socket这个文件向其服务器而提出各种请求。
3、应答过程
运用HTTP协议把在请求过程中所提出来的请求传输到服务器,进而实施任务处理,然后运用HTTP协议把任务处理的结果传输到浏览器,同时在浏览器上面展示上述所请求之界面。
4、关闭连接
就是当上一个步骤--应答过程完成以后,服务器和其浏览器之间断开连接之过程。
服务器上述4个过程环环相扣、紧密相联,逻辑性比较强,可以支持多个进程、多个线程以及多个进程与多个线程相混合的技术。
参考资料来源:网络--服务器
参考资料来源:网络--WEB服务器
4、浏览器与服务器间一次网页请求过程可以具体划分为哪些步骤
网页是通过http协议进行通信的,可以网络一下:http协议
5、主机a向主机b发起一个http请求并得到响应,请问这个过程中,会经历哪些步骤
不同协议的通信方式有不同的过程。
图书馆查资料比较好,ccie ccna ccnp等书里讲的很详细
http协议,3次握手
用户的点击导致浏览器发起建立一个与Web服务器的TCP连接;这里涉及·—次“三次握手”过程——首先是客户向服务器发送一个小的冗余消息,接着是服务器向客户确认并响应以一个小的TCP消息,最后是客户向服务器回确认。三次握手过程的前两次结束时,流逝的时间为1个RTT。此时客户把HTTP请求消息发送到TCP连接中,客户接着把三次握手过程最后一次中的确认捎带在包含这个消息的数据分节中发送以去。服务器收到来自TCP连接的请求消息后,把相应的HTML文件发送到TCP连接中,服务器接着把对早先收到的客户请求的确认捎带在包含该HTML文件的数据分节中发送出去。
FTP的工作方式FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTP服务器。Passive模式FTP的客户端发送 PASV命令到 FTP Server。
下面介绍一个这两种方式的工作原理:
Port模式
FTP 客户端首先动态的选择一个端口(一般是1024以上的)和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。
Passive模式
在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。
很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。
6、http 请求过程
HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:
1. 建立TCP连接
在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。
2. Web浏览器向Web服务器发送请求命令
一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令。例如:GET/sample/hello.jsp HTTP/1.1。
3. Web浏览器发送请求头信息
浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。
4. Web服务器应答
客户机向服务器发出请求后,服务器会客户机回送应答, HTTP/1.1 200 OK ,应答的第一部分是协议的版本号和应答状态码。
5. Web服务器发送应答头信息
正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。
6. Web服务器向浏览器发送数据
Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。
7. Web服务器关闭TCP连接
一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码:
Connection:keep-alive
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
7、Web服务器对来自浏览器的请求的处理过程
c/s(客户机/服务器)有三个主要部件:数据库服务器、客户应用程序和网络。服务器负责有效地管理系统的资源,其任务集中于:
1.数据库安全性的要求
2.数据库访问并发性的控制
3.数据库前端的客户应用程序的全局数据完整性规则
4.数据库的备份与恢复
客户端应用程序的的主要任务是:
1.提供用户与数据库交互的界面
2.向数据库服务器提交用户请求并接收来自数据库服务器的信息
3.利用客户应用程序对存在于客户端的数据执行应用逻辑要求
4.网络通信软件的主要作用是,完成数据库服务器和客户应用程序之间的数据传输。
三层C/S结构是将应用功能分成表示层、功能层和数据层三部分。
解决方案是:对这三层进行明确分割,并在逻辑上使其独立。
在三层C/S中, 表示层 是应用的用户接口部分,它担负着用户与应用间的对话功能。它用于检查用户从键盘等输入的数据,显示应用输出的数据。为使用户能直观地进行操作,一般要使用图形用户接口 (GUI),操作简单、易学易用。在变更用户接口时,只需改写显示控制和数据检查程序,而不影响其他两层。检查的内容也只限于数据的形式和值的范围,不包括有关业务本身的处理逻辑。
功能层 相当于应用的本体,它是将具体的业务处理逻辑地编入程序中。表示层和功能层之间的数据交往要尽可能简洁。
数据层 就是DBMS,负责管理对数据库数据的读写。DBMS必须能迅速执行大量数据的更新和检索。现在的主流是关系数据库管理系统 (RDBMS)。因此一般从功能层传送到数据层的要求大都使用SQL语言。
在三层或N层C/S结构中,中间件 (Middleware) 是最重要的部件。所谓中间件是一个用API定义的软件层,是具有强大通信能力和良好可扩展性的分布式软件管理框架。它的功能是在客户机和服务器或者服务器和服务器之间传送数据,实现客户机群和服务器群之间的通信。其工作流程是:在客户机里的应用程序需要驻留网络上某个服务器的数据或服务时,搜索此数据的C/S应用程序需访问中间件系统。该系统将查找数据源或服务,并在发送应用程序请求后重新打包响应,将其传送回应用程序。随着网络计算模式的发展,中间件日益成为软件领域的新的热点。中间件在整个分布式系统中起数据总线的作用,各种异构系统通过中间件有机地结合成一个整体。每个C/S环境,从最小的LAN环境到超级网络环境,都使用某种形式的中间件。无论客户机何时给服务器发送请求,也无论它何时应用存取数据库文件,都有某种形式的中间件传递C/S链路,用以消除通信协议、数据库查询语言、应用逻辑与操作系统之间潜在的不兼容问题。
三层C/S结构的优势主要表现在以下几个方面:
1.利用单一的访问点,可以在任何地方访问站点的数据库;
2.对于各种信息源,不论是文本还是图形都采用相同的界面;
3.所有的信息,不论其基于的平台,都可以用相同的界面访问;
4.可跨平台操作;
5.减少整个系统的成本;
6.维护升级十分方便;
7.具有良好的开放性;
8.系统的可扩充性良好;
9.进行严密的安全管理;
0.系统管理简单,可支持异种数据库,有很高的可用性。
8、HTTP协议中请求方法Get和Post的区别,从HTTP请求到服务端响应过程
1、HTTP请求概述
在前面有一篇文章对HTTP协议有详细的描述,这里就不再过多的做说明,只是简单的作为这篇文章的引子。
HTTP协议又被称为超文本传输协议,它的的设计目的是保证客户机与服务器之间的通信。HTTP 的工作方式是客户端与服务器之间的请求-应答协议。在客户端和服务器之间进行请求-响应时,有两个最基本的请求方式:GET 和 POST。
其中,GET请求表示从指定的资源请求数据,POST请求表示向指定的资源提交要被处理的数据。
2、HTTP请求格式
在HTTP请求中,首先是请求行,注意这里的请求行一定要放在最前面;其次,是请求头,英文表示为header;然后会空一行,紧接着就可以是请求的具体内容了,一般称之为请求体,request-body。给出一个图示如下:
3、GET请求与POST请求对比
GET请求与POST请求有一些异同点,主要有以下几点问题:
(1)、GET请求和POST请求都是客户端与服务器之间交互,请求--应答模式的协议
(2)、GET请求是通过URL直接请求数据,数据信息可以在URL中直接看到,比如浏览器访问;而POST请求是放在请求头中的,我们是无法直接看到的;
(3)、GET提交有数据大小的限制,一般是不超过1024个字节,而这种说法也不完全准确,HTTP协议并没有设定URL字节长度的上限,而是浏
览器做了些处理,所以长度依据浏览器的不同有所不同;POST请求在HTTP协议中也没有做说明,一般来说是没有设置限制的,但是实际上浏览器也有默认
值。总体来说,少量的数据使用GET,大量的数据使用POST。
(4)、GET请求因为数据参数是暴露在URL中的,所以安全性比较低,比如密码是不能暴露的,就不能使用GET请求;POST请求中,请求参数信息是放在请求头的,所以安全性较高,可以使用。在实际中,涉及到登录操作的时候,尽量使用HTTPS请求,安全性更好。
下面给出一副图示,说明一下HTTP中GET与POST请求的差异:
4、使用步骤:
在Android中使用HTTP请求,主要步骤如下:
(1)、实例化一个HttpGet(或HttpPost)对象,将请求的URL地址通过构造方法传给HttpGet(或HttpPost)对象;
(2)、使用DefaultHttpClient类的execute方法发送GET或POST 请求,并返回HttpResponse对象;
(3)、通过HttpResponse接口的getEntity方法返回响应信息。
5、实例代码
给出一个在实际应用中的一个POST请求的代码片段:
[java] view plain copy print?
params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("param1", "Post方法"));
params.add(new BasicNameValuePair("param2", "第二个参数"));
try {
HttpPost post = new HttpPost(baseUrl);
post.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //将参数填入POST Entity中
HttpResponse response = httpClient.execute(post); //执行POST方法
resCode = response.getStatusLine().getStatusCode()); //获取响应码
result = EntityUtils.toString(response.getEntity(), "utf-8")); //获取响应内容
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
6、HTTP请求状态码意义
HTTP请求中,主要有这样几个类型:1XX:表示信息提示,2XX:表示成功,3XX:表示重定向,4XX:表示客户端请求错误,5XX:表示服务器错误。常见的几个HTTP请求状态码意义如下:
200 OK: 找到了该资源,并且一切正常。
304 NOT MODIFIED: 该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制。
401 UNAUTHORIZED: 客户端无权访问该资源。这通常会使得浏览器要求用户输入用户名和密码,以登录到服务器。
403 FORBIDDEN: 客户端未能获得授权。这通常是在401之后输入了不正确的用户名或密码。
404 NOT FOUND: 在指定的位置不存在所申请的资源。
505 NOT SUPPORTED:服务器不支持请求中所指明的HTTP版本
9、从输入URL访问服务器,到获得相应的响应信息的全部过程
不知道楼主想了解哪个过程,了解到什么程度,我提供两个部分吧(1)如果在URL中使用域名,以 www.qq.com 为例,DNS名称解析过程: 当客户端向DNS服务器发送请求,要求解析地址地址 www.qq.com 时,将执行如下步骤: 1.为了查询 www.qq.com 的IP地址,客户端发出请求并向所设置的DNS服务器发送递归查询。 2.若所设DNS服务器无法在其数据库中找到 www.qq.com 的匹配项,则向根目录域的权威DNS发送迭代查询。 3.若根目录域权威DNS服务器也找不到 www.qq.com 的匹配项,则以com域的权威DNS服务器的IP地址返回给1中的服务器。 4.1中的DNS服务器收到根目录域返回信息后,向com域的权威DNS服务器发送迭代查询。 5.若com域的权威DNS服务器也找不到 www.qq.com 的匹配项,则以web.com域的权威DNS服务器的IP地址返回给1中的服务器。 6.1中的DNS服务器收到com域返回信息后,向web.com域的权威DNS服务器发送迭代查询。 7.若web.com域的权威DNS服务器在其数据库中找到了 www.qq.com 的匹配项,则以 www.qq.com 的IP地址返回给1中的服务器。 8.1中的DNS服务器收到web.com域返回信息后,将 www.qq.com 的IP地址作为响应发送给客户端。(2)URL种类很多啊,我这里以最常用的HTTP协议为例吧 在http传输的过程中,被称为客户端的请求者向服务器请求一个文件。 最基本的过程是: 1 客户端连接一个主机; 2 服务器接收连接, 3 客户端请求一个文件, 4 服务器发送一个应答. 实例:在浏览器上敲入“ http://www.maketop.net/resource/rs_041112_02.php ”.浏览器将连接 www.maketop.net 然后发送: >> GET /resource/rs_041112_02.php Http1.1 >> Host: www.maketop.net >> Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, >> Accept-Language: en >> Accept-Encoding: gzip, deflate >> User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10 >> Connection: Keep-Alive 解释:浏览器请求页面“/resource/rs_041112_02.php”。并使用HTTP1.1协议。并告诉服务器你的浏览器是Firefox0.10。操作系统是Windows XP。 浏览器希望保持与 www.maketop.net 之间的连接,并请求获得多的文件,包括网页中的图片。翻译成语言上面是: >> 用HTTP1.1协议获得 /resource/rs_041112_02.php >> 访问的主机是: www.maketop.net >> 接收的文件包括了: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, >> 使用的语言是: en >> 接收的编码方式(浏览器能够解释的)是: gzip, deflate >> 用户的浏览器信息:Windows XP的操作系统 Firefox/0.10的浏览器
10、服务器的原理,如何处理请求
问题挺多的。首先,你们老师说得已经非常简洁了,如果要更深层次,从内网(局域网,比如你们的校园网)发送数据出去就已经够写好几千字了,更别说还从内网说到外网。
服务器只是一个相对的概念,假如别人需要访问的网站在你的电脑上,你的电脑为别人服务,那么你的电脑相对于别人的电脑来说就是一台服务器。你输入网址之后,你就向服务器传送了数据,数据的传送分上传和下载,也是相对的,你想服务器传送数据,对于你而言是上传数据,对服务器而言就变成了下载数据;然后服务器把数据返回给你,这个过程服务器就变成了上传数据到你的电脑,而对于你而言,这个过程你在下载服务器的数据。
IIS和TOMCAT这些叫WEB容器。把网站放进容器里面,你才能访问到网站,假如服务器是老板,那么容器就是他们的秘书,他们会向老板汇报,并让老板分配工作。
初学者还是先慢慢来吧,先学好底层的各种协议。