「从URL到网页🌏」构建计算机网络知识体系-02

简介: 「从URL到网页🌏」构建计算机网络知识体系-02

image.png


大家好,我是速冻鱼🐟,一条水系前端💦,喜欢花里胡哨💐,持续沙雕🌲,是隔壁寒草🌿的好兄弟,刚开始写文章。 如果喜欢我的文章,可以关注➕点赞,为我注入能量,与我一同成长吧~


阅读本文 📖



1.您将了解到输入URL到浏览器展示内容的网络全貌

2.对计算机网络有个宏观的认识

3.用宏观的角度去了解计算机网络,构建计算机网络知识体系,鱼鱼将会一章章跟新

4.对基础知识充满了兴趣和爱好,培养自己对计算机的兴趣


前言 🌵



学习了很长时间的计算机网络,我发现计算机网络是非常有意思的一个课题,但是它的知识面广而深,通过学习我发现,很多书都是深入某一部分去讲解,未免让人失去兴趣,从URL到浏览器展示画面能够让我们全面的了解到网络的从零到一

知识点 📒


生成HTTP请求消息


  • 当我们输入网址(URL)就要展示页面的话,那么第一步当然是生成HTTP请求消息

HTTP就是超文本传输协议,用于在互联网中传递网页数据的一个应用层的协议,就好比我们平时讲话用的中文,这就是协议。


协议即使约定,按照什么要的套路,来交流。


  • 输入网址开始浏览器第一步先解析URL(统一资源标识符)表示资源在网络中的位置。就像这样: www.baidu.com/dir/a.jpghttp:表示传输协议类似的还有file协议、ftp协议等等.。这部分表示浏览器应到使用的访问方法。比如访问WEB服务器,应该使用 http协议,访问FTP服务器应该使用FTP协议。www.baidu.com:这部分表示域名,就是给这个资源所在ip地址取了一个小名,方便记忆而已。/dir/a.jpg: 这部分就表示访问目标计算机的哪层目录要访问哪个文件,像 /dir/ 这种就是省略了文件名的情况,默认为index.html
  • 总的来说URL就是由 访问协议+服务器域名+数据源的路径名 组合而来的,目的就是为了表示某个资源在网络中的具体位置,该已什么方式去访问。


  • 当浏览器解析完URL后,就知道我们要访问哪个网络中的计算机的哪个目标资源了


  • http协议定义了客户端和服务器之间交互的消息内容和步骤。


  • 请求消息大致就是“对什么”,进行什么样的“操作”


  • http本质就是应用层协议,我们使用这个协议就可以向web服务器放松请求,服务器也同样会使用http协议响应我们的请求,就好比我用中文和你交流,你当然也用中文回我话,我们才知道说的啥,意思一样的。


  • CGI程序式对web服务器程序调用其他程序的规则所做的定义,我们可以发送请求获取资源,也可以执行web服务器上的程序


  • HTTP的主要方法 GET:拿 POST:客服端向服务端发送数据 HEAD:和GET大致相同,只不过它只返回HTTP的消息头,不返回数据内容,用于获取文件最后更新时间等属性信息。
    OPTIONS:用于通知或者查询通信的选项
    PUT:替换URL指定的服务器上的文件,不存在则创建 DELETE:删除 TRACE:将服务器收到的请求行和请求头返回给客户端,用于在使用代理的环境中检查改写请求的情况。 CONNETCT:使用代理传输加密消息时使用的方法


image.png

对URL进行解析后,知道了去哪执行什么操作,接下来就是生成HTTP请求消息了,HTTP请求消息是有严格规范的。

可以大致参照这幅图,按照这种格式,也就是我们HTTP的请求/响应消息


image.png



就好像我们打仗的时候我们得约定一个什么摩斯密码,按照这种规定去要表达我们想要表达的意思是一样的,必须得遵守这个规范,不然我们双方都不知道在说什么。

生成好了HTTP请求消息之后,我们就需要将我们的消息发送出去了,那么就是接下来的向DNS服务器查询Web服务器的IP地址了。


向DNS服务器查询Web服务器的IP地址


有了HTTP请求消息,当然我们需要将我们的消息发送出去了。首先我们需要的就是像DNS服务器去查询我们目标Web服务器的IP的地址


  • IP地址就是在互联网中,我们表示一台接入了网络,就是联网的一台机器,它在互联网中的地址。就好比我们的小区楼房的门牌号,可以通过这个地址找到你。


image.png


  • DNS服务器就是一台电脑,上面有一张表,保存了域名和ip地址的对应关系


  • 为什么又了IP地址还需要域名呢,因为方便人记忆,域名通常都是具有语意的,IP地址没有语意又很长,为了方便人的记忆,所以我们使用域名,通过域名我们可以映射出目标的IP地址,从而通信,这个机制就叫DNS


  • 谁去查询域名所对应的IP地址呢,浏览器是不具备这个功能的,但是它可以调用操作系统中的Socket里面的DNS模块去帮助我们查询域名所对应的IP地址


  • 我们只需要将域名委托给操作系统,然后它就会去帮助我们查询ip地址并保存到指定的内存地址中,我们只需要从对应的内存地址中取出IP地址就完成了DNS解析


  • 操作系统中的解析器会调用操作系统内部的协议栈发送UDP消息去获取ip地址


  • 协议栈:操作系统内部的网络控制软件,也叫“协议驱动”“TCP/IP”驱动等。


image.png

  • 那么协议栈从哪个服务器去查找域名所对应的ip地址呢,一般是先从浏览器内部的缓存中获取,如果没有则从操作系统缓存中获取,如果还是没有则从我们上面设置的默认DNS服务器上面去获取相应的信息


全世界DNS服务器的大接力


DNS服务器的基本工作


dns服务器里面有张表


image.png

发送给DNS的消息包含三种信息


  • 域名
  • Class 现在都是IN
  • 记录类型 A代表域名对应的是IP地址,MX表示域名对应的是邮件服务器,CNAME表示域名别名,根据IP地址反查域名的PTR类型,查询DNS服务器IP地址的NS类型


总的来说DNS服务器的基本工作就是根据需要查询的域名和记录类型查找相关的记录,并向客户端返回响应消息


由于一台DNS服务器无法保存所有的记录,所以DNS服务器需要分层

当我们查询域名对应的IP地址时,一般是先访问最近的DNS服务器(客户端TPC/IP设置中填写的DNS服务器地址),如果服务器上没有我们要查找的记录,那么就会访问根域名服务器,根域名服务器会根据ip地址返回它下一层域名服务器ip给最近的DNS服务器,如此往复,我们就能查到了,但是这样效率太低了。


实际上一台DNS服务器是可以管理多个域的信息的,DNS服务器具有缓存功能,可以记住之前查询过的域名。

委托协议栈发送消息


现在有了HTTP请求消息,有了域名所对应的IP地址,接下来我们需要委托我们的协议栈将我们的消息发送出去。


当协议栈收到委托后,会按照指定的顺序来调用程序组件,来完成消息的发送。这就是我们的TCP/IP协议栈


首先我们需要建立TCP连接,也就是创建套接字,套接字就相当于日常生活中的插座,在网络的两端分别安装好插座,然后进行TCP连接,也就是将一个虚拟的管道连接到两端的插座上,这样是不是就可以通信了。


建立管道的关键在于管道两端的 数据出入口,这些出入口称为套接字。我们需要先创建套接字,然后再将 套接字连接起来形成管道。


image.png

一般来说服务器会先创建好一个套接字等待连接,当客户端需要发送消息时,客户端会创造套接字,然后去连接服务器端的套接字,一旦连接建立,我们就可以收发数据了,数据收发完成,我们就可以断开连接,一般由,套接字也会被删除掉。

大致流程为


image.png


1.创建套接字

2.将管道连接到服务器的套接字上 (连接阶段)

3.收发数据 (通信阶段)

4.断开管道并删除套接字(断开阶段)

在每个阶段Socket库都会调用不同的程序组件来执行不同的功能。


创建套接字


创建套接字就是协议栈根据在当前计算机创建一个套接字,将这个套接字的描述符保存在内存中,这个描述符就是计算机内部来识别套接字的东西


建立连接


使用创建好的套接字,然后调用程序组件connet去建立连接,我们需要告诉connet几个参数,服务器端的IP地址端口号(IP地址和端口号是用于服务器和客户端之间识别套接字的机制)


传递消息


建立好连接,调用程序组件中的write来发送数据,read来接受数据


断开连接


最后断开连接,删除套接字


总结 🍁


  • 解析URL
  • 生成HTTP请求消息
  • DNS解析
  • 创建套接字
  • 建立连接
  • 收发消息
  • 断开连接
相关文章
|
10月前
|
存储 监控 安全
单位网络监控软件:Java 技术驱动的高效网络监管体系构建
在数字化办公时代,构建基于Java技术的单位网络监控软件至关重要。该软件能精准监管单位网络活动,保障信息安全,提升工作效率。通过网络流量监测、访问控制及连接状态监控等模块,实现高效网络监管,确保网络稳定、安全、高效运行。
220 11
|
28天前
|
前端开发 JavaScript 开发者
JavaScript:构建动态网络的引擎
JavaScript:构建动态网络的引擎
|
3月前
|
机器学习/深度学习 算法 量子技术
GQNN框架:让Python开发者轻松构建量子神经网络
为降低量子神经网络的研发门槛并提升其实用性,本文介绍一个名为GQNN(Generalized Quantum Neural Network)的Python开发框架。
76 4
GQNN框架:让Python开发者轻松构建量子神经网络
|
28天前
|
人工智能 监控 数据可视化
如何破解AI推理延迟难题:构建敏捷多云算力网络
本文探讨了AI企业在突破算力瓶颈后,如何构建高效、稳定的网络架构以支撑AI产品化落地。文章分析了典型AI IT架构的四个层次——流量接入层、调度决策层、推理服务层和训练算力层,并深入解析了AI架构对网络提出的三大核心挑战:跨云互联、逻辑隔离与业务识别、网络可视化与QoS控制。最终提出了一站式网络解决方案,助力AI企业实现多云调度、业务融合承载与精细化流量管理,推动AI服务高效、稳定交付。
|
9天前
|
机器学习/深度学习 分布式计算 Java
Java与图神经网络:构建企业级知识图谱与智能推理系统
图神经网络(GNN)作为处理非欧几里得数据的前沿技术,正成为企业知识管理和智能推理的核心引擎。本文深入探讨如何在Java生态中构建基于GNN的知识图谱系统,涵盖从图数据建模、GNN模型集成、分布式图计算到实时推理的全流程。通过具体的代码实现和架构设计,展示如何将先进的图神经网络技术融入传统Java企业应用,为构建下一代智能决策系统提供完整解决方案。
125 0
|
1月前
|
机器学习/深度学习 算法 搜索推荐
从零开始构建图注意力网络:GAT算法原理与数值实现详解
本文详细解析了图注意力网络(GAT)的算法原理和实现过程。GAT通过引入注意力机制解决了图卷积网络(GCN)中所有邻居节点贡献相等的局限性,让模型能够自动学习不同邻居的重要性权重。
176 0
从零开始构建图注意力网络:GAT算法原理与数值实现详解
|
6月前
|
边缘计算 安全 算法
阿里云CDN:构建全球化智能加速网络的数字高速公路
阿里云CDN构建全球化智能加速网络,拥有2800多个边缘节点覆盖67个国家,实现毫秒级网络延迟。其三级节点拓扑结构与智能路由系统,结合流量预测模型,确保高命中率。全栈式加速技术包括QUIC协议优化和Brotli压缩算法,保障安全与性能。五层防御机制有效抵御攻击,行业解决方案涵盖视频、物联网及游戏等领域,支持新兴AR/VR与元宇宙需求,持续推动数字内容分发技术边界。
416 13
|
3月前
|
监控 安全 Go
使用Go语言构建网络IP层安全防护
在Go语言中构建网络IP层安全防护是一项需求明确的任务,考虑到高性能、并发和跨平台的优势,Go是构建此类安全系统的合适选择。通过紧密遵循上述步骤并结合最佳实践,可以构建一个强大的网络防护系统,以保障数字环境的安全完整。
96 12
|
4月前
|
JSON 编解码 API
Go语言网络编程:使用 net/http 构建 RESTful API
本章介绍如何使用 Go 语言的 `net/http` 标准库构建 RESTful API。内容涵盖 RESTful API 的基本概念及规范,包括 GET、POST、PUT 和 DELETE 方法的实现。通过定义用户数据结构和模拟数据库,逐步实现获取用户列表、创建用户、更新用户、删除用户的 HTTP 路由处理函数。同时提供辅助函数用于路径参数解析,并展示如何设置路由器启动服务。最后通过 curl 或 Postman 测试接口功能。章节总结了路由分发、JSON 编解码、方法区分、并发安全管理和路径参数解析等关键点,为更复杂需求推荐第三方框架如 Gin、Echo 和 Chi。
|
6月前
|
人工智能 供应链 安全
2025 年网络法律论坛 | 应对安全风险,构建韧性举措
2025年查尔斯顿网络法律论坛汇聚法律、网络安全与保险行业专家,探讨全球威胁态势、人工智能应用及监管变化等议题。主旨演讲揭示非对称威胁与供应链漏洞,强调透明度和协作的重要性。小组讨论聚焦AI合理使用、监管热点及网络保险现状,提出主动防御与数据共享策略。论坛呼吁跨领域合作,应对快速演变的网络安全挑战,构建更具韧性的防御体系。
159 1
2025 年网络法律论坛 | 应对安全风险,构建韧性举措