1.人与人的对话其实也是在交换数据,电脑与电脑的通信也是在交换数据,人与人说话根据具体情况有时候需要说英语,有时候需要说中文,电脑与电脑也有要根据应用场景选取特定的协议,而我们上网用的最多的就是Http协议,还有FTP,SMTP等等。
HTTP(Hypertext Transfer Protocal)是超文本传输协议,基于请求/响应模式的,无状态的协议,是利用传输层的TCP协议完成工作的。客户端首先发起连接,然后向服务器发送请求(服务器一直在等待客户端的连接),服务器对这个请求进行处理,然后将结果返回到客户端,并且关闭连接。设计HTTP协议最初的目的就是为了提供一种发布和接收HTML页面的方法。
HTTP1.1和HTTP1.0的最大不同是提供了持续连接机制(Persistent Connections),在服务器将响应信息返回到客户端,并不是马上关闭连接,这是客户端可以继续发送请求,节省了网络连接的开销。而且要注意通常我们向服务器发送了一个请求,服务器返回一段html代码,当读到有图片或者视频的时候会又再次向服务器发送请求获取图片或视频,没获取一种资源,就要建立一次连接的话,增加了HTTP服务器的开销,造成了网络上的信息阻塞。
2.URL与URI
URI(Uniform Resuource Identifier) 统一资源标识符,是一个用于标识某一互联网资源名称的字符串。,URL(Uniform Resuource Locator)统一资源定位符,是一种特殊类型的URI,它包含了用于查找某个资源的足够信息【协议名://主机名:端口号/资源路径】。还有一种说法是:
URI 是从虚拟根路径开始的 URL是整个链接 如URL http://zhidao.baidu.com/question/68016373.html URI 是/question/68016373.html
3.既然说HTTP协议是基于请求/响应模式的,那么我们必须要清楚请求包括哪些内容,响应又包括了哪些内容。
3.1HTTP请求,客户端连接上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个请求。包括请求行,消息报头,请求正文(实体内容),下图是访问
http://localhost:8080/UserManager2/ 的请求行和消息头
【1】请求行:Method Request-URI HTTP-Version CRLF
描述客户端的请求方式和请求的资源URI,以及使用HTTP协议的版本号,CRLF表示回车换行
在上图中,请求行为: GET /UserManger2/ HTTP/1.1 (CRLF)
请求方法包括如下几种:
GET 用于获取有Request-URI标识的资源的信息。当我们在浏览器的地址栏输入网址的方式访问网页的时候,浏览器采用的就是GET方法向服务器获取资源。请求的数据会附在URL之后,即把数据放置在HTTP协议头中。例如:访问http://localhost:8080/UserManager2/login?name=zjz&pwd=123
POST 请求服务器接收在请求正文中封装的数据,并将其作为请求行中的URI所标识的资源的一部分
HEAD 请求获取由Request-URI所标识的资源的响应消息报头,通常被用于测试超链接的有效性,是否可以访问,以及最近是否有更新
PUT 请求服务器存储一个资源,并用Request-URI作为其标识
DELETE 请求服务器删除有Request-URI所标识的资源
TRACE 请求服务器回送收到的请求信息,主要用于测试或者诊断
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求