一、用户在浏览器输入地址www.baidu.com, 需要先确定域名对应的服务器ip:
1、找本地的DNS缓存,如浏览器缓存、操作系统缓存、路由缓存;
2、找本地host;
3、找本地DNS服务器。就是我们在配置网络时候,填写的DNS服务器IP,比如8.8.8.8;
4、找远程DNS服务器。当本地DNS服务器没有域名和ip的映射关系,本地DNS服务器会向根域名服务器发起询问,但是.根服务器并没有域名和ip的映射关系,它会告诉你去问.com域服务器,.com服务器同样不会告诉你域名对应的ip地址,它会告诉你去问baidu.com服务器,最终baidu.com域服务器会告诉你www.baidu.com域名对应的ip。
二、客户端拿到ip,向webserver发起请求
1、第一次握手:client将标志位SYN置为1(SYN=1),并随机生成一个同步序列号Seq=J,并将数据包(报文) 发送给server,等待server确认,此时client进入SYN_SENT状态;
2、第二次握手:server收到client发过来的SYN数据包后,由标志位SYN=1知道客户端请求和自己建立连接,于是将标志位SYN和ACK置为1,ack=J+1,Seq=K,并将数据包发送给clinet,此时server端进入SYN_RCVD;
3、第三次握手:client收到来自server的确认报文后,检查是否ack=J+1,是否ACK=1,检查正确后将ACK=1,ack=K+1,并将数据包发送给server端,server收到数据包后检查是否ack=K+1,ACK=1,确认无误后