【小菜学网络】物理层概述

代码逐星人
• 阅读 1256

通讯模型

假设,计算机网络现在还没有被发明出来,作为计算机科学家的你,想在两台主机间传输数据,该怎么办?

【小菜学网络】物理层概述

这时,你可能会想到,用一根电缆将两台主机连接起来:

【小菜学网络】物理层概述

物理课大家都学过,电压可以分为 低电平高电平 。因此,我们可以通过控制电平高低,来达到传输信息的目的: 主机①控制电缆电平的高低, 主机②检测电平的高低,主机间数据传输便实现了!

用数学语言进一步抽象:以低电平表示 0 ,高电平表示 1 。这样就得到一个理想化的信道:

【小菜学网络】物理层概述

通过信道,双方可以传输由 0 和 1 组成的比特流,上图中传输的比特流是 1111001011... (从右往左看)。比特流可以编码任意信息,例如:用 1111 告诉对方本地开机了,用 0000 告诉对方本地准备关机了。

至此,我们是否得到一个可靠的比特流信道,万事具备了呢? ——理论上是这样的,但现实世界往往要比理想化的模型更复杂一些。

收发控制

信道是无穷无尽的,状态要么为 0 ,要么为 1 ,没有一种表示空闲的特殊状态:

【小菜学网络】物理层概述

举个例子,主机①向主机②发送比特序列 101101001101 ,如下图(从右往左读)。最后一个比特是 1 ,对应的电平是高电平。发送完毕后,主机①停止控制电缆电平,所以仍保持着高电平状态:

【小菜学网络】物理层概述

换句话讲,信道看起来仍按照既定节拍,源源不断地发送比特 1 (灰色部分), 主机②如何检测比特流结尾呢?

我们可以定义一些特殊的比特序列,用于标识开头和结尾。例如, 101010 表示开头, 010101 表示结尾:

【小菜学网络】物理层概述

  1. 主机①首先发送 101010 (绿色),告诉主机②,它开始发数据了;
  2. 主机①接着发送数据 01101011 (黑色部分);
  3. 主机①最后发送 010101 (红色),告诉主机②,数据发送完毕;

注意到,平时信道为 1 (灰色),也就是代表空闲状态。

冲突仲裁

如果两台服务器同时向信道发送数据,会发生什么事情呢?

【小菜学网络】物理层概述

一边发 0 ,一边发 1 ,那信道到底应该是 0 还是 1 呢? 肯定冲突了嘛!有什么办法可以解决冲突吗?

方案①,引入一根新电缆,组成双电缆结构,每根电缆只负责一个方向的传输。这样一来,两个方向的传输保持独立,互不干扰,可以同时进行。这样的传输模式在通讯领域称为 全双工模式

【小菜学网络】物理层概述

方案②,在硬件层面实现一种仲裁机制:当检测到多台主机同时传输数据时,及时叫停,并协商哪一方先发。这样一来,信道同样支持双向通讯,但不可同时进行。这种传输模式则称为 半双工模式

  • 单工 ( simplex ),只支持单向通讯,即从其中一端发往另一端,反之不行;
  • 半双工 ( half duplex ),支持双向通讯,但不可同时进行;
  • 全双工 ( full duplex ),支持双向通讯,而且可以同时进行;

常见物理介质

除了电信号,还有其他物理信号亦可充当通讯介质。那么,常见的物理介质都有哪些呢?

【小菜学网络】物理层概述

【小菜学网络】物理层概述

【小菜学网络】物理层概述

  • 电信号,例如电缆,网线就是电缆中的一种;
  • 光信号,例如光纤;
  • 电磁波,例如 WiFi ,无线网卡,蓝牙等;

【小菜学网络】系列文章首发于公众号【小菜学编程】,敬请关注:

【小菜学网络】物理层概述

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
梦
4年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
java一生之敌 java一生之敌
2年前
JVM的内存模型和优化方式
一、JVM的内存模型1.!图片(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/52b2220f04010eb329efbef966f9fa40.png)其中s0,s1为幸
Wesley13 Wesley13
3年前
TCP协议
ISO/OSI网络模型共有七层:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。TCP/IP网络模型:应用层,传输层,网际层,网络接口!(https://static.oschina.net/uploads/img/201711/291518
Stella981 Stella981
3年前
Linux应急响应(一):SSH暴力破解
0x00前言SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,主要用于给远程登录会话数据进行加密,保证数据传输的安全。SSH口令长度太短或者复杂度不够,如仅包含数字,或仅包含字母等,容易被攻击者破解,一旦被攻击者获取,可用来直接登录系统,控制服务器所有权限。0x01应急场景某天,网站
胖大海 胖大海
2年前
OSI网络七层模型详解
一、网络的目的网络的目的是为了实现主机到主机的通信。最简单的通信方式是拿一根网线,两头分别插在两台主机上,然后将主机AIP地址配为192.168.1.20,将主机BIP地址配为192.168.1.23,然后这两台主机就可以互相通信了,他们在一个局域网内。这是最简单的实现两台主机互通的方式。二、OSI网络模型OSI网络模型是ISO组织定义的国际通用标准模型
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
专注IP定位 专注IP定位
3年前
网络七层结构是干啥的? 看这篇文章就够了
前言“物理层、数据链路层、网络层、传输层、会话层、表示层和应用层”,今天我们的目标就是把这些个玩意,翻译成“人话”,保证你一看就懂,一学就废网络七层结构,相信是个搞计算机网络的,或者是搞软件开发的,甚至是搞互联网的,99%的人应该都知道,最起码那也得是听过,就是下方这个玩意:(你要是听都没听过,别跟我说你是混迹于互联网界的啊)但是,如果让这些人讲清楚这七层结