互联网是如何工作的?
细节可能会让你大吃一惊……
每个人都应该了解互联网的基础知识。
我们的世界越来越数字化和互联。作为这个新社会的公民,了解底层系统是有意义的。
作为软件开发人员,了解这一点至关重要。在今天的文章中,让我们更深入地了解底层协议。
查找收件人:IP 地址
在我上一篇文章中,我谈到了大规模网络以及它们是如何连接的。
但是计算机如何在如此庞大的网络上发现彼此呢?如果有适当的权限,我可以将我的计算机连接到您的计算机吗?
答案是肯定的。
当计算机连接到互联网时,它会收到一个“互联网协议 (IP) 地址。”
计算机的 IP 地址就像您家的地址。您可以从该地址发送消息,也可以在该地址接收消息。
IP 地址允许 Internet 上的计算机相互识别、连接和发送消息。
当您连接到一个网站时,您实际上只是连接到另一台计算机——该网站的“服务器”。
该服务器也有一个 IP 地址。因此,连接只是在这两个唯一地址之间路由信息包的问题。
您的计算机现在有一个 IP 地址。好奇它是什么?
人性化的地址别名:域名
20.205.243.166很难记住。记住github.com要容易得多。
当我打字时,我的电脑如何知道要去哪里github.com?
域名系统是另一项互联网创新。它允许您的计算机查找github.com的关联 IP 地址
DNS 背后的复杂性要高得多。它允许网站围绕用户如何连接到域来设置各种规则和重定向。
但归根结底,DNS 是一项解决难题的简单技术:解决整个 Web 上的记录,具有高可扩展性、复制性和记录之间的最终一致性。
计算机之间的通信规则:TCP/IP
到目前为止,我的电脑有:
在 DNS 中查找 github.com
找到 GitHub 的 IP 地址20.205.243.166
接下来,我们需要建立连接并开始交换信息!
这是怎么发生的?
早期的互联网先驱们想出了一些关于计算机应该如何在互联网上相互连接和交谈的重要规则。所有在线计算机都遵循这些规则,因此存在共同语言。
这些通信规则称为传输控制协议/Internet 协议 (TCP/IP)。
TCP/IP 的细节可以写满整篇文章。为简洁起见,我们只说 TCP/IP 涉及将数据分成小的信息“数据包”。当您想通过 Internet 发送文件时,您的计算机会遵循特定规则将该文件分成多个较小的数据包。
这些单独的数据包可以通过不同的路由到达目标 IP 地址。它们可能以不同的顺序到达、重复或根本没有到达。
当它们被接收时,接收方将确认发送回发送方。基本上,他们收到的是数据的数据包。如果一个数据包没有到达,发送方将重新发送丢失的数据包。
最终,TCP 保证所有数据包都将到达。当他们这样做时,协议指定了接收方可以重组数据包,以从发送方分割文件的方式。
HTTP
具体来说,当您浏览网页时,您可能正在使用超文本传输协议 (HTTP)。这是专为网页和丰富格式设计的 TCP/IP 子集。
超文本文件可以链接在一起并包含嵌入其中的媒体。当您在 Web 上查看超文本标记语言 (HTML) 页面时,您的浏览器正在使用 HTTP 与网站服务器进行通信。
浏览器是允许您的计算机呈现这些 HTML 页面和浏览网络的软件。
互联网 != 网络
这一切都把我们带到了一个重要的点。
尽管我们在对话中可以互换使用它们,但网络和互联网并不是一回事。
互联网是指世界上所有连接设备的网络协议。IP 地址和数据包路由是计算机之间所有连接通信的基础。互联网协议的前身自 1970 年代就已存在。
万维网是 Tim Berners-Lee 在 1980 年代和 90 年代发明的。它是以 HTML 呈现并通过 HTTP 规则进行通信的网站。网络建立在互联网之上,它只是互联网功能的一个子集。
把它们放在一起
那么,我的电脑如何连接到github.com?
我的电脑和 GitHub 的服务器都有互联网协议地址
我的电脑在域名系统中查找GitHub的IP地址
两台计算机使用传输控制协议建立连接
使用 TCP,我们以数据包的形式来回发送数据,在数据包到达时确认收到数据包
具体来说,我们的计算机遵循 TCP/IP 规则的子集,称为超文本传输协议,允许我们交换丰富的网页信息
GitHub 的响应包括超文本标记语言 (HTML),我计算机上的浏览器软件知道如何呈现
在图片中
将数据包发送到 GitHub。
具体来说,请求是获取主页。
DNS 查找 IP 地址,TCP/IP 帮助将请求路由到正确的目的地。
GitHub 确认该请求,并且其服务器生成回复给我。
响应使用超文本传输协议,并包括超文本标记语言。
数据包以各种方式路由回我的计算机,同样使用 TCP。
总结
所有这一切还有更多的方法。这篇文章是一个简化的、快乐的路径示例,说明如何通过 Internet 进行连接。
如果你喜欢我的文章,点赞,关注,转发!
- 0000
- 0000
- 0000
- 0000
- 0001