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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
.cn 域名,1个 12个月
简介: 「从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解析
  • 创建套接字
  • 建立连接
  • 收发消息
  • 断开连接
相关文章
|
18天前
|
存储 监控 安全
单位网络监控软件:Java 技术驱动的高效网络监管体系构建
在数字化办公时代,构建基于Java技术的单位网络监控软件至关重要。该软件能精准监管单位网络活动,保障信息安全,提升工作效率。通过网络流量监测、访问控制及连接状态监控等模块,实现高效网络监管,确保网络稳定、安全、高效运行。
46 11
|
3月前
|
2月前
|
Java 程序员
JAVA程序员的进阶之路:掌握URL与URLConnection,轻松玩转网络资源!
在Java编程中,网络资源的获取与处理至关重要。本文介绍了如何使用URL与URLConnection高效、准确地获取网络资源。首先,通过`java.net.URL`类定位网络资源;其次,利用`URLConnection`类实现资源的读取与写入。文章还提供了最佳实践,包括异常处理、连接池、超时设置和请求头与响应头的合理配置,帮助Java程序员提升技能,应对复杂网络编程场景。
68 9
|
3月前
|
安全 网络架构
MPLS线路构建稳定、高效网络的优选方案
【10月更文挑战第17天】MPLS线路构建稳定、高效网络的优选方案
84 5
|
11天前
|
数据采集 机器学习/深度学习 人工智能
基于AI的网络流量分析:构建智能化运维体系
基于AI的网络流量分析:构建智能化运维体系
73 13
|
2月前
|
人工智能 自然语言处理
WebDreamer:基于大语言模型模拟网页交互增强网络规划能力的框架
WebDreamer是一个基于大型语言模型(LLMs)的网络智能体框架,通过模拟网页交互来增强网络规划能力。它利用GPT-4o作为世界模型,预测用户行为及其结果,优化决策过程,提高性能和安全性。WebDreamer的核心在于“做梦”概念,即在实际采取行动前,用LLM预测每个可能步骤的结果,并选择最有可能实现目标的行动。
64 1
WebDreamer:基于大语言模型模拟网页交互增强网络规划能力的框架
|
24天前
|
云安全 人工智能 安全
|
29天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
70 3
|
2月前
|
数据采集 XML 存储
构建高效的Python网络爬虫:从入门到实践
本文旨在通过深入浅出的方式,引导读者从零开始构建一个高效的Python网络爬虫。我们将探索爬虫的基本原理、核心组件以及如何利用Python的强大库进行数据抓取和处理。文章不仅提供理论指导,还结合实战案例,让读者能够快速掌握爬虫技术,并应用于实际项目中。无论你是编程新手还是有一定基础的开发者,都能在这篇文章中找到有价值的内容。
|
2月前
|
SQL 安全 前端开发
PHP与现代Web开发:构建高效的网络应用
【10月更文挑战第37天】在数字化时代,PHP作为一门强大的服务器端脚本语言,持续影响着Web开发的面貌。本文将深入探讨PHP在现代Web开发中的角色,包括其核心优势、面临的挑战以及如何利用PHP构建高效、安全的网络应用。通过具体代码示例和最佳实践的分享,旨在为开发者提供实用指南,帮助他们在不断变化的技术环境中保持竞争力。

热门文章

最新文章