● 从键盘输入url后,点击回车;
● 域名解析,拿到IP地址;
● 根据具体协议,拿到协议所对应的端口号;
● 浏览器发起http请求;
● 服务器接收到完整的http请求,并进行分析;
● 分析请求字段,得到用户要请求的资源以及上传的参数等等;
● 构建http响应,将响应发送给浏览器;
● 浏览器拿到http响应后,对响应做分析,将响应的正文提取出来,并对正文中的标签做解释工作以及对页面进行渲染工作;
● 将页面显示出来;
● 当我们发起http请求的时候,底层使用的是TCP套接字,调用connect发起的;
● 我们http的数据会以字节流的方式,拷贝到发送缓冲区;
● TCP协议通过确认应答,连接管理,超时重传,快重传,流量控制,拥塞控制,延迟应答,捎带应答等等各种机制,来保证自己的数据包被对方收到;
● TCP再将数据包交给IP处理,IP有路由的功能,会根据子网的划分,通过子网掩码,进行路由表查找;
● 当然,对于一些特殊情况,比如包大小的不同和各链路节点的不同MTU值,可能会发生IP分片与组装;
● 再下来,IP将数据报交给数据链路层,通过ARP协议,进行局域网之间的MAC帧转发;
● 对于连接异常情况的处理;
● 对于请求的资源,并不是每次都要发起请求,浏览器可能会缓存数据;
● 对于需要登陆的时候,会用到cookie,session;
● 对于需要保证数据安全,用https;