在浏览器中访问网页的全过程
一 表象
1.1 输入url -> 跳转页面
我们浏览页面,通常分成两步:
-
输入url:填入网址 跳转页面:点击跳转 结果:要么页面显示出来,要么会失败,失败后大家最常见的就是404,其实不止这一种状态码
1.2 状态码
状态码一共有五种,分别以1-5开头:
-
1XX 服务器正在处理请求 2XX 成功码 请求处理成功 3XX 重定向 需要附加操作来完成请求 4XX 失败码 客户端错误 服务器无法处理请求 5XX 失败码 服务器错误 服务器处理请求出错
二 实际过程
-
DNS域名解析 TCP连接 发送HTTP请求 服务器解析并返回HTTP报文 浏览器解析渲染 连接结束
2.1 输入url - > 解析url(应用层)
拿百度来说,我们输入的是www.baidu.com,这个是符合人类命名习惯的域名,但是计算机可不认识,因此需要把域名解析成计算机认识的地址,此处用到的解析协议是DNS(域名解析),可以将域名解析成对应的ip地址,这样计算机就知道这个资源在哪了
2.2 建立连接(传输控制层)
知道资源在哪之后,我们发送我们的消息,要建立连接啊,这个过程有点类似于现在的快递,知道收货人地址后,要建立物流连接。不同于快递的是,我们此处使用的tcp协议,会使用三次握手的方式来建立连接
2.3 发送连接数据(网络层)
三次握手中,请求是以数据的形式发送的,这个数据以什么格式发送才能被网络认识呢?这里我们在网络层使用了ip协议,将数据封城ip数据包的格式传输
2.4 请求在网络中游走(数据链路层)
封装成ip数据包后需要再真实的数据链路中游走,在路由器之间传递时使用OPSF协议,寻址时使用了ARP协议(将ip地址解析为MAC地址)
2.5 服务器处理请求
2.6 服务器发回响应
2.7 显示网页(应用层)
网页的显示,都使用了HTTP协议(超文本传输协议)
三 访问过程中用到的协议或手段解析
3.1 DNS(域名解析系统)
是解决上网时机器命名的一种方法,我们想要访问别人,首先要知道别人家的地址,DNS就是将域名解析成计算机可以认识的ip地址
3.2 TCP(传输控制协议)
TCP是一种面向连接的,可靠的数据传输协议,TCP保证可靠的方式如下:
-
分割数据:将数据分成一个个TCP认为合适大小的数据块 标记顺序:将这些数据块排好序打上序号,确保传过去后按照顺序排好 丢弃重复:接收端,TCP会丢弃掉重复的数据块 流量控制:TCP接收端和发送端都有一个缓冲区,当发送数据速度超过缓冲区大小,会自动发送端放慢发送速度,防止包丢失。此处使用的协议是可变大小的滑动窗口协议 拥塞控制:网络拥塞时,减少数据发送 ARQ:自动请求重传,每发完一个分组,就停下来等待接收端的确认,如果接收端反馈没收到数据,则重发一次 超时重传:每次发送使用计时器计时,如果在时限内没有收到接收端的确认,则默认数据没送到,再发一次
上一篇:
Java架构师技术进阶路线图