澄清一下,我是一个新手程序员,有一个非常基本的问题。如果处理器只理解机器语言,那么高级语言在呈现给处理器之前需要“翻译”或“解释”。我的问题是通过互联网发送的数据是什么语言的?它是以机器语言还是高级语言发送的?
我试图了解计算机如何相互通信以及如何在位/字节级别在它们之间传输数据。
提前致谢。
澄清一下,我是一个新手程序员,有一个非常基本的问题。如果处理器只理解机器语言,那么高级语言在呈现给处理器之前需要“翻译”或“解释”。我的问题是通过互联网发送的数据是什么语言的?它是以机器语言还是高级语言发送的?
我试图了解计算机如何相互通信以及如何在位/字节级别在它们之间传输数据。
提前致谢。
TL;DR 简短的回答是:1 和 0
然而
这是一个更复杂的答案,老实说,如果你想要这个答案,有些事情会促使你问,你真的需要知道dealio。:) 所以...
闪回电信类
数据以机器代码传输。是 1 和 0。但是,有一个通用结构,将使用高级语言进行翻译。这取决于机器上接受字节流的 NIC 卡、机器使用的操作系统以及接受数据的服务器。有许多不同的级别可以处理请求。
网络信息栈由许多不同的部分组成,这些部分由 OSI 模型描述,并且根据许多不同的事物而变化。让我给你一个快速运行。正如我解释的那样,请参阅http://vlsm-calc.net/models.php 。
物理- 这是 1 和 0 中的数据传输,或者更确切地说是“开”和“关”消息,通过线路传输。物理层描述了正在传输的非常物理的直接电子电流。
DataLink - 这是您的物理信号首先被解析的层。您可以将其视为您机器中的 NIC。NIC 将接收这些原始消息,并确定该消息是给您的(您的本地 NIC 卡接收用于您的计算机的数据),还是转发它(数据包被标记为需要传输到您的本地计算机局域网)。
网络- 好的,这是真正的分组暴露的第一个点。在这里,结构被赋予内容,隔离被解析成包等等。这就是IP(来自TCP/IP)的来源。通常,使用的协议决定了您的消息是硬连接还是无连接请求等。
传输 (TCP/UDP) - 这是您的请求的真正内容被构造/解析的地方。这决定了您的包裹是否可靠,等等。
...更多层。
我不会详细介绍,因为这是一个非常复杂的话题。大多数时候,你会在大学里学习电信课程,这将帮助你学习整个电信堆栈。但是,简而言之,数据是通过网络以 1 和 0 形式发送的,并且将嵌入按位数据,例如校验位、包号等。然后由您的机器来处理它。NIC 将接受请求,然后它将解析后的流广播到您机器上的套接字(例如,com 端口 5035 [这不对,只是一个示例])。如果设置了一些应用程序来侦听该端口(例如,您的机器上正在运行 Fiddler,并读取 NIC 正在拉入的所有数据)。然后,您可以使用所需的任何语言解析该流,
对不起,我在为您提供大量信息的同时仍试图使其易于理解之间采取了强硬路线。如果您真的有兴趣了解数据的传输方式,我强烈建议您购买一些书籍/参加课程,并真正花时间去了解。您将学习到与网络硬件/操作系统/浏览器实现的一些非常有价值的交互。:) 我还要参考如何理解网络协议?.
那里给出的解释非常彻底。:)
实际上,@Marc B 的评论应该是一个答案。
我认为您在这里混淆了两个术语:可执行代码和数据。当您谈论机器执行某事时,它涉及您提到的代码、程序或机器语言。
当您谈论通过互联网相互通信的两个端点(计算机、智能手机)时,它是关于数据和协议的。
所以回答你的问题 - 互联网上的数据以位(通常打包在数据包中)传输,并且由于两个端点在协议上达成共识,他们了解数据包含的内容(实际上可以是任何东西)然后消费相应地。