关于通信,我们最熟悉的莫过于手机和电话通信。通信有一个最基本的东西,就是必须事先约定好通信方式,比如拨号,电话铃响,拿起电话和挂掉电话等等,这些其实就是通信协议,只要双方按照协议规定的就可以进行通信(当然这里不考虑其它基础设备)。而在web应用上,浏览器和服务器之间就是基于http协议进行通信的。
最早接触HTTP协议应该是在计算机网络课上,那时候只知道HTTP协议是应用层上的东东,并没有进行深入理解。其实HTTP说白了,就是两个进程之间的通信,客户端一般是浏览器,服务器端一般是WEB服务器,浏览器通过发送请求报文给服务器,服务器收到报文后,根据相应请求进行响应,向浏览器发送响应报文,从而结束此次连接。
HTTP协议是基于请求和响应的,无连接的、无状态的协议。这里的无状态是指对于事务没有记忆能力,意味着一个请求结束后,同一个客户端再发送请求时,它不知道是否是同样的一个人。这样的设计还是验证了大道至简那个道理,毕竟在web上速度还是最重要的。HTTP协议主要包括两个重要的报文,分别是请求报文和响应报文。
一:请求报文
主要包含了请求行、消息报头和请求正文。请求行格式为方法 URL 协议版本 CRLF。
方法最主要的有GET和POST,GET主要是从服务器上获取东西,POST主要是客户端向服务器端传送东西,当然GET也可以向服务器端传东西,只是这些参数是附加在URL上面的,而且不同的浏览器对于可以往URL上面添加参数是有限制的。POST向服务器端传送信息则是将信息写在正文中。
二:响应报文
响应报文由状态行、消息报头和响应正文组成。
状态行: HTTP版本 状态码 状态码对应描述信息 CRLF。
状态码有5种取值:
(1)1xx:指示信息,表示请求已经接受,继续处理。
(2)2xx:成功,表示请求已被接收,理解和接受。
(3)3xx:重定向,要完成请求必须进行进一步操作。
(4)4xx:客户端错误,请求的地址错误或者语法错误。
(5)5xx:服务器端错误。
常见的状态码有:
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
当然,HTTP协议还指明了发送给接收者的内容类型,即CONTENT—TYPE,这方便了接收者更快地对内容进行解析。HTTP协议毕竟是应用层的东西,所以还需要通过TCP进行传送。目前对HTTP理解只有这些,以后有了新的认识后再进行补充。