Http目前协议版本是1.1,HTTP是一种无状态的协议,无状态是指Web浏览器与Web服务器之间,不需要建立持久的链接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(response),链接就被关闭了,在服务器端不保留链接的有关信息。
1.建立TCP链接
在HTTP工作前,首先浏览器与服务器建立链接,该链接是通过TCP完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议方案。一般TCP连接端口号是80。
打开浏览器,地址栏输入blog.csdn.net,开始进行域名解解析:
(1).浏览器自身搜dns缓存
(2).搜索操作系统的dns缓存
(3).读取本地host文件
浏览器发起一个dns系统调用,浏览器获得域名对应的ip地址后,发起一个http三次握手
tcp/ip链接建立起来后,服务器端接受到请求,根据路径参数,经过后端的处理后,把处理后的结果返回给浏览器,浏览器拿到html页面代码,解析和渲染页面,里面的js、css图片资源都需要经过上面的步骤。
2.Web浏览器向服务器发送请求命令
例如:GRT/sample/hello.jsp HTTP/1.1
3.Web浏览器发送请求头信息
浏览器发送请求命令后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送一空白行通知服务器,它已经结束了该头信息的发送。
4.Web服务器应答
应答的第一部分是协议的版本号和应答状态码
如:HTTP/1.1 200OK
5.服务器发送应答头信息(关于服务器自己的数据)
6.服务器向浏览器发送数据
服务器发送头信息后,它会发送一个空白行来表示头信息发送到此为止,接着以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。
7.关闭TCP连接
如果浏览器或服务器在其头信息加入了这行代码,Connection:keep-alive,TCP连接在发送后仍然保持打开状态
HTTP请求信息由3部分组成
1.请求方法URL 协议/版本 GET/sample.jsp HTTP/1.1
2.请求头(包含客户端环境、浏览器所用语言、正文长度等)
3.请求正文(包含客户提交的查询字符串信息) userName=qwe&passWord=123
HTTP响应3个部分构成
1.协议状态版本 HTTP/1.1 200OK
2.响应头(服务器类型、日期时间、内容类型、长度等) Server:Apache Tomcat/5.0.12 Content-Type:text/html
3.响应正文
<html>
<head>
<title>HTTP响应示例</title>
</head>
</html>
响应头和正文之间也必须用空行分割