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 继续

相关推荐
大聪明-PLUS3 小时前
如何使用 Docker 打包一个简单的应用程序:简易指南
linux·嵌入式·arm·smarc
百***46455 小时前
Java进阶-在Ubuntu上部署SpringBoot应用
java·spring boot·ubuntu
serve the people5 小时前
Prompts for Chat Models in LangChain
java·linux·langchain
李昊哲小课5 小时前
Ubuntu 24.04 MariaDB 完整安装与配置文档
linux·ubuntu·mariadb
buvsvdp50059ac6 小时前
如何在VSCode中设置Python解释器?
ide·vscode·python
人间打气筒(Ada)6 小时前
zerotier内网穿透部署(rockylinux部署本地服务器)超详细~~~
linux·内网穿透·内网·公网·zerotier·穿透
剑动山河7 小时前
ubuntu 升级mysql由mysql5.7.42 升级到8.4.0
mysql·ubuntu·adb
Elias不吃糖7 小时前
Git常用指令合集
linux·git
_OP_CHEN7 小时前
Linux网络编程:(七)Vim 编辑器完全指南:从入门到精通的全方位实战教程
linux·运维·服务器·编辑器·vim·linux生态·linux软件
Maple_land7 小时前
第1篇:Linux工具复盘上篇:yum与vim
linux·运维·服务器·c++·centos