IP地址、域名和URL
IP地址
想一下,如果我们是外卖员,现在我们的手上有一份外卖要送给对应的客户,我们应该怎么把外卖准确的送到对应的客户手上呢?
结果就是通过客户留下的地址,我们从具体的区,再到某个小区,某个单元楼,几楼几号,从而实现将外卖准确的送到对应的客户手上这一目标。
那么,来到网络世界,网络的本质就是数据的大量传输,现在我们的手上有一个数据包,也就是“外卖”,我们想要准确的将它送到我们需要通信的计算机上面,也需要一个类似于“地址”的东西,实现将数据包准确的送到目标计算机的目标。
这个地址就是IP地址。
在1974年,Vint Cerf和Bob Kahn提出了TCP/IP协议的概念,其中IP协议(Internet Protocol)用于标识网络中的设备并实现数据包的传输。
1981年,IPv4协议正式成为互联网的核心协议,由RFC 791定义。IPv4使用32位地址空间,能够提供约43亿个唯一的IP地址。
但是到了1990年代,互联网的爆炸性增长导致了可用IP地址的迅速减少。
为了延缓IPV4地址枯竭的问题,出现了NAT技术,也就是网络地址转换技术,NAT技术允许多个设备通过一个公有IP地址访问互联网,有效地减少了公有IP地址的需求。
但是IPV4地址仍然面临着枯竭问题,为应对该问题,1990年代初开始了对IPv6的研究。IPv6使用128位地址空间,能够提供几乎无限数量的唯一地址,称能够为地球上的每一粒沙子提供一个IP。
1998年,IPv6被RFC 2460正式定义为互联网协议的新版本。IPv6不仅扩展了地址空间,还引入了一些改进,如简化的报头、更好的支持多播和自动配置等。
尽管IPv6提供了更大的地址空间,但由于现有的IPv4基础设施和软件广泛依赖于IPv4,IPv6的普及相对缓慢。为此,IPv4与IPv6共存并逐步过渡成为现实,许多网络开始支持双栈(Dual Stack),即同时运行IPv4和IPv6。
2011年,全球IPv4地址的最后一批被分配完毕,进一步推动了IPv6的部署。许多国家和地区制定了推广IPv6的计划,网络设备制造商、操作系统开发商和互联网服务提供商(ISP)也逐渐加大对IPv6的支持。
IP地址的作用与功能
- 唯一标识设备:IP地址是网络中每台设备的唯一标识,用于路由器、交换机等网络设备之间的数据传输。
- 网络通信基础:数据包的传输依赖于IP地址来确定数据的发送方和接收方。
- 分类管理:通过分配不同的IP地址范围,可以划分不同的网络区域(比如局域网、广域网),并进行合理的网络管理。
公有IP与私有IP
公有IP地址:在互联网上唯一的IP地址,由互联网服务提供商分配。
私有IP地址:用于局域网内部的IP地址,不会在公共互联网上使用。(如192.168.x.x)。
我们平常使用ipconfig查询到的IPV4地址,192.168.x.x格式的那种,就是路由器在这个局域网中分配的私有地址,如果ping这个设备的话,只有在同一局域网下的设备能够成功,互联网上的设备无法通过这个IP来与我们的设备取得联系(除非经过特殊配置,比如端口映射和VPN)。
当我们与互联网产生数据传输时,路由器就会通过NAT技术将私有IP转换为一个公有的IP地址。
域名
在早期的互联网中,是直接使用IP地址来进行设备之间的通信的,但是IP地址是一连串的数字,对于机器来说比较好处理,但是对于人脑来说就不是那么友好了,特别是随着互联网发展,网站和服务数量急剧增加,记住多个IP越发困难
为解决这一问题,人们引入了域名这一概念。
为了简化用户访问网络资源的过程,域名系统(Domain Name System,DNS)应运而生。域名是IP地址的一个人类可读的替代方式,是一种通过名字而不是数字来标识和访问互联网上资源的方法。
通过这种方法,是的互联网更加易于识别和记忆。
就像我们今天如果想要访问百度,只需要在浏览器地址栏中输入www.baidu.com
即可而不是输入一长串的数字。
这一功能的实现依靠着域名系统(DNS)。
DNS的核心功能是将用户输入的域名解析为对应的IP地址,从而实现资源的定位和访问。
DNS采用分布式数据库系统,全球的DNS服务器协同工作,负责管理和解析数以亿计的域名。这种架构使得域名解析过程既高效又可靠。
域名具有层次结构,分为顶级域名(TLD),如.com
、.org
,和二级域名,如example.com
。这种分层结构进一步增强了域名的管理和组织能力。
现代互联网的域名管理:从简单到复杂
为了管理和规范全球域名系统,1998年,互联网名称与数字地址分配机构(ICANN)成立。ICANN负责域名系统的总体管理,包括顶级域名的分配、DNS根服务器的管理等。
最初的域名系统仅有少数几个顶级域名(如
.com
、.org
),但随着互联网的扩展,新的顶级域名不断被引入,如国家代码顶级域名(ccTLD,如.cn
)、新通用顶级域名(gTLD,如.xyz
)等。随着互联网的发展,域名系统也面临各种安全挑战,如域名劫持、DNS欺骗等。为此,DNS安全扩展(DNSSEC)等技术被引入,以提高域名系统的安全性。
URL(统一资源定位符)
URL(Uniform Resource Locator)是用于标识互联网上某一资源的字符串,是访问网络资源的具体路径。
通过域名和IP地址,我们能够准确的找到目标计算机,但是如果我们想要获取文件,但目标计算机上的文件纷繁复杂,我们怎么找到我们需要的文件呢?
所以URL就出现了:
在互联网的早期,网络主要用于学术和军事,通信依赖于IP地址和简单的协议。网络资源的访问和共享没有统一的标准,主要通过特定的程序和命令行接口进行。
但是随着互联网规模增大,网络上可用的资源类型(比如文件、邮件、网页)越来越多,访问资源的方式也变得复杂起来,不同的服务使用各自的访问路径和方法,使得用户获取资源难度大大增加。
1989年,蒂姆·伯纳斯-李(Tim Berners-Lee)提出了万维网(World Wide Web)的概念,并开发了第一个网页浏览器和网页服务器。他的目标是通过超文本技术将不同的资源互联,并简化信息的访问。
1991年,蒂姆·伯纳斯-李提出了URL的概念,作为定位和访问万维网上资源的标准化方法。URL使得各种资源(如网页、文件、图片)可以通过统一的格式来访问。URL的设计不仅适用于网页资源,也能够扩展到其他互联网服务,如FTP和电子邮件。
URL的组成:
- 协议(Protocol):如HTTP、HTTPS、FTP等,指明如何访问资源(如
https://
)。- 域名或IP地址:指定要访问的主机(如
www.example.com
)。- 路径(Path):主机上资源的具体位置(如
/path/to/resource
)。- 端口(Port):可选项,用于指定访问服务的端口号(如
:80
)。- 查询参数(Query Parameters):可选项,用于传递请求参数(如
?id=123&sort=asc
)。- 片段标识符(Fragment Identifier):可选项,用于指向页面内部的特定位置(如
#section1
)。
1994年,URL被正式标准化为RFC 1738,这一标准定义了URL的语法和使用方法,确保了不同的浏览器和应用程序能够一致地处理URL。标准化的URL成为了万维网的基础,使得网络资源可以通过统一的方式进行访问。
URL、HTTP协议和HTML语言三者的结合,推动了万维网的快速普及。URL提供了一个用户友好的资源定位方式,HTTP协议负责资源的传输,HTML则是资源的展示格式。
URL的扩展与演进
- 动态内容与查询参数:随着Web应用的发展,URL被扩展用于动态内容的访问。通过在URL中加入查询参数(如
?id=123
),服务器可以根据请求生成动态内容。这种机制使得Web应用可以处理复杂的用户交互,如搜索引擎查询、在线购物车等。 - SEO与友好URL:随着搜索引擎的兴起,URL的设计也受到了SEO(搜索引擎优化)的影响。开发者开始设计“友好URL”,就是使用清晰、简洁而且包含关键词的URL(比如
/products/laptop
),用来提高网页在搜索引擎中的排名。 - HTTPS的普及:随着安全性需求的增加,HTTPS(HTTP Secure)逐渐取代HTTP成为主流。HTTPS在URL中使用
https://
开头,表示使用了加密的HTTP协议,可以更好的保护数据传输的安全性。
现代URL
- URL短链接与重定向:为了应对社交媒体等场景中的字符限制,URL短链接服务(如bit.ly)应运而生。这些服务通过生成短URL,重定向用户到原始长URL,从而节省字符数。
- 多样化的URL形式:现代Web开发中,URL被用来处理各种复杂的交互场景,如RESTful API的路径参数、OAuth的回调URL、深度链接等。这些形式进一步扩展了URL的功能和应用范围。
- 国际化域名(IDN):为了支持全球不同语言和字符集的使用,国际化域名(IDN)被引入,使得URL可以包含非ASCII字符,如中文、阿拉伯文等。
数据是如何在网络上传输的?(基本路由与交换)
在明确了目标之后,怎么找到一条最优的路径去到目标计算机呢?难道挨个计算机去寻找吗?显然不太现实。
数据传输的基本概念
在网络中,数据从一个设备传输到另一个设备,必须经过一系列的步骤。这就好比外卖在出发前需要包装、标注地址,并选择送达路线。
首先要进行数据封装,在计算机上发送数据时,无论是访问一个网站还是发一封邮件,都要先将数据封装为数据包,每个数据包都包含了一些关键地址,包括目标地址和发件人的地址,类似于包裹上的收件人地址和寄件人地址。
在封装的过程中,数据会通过多个协议层次,每层协议会添加一些自己的信息:
- 应用层:处理特定的网络应用(比如浏览网页的HTTP协议)
- 传输层:确保数据可靠传输,并有可能将数据分割为多个部分(比如TCP协议)
- 网络层:确定数据的路径(比如IP协议)
- 链路层:负责数据在局域网内的传输(比如以太网协议)
数据分段:如果一次传输的数据量太大,传输层协议会将数据分成多个小段进行封装和传输。
路由
前面已经讲数据打包好了,接下来就需要寻找一个合适的路线到达目标计算机,这就需要路由的作用。
路由是数据包从源设备(如你的电脑)通过一系列网络节点(如路由器)到达目标设备的过程。路由器就像是网络中的交通指挥员,它们根据预设的规则决定数据包的最佳传输路径。
每个路由器都有一个“路由表”,这个表记录了到达各个目的地的最佳路径。每当一个数据包到达路由器时,路由器会检查这个数据包的“目标地址”(即目标IP地址),然后查阅路由表,决定将数据包发送到哪个下一个网络节点。
为了让“路由表”始终保持最新状态,路由器之间会使用路由协议来交换信息,这就像外卖员之间会交流最新的交通情况,选择最快的路线。
常见的路由协议:
RIP(Routing Information Protocol):适用于小型网络,基于跳数选择路径。
OSPF(Open Shortest Path First):适用于大型网络,基于链路状态选择最优路径。
BGP(Border Gateway Protocol):用于互联网规模的路由选择,决定跨国或跨网络的最佳路径。
交换
如果说路由器负责规划长途路线,那么**交换机(Switch)**就像是小区内的门卫,负责把外卖送到具体的楼栋或住户。(当然我从来没有听说过哪里的门卫会这样干)
交换是指数据包在同一个局域网(LAN)内的传输过程。交换机是用来在局域网内转发数据包的设备,它们通过读取数据包的目标**MAC地址(硬件地址)**来决定将数据发送到哪个端口,从而将数据包送到正确的目标设备。
每个交换机都有一个MAC地址表,记录了每个连接设备的MAC地址和相应的端口号。当一个数据包到达交换机时,交换机会查找MAC地址表,找到与目标MAC地址对应的端口,然后将数据包发送到该端口。
当交换机接收到一个目标MAC地址不在其表中的数据包时,会将数据包广播给所有连接的设备,直到找到目标设备并更新MAC地址表,这就像外卖员第一次进小区时询问哪栋楼是正确的,然后记住路线。
交换机交换方式:
存储转发:交换机会先接收完整的数据包,检查是否无误,然后再进行转发,确保数据准确性。
直通转发:交换机在接收到数据包的目标地址部分后,立即开始转发,速度较快但可能会传递有误的数据。
总结
最终,整个数据传输过程可以简化为以下步骤:
- 数据封装:源设备生成数据,并通过操作系统的网络协议栈进行封装,形成数据包,包含目标IP地址和MAC地址。
- 局域网内交换:数据包通过局域网内的交换机,根据MAC地址转发到网络出口,通常是路由器。
- 路由路径选择:出口路由器根据目标IP地址,查找路由表,决定数据包的下一跳,并将数据包发往下一个路由器。
- 跨网络传输:数据包经过多个路由器,在不同的网络(如局域网、广域网、互联网)之间传递,逐步接近目标网络。
- 目标网络内交换:数据包到达目标网络,交换机根据MAC地址将其发送到目标设备的端口。
- 目标设备接收:目标设备接收到数据包后,逐层解封装,最终获取到原始数据并进行处理。