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

相关推荐
charlie1145141911 天前
嵌入式Linux驱动开发——新字符设备驱动 API 概览
linux·运维·驱动开发
♛识尔如昼♛1 天前
C 进阶(2) - 文件I/O
linux·文件i/o
顺风尿一寸1 天前
深入 Linux 内核 6.8.12:从 Futex 到 MCS 队列自旋锁的完整同步机制剖析
linux
橙子也要努力变强1 天前
信号的保存、阻塞与递达
linux·服务器·c++
进阶的猪1 天前
使用printk对SPI子系统全过程的追踪
linux·服务器
2301_803554521 天前
Linux里面的文件描述符和windows里面的句柄
linux·运维·服务器
星马梦缘1 天前
如何切换window-ubuntu双系统【方案一】
linux·ubuntu·双系统
idolao1 天前
CentOS 7 安装 jakarta-tomcat-connectors-jk2-src-current.tar.gz 详细步骤(解压、编译、配置)
linux·centos·tomcat
时空自由民.1 天前
蓝牙协议栈介绍
linux·网络·单片机
zh路西法1 天前
【RDKX5多摄像头模型推理】USB带宽限制与ROS2话题零拷贝转发
linux·c++·python·深度学习