ALBB面试题目自解一

来源:互联网 发布:js调用api接口代码 编辑:程序博客网 时间:2024/06/01 11:33

题目:简述Http协议,越多越好。(参考自:http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html)

1、OSI参考模型:OSI即Open System Interconnect的缩写,该模型将网络通信分为7层:物理层,数据链路层,网络层,传输层,会话层,表示层以及应用层。

2、Http协议与Tcp协议的关系:Http协议属于应用层的一种协议,Tcp属于的传输层的一个协议。Http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常常基于Tcp的连接方式。

3、(番外)Tcp协议与Udp协议的区别:Tcp(传输控制协议)是基于连接的协议,也就是说,在正式首发数据之前,必须和对方建立可靠的连接。一个Tcp连接必须经过三次“对话”才能建立起来,经过三次对话猴子猴,主机与主机之间才正式发送和接收数据。而Udp(User Data Protocol用户数据报协议)是与Tcp相对应的协议,它是面向非连接的协议。它不与对方建立连接而是直接就把数据发送过去。Udp适用于一次只传送少量数据,对可靠性要求不高的应用环境。比如,我们常常使用的ping命令的原理就是向对方的主机发送Udp数据包(在无法确定是否能建立连接的时候也常用Udp检测)

综上,Tcp面向连接、可靠、适用于传输大量数据、速度比较慢的通信协议;Udp面向非连接、不可靠、传输少量的数据、速度快的通信协议。

4、Http协议的主要特点:1)支持客户端/服务器模式2)简单快速:客户端向服务器请求服务的时候,只需要传送请求方法和路径,请求的方法常用的有GET/HEAD/POST。3)灵活:Http协议允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记。4)无连接,无连接的含义是限制每次连接只处理一个请求,服务器处理完客户的请求并收到客户的应答之后即断开连接,采用这种方式可以节省传输时间5)无状态:无状态是指协议对于事物处理没有记忆的能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重新传送,这样可能导致每次连接传送的数据量增大,另一方面,在服务器不需要先前信息时它的应答就比较快。

5、HTTP URL

URL是特殊类型的URI(URL绝对地址,URI相对地址)。HTTP URL的格式如:http://host[":"port][abs_path]。

6、Http请求:

Http请求由三部分组成,分别是:请求行、消息报头、请求正文

1)请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Method Request-URI HTTP-Version CRLF(请求方法+统一资源标识符+HTTP协议版本+回车和换行)

请求方法:GET/POST 在Request-URI所标识的资源后面附加新的数据

/HEAD请求获取由Request-URI所标识的资源的响应消息报头/

PUT请求服务器存储一个资源,并用Request-URI作为其标识

DELETE    TRACE请求服务器回送收到的请求信息,主要用于测试或者诊断

CONNECT 保留将来使用

OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求。

比如GET /form.html HTTP/1.1 (GRLF)

POST方法哟球被请求服务器接受附在请求后面的数据,常常用于提交表单。
比如:eg:POST /reg.jsp HTTP/ (CRLF)
Accept:image/gif,image/x-xbit,... (CRLF)
...
HOST:www.guet.edu.cn (CRLF)
Content-Length:22 (CRLF)
Connection:Keep-Alive (CRLF)
Cache-Control:no-cache (CRLF)
(CRLF)         //该CRLF表示消息报头已经结束,在此之前为消息报头
user=jeffrey&pwd=1234  //此行以下为提交的数据
此外:HEAD方法与GET方法几乎是一样的,对于HEAD请求的回应部分来说,它的HTTP头部包含的信息与通过GET所得到的信息是相同的。利用这个方法不必传输整个资源文件内容,就可以得到Request-URI所标识的资源的信息。该方法常用于测试超链接的有效性,是否可以访问以及最近是否更新。
7、HTTP协议:响应
在接收和解释请求消息之后,服务器就返回一个HTTP响应的消息。

HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文。

状态行:状态代码(此处略)

响应报头后述。响应正文就是服务器返回的资源的内容。

8、报头

HTTP消息由客户端到服务器的请求和服务器到客户端的相应组成。请求信息和响应信息都是由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行)、消息报头(可选),空行(只有CRLF)的行,消息正文(可选)组成。

HTTP消息报头包括了:普通报头、响应报头、请求报头、实体报头。每一个报头域都是由名字+“:”+空格+值组成,消息报头域的名字是大小写无关的。

1)普通报头:在普通报头中,有少数报头域用于所有的请求和响应消息,但是并不用于被传输的实体,只用于传输的消息。

比如:Cache-Control用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制)。请求时的缓存指令包括了no-cache.no-store.max-age.min-fresh.max-stale.only-if-cached

响应时的缓存指令包括了public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage

Date普通报头域表示消息产生的日期和时间

Connection普通报头域允许发送指定连接的选项,例如指定连接是连续,或者指定close选项,通知服务器,在响应完成后,关闭连接。

2)请求报头:

Accept请求报头域:用于指定客户端接受哪些类型的信息,比如Accept: image/gif表明客户端希望接受GIF图像格式的资源。Accept: text/html等等

Accept-Charset请求报头域用于指定客户端接受的字符集。如果在请求消息中没有设置这个域那么缺省地认为是任何字符集都可以接受。

Accept-Encoding/Accept-Language

Authorization请求报头域主要用于证明客户端有权查看某个资源,当浏览器访问一个页面的时候如果收到服务器的响应代码为401(未授权)可以发送一个包含Authorization请求报头域的请求,要求服务器对其进行验证。

Host请求报头域主要用于指定被请求资源的Internet主机和端口号,这常常从HTTP URL中提取出来。

User-Agent请求报头域允许客户端将它的操作系统、浏览器和其他属性告诉服务器。如果我们自己编写一个浏览器,不使用User-Agent请求报头域,那么服务器就无法得知我们的信息了。

3)响应报头

响应报头允许服务器传递不能放在状态行的附加响应信息,以及服务器的信息和对Request-URL所标识的资源进行下一步访问的信息。常用的响应报头:

Location响应报头域用于重定向接受者到一个新的位置。Location响应报头域常用在更换域名的时候。

Server响应报头域包含了服务器用来处理请求的软件纤细,与User-Agent请求报头域是相对应的。

4)实体报头

请求和响应消息都可以传送一个实体,一个实体由实体报头域和实体正文组成,但并不是说实体报头域要和实体正文在一起发送,可以只发送实体报头域,实体报头定义了关于实体正文和请求所标识的资源的原信息。

Content-Encoding/Content-Language

Content-Length实体报头域用于指明实体正文的长度,以字节方式存储的十进制数字来表示。

Content-Type实体报头域用于指明发送给接受者的实体正文的额媒体类型。

Last-Modified实体报头域用于指示资源的最后修改日期和时间。Expires实体报头域给出响应过期的日期和时间,为了让代理服务器或者浏览器在一段时间以后更新缓存中的页面,我们可以使用Expires实体报头域指定页面过期的时间。

原创粉丝点击