企业网站建设收费,昆明做网站哪家便宜,网页制作详细教程,浦口网站建设我们以一个非常简单的例子开始#xff1a; 两服务器通讯问题 如上图#xff0c;有两台服务器#xff0c;分别是 Server 1 和 Server 2 。 我们先做一个假设#xff1a;计算机网络现在还没有被发明出来#xff0c; 作为计算机科学家的你#xff0c;想在这两台服务器间传递… 我们以一个非常简单的例子开始 两服务器通讯问题 如上图有两台服务器分别是 Server 1 和 Server 2 。 我们先做一个假设计算机网络现在还没有被发明出来 作为计算机科学家的你想在这两台服务器间传递数据怎么办 原文地址https://learn-linux.readthedocs.io 。QQ交流群Linux网络编程群号183196643欢迎关注我们的公众号小菜学编程 (coding-fan) 这时你可能会想到用一根电缆把两台服务器连接起来 物理课大家都学过电线可以分为 低电平 和 高电平 。 电平可以高低变化这样不就可以传递信息了么 Server 1 控制电缆电平的高低 Server 2 检测电平的高低这样就实现了 Server 1 往 Server 2 发送数据啦 更进一步可以将高低电平抽象成数学语言我们用低电平表示 0 高电平表示 1 这样就得到一个理想化的信道 通过信道双方可以传递一些 01 比特流。 例子中我们传输的比特流是 1111010101... (从右往左看)。 比特流可以编码任意信息 比如我们用 1111 表示告诉对方本地开机了用 0000 告诉对方本地准备关机了。 到目前为止我们是不是万事具备了呢 一个比特流信道成为现实——理论上是这样子的。 但是现实世界往往要比理想化的模型复杂一些。 发送控制 首先如上图信道是无穷无尽的。 因为信道状态要么为 0 要么为 1 没有一种表示空闲的特殊状态。 举个例子如上图 Server 1 向 Server 2 发送比特序列 101101001101 (从右往左读)。 最后一个比特是 1 对应的电平是高电平。 发送完毕后由于没有没有其他地方改变电缆的电平所以还是维持高电平状态。 也就是说信道看起来还是按照既定节拍源源不断地发送 1 (灰色部分) Server 2 怎么检测结尾在哪里 我们可以定义一些特殊的比特序列用于定义开头结尾 101010 表示开头 010101 表示结尾。 这时 Server 1 先发送 101010 (红色)告诉 Server 2 我要开始发数据了 然后 Server 1 开始发送数据 1101011 (黑色部分) 最后 Server 1 发送 010101 (绿色)告诉 Server 2 数据发送完毕。 注意到平时信道为 1 (灰色)也就是代表空闲状态。 冲突仲裁 如果两台服务器同时往信道里发送数据会发生什么事情呢 肯定冲突了嘛一台发 0 一台发 1 那你说信道到底是 0 还是 1 那么冲突要怎么解决呢 解决方式也简单只需在硬件层面实现一种机制在检测到两台服务器同时发送数据时及时喊停并协商到底由哪一方先发。 总结 本节讨论了一个最简单的模型解决两台服务器之间的通讯问题。 通过电缆在两台机器间建立了一个理想的比特流传输信道。 这其实就是网络分层结构中最底层——物理层的作用 传输比特流依赖物理(电气)特性这一层对开发人员来说基本上是透明的我们只需将其理解成一个比特流传输信道即可。 至于细节问题高低电平啦信号啦各种物理特性啦通通留给电子工程师去关心好啦 进度 下一步 下一节我们将通过 多服务器通讯问题 进入 数据链路层 的学习。 订阅更新获取更多学习资料请关注我们的 微信公众号