PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

对快速以太网CSMA/CD的一点不明之处与大家讨论

[复制链接]
跳转到指定楼层
1#
haierccc 发表于 2013-5-23 15:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
点击数:5480|回复数:33
本帖最后由 haierccc 于 2013-5-23 16:58 编辑

      学习网络的过程中我看了一些书,诸如因特网体系结构、ISO7层协议,快速以太网,《TCP/IP协议》第一卷等,有一个问题一直不太明白。
      我画了一张示意图:



     这是一个典型的家庭因特网接入环境,网线通过无线路由器进入交换机,供台式机和笔记本使用(这里没有画无线接入的笔记本)。
     在学习快速以太网的CSMA/CD协议的过程中,有个问题一直萦绕我心,至今没有理解。
     CSMA/CD的核心思想是:由于以太网是种竞争型的网络,所以会出现好几台电脑同时发言的情况,这样就会产生“冲突”,所以在发言之前,网卡监听网络上的通信,以太网数据帧之间有个“时隙”,如果静默时间超过了时隙,就认为没有别人发言,于是自己就可以发言了。
     举个例子,我从电脑A往电脑B的共享文件夹里拷贝100G的高清电影,连接已经建立,数据正常拷贝中。
     由于拷贝时间很长,闲来无事,我就在电脑B上挂着QQ与人聊天,消磨时间。
     现在看起来一切都很好,这也是我们早就习以为常的工作状态:多任务。也就是同时有好几个网络任务在运行,比如在线听歌的同时,在线聊天,同时淘宝购物。
    但这里隐藏着一个问题:依照CSMA/CD所言,电脑发言的时候,一定要是在网络静默时间超过“时隙”以后,但是此时,电脑B一直在接受电脑A的数据啊。
    也就是说,电脑A在给电脑B传送数据,在数据传送完毕之前,以太网数据帧之间的静默时间始终不会超过“时隙”,此时无线路由器根本找不到机会插入信息,也就不会给电脑B上的QQ发送信息了。
   当然,以太网在实际工作中不可能同时只有2台机器建立连接,所有的信息都会及时在网上传输(比如P2P信息和广播信息),这究竟是如何做到的呢?
      网桥(交换机)是一种解决方法,因为隔离了冲突域,但假设上图的设备不是交换机,而是HUB,也就“集线器”呢?因为集线器不是工作在交换模式,而是工作在总线模式下,其上所有的电脑同属一个冲突域

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
2#
XXHJACK 发表于 2013-5-23 20:19 | 只看该作者
本帖最后由 XXHJACK 于 2013-5-23 20:35 编辑

用并发多数据帧来解决。在pc端-pc端上使用tcp/ip协议传输数据,tcp协议内容你看看就知道了!估计你还没看到哪!
3#
haierccc  楼主| 发表于 2013-5-23 21:01 | 只看该作者
本帖最后由 haierccc 于 2013-5-23 21:02 编辑
XXHJACK 发表于 2013-5-23 20:19
用并发多数据帧来解决。在pc端-pc端上使用tcp/ip协议传输数据,tcp协议内容你看看就知道了!估计你还没看到 ...


百度了一下,没有“并发多数据帧”的释意。请解释一下。
而且,TCP/IP是3、4层协议,而MAC是2层的,2层都没有传过去,高层更没法传啦。
你说的是不是“端口”,也就是TCP端口,这是高层的概念,我说的是2层的问题。
4#
eva2015 发表于 2013-5-23 21:15 | 只看该作者
冲突域是hub时代的东西了,那时候端口速度只有10M,以太网中一般每个数据包都是有大小限制的,

一般是1500字节一个数据包,无论你干多少事,最终从网线里传送数据的时候都是一个包一个包的,

所谓的监听就是在发送每个包前的事。具体的都是大学时候学的了,基本忘光了。
5#
gmx168 发表于 2013-5-23 21:58 | 只看该作者
LS说的对,哪怕是再大的数据,也得拆成一个一个小包来发送,包是3层的数据,到了2层呢,封装帧头加上MAC地址变成帧,这些帧混合着其他地址的帧使用CSMA/CD来轮番发送~~~

这个不关交换机或HUB的事儿,以交换机为例,你在一个公网网站下载的同时还访问某些其他网站,这时所有的包都是发往同一个网关的,也就是不管你目的IP是什么,它们2层封装的目的MAC地址都是网关的MAC地址。
6#
haierccc  楼主| 发表于 2013-5-23 22:33 | 只看该作者
gmx168 发表于 2013-5-23 21:58
LS说的对,哪怕是再大的数据,也得拆成一个一个小包来发送,包是3层的数据,到了2层呢,封装帧头加上MAC地 ...

所谓“时隙”,就是MAC帧之间的时间空隙。
假如电脑A和网关之间有通信,那帧之间的时隙就一直不会超过标准值,导致电脑B无法和网关通信

7#
gmx168 发表于 2013-5-23 23:13 | 只看该作者
haierccc 发表于 2013-5-23 22:33
所谓“时隙”,就是MAC帧之间的时间空隙。
假如电脑A和网关之间有通信,那帧之间的时隙就一直不会超过标 ...

打个比方吧。

A有一大段话要说,但也必须一句话一句话地说,相邻2句话之间必须有一段停顿,在这个停顿里A会听听是否有别人要发言,如果没有,那么A继续说下一句话;如果这时B跳出来要说话,那么A就只能让给B说话。

大致原理就是这样的,算法实现起来会麻烦不少,要设置随机等待时间和退避啥的~~~


8#
XXHJACK 发表于 2013-5-23 23:19 | 只看该作者
haierccc 发表于 2013-5-23 21:01
百度了一下,没有“并发多数据帧”的释意。请解释一下。
而且,TCP/IP是3、4层协议,而MAC是2层的,2层都 ...

建议你看完再说!!这个大学的东西比较难理解!

9#
haierccc  楼主| 发表于 2013-5-23 23:32 | 只看该作者
本帖最后由 haierccc 于 2013-5-23 23:33 编辑
gmx168 发表于 2013-5-23 23:13
打个比方吧。

A有一大段话要说,但也必须一句话一句话地说,相邻2句话之间必须有一段停顿,在这个停顿里 ...


A在判断,B也在判断啊
B在监听的时候,由于A的信息包在持续发送,一直没有超过时隙(停顿)限制,所以就会一直处在监听状态而不能发言。
10#
gmx168 发表于 2013-5-23 23:42 | 只看该作者
haierccc 发表于 2013-5-23 23:32
A在判断,B也在判断啊
B在监听的时候,由于A的信息包在持续发送,一直没有超过时隙(停顿)限制,所以就 ...

我在学习以太网csma/cd时没有提及时隙的概念,倒是在无线网络里有提及,但都会有一个公平机制,保证所有设备都有机会发言。

你继续好好看书吧,一定是什么地方看漏咯~~~
11#
红色狂想 发表于 2013-5-24 20:35 | 只看该作者
计算机I/O的是数字量,这些都是量子态的,不同于模拟态永不停息的流水,是一块一块,一份一份的,每块之间有充裕的遐想空间,随时可以接受别的插入,插插插。。。而这个时序是飞快的,对人来说,目测就是进度条一直在走,时快时慢,循序渐进。如果你将进度条微积分到无限小个垂直线段,你就会发现线性运动的进度变成了量子中断跳跃运动
12#
haierccc  楼主| 发表于 2013-5-24 22:19 | 只看该作者
红色狂想 发表于 2013-5-24 20:35
计算机I/O的是数字量,这些都是量子态的,不同于模拟态永不停息的流水,是一块一块,一份一份的,每块之间 ...

第一回听说,把脉冲信号说成是量子态。
13#
marsash 发表于 2013-5-25 00:52 | 只看该作者
红色狂想 发表于 2013-5-24 20:35
计算机I/O的是数字量,这些都是量子态的,不同于模拟态永不停息的流水,是一块一块,一份一份的,每块之间 ...

不要误导小朋友啊,目前的计算机都是基于电信号,和量子态没什么关系,量子计算机和量子通信都还在试验中
14#
Kiddy 发表于 2013-6-4 16:22 | 只看该作者
突然看到自己的老本行觉得格外亲切,不过有些细节已经记不清楚了。不知道LZ现在搞明白没,我从科普的角度回答一下你的问题吧,如果表述有问题的话请大家指教。

首先,LZ应该没有完全理解OSI的七层模型或TCPIP的五层模型。每一层模型的作用就是:
1.相信自己的下层,不关心下层的实现细节
2.做好自己的本职工作
3.为上层提供可靠的服务

物理层:保证物理信号的正确传输,即传输已调制的比特流
数据链路层:将数据格式化进行传输,对物理介质进行访问控制(CSMA/CD就是访问控制的一种),有一定的纠错能力(以太网一般是奇偶校验),保证数据正确地调制为物理信号,从物理信号中正确地解调出数据。单位为帧,标准以太帧长1518字节,你可以算一下每帧的传输时间是多少。
网络层:负责数据包的寻址,路由转发。IP协议工作在这一层。
传输层:定义了通信双方传输和交互的协议。TCP协议工作在这一层,而TCP协议中的“连接”其实是一个虚连接——发送方稳定地发送数据,接收方稳定地接收数据。看起来好像是一个稳定的连接。实际上你的数据是一个一个分片的报文,可能有的从北京直接发到上海,有的从北京先到西安绕了一圈再到达上海,这些细节你都是不知道且没必要关心的(下层累死累活的难处你知道么)。

从原理上说,LZ的问题可以这样解释:电脑A在传输层与电脑B建立了一个连接,稳定地传输数据。此时B要发出一条QQ消息,那么数据链路层要“监听-线路忙-等待-监听-线路忙-等待-监听-线路忙-等待。。。。(重试N次后)-监听-线路闲-发数据”。从概率的角度来讲,一般重试几次后B就可以成功将数据发出,这个过程在微秒的数量级,期间相当于A到B的数据链路层处于“监听-等待-重试”过程。而这个几十微秒(往多了说1000微秒即1毫秒)的短暂停对于上面的网络层和传输层来说根本可以忽略不计。传输层的TCP连接不会因此中断。

就像你寄快递从北京到广州,北京路断了,上海大雾机场关闭了,武汉爆仓了这些都不需要你关心,你能看到的就是你的快件在可容忍的时间内到达就行了。

关于独占资源的共享利用,可以参考单核CPU的任务切换:你同时开游戏、QQ、迅雷、音乐播放器。CPU(底层)先为你计算10微秒游戏数据,花1微秒接收一条QQ信息,花2微秒从网络上收10KB数据,花2微秒解码1秒音频,再回来处理你的游戏。一般情况下你(上层)都是感觉不到游戏在卡的。
15#
haierccc  楼主| 发表于 2013-6-4 19:26 | 只看该作者
本帖最后由 haierccc 于 2013-6-4 19:32 编辑
Kiddy 发表于 2013-6-4 16:22
突然看到自己的老本行觉得格外亲切,不过有些细节已经记不清楚了。不知道LZ现在搞明白没,我从科普的角度回 ...


多谢解释哈!各层的作用解释得很清楚。
可我的那个问题还是不太明白。
按理说,A与B之间的通信只要没有结束,其它的帧就插不进来,那路由器也就无法给机器B发送信息,
那为何在若干个“发送请求-监听-线路忙-等待”的循环过程中,会突然出现一个“发送请求-监听-就绪-见缝插针”呢?
因为根本无缝可插啊。

我就是对这个第二层的细节感兴趣。
16#
kulengpceva 发表于 2013-6-4 22:28 | 只看该作者
haierccc 发表于 2013-6-4 19:26
多谢解释哈!各层的作用解释得很清楚。
可我的那个问题还是不太明白。
按理说,A与B之间的通信只要没有结 ...

也算搞了很多年网络,在这个问题上没有纠结过,你现在提出来我到也觉得有些意思。
基于网络传输的数据,首先在发送端通过OS会进行数据的封装,基于不同的流控措施进行数据的排队(实际上没传输之前,在OS中就开始了排队,默认的是FIFO)成帧之后开始在网络设备中进行传输。传输过程中不同协议以不同方式来保证自己传输的数据不丢失,分片就是一种技术,每个分片的包都是有编号的。
还有楼上有人提过的二层通讯问题,二层通讯以MAC为目标,跟网关没关系。这个在认真看过OSI模型之后仔细分析封装解封装之后就知道了。
看书要系统,认真。不过很提倡较真和探索的精神。交流是最好的学习方式。

点评

他都没把模型看完!其实把大学教材7层的定义那一章看完自己就明白了!  发表于 2013-6-5 01:07
17#
Kiddy 发表于 2013-6-4 23:32 | 只看该作者
haierccc 发表于 2013-6-4 19:26
多谢解释哈!各层的作用解释得很清楚。
可我的那个问题还是不太明白。
按理说,A与B之间的通信只要没有结 ...

即使是A与B的通信量大且连续,也并不是完全占有信道。广播域上所有的数据帧发送都要公平地“争用”信道,A在发送过程中也要侦听碰撞、争用信道。同一时刻有多个人同时争用时,依概率被其中一人抢占(这里面有个随机后退避让的过程,可以去翻下书)。A发送大量以太帧,和B发送一个以太帧,对于每一个帧来说都是公平的,B经过几次争用后(依概率看人品)就会成功发送出去。
18#
bobzhuyb 发表于 2013-6-5 07:06 | 只看该作者
haierccc 发表于 2013-6-4 19:26
多谢解释哈!各层的作用解释得很清楚。
可我的那个问题还是不太明白。
按理说,A与B之间的通信只要没有结 ...

有个东西叫帧间隙。。。。。。



19#
haierccc  楼主| 发表于 2013-6-5 11:27 | 只看该作者
本帖最后由 haierccc 于 2013-6-5 21:12 编辑
Kiddy 发表于 2013-6-4 23:32
即使是A与B的通信量大且连续,也并不是完全占有信道。广播域上所有的数据帧发送都要公平地“争用”信道, ...


我们讨论的是第二层,那就看第二层吧,不看其它层面了。
我有本《快速以太网》的书,但不在手边,我回去看看,里面有第二层的流程。
回想起来,的确是每发送一帧,就要监听是否有冲突,如果没有,就接着发送第二帧。
如果有冲突,进入随机回退机制,回退一定时间。
我看看书再说吧,哪里有遗漏的。
补充:写完了,看后页。
20#
XXHJACK 发表于 2013-6-5 11:33 | 只看该作者
haierccc 发表于 2013-6-5 11:27
我们讨论的是第二层,那就看第二层吧,不看其它层面了。
我有本《快速以太网》的书,但不在手边,我回去 ...

帧是以片段的形式发的,你认为一帧能有好大吗?一帧完了就会下一次计算。我们的一个数据包是很多帧组成的,在底层要过无数次计算才能发完,计算量很大的,要不怎么会不同品牌和芯片的网卡性能不一样呢!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部