HTTP详解--Http协议(三)
2017-06-17 09:36
197 查看
一.什么是http协议?
1.约定客户端和服务器端之间的通信格式,只有约定了格式,两者才能互相交流,这就是HTTP协议。可以区分哪端是客户端,哪端是服务器端。协议规定:请求从客户端发出,最后服务器端响应该请求并返回;
服务器端在没有接收到请求之前不会发出响应。
2.注意浏览器与服务器相互通信时,传输的报文头,使用的就是HTTP协议;
客户端发送给某个HTTP服务器端的请求报文中的内容:
GET /index.htm HTTP/1.1 Host:hackr.jp |
GET:表示请求访问服务器的类型,称为方法; index.htm:指明了请求访问的资源对象,也称请求URI; HTTP1.1:HTTP版本号,用来提示客户端使用的HTTP协议功能; |
(1)tcp/ip协议:关注的是客户端与服务器之间数据是否传输成功
(2)http协议:是在tcp/ip协议之前封装的一层协议。关注的是数据传输的格式是否规范
(3)B/S的底层从某种意义上来讲,也就是C/S
二.查看http协议的工具
1.使用火狐的firebug插件(右键->firebug->网络)2.使用谷歌,右键-->"审查元素"(NetWork选项)
3.使用系统自带的telnet工具(远程访问工具)
(0)运行-->cmd
成功启动提示 |
(2)ctrl+] 回车 可以看到回显
(3)输入请求内容
例:
GET /day09/hello HTTP/1.1
Host: localhost:8080
三.http协议内容:
1.请求(浏览器-》服务器):1)客户端先通过一个URL发起一个请求,该请求经过DNS服务后,请求到达了URL的域名对应的IP地址。拿到完整的信息后,HTTP协议把请求包装成HTTP请求的报文。
2)HTTP在交互的过程中传输层使用的TCP协议,网络层使用的是IP协议,将信息层层加首部分包后发送出去。图示:
3)请求报文示例:
2.响应(服务器-》浏览器):
1)服务端收到包后,经过和客户端分包的反向过程,还原原来的报文信息。
2)响应报文示例:
HTTP/1.1:HTTP对应的版本号; 200OK:状态码和原因短语; 下一行显示了创建响应的日期时间,是首部字段内的一个属性; 紧跟一个空行; 空行之后的内容是资源实体的主体; |
四.HTTP是不保存状态的协议
1.HTTP是无状态协议;HTTP协议自身不对请求和响应之间的通信状态进行保存。2.每当有新的请求发送时,就会有对应的新响应产生。协议本身并不保留之前一切的请求或响应报文的信息。这是为了更快地处理大量事务,确保协议的可伸缩性;
2.1HTTP/1.1是无状态的。为了实现保存状态功能,引入了Cookie技术
五.请求URI定位资源
1.HTTP协议使用URI定位互联网上的资源;2.当客户端请求访问资源而发送请求时,URI需要将作为请求报文中的请求URI包含在内。
在首部字段Host中写明网络域名或IP地址 |
示例:查询HTTP服务器端支持的HTTP方法种类
六.持久连接节省通信量
1.HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接;这样会造成无谓的TCP连接建立和断开,增加通信量的开销;2.持久连接
2.1 作用:只要任意一端没有明确提出断开连接,则保持TCP连接状态;
(1)这样做减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。减少开销的时间也使Web页面的显示速度提高了;
(2)HTTP/1.1默认采用持久连接,HTTP/1.0并未标准化。
(3)除了服务器端,客户端也需要支持持久连接;
3.管线化
3.1 在没有管线话之前,发送请求后需等待并收到响应。管线话技术出现后,不用等待响应亦可直接发送下一个请求;这样就可以发送多个请求;
七.http的几个关键名词
1.连接(Connection):浏览器和服务器之间传输数据的通道。 一般请求完毕就关闭,HTTP不保持连接。不保持连接会降低处理速度,保持连接的话就会降低服务器的处理的客户端并发请求数,而不保持连接服务器可以处理更多的请求注意:
两者之间通信,是靠socket进行传输,但传输的格式是使用HTTP协议规定的
2.请求(Request):浏览器向服务器发送的"我要***"的消息,包含请求的类型,请求的数据,浏览器的信息(语言,浏览器版本等)
3.响应(Response):服务器对浏览器请求的返回的数据,包含是否成功,错误码等,浏览器不知道服务器内部发生了什么,也不知道服务器内部是输出一个静态文件还是经过了java代码的运算动态输出的;
4.处理(Process):请求过去后,服务器响应处理,最后返回给浏览器
5.DNS(Domain Name System, 域名系统):因为IP地址的记忆实在是反人类,而域名机器识别不了,所以有了DNS将二者自由转换。
相关文章推荐
- HTTP协议状态码详解(HTTP Status Code)
- HTTP协议状态码详解(HTTP Status Code)
- HTTP协议状态码详解(HTTP Status Code)
- HTTP协议状态码详解(HTTP Status Code)
- HTTP协议状态码详解(HTTP Status Code)
- HTTP协议状态码详解(HTTP Status Code)
- [Android进阶]之基于HTTP协议的通信详解--是时候了解http了
- Java____HTTP协议详解(web client通过http与service通信)
- HTTP协议状态码详解(HTTP Status Code)
- HTTP协议状态码详解(HTTP Status Code)
- HTTP协议状态码详解(HTTP Status Code)
- HTTP协议状态码详解(HTTP Status Code)
- HTTP协议状态码详解(HTTP Status Code)
- HTTP协议报文、工作原理及Java中的HTTP通信技术详解
- HTTP协议状态码详解(HTTP Status Code)
- HTTP协议状态码详解(HTTP Status Code)
- HTTP协议状态码详解(HTTP Status Code)
- HTTP协议状态码详解(HTTP Status Code)
- HTTP协议状态码详解(HTTP Status Code)
- HTTP协议状态码详解(HTTP Status Code)