百科问答小站 logo
百科问答小站 font logo



USB有可能整合TCP/IP协议吗? 第1页

  

user avatar   bei-ji-85 网友的相关建议: 
      

你这个整合的概念是不准确的。

网线上跑的不是TCP/IP协议,而是以太网协议。而USB线上跑的是USB协议,因为USB规范没有专门把链路层协议拆分开,所以对于普通人来说,看着像是一个东西。如果真要做对比,TCP/IP协议,对应的USB来说应该是Bulk/Interrup传输和设备的Endpoint定义,这些对于普通用户来说不可见。

电口千兆以太网基本上普及了,速率是1Gbps,而USB3.0也普及了,低配的USB3.0也有5Gbps,我真没看出来“高于USB3.0的速度”是结论是怎么的出来的

按最高速率比较,最新的USB4的物理层可以跑到40Gbps,电口以太网的上限也基本就是40Gbps左右,虽然也有100Gbps的,但实际应用场景受限很大。整体上USB和以太网的速率基本相似。

即使回头看看历史,USB2.0普及的年代,USB2.0的速率是480Mbps,同时代的网卡以百兆或者千兆为主,百兆网卡更多一些,才100Mbps,怎么看也不如USB快。

至于传输距离,USB确实有个5米的限制,这是因为USB是主机-设备的模型(有主从关系),主机对设备的响应时间有最低要求,想象一下,如果插上一个U盘,要几分钟才响应出来,就没什么实用意义了。以太网里的各种设备都是对等关系,传输信号也是谁先抢到谁先传输,没有一个主从设备的关系,所以网线可以做的更长一些,大不了就是延迟大一点而已。

题主说的整合,我猜有两个可能性:

1. 把USB线当网线。

这个理论上是可以的,改一下物理层的信号格式就行了,Type-C接口可以走雷电信号,也可以走USB信号。信号的带宽跟接口类型关系不大(虽然也有影响),所以设计一个以太网-Over-TypeC完全没问题,至于好不好用,那另说了,前提是硬件厂商愿意定制这种接口和线缆。

2. 在USB协议栈上跑网络协议栈(以太网)

这个东西一直都有,USB网卡(有线或者无线)已经有很多了。

所以以上两点都是可行的,并且第二条早就实现了。


总结一下,

1. 民用的场景下,USB比网卡要快一些。
2. 如果只用USB线缆和接口去跑其它协议,一般来说没有什么限制,具体能不能用要看厂商。
3. USB线缆传输USB信号距离的限制无法突破,这是USB响应时间的问题,如果不跑USB,参考上一条。


看来有人没明白为啥是5米长度限制。

贴一个USB规范:

7.1.1.1 Full-speed (12 Mb/s) Driver Characteristics
A full-speed USB connection is made through a shielded, twisted pair cable with a differential characteristic impedance (Z0) of 90 Ω ±15%, a common mode impedance (ZCM) of 30 Ω ±30%, and a maximum one-way delay (TFSCBL) of 26 ns

单向最大延迟是26ns,光速3×10^8 × 26 × 10 ^ -9 = 7.8,电信号的实际速度要比这个值低一些,最后USB组织就限制了一个5米,就是这么来的。跟信号干扰什么的没关系

规范的其它地方也有定义:

7.1.16 Cable Delay
The maximum total one-way signal propagation delay allowed is 30 ns. The allocation for cable delay is 26 ns. A maximum delay of 3 ns is allowed from a Host or Hub Controller downstream facing transceiver to its exterior downstream facing connector, while a maximum delay of 1 ns is allowed from the upstream facing connector to the upstream facing transceiver of any device. For a standard USB detachable cable, the cable delay is measured from the Series A connector pins to the Series B connector pins and is no more than 26 ns. For other cables, the delay is measured from the series A connector to the point where the cable is connected to the device. The cable delay must also be less than 5.2 ns per meter.

信号在线缆上的延迟限制是5.2 ns/m,乘以5米就是26 ns,这是协议层面上规定的。更详细的原因是USB要求主机对设备的请求响应有个最小的延迟,如果线缆过长,延迟会导致USB设备响应时间过慢,超过一定时间没有收到信号,USB设备自动进入挂起状态。

要突破这个限制比较麻烦,可以通过多级级联USB Hub的方式实现,但成本太高,不推荐。

另外,网上有一些不正规的线缆可以延长到5-30米左右,理论上说也是可以工作的,但不能保证一定正常。

同样的以太网的100米也是因为CSMA/CD算下来,结合包长度得到的一个数值,不是随便写的,也不是仅仅因为信号问题就限制的。


user avatar   lin-zi-yuan-56 网友的相关建议: 
      

四芯网线两对差分信号,最高百兆,速度低于usb2.0(一对差分信号)。八芯网线四对差分信号,最高万兆,低于usb3.2(三对差分信号),不知道你为什么觉得网线就比usb快。。。这两个都是铜缆传输,受限于线缆的抗干扰设计,传输原理上没有本质的区别,哪来的什么黑科技?


user avatar   s.invalid 网友的相关建议: 
      

网线?古董?亏你能把这俩词联系起来……


网线的确称得上“历史悠久”,但绝对和“古董”扯不上关系。、

事实上,为了让它能够把信号送到100米开外(7类以下)或者30米外(8类线),网线借助了艰深的“传输线”理论。


简单说,铜线上传输高频电信号时,是会有电磁波发射的,这本身就会使得信号快速衰减;雪上加霜的是,发射出的电磁波还会被导线自身乃至另一根导线吸收、产生感应电势——懂电学的都知道,这就是“信号串扰”,会大幅降低对端接收到信号的信噪比。

尤其是,双工通讯时,网线中本来就有两个信号,两个信号相互串扰同时还干扰自身,情况就更复杂了——所以你传音频这种低频模拟信号,只需随便拉根屏蔽线,传几百米甚至几公里都没问题;但传输动辄几十几百M甚至若干G的高频信号,你要拿音频线来……哪怕拿发烧友用的纯银编织线都无济于事,信号至多传个三五米就会衰减殆尽。


为了应对这种情况,技术人员通过计算,巧妙的把网线线缆中的信号线两两对绞——也就是俗话说的“拧”——在一起。

这种“对绞”使得信号线彼此缠绕,产生类似于“变压器”的效果,使得导线上辐射出的电磁信号马上被自身吸收,就好像变压器主线圈上的信号能量被转移到了次级线圈一样——这就是所谓的“传输线变压器”:传输线变压器结构_工作原理_特点-维库电子通 (dzsc.com)


当然,这玩意儿和低频交流电升降压用的变压器区别极大,必须靠“传输线理论”才能解释和计算。这说起来就太复杂了(其实我也不懂)……

幸好,计算结果还是很简单直白的:双绞线线芯有不同的颜色,按照计算结果把特定颜色的一对线两两对绞、且每米对绞次数分别为XX次——你严格按规定做了,那么这根线拿来传输超高频信号时,电磁信号就神奇的不怎么外泄也不怎么串扰了。


正是靠这个理论支撑,我们才能把信号在以太网双绞线上传输100米(七类及以下)或者30米(八类)。


很遗憾,USB并不是为这个目的设计的。盲目的延长它,结果就是信号衰减殆尽且串扰严重,对端什么有用信息都提取不出来——所以USB线最长不能超过5米(实际上,对绝大多数的淘宝劣质线来说,两米长的USB都经常导致手机无法识别了;真正能把信号可靠送到5米外的USB线几乎是“天价”。不过,如果你拿根高标号的以太网线接到USB插头上,反而可能把USB信号送到十几米甚至几十米开外,只是通讯速率受限于以太网线)。


虽然USB线无法替代网线,但这并不等于说“无法在USB上传输TCP/IP协议报文”。


事实上,USB和以太网双绞线一样,都属于物理层和数据链路层协议,也就是ISO-OSI七层协议的最下两层。

而IP协议是第三层协议,且IP协议族压根没有规定物理层和数据链路层协议应该是什么样子——它着眼于网际互联,并不关注自己的承载协议。


打个比方的话,IP协议就好像集装箱标准一样,它规定了集装箱的尺寸、最大载荷,也规定了如何在集装箱上标记出发地-目的地-收货人之类信息——但它并不关注你用什么玩意儿运这些集装箱。

因此,有人说,你完全可以用信鸽承载TCP/IP协议——只要把超时时间设置为若干小时甚至若干天即可。


换句话说,别说USB了,TCP/IP协议可以跑在你能想到的任何媒体上——比如,跑在灯泡(亮度变化)-太阳能板这样的“光链路”上;跑在扬声器-麦克风这样的“声链路”上;跑在超声波振子-钢丝/钢轨-压电陶瓷这样的“固态声波数据链路”上……

只要你有办法传输信息,就可以在上面实现TCP/IP协议。

就好像集装箱既可以用轮船运也可以用汽车拉、你用飞机运用直升机吊或者用火车拉全都可以一样——“集装箱协议”只负责“集装箱本身装的东西是否完整”“是否按时运到了地方”,并不管是什么运的集装箱。


——注意我们习惯说"TCP/IP"协议,但实际上IP协议才是第三层协议;TCP则是跑在IP协议上的一个面向连接的可靠流协议;它实际上可以替换为UDP协议,另一个无连接不可靠的报文协议。

——从层级上说,TCP/UDP是第四层传输层协议,IP是第三层网络层协议。如果说IP是集装箱的话,TCP/UDP就是物流公司。

OSI 7层模型和TCP/IP 4层模型 - 知乎 (zhihu.com)


总之,在USB线上跑TCP/IP协议是完全可能的——在Linux下甚至更为简单:把USB设备当作一个文件读写,然后拿它当nic文件,把TCP/IP包丢给它/把从它上面读来的数据丢给TCP/IP协议栈,一行代码不用写,事情就办妥了。


user avatar   ling-jian-94 网友的相关建议: 
      

这是我看到的最准确的总结。

总的来说,就是中国的高考相对公平,所以性价比极高,所以其他活动都可以适当让步。




  

相关话题

  USB2.1与USB3.0的区别是什么? 
  为什么 SATA 要单独供电,而不像 USB 供电和数据一条线? 
  为什么根据 IP 地址查询物理所在地,而不是 mac 地址? 
  为什么老式接口一定要分正反? 
  localhost、127.0.0.1 和 本机IP 三者的区别? 
  像豌豆荚之类的软件是如何通过USB数据线知道手机型号的? 
  usb协会对usb、type-c重新命能否使主板反向供电60w普及? 
  网线接口为什么是 RJ45 规格,而不能做成 USB 型? 
  关于Socket API的设计? 
  ubuntu下,最多可以挂载多少个USB-U盘? 

前一个讨论
中断为什么一定要在内核空间处理,如果把中断放到用户态处理可能会产生什么问题?
下一个讨论
Linux下有什么真正断电可靠的文件系统?





© 2024-12-26 - tinynew.org. All Rights Reserved.
© 2024-12-26 - tinynew.org. 保留所有权利