一、url到出现网页的主要过程
1、检查缓存中是否含有请求对应的页面记录,如果有,直接返回。
(浏览器缓存->本地缓存)
2、如果没有找到,则向DNS域名解析系统发起请求,得到域名对应的ip地址。(DNS中是一个存储着很多域名-ip地址对的数据库)
3、根据ip地址,客户端与服务器通过三次握手建立起连接。
4、发起http请求,服务器处理请求报文,返回响应结果。
5、拿到html、css和js等相应内容后,浏览器对其进行渲染,显示在屏幕上。
6、通过四次挥手断开连接。
二、三次握手步骤
1、客户端向服务端发送连接请求 请求连接syn=1 并携带序列号seq=n
2、服务端收到连接请求时,发送ack=n+1确认报文表示确认收到消息,同时携带服务端的同步序列号
3、客户端收到服务端确认报文后,再向客户端发送一个ack确认报文,这里时针对服务端连接的确认。
为什么要设计三次握手?
1、由于tcp是一种可靠的面向连接的传输层协议。需要保证双方的收发能力都是正常的。
2、防止旧连接引起混乱的连接现象.如果没有三次握手,无法判断当前连接是正常的还是过期的。有了三次握手,当客户端收到服务端seq+1的确认可以判断出是一个失效链接,就可以向服务端放松一个终止报文终止连接。
三、四次挥手步骤
1、客户端向服务端发送断开连接fin报文,同时携带自己的序列号seq=u。
2、服务端收到请求,发送ack=u+1表示收到客户端请求。
至此,客户端不再向服务端传送数据。
3、等到服务端的数据传送完毕后,向客户端发送连接断开报文fin,等待客户端确认。
4、客户端收到请求后,发送ack以表示确认收到。此时,客户端进入time_wait状态,服务端收到ack后关闭连接。客户端等待2msl时间后关闭。
为什么需要四次挥手?
因为需要确保双方的数据传送都已经完成了。客户端向服务端发送断开请求只表明客户端没有需要传送的数据了,可能服务端还有未传送完成的数据。
为什么需要等待2msl时间?
2msl指的是报文段存活的最大时间。确保旧连接中的报文完全消失了,防止旧连接失效的报文影响到新连接。(报文的最大传送时间是1msl,当服务端等待1msl还没收到ack时,会重新向客户端发送fin,这个过程最大也需要1msl)当客户端等待2msl时间后没收到重传的fin报文时,则进入关闭状态。