14、【Ubuntu】【VSCode】VSCode 断联问题分析:hostname(二)

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

上篇 blog
【Ubuntu】【VSCode】VSCode 断联问题分析:hostname(一)

介绍了下 hostname 命令以及主机名,域名,以及全限定域名 FDQN 的概念与区别,下面继续来看下

VSCode 断联问题

上篇 blog 【Ubuntu】【VSCode】VSCode 断联问题分析:hostname(一) 提到了对于域名 csdn.net 和全限定域名 www.csdn.net,网站更常用的是HTTP 重定向 (301) ,当访问 csdn.net 时,Web 服务器收到请求,返回一个 HTTP 301 状态码,告诉浏览器用 www.csdn.net 访问,此时浏览器会自动跳转到 www.csdn.net,比如在终端输入

bash 复制代码
curl -I csdn.net

可以看到响应如下,回复 HTTP 301,并且告知了 csdn.net 域名的位置在 www.csdn.net,说明 csdn.net 被重定向到了 www.csdn.net

可以看到,其实不管用域名 xxx.com 还是全限定域名 FQDN www.xxx.com,一般都能访问到网站内容,从技术上没有强制要求, 因为通过 DNS 配置 和 HTTP 重定向,xxx.comwww.xxx.com 都能指向同一个地方

对于 www 而言,其本质上是一个主机名,表示 Web 服务的入口www 从技术上来说不重要,但习惯上仍然广泛使用,属于一个历史遗留的仪式感,就像外卖快递上的收件人 ,虽然不加也能寄到,只要有地址 (域名)即可,但加上更规范,可以清晰地标识该处是 Web 服务

另外,还要注意一点,在互联网上,用户看到其主机名是 www,不代表其内部的机器也叫 www,实际上,www 是给用户看的主机名,而在服务器内部,看到的则可能是 web01web02 这样的主机名代号,也就是说,主机名在不同层级下有不同的视角:

  • 用户视角:看到 www.mycompany.com 这样的全限定域名 FQDN,这是一个面向公众的 DNS 记录,www 作为服务别名,提示用户该地址提供网页服务 ,但这里不是一个真实的服务器名字,而是一个负载均衡器CDN 节点(Content Delivery Network,内容分发网络)的地址
  • 内部视角:看到 web01web02db03 这样的代号,真实的物理服务器或虚拟机可以被命名为类似 web01.mycompany.com 内部运维使用的主机名,像这样的名字不会暴露给互联网用户

其连接过程大致如下

在这个过程中,用户只知道 www.xxx.com,而负载均衡器知道后端有 web01web02web03 等服务器,而 web01web02web03 就是这些后端服务器的主机名,但它们并不知道自己对外叫 www.xxx.com

关于前面介绍的 HTTP 301 重定向,涉及到 HTTP 状态码,这些状态码是由互联网工程任务组(IETF,The Internet Engineering Task Force)在一系列的 RFC(Request for Comments)文档中定义的,这些文档是互联网标准和技术规范的基础

在规范文档 Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content
RFC 7231
中,可以找到 HTTP 301 状态码如下

可以看到 301 Moved Permanently 表示请求的资源已经被永久地移动到了新的链接 URI,客户端用户应该使用新的 URI 进行后续请求,浏览器拿到这个指示后,就会跳转到新的链接

然后这里再最后说下前面使用的 curl -I 命令,在终端输入

bash 复制代码
man curl

查看 curl 命令如下

可以看到 curl 命令的功能:transfer a URL,表示通过 URL 从服务器获取数据,或者向服务器发送数据,curl 命令可以处理多种网络协议,比如 HTTP/HTTPS(访问网页),FTP/FTPS(文件传输),SCP/SFTP(SSH 传输),SMTP/SMTPS(发送邮件),FILE(访问本地文件)等等,几乎能处理所有网络传输需求

查找 -I 选项如下

可以看到 -I 选项可以请求并显示服务器返回的 HTTP 头部信息

ok,先到这里,下篇 blog 继续

相关推荐
哎呦喂我去去去1 小时前
C#实现屏幕墙:同时监控多个电脑桌面(支持Windows、信创Linux、银河麒麟、统信UOS)
linux·windows·c#
easy_coder2 小时前
Linux LVM 知识文档
linux·运维
小小的木头人3 小时前
Ubuntu 使用 udev + systemd + UUID 实现 USB 硬盘自动挂载
linux·运维·ubuntu
kaoa0004 小时前
Linux入门攻坚——84、网络虚拟化技术-1
linux·运维·服务器
RisunJan4 小时前
Linux命令-shutdown(安全关闭或重启系统)
linux·服务器·安全
2601_965798475 小时前
MTDb Movie & TV Database Script Setup, Caching, and SEO Guide
linux·服务器·数据库·php
我头发多我先学5 小时前
linux系统编程:初识进程
linux·运维·服务器
Freak嵌入式5 小时前
版本混乱 / 依赖缺失?uPyPi:MicroPython 版 PyPI,彻底解决库管理混乱
linux·服务器·数据库·单片机·嵌入式硬件·性能优化·依赖倒置原则
苍狗T6 小时前
LVS相关知识总结
linux·运维·服务器·lvs
广州灵眸科技有限公司6 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) rknn-toolkit-lite2使用方法
linux·运维·服务器·数据库·算法