网页在浏览器中打开_Gin 浏览器打开网页 1

欢迎回到《Gin Web 后端开发》系列文章,在上一篇 Gin -- 从打开 .txt 文件说起 文章中留下了两个问题,我们继续。通过之前讲到的记事本读取文件的原理,我们知道在浏览器地址栏输入 URL 来访问某个页面其实就是读取某个 HTML 文件,只不过这个 HTML 文件存储在某台远程服务器上。如下图所示:

05dfaf3848736ef35ec5993b93a957a0.png

文件在本地电脑上有操作系统提供的文件读写接口,现在文件在远程的服务器上,我要读取它,怎么办? 别担心,学校开了一门《计算机网络》课程。

513c20dbd3de6bebddcfe7b6e865b309.png所以别没事瞎提问题,搞不好就给学生加了一门课程。

01 怎么通过网线传输数据


之前也讲过,计算机底层都是二进制的世界,任何数据最后都将变成由 0、1 组成的二进制数据串。两台主机如果要进行网络通讯,必须安装网卡硬件设备、网卡驱动程序,由操作系统给驱动程序发出指令,控制网卡硬件设备实现收发 0、1 组成的二进制数据串。网卡驱动程序若收到 0 则驱动网卡硬件设备发送一个低电平信号;若收到 1 则发送一个高电平信号,从而形成高低起伏的波通过网线发送给另一个网卡设备。另一个网卡硬件设备用相反的方式进行接收解析。如下图所示:

afbff0d49e52f73a8b73a0b1f23e587b.png

02 有了 MAC 地址,为啥还要 IP 地址


网络硬件设备在出厂前就有一个全球唯一的 MAC 地址,类似于我们的身份证号码一样,网络中存在着数不清的网络设备,设备之间要进行通讯必须依赖 MAC 地址进行。

864304dd2773e799fdb9f83e038cf16b.png

如图,网卡设备 A 向全网发出一个广播消息,消息中带有源 MAC 地址,目标 MAC 地址,以及要传输的数据。其他网卡设备收到广播消息后取出目标 MAC 地址进行判断,若是发给自己的则回复源 MAC 地址,若不是直接丢弃。然而,这种方式有个非常大的问题,那就是每一个网卡必须知道全网所有网卡设备的 MAC 地址才能进行广播,否则肯定会有遗漏。而世界上有 2 的 48 次方个 MAC 地址,假设一个 MAC 地址留 1 字节存储空间,那也需要 256TB 的存储空间,这是不现实的。为了解决这个问题,人们想了一个办法,就是把网络划分成很多个子网。例如发一个包裹给某个人,可以将包裹发给省集散中心,由省集散中心发给市集散中心,逐步分解到快递员派送。每个集散中心的辖区的数量是可接受范围的,而这一套机制就是我们的IP地址。至于怎么实现,就不详细描述,就是将IP地址划分成 A、B、C 三类地址,子网掩码的计算,以及 ARP 协议,大家可以翻翻教科书。

03 那为啥又要端口


现在我们知道通过 IP 可以找到想要访问的服务器,但不管是个人电脑还是服务器,都运行着各种各样的程序,数据的传输是通过同一个网卡进行,谁知道传输的信息是给哪个程序的呢?例如,我一边玩 LOL 一边聊微信,突然游戏中的聊天内容出现在微信聊天窗口里面了,那不是全乱套了。

b740f3bd4234407d6fbc433f542fdb0b.png

端口就是用来实现“端到端”的数据通信。回到浏览器打开网页操作,我们采用 Nginx 服务来接收浏览器发出的请求,该服务默认监听 80 端口,浏览器发起的 HTTP 请求交由 Nginx 进行处理,Nginx 将 index.html 文件内容发送给浏览器,浏览器收到后将文件内容展示出来。通过 IP 找到主机已经能够理解,不过 IP 非常难记忆,为了方便记忆,就将 IP 与域名做一个映射关系,之后就可以直接通过输入域名来访问网站了。

欢迎在评论区进行交流,喜欢的话点个赞哦!

513c20dbd3de6bebddcfe7b6e865b309.png其实现在也就20几个粉丝,一大部分还不是搞技术的,好忧伤,再接再厉!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值