您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > JavaWeb笔记02HTTP协议
1JavaWeb笔记02HTTP协议Http(HypertextTransferProtocol)超文本传输协议,从1990年就开始在上广泛应用,是如今在上应用最多的协议,目前版本为1.1。Http协议是一个基于请求/响应模式的,无状态的协议。(request/responsebased,statelessprotocol)-------------------------------------------------------------------------------------------------------Http1.0Browser/Server通信过程:缺点是:如果客户发起连接后,发出一个请求,请求得到响应后,html页面被传到客户端,服务器关闭。因为html里面可能有关于css的样式引用或者是图片的连接,在浏览器解析html文件的时候就会遇到这样的连接,这时候有多少个这样的东西就有要建立多少个连接,就要不断地建立连接和关闭连接,这样才能将页面的信息完全显示出来。Http1.1Browser/Server通信过程:在http1.0的基础上改进其缺点,就是建立一次连接,这是连接不关闭,如果再有其他的连接,这时候由于已经建立了连接,只需要发送请求即可,这样大大的减少了连接数,提高通信效率。但是不能一直不关闭第一次建立的连接,这是服务器端应该有一种机制就是如果在几秒的时间内一直没有接到请求的响应,那么服务器端就关闭连接。-------------------------------------------------------------------------------------------------------浏览器也服务器连接的一般过程:2ServerSocketserverSocket=newServerSocket(80);serverSocket.accept();(浏览器自动加上)DNS(DomainNameServer)221.179.180.20:80Socketsocket=newSocket(221.179.180.20,80);请求客户端通过发送HTTP请求向服务器请求对资源的访问。HTTP请求由三部分组成,分别是:请求行,消息报头,请求正文。请求行以一个方法符号开头,后面跟着请求的URI(UniversalResourceIdentifier)统一资源标示符和协议的版本,以CRLF结尾。请求行以空格分隔。除了作为结尾的CRLF外,不允许出现单独的CR或LF字符,格式如下:MethodRequest-URIHTTP-VersionCRLFMethod表示请求的方法,Request-URI是一个统一资源标识符,标识了要请求的资源,HTTP-Version表示请求的HTT协议的版本,CRLF表示回车换行。例如:GET/test.htmlHTTP/1.1(CRLF)HTTP常用的方法如表1表1HTTP常用的方法方法作用GET请求获取Request-URI所标识的资源POST在Request-URI所标识的资源后附加新的数据HEAD请求获取由Request-URI所标识的资源响应消息报头3GET方法用于获取Request-URI所标识的资源信息,常见的形式是:GETRequest-URIHTTP/1.1当我们通过浏览器的地址栏直接输入网址的方式去访问网页的时候,浏览器采用的就是GET方法向服务器获取资源。POST方法用于向服务器发送请求,要求服务器接收附加在请求后面的数据。POST方法在表单提交的时候用的最多,这里以后会用到,在这里简单描述一下。HEAD方法与GET方法几乎是一样的,他们的区别在于HEAD方法是请求消息的报头,而不是完整的内容。对于HEAD请求的回应部分来说,他的HTTP头部中的包含的信息与通过GET请求所得到的信息是相同的。利用这个方法不必传整个资源的内容,就可以得到Request-URI所标识的资源的信息。通过这个方法通常用于测试超链接的有效性,是否可以访问,以及最近是否有更新等。注意:在HTML文档中,书写get和post,不区分大小写,但是在HTTP协议中GET和POST只能是大写的形式。-------------------------------------------------------------------------------------------------------HTTP响应在接受和解释请求消息后,服务器会返回一个HTTP响应消息。与HTTP请求类似,HTTP响应也是由三个部分组成,分别是:状态行,消息报头,响应正文。状态行由协议的版本,数字形式的状态码,相应的状态描述组成,各个元素之间以空格分割,除了结尾的CRLF(回车换行)序列外,不允许出现CR或LF字符。格式如下:HTTP-VersionStatus-CodeReason-PhraseCRLFHTTP-Version表示服务器HTTP协议的版本,Status-Code表示服务器发回的响应代码,Reason-Phrase表示状态码对应的文本描述,CRLF表示回车换行,例如:4HTTP/1.1200OK(CRLF)状态码由三位数字组成,表示请求是否被理解或被满足,状态描述给出了关于状态代码的简短文本描述。状态代码的第一个数字定义了响应的类别,后面的两个数字没有具体的分类。第一个数字有五种可能的取值:1**:指示信息—表示请求已经接受,继续处理2**:成功—表示请求已经被成功接受,理解,接受3**:重定向—要完成请求必须进行更进一步的操作4**:客户端错误—请求有语法错误或请求无法实现5**:服务器端错误—服务器未能实现合法的请求表2常出现的状态代码及代码描述状态代码状态描述说明200OK客户请求成功400BadRequest由于客户端请求有语法错误,不能被服务器所理解401Unauthorized请求未经授权,这个状态码必须和服务器收到请求,但是拒绝提供服务,服务器会在响应正文中提出不提供服务的原因404NotFound请求资源不存在,例如:输入了错误的URL500InternalServerError服务器发生了不可预期的错误,导致无法完成客户请求503ServiceUnavailable服务器当前不能处理客户端的请求,在一段时间可能恢复正常5-------------------------------------------------------------------------------------------------------HTTP消息HTTP消息是由客户端到服务器的请求和服务器到客户端的响应组成。请求消息和响应消息都是由开始行,消息报头(可选),空行(只要CRLF的行),消息正文(可选项)组成。对于请求消息,开始行就是请求行,对于响应消息开始行就是状态行。-------------------------------------------------------------------------------------------------------实验实验工具:TelnetHTTP协议和Telnet协议都是基于TCP的协议。通过实验更加了解HTTP协议的底层工作,因为我们在浏览器输入域名的时候,浏览器把下层的命令屏蔽掉了,所以我们通过Telnet连接端口,通过GET和HEAD命令演示HTTP的工作过程。实验环境:Windows7Windows7默认不安装Telnet服务,首先“开始”—“控制面板”—“程序和功能”—左栏的“打开或关闭Windows功能”—勾选“Telnet服务器和Telnet客户端”—单击“确定”。然后在“开始”中我们平时输入cmd命令的地方,输入services.msc然后确定,找到Telnet看服务是否被禁用,如果禁用打开此服务,这样就准备好了。打开命令行窗口,输入telnet默认端口进入新浪是不可能的,所以我们改成80端口。因为Telnet端口打开后默认是看不见字的,即使你输入也看不到,他不是显示的,还有这个界面当你一段时间不动的话,服务器端会自动关闭的,我们采用在记事本上输入命令,然后再复制上去,然后执行。程序运行截图如下:61.输入telnet命令。2.回车确定后显示的画面,这个界面如果一段时间不动,会自动会被关闭。3.提前在记事本上准备好命令。4.将第一段粘贴上去,回车两次,第一次:确定输入完毕;第二次:发送命令。5.从4可以看出粘贴上去是看不到的,两次回车后得到该网页的html文件。我们得到了整个网页的文件,所以比较大。显示完毕后连接就被关闭了。76.将第二段粘贴上去,回车两次,得到头信息。可见,新浪网使用的的HTTP1.0协议状态码200状态描述OK,由于协议的版本作用,所以连接被立即关闭。-------------------------------------------------------------------------------------------------------
本文标题:JavaWeb笔记02HTTP协议
链接地址:https://www.777doc.com/doc-2878472 .html