1.域名解析
首先,客户端发出DNS请求翻译IP地址或主机名。DNS服务器在收到客户机的请求后:
(1)检查DNS服务器的缓存,若查到请求的地址或名字,即向客户机发出应答信息;
(2)若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户机发出应答信息;
(3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。
(4)若没有找到,则返回错误信息。
2.发起TCP的3次握手
(1)源主机A向目的主机发送一个同步标志SYN和初始序列号ISNA,发出会话请求,告诉计算机:“我要和你建立连接”。
(2)目的主机收到请求后,通过回应具有以下项目的数据段表示回复:同步标志SYN、应答标志ACK、初始序列号ISNB。使用这个应答,本质是说:“计算机A,我确认你的会话建立请求和初始序列号ISNA。我将使用初始序列号ISNB与你同步。”
(3)源主机A收到应答后,再回送应答标志ACK和初始序列号ISNB,确认三次握手完成。TCP通过三次握手在源主机和目的主机之间建立起虚电路连接。
http://blog.csdn.net/qq_24421591/article/details/50856423
3.建立TCP连接后发起http请求
常见的: get与post请求的区别?
- 区别一:get重点在从服务器上获取资源,post重点在想服务器发送数据;
- 区别二:get传输数据是通过URL请求,以filed(字段)=value的形式,置于URL后,并用”?”连接,多个请求数据之间用”&”连接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,这个过程用户是可见的.
- 区别三:get传输量小,因为受URL长度限制,但效率较低post可以传输大量数据,所以上传文件时只能用post方式.
- 区别四:get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等post较get安全.
4.服务器响应http请求,浏览器得到html代码
5.浏览器解析html中的代码,并请求html代码中的资源
因为html可以隐式添加标记的特性,无法被寻常解析器解析.所以html文件需要DOCTYPE声明,才能正确的被浏览器解析.如果不存在或声明错误,会使网页呈现向后兼容模式,回到浏览器大战时的混乱场面(每个浏览器有自己的解析模式).
6.浏览器对页面渲染呈现给用户
扩展:
HTTP本身是一个无状态的连接协议(指协议对于事务处理没有记忆能力),为了支持客户端与服务器之间的交互,我们就需要通过不同的技术为交互存储状态,而这些不同的技术就是Cookie和Session了。