我觉得之前的内容跨度相对比较大,很多概念性东西对于刚入门的人来说云里雾里,本篇内容为网络协议方面做一下补充,为后面的实战再打一下基础。
后面我们主要介绍HTTP协议的URL、HTTP请求、HTTP响应、HTPP报头以及通讯过程等。
HTTP 是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
HTTP 协议的主要特点可概括如下:
http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于 TCP 的连接方式。
HTTP URL (URL 是一种特殊类型的 URI,包含了用于查找某个资源的足够的信息)的格式如下:
http://host[":"port][abs_path]
http 表示要通过 HTTP 协议来定位网络资源;host 表示合法的 Internet 主机域名或者 IP 地址 ;
port 指定一个端口号,为空则使用缺省端口 80;
abs_path 指定请求资源的 URI;如果 URL 中没有给出 abs_path,那么当它作为请求 URI 时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。
http 请求由三部分组成,分别是:请求行、消息报头、请求正文。
1、请求行
他以一个方法符号开头,以空格分开,后面跟着请求的 URI 和协议的版本,格式如下:Method Request-URI HTTP-Version CRLF
请求方法(所有方法全为大写)有多种,各个方法的解释如下:
GET 请求获取 Request-URI 所标识的资源
POST 在 Request-URI 所标识的资源后附加新的数据
HEAD 请求获取由 Request-URI 所标识的资源的响应消息报头
PUT 请求服务器存储一个资源,并用 Request-URI 作为其标识
DELETE 请求服务器删除Request-URI 所标识的资源
TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
2、消息报头
HTTP消息报头包括普通报头、请求报头、响应报头、实体报头。
3、请求正文
请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:
username=jinqiao&password=1234
在以上的例子的HTTP请求中,请求的正文只有一行内容。当然,在实际应用中,HTTP请求正文可以包含更多的内容。
在接收和解释请求消息后,服务器返回一个 HTTP 响应消息。
HTTP 响应由三个部分组成,分别是:状态行、消息报头、响应正文。
1、状态行格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
其中,HTTP-Version 表示服务器 HTTP 协议的版本;Status-Code 表示服务器发回的响应状态代
码;Reason-Phrase 表示状态代码的文本描述。
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息–表示请求已接收,继续处理
2xx:成功–表示请求已被成功接收、理解、接受
3xx:重定向–要完成请求必须进行更进一步的操作
4xx:客户端错误–请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求
2、响应报头后述
3、响应正文就是服务器返回的资源的内容
HTTP 消息由客户端到服务器的请求和服务器到客户端的响应组成。请求消息和响应消息都是由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行),消息报头(可选),空行(只有 CRLF 的行),消息正文(可选)组成。
HTTP 消息报头包括普通报头、请求报头、响应报头、实体报头。每一个报头域都是由名字+“:”+空格+值 组成,消息报头域的名字是大小写无关的。
1、普通报头
在普通报头中,有少数报头域用于所有的请求和响应消息,但并不用于被传输的实体,只用于传输的消息。
响应时的缓存指令包括:public、private、no-cache、no-store、no-transform、
must-revalidate、proxy-revalidate、max-age、s-maxage.
为了指示 IE 浏览器(客户端)不要缓存页面,服务器端的 JSP 程序可以编写如下:
response.sehHeader("Cache-Control","no-cache");
//response.setHeader("Pragma","no-cache");
作用相当于上述代码,通常两者//合用
2、请求报头
请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。
常用的请求报头
3、响应报头
4、实体报头
请求和响应消息都可以传送一个实体。一个实体由实体报头域和实体正文组成,但并不是说实体报头域和实体正文要在一起发送,可以只发送实体报头域。实体报头定义了关于实体正文和请求所标识的资源的元信息。
常用的实体报头
高层协议有:文件传输协议 FTP、电子邮件传输协议 SMTP、域名系统服务 DNS、网络新闻传输协议NNTP 和 HTTP 协议等
中介由三种:代理(Proxy)、网关(Gateway)和通道(Tunnel),一个代理根据 URI 的绝对格式来接受请求,重写全部或部分消息,通过 URI 的标识把已格式化过的请求发送到服务器。网关是一个接收代理,作为一些其它服务器的上层,并且如果必须的话,可以把请求翻译给下层的服务器协议。一 个通道作为不改变消息的两个连接之间的中继点。当通讯需要通过一个中介(例如:防火墙等)或者是中介不能识别消息的内容时,通道经常被使用。
代理(Proxy):一个中间程序,它可以充当一个服务器,也可以充当一个客户机,为其它客户机建立请求。请求是通过可能的翻译在内部或经过传递到其它的 服务器中。一个代理在发送请求信息之前,必须解释并且如果可能重写它。代理经常作为通过防火墙的客户机端的门户,代理还可以作为一个帮助应用来通过协议处 理没有被用户代理完成的请求。
网关(Gateway):一个作为其它服务器中间媒介的服务器。与代理不同的是,网关接受请求就好象对被请求的资源来说它就是源服务器;发出请求的客户机并没有意识到它在同网关打交道。
网关经常作为通过防火墙的服务器端的门户,网关还可以作为一个协议翻译器以便存取那些存储在非HTTP 系统中的资源。
通道(Tunnel):是作为两个连接中继的中介程序。一旦激活,通道便被认为不属于 HTTP 通讯,尽管通道可能是被一个HTTP请求初始化的。当被中继 的连接两端关闭时,通道便消失。当一个门户(Portal)
必须存在或中介(Intermediary)不能解释中继的通讯时通道被经常使用
the end
q.q暂时就补充到这里吧= =
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有