您的位置:首页 > 理论基础 > 计算机网络

HTTP详解--Http协议(三)

2017-06-17 09:36 113 查看

一.什么是http协议?

1.约定客户端和服务器端之间的通信格式,只有约定了格式,两者才能互相交流,这就是HTTP协议。可以区分哪端是客户端,哪端是服务器端。
协议规定:请求从客户端发出,最后服务器端响应该请求并返回;
服务器端在没有接收到请求之前不会发出响应。



  
2.注意浏览器与服务器相互通信时,传输的报文头,使用的就是HTTP协议;



客户端发送给某个HTTP服务器端的请求报文中的内容:

GET /index.htm HTTP/1.1 Host:hackr.jp

GET:表示请求访问服务器的类型,称为方法;

index.htm:指明了请求访问的资源对象,也称请求URI;

HTTP1.1:HTTP版本号,用来提示客户端使用的HTTP协议功能;

3.http协议的底层:
(1)tcp/ip协议:关注的是客户端与服务器之间数据是否传输成功
(2)http协议:是在tcp/ip协议之前封装的一层协议。关注的是数据传输的格式是否规范
(3)B/S的底层从某种意义上来讲,也就是C/S
  

二.查看http协议的工具

1.使用火狐的firebug插件(右键->firebug->网络)
2.使用谷歌,右键-->"审查元素"(NetWork选项)
3.使用系统自带的telnet工具(远程访问工具)
(0)运行-->cmd



  



成功启动提示

(1)telnet localhost 8080 访问tomcat服务器,这一步执行过后,窗口什么也不显示,也无法输入文字
(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地址



3.如果不是访问特定资源而是对服务器本身发起请求,可以用一个*来代替请求URI。
示例:查询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