壹:用户输入URL,用户在浏览器窗口输入URL,URL解析为IP地址。
贰:DNS域名解析,浏览器检查缓存中有没有域名对应的IP地址,如果有直接通过TCP三次握手建立TCP连接,如果缓存中没有,用户本次访问,由DNS服务器完成解析,返回给用户,用户使用IP跟应用服务器建立TCP连接。
叁:建立TCP连接,根据IP地址找到对应的服务器,浏览器以一个介于(1024-65535)之间的一个端口号,向服务器WEB程序的80端口发起TCP请求。通过TCP三次握手,建立Scoket连接。
TCP三次握手,1.Client首先发送一个链接试探。等待服务器回复。2.Server监听到连接请求的报文后,如同意建立连接,则向Client发送确认,等待Client的确认。3.Client收到确认后再次发送确认,同时携带要发送给Server的数据。Server端一旦收到Client的确认之后,这个TCP连接就建立,就可以发起HTTP请求。
肆:发送HTTP请求,客户端向服务器发送HTTP协议请求包,服务器向客户机发送HTTP协议应答包如果请求的是动态语言的内容,服务器会调用动态语言解析引擎处理动态内容,并将处理得到的数据返回客户端。
HTTP请求格式包
GET/sample.jspHTTP/1.1 请求方法URI协议/版本
Accept:image/gif.image/jpeg,*/* 用于指定客户端接受的字符集
Accept-Language:zh-cn 指定的自然语言
Connection:Keep-Alive 当前链接是否保持
Host:localhost 用户请求资源的Internet主机和端口号,如Host:www.taobao.com
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0) 客户端操作系统,浏览器和其他属性
Accept-Encoding:gzip,deflate 用户指定客户端接受的字符集
username=jinqiao&password=1234 请求正文
标注:中间黑色字部分为请求头
HTTP应答包
HTTP/1.1 200 OK 协议状态版本代码描述
Server:Apache Tomcat/5.0.12 服务器端服务器名称,如Server:Apache/1.3.6(Unix)
Date:Mon,6Oct2003 13:23:42 GMT
Content-Length:112 指明正文的长度,用以字节方式存储的十进制数字来表示。
<html><head></head><body>Hello HTTP!</body></html> 响应正文
标注:中间黑色字部分为响应头
知识拓展:IP,HTTP,Socket简单了解
目前在Internet中所有的传输都是通过TCP/IP进行的。
网络由下往上分为 物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。
IP协议对应网络层,TCO协议对应传输层,HTTP对应应用层。
http为短连接:客户端发送请求都需要服务器响应,请求结束后主动释放链接,因此为短连接。
Scoket为长连接,Socket是对TCP/IP协议的封装,Socket只是个接口不是协议,通过Socket我们才能使用TCP/IP协议。Socket实际就是TCP连接,因此一旦建立,通讯双方开始互发数据,直到双方断开连接。
Socket连接,可以由服务器直接向客户端发送数据。
Http连接,服务器需要等待客户端发送请求,才能将数据回传到客户端。