简介
超文本传输协议(HyperText Transfer Protocol,HTTP)是一个标准,定义了Web客户端如何与服务端对话,以及数据如何从服务器传回客户端!
HTTP协议
HTTP是Web浏览器和Web服务器之间通信的标准协议。HTTP指定客户端与服务器如何建立连接、客户端如何从服务器请求数据,服务器如何响应请求,以及最后如何关闭连接。HTTP连接使用TCP/IP来传输数据。对于从客户端到服务器的每一个请求,都有4个步骤:
- 默认情况下,客户端在端口80打开与服务器的一个TCP连接,URL中还可以指定其他端口;
- 客户端向服务器发送消息,请求指定路径上的资源;
- 服务器向客户端发送响应;
- 服务器关闭连接
每个请求和响应都有同样的基本形式:一个首部行、一个包含元数据的HTTP首部、一个空行,然后是一个消息体:
一旦服务器看到这个空行,它就开始通过同一个连接向客户端发送它的响应:
所请求的资源:
响应码
不论哪个版本,响应码:
- 100到199总表示一个提供信息的响应;
- 200到299总指示成功;
- 300到399表示重定向;
- 400到499总是表示一个客户端错误;
- 500到599总表示一个服务器错误;
Keep-Alive
HTTP1.0会为每个请求打开一个新连接。实际上,一个典型Web会话中打开和关闭所有连接所花费的时间远远大于实际传输数据的时间。
在HTTP1.1和以后版本中,服务器不必在发送响应后就关闭连接。可以保持连接打开,在同一个socket上等待来自客户端的新请求。可以在一个TCP连接上连续发送多个请求和响应。
客户可以在HTTP请求首部中包括一个Connection字段,指定值为keep-alive,指示它希望重用一个socket:
Connection: keep-alive
URL类透明地支持HTTP Keep-Alive,除非显式地关闭这个特性。可以利用多个系统属性来控制Java如何使用HTTP Keep-Alive:
HTTP方法
主要有4个HTTP方法:
- GET:获取一个资源的表示;
- POST:将资源的一个表示上传到已知URL服务器,但是没有指定服务器如何处理这个新提供的资源;
- PUT:将资源的一个表示上传到已知URL服务器;
- DELETE:从一个指定的URL删除一个资源;
请求主体
请求的基本形式:
- 一个起始行,包括方法、路径和查询字符串,以及HTTP版本;
- 一个HTTP首部;
- 一个空行;
- 主体;
一般来说,主体可以包含任意的字节。不过,HTTP首部要包括两个字段来指定主体的性质:
- Content-Length字段:指定主体中有多少字节;
- Content-Type:指定类型的MIME媒体类型;
Cookie
很多网站使用一些小文本串在连接之间存储持久的客户端状态,这些小文本串称为cookie。cookie在请求和响应的HTTP首部,从服务器传递到客户端,再从客户端传回服务器。服务器使用cookie来指示会话ID、购物车内容、用户首选项等;
HTTP请求首部行中的Cookie行:
以上只是学习所做的笔记!!!
书籍:Java网络编程