通过浏览一个网页这个操作,解析具体其中发生了哪些事?

网络协议的真实用途

今天算是第一次记录自己的所学,目的是为了自己重新回顾一遍,同时也可以分享学习的心得。想来想去,这些年学了这么多东西该从哪里写起?最后还是选择了看似枯燥实则有大用处的网络协议。我和很多人一样,在大学的时候对网络协议这门课没什么概念,不知道到底有什么用,总感觉还不如学习一个框架让我上手的快,随着工作年限的增加,见识的增加,我越来越体会到了这门课的实用之处,下面就是记录自己的所学。

网络的分层

大多数喜欢把网络分为七层,但是我感觉学习起来抽象成5层就可以了:

1.物理层:就是一些物理上的光纤,网线等等物理设施
2.数据链路层:对应于我们常说的MAC层
3. 网络层:对应于IP这一层
4. 传输层:对应于传输时用到的TCP,UDP这一层
5. 应用层:对应于我们自己的应用,比如一个网站啊等等

一个简单的浏览网页过程,中间发生了啥

我们最常操作的就是点击打开一个网页,那么从你点击的那一刻开始,到看到屏幕上的网页内容,到底发生了啥?

请求

1,首先我们的浏览器基本都是一个客户端,它会封装HTTP请求,当你点击的那一刻,浏览器会封装好一个HTTP的请求包,其中包的格式包括:请求的URL/协议版本,请求头,请求行,请求正文。请求正文里写着:我要浏览一个网页
2,上面HTTP包封装完成后,会丢给下面的传输层,也就是TCP或者UDP,这一层会在HTTP包外面包装一层,主要包含了两个端口号。源端口号:你从哪个端口过来的。目标端口号:你要请求对方的哪个端口。这样一个TCP包就打包好了。
3,接下来就是丢给下面的IP层,IP层会把上面的TCP包再次包装一层,主要包括源IP:你从哪个机器来的。目标IP:你要到哪个机器去。那么目标IP如何得到呢?一般来说我们访问的网页都是以域名的形式存在,这里用到了DNS协议,去请求DNS服务器,通过DNS服务器解析出这个域名的IP是多少。如果是在移动端,还有一种更厉害的域名解析协议HTTPSDNS,它可以自定义解析规则,并且可以达到很好的类似于一个负载均衡的作用。
4,封装好了IP包,接下来就是丢给下面的数据链路层。首先自己的机器会去判断访问的目标IP和自己的IP是不是在同一个网段内,如果是同一个网段内,就采用ARP协议发送一个广播包,询问目标IP的MAC地址,得到反馈后,就开始在IP包外继续封装一层,主要包含了两个内容。源MAC地址:自己的MAC地址。目标MAC地址:需要请求的那台机器的MAC地址。如果目标IP和自己的IP不在一个网段呢?那么就需要去请求自己的网关,同样通过ARP请求获取网关服务器的MAC地址,然后跟上面封装一样,只不过目标的MAC地址换成了网关的MAC地址。
5,通过上面的一系列的打包封装过程,一个完整的网络包就完成了。从外到内是MAC包,IP包,TCP/UDP包,HTTP包。然后把这个包丢给最后的物理层进行传输。如果是一个网段内,那么包会到达你想要访问的目标服务器,如果不是,则会到达你的网关服务器,然后在由网关进行包的转发,最后到达你的目标服务器。

响应

1,当上面的请求包到达目标服务器后,首先会包通过数据链路层,把MAC头取下来,看看MAC地址是不是自己的。是丢给上面的IP层。
2,IP层把IP头取下来,瞅一瞅目标IP是不是自己的,是的话就继续丢给上面的传输层。
3,传输层会继续把TCP/UDP头取下来,看看你要访问那个端口,比如是80端口,那么他就会把包丢给相应的应用层,tomcat服务器。
4,tomcat服务器呢会解析HTTP包,然后打开内容一看,正文写着:我要看一个网页。然后就会找一个网页资源给你,然后重新重复上面的步骤,进行HTTP包的封装,接着一层一层的按原路返回。
5,当响应包到达你的电脑后,至此你就可以看到你请求的网页内容了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值