非鱼's profile谁可共鸣PhotosBlogListsMore ![]() | Help |
|
July 28 书最近买了几本书,特别是无线网络的方面的书,有中国人写的,有美国人写的。另外,还从网络上下载了一些资料是台湾人写的。 从这些资料,我们可以看出,大陆的人写书,水平真TMD的差,就是把802.11的规范翻译了一下,而且很多地方都翻译的不好,甚至是错误,我敢确定,这些写书的人肯定是对这个协议是不懂的。自己都不同,仅仅是翻译成中文,别人就能够看懂吗? 看看美国人写科技资料,真的让你佩服,什么叫做用心去写?看看美国人写书就知道了。美国人写科技方面的书有如下几个特点: 1, 有心去写 2, 深入浅出 3, 擅长说明,能够把一个非常复杂的道理,说明的非常简单 4, 从整体到局部细节,首先给你一个宏观的整体感,然后到细节步步检讨。 5, 按照理解的思路和方法写起, 反观中国人写书,简直一塌糊涂,有如下特点: 1, 教条式说教多,不是循循善诱 2, 很多逻辑跳跃比较大,其实是作者本身都打不通该逻辑。 3, 懂得人不想看,需要看得人看不懂 4, 拼凑,没有完整的系统
总之,外国人写书是用心去写,中国人写书为了写而写,为了数量而写。 July 25 重拾理想从2001年研究生毕业,到现在已经8年了,工作以后,时间过的真快,感觉这8年好像是弹指一挥间的事情。很多当年的理想已经抛弃,现在好像就是被现实的压力压住自己,喘不过气来,一直就是赚钱、赚钱,买房子,买车子。其实这些东西对我来讲有很多意义吗?没有! 对于现在所在的公司也是这样的,公司真的是已经没有理想,整天就是在生存的挣扎中挣扎。忘了很多很多的东西。例如,你可以问很多人,我们公司的理想是什么?你在公司的理想是什么?很多人都会很茫然,一句话,就是赚钱。这个能叫理想吗?或许也是吧,现实很无奈,就是为了“活着”吧。 我想起来当年共产党的发家史和“胡子”的不同。先说说胡子吧,胡子之所以能够聚集很多人,也是有他的原则和人格魅力的。很多电影里面都有这样的场景,老大往椅子上一坐,把酒一端,“兄弟们,跟我干,我们一定会有肉吃和有酒喝的”,共产党不同,共产党一开始就是有组织有规模,有理想有主义,这个主义是什么?就是马克思主义,这个理想是什么,就是实现共产主义。这帮泥腿子的奋斗目标不单有肉吃有酒喝,还在干一番伟大的事业,就是为了人类的解放而努力奋斗。 这就是共产党的成功的地方,也是老毛成功的地方,如果没有这个理想,那么老毛根本无法团结这么多人在一起。比如,你说有酒喝有肉吃,在你这边,我需要打需要拼才有肉吃,跑到老蒋那边,我不需要打,也不需要拼了,也肉吃了,我为了要和你干?所以,共产党成功的一点,就是给了大家一个高尚的和纯洁的理想,这是非常关键的。 环顾我们公司,我们现在理想是什么?老板阐述的很清楚,就是我们要打败精英打败FIC打败蓝天,成为二线厂里面的第一名。这个很多优秀的员工都不赞成,为什么呢?第一,要打败二线厂很简单,就是,我现在跳槽到一线厂商,例如ASUS就OK了,我马上就把ECS打败了。第二,为什么要打败人家,人家做的好好的,为这么多穷人做了那么多贡献,我们为什么要做一个搅局者,去把人家打倒呢?所以,我们确实“师出无名”! 师出有名,古往今来都是这样的,例如,诸葛亮出师打曹操,要写出师表,表明理想和决心,要光复汉室。就连袁绍打曹操也是这样,请了一个牛人写了一篇檄文。这样,我们要真的是打ECS,我们的檄文是什么? 这些问题,如果解决不好,所有人都是为了挣钱,那么我们就是胡子,打家劫舍,抢到ECS等的东西,我们大家就有肉吃有酒喝。这样,一部分有理想的优秀人士慢慢的不齿与我们为伍就离开我们了,我们最后就剩下一帮乌合之众,成不了大器的。 所以,如果我们想要不成为乌合之众,那么我们必须重新建立我们的理想,我们曾经有没有理想的,其实是有的,2003年,我们凝聚力了一批优秀的热血青年,我们高喊着要“制造世界上最好的笔记本”的愿望,忘我的工作。其实,理想就是理想,理想不一定能够实现的,例如共产主义。但是,理想一定要是一个目标,我们做事的价值观和依据目标都要从这个理想来,明显,现在我们的做法是与原来的理想背道而驰的,所以,不适合再做的我们的理想了。 那么我们可以拿什么来做理想呢?“让12亿穷人用得起电脑”“让世界上所有人都用顶星电脑”?这个需要仔细和认真考虑。 July 18 狼性文化和疯狗文化企业文化,大家经常讲,特别是大家经常讲狼性文化。例如,某某领导对待员工过于严厉,他会说,我们这是狼性文化。我觉得这是对狼性文化的误解,为什么这样说呢? 大家一提到狼,马上就想起东郭先生和狼,狼和小羊等故事,马上就想到狼的凶残特性。我觉得这纯粹是对狼性文化的误解,这样为什么叫狼性文化,而不叫鳄鱼文化,或者狗熊文化呢? 为什么叫狼性文化,主要是指狼的目标坚持和不放弃的特性。也就是说狼为了一个猎物和目标,可以几天几夜的追逐,不达目标,我们誓不罢休。 这才是狼性文化,如果没有目标的文化,只能叫疯狗文化。 关于局域网内部机器上网问题我们知道,对于小公司,一般都是设定C类IP地址,而且一般都是使用192.168.0.X或者192.168.1.X的形式。这个问题我一直有一个非常大的疑惑就是:我们知道,Internet上网络通讯一般都是使用IP数据包来传送的,例如,我们访问新浪网,是通过访问58.63.236.49完成的。也就是说,我给新浪发IP,目的地址写的新浪的IP,而新浪给我回信息,目的地址是我的IP,加入我的IP是192.168.0.1,在我们互联网系统中,这样的IP太多了,新浪给我的信息怎么能够达到我的机器的呢? 这个问题困扰了我很久,现在我基本上慢慢解开了。就是因为我们的局域网一般是通过一个网关接入广域网,而关于网路由的方法就是不是靠IP地址实现的,例如靠PPP数据包实现的,那么,如果我访问新浪,广域网会把我和新浪的服务器之间建立PPP链路,这样,新浪的服务器给我发送的数据包就是靠这个PPP链路回到我的局域网的网关,我们的局域网网卡去掉PPP的封装,检查到这个IP地址是我的,网关就会把这个IP数据报发送给我的机器,这样,我就可以和新浪的服务器通讯了。 这也说明,在广域网上的机器,必须是不同的IP,这样别的机器才可以找到你。而局域网内部的机器,可以和别的局域网重复,但是这样,你只能访问别人和接受别人的回应,而别人是找不到你的。 ADSL是如何上网的我们知道,一般上网信息都是封装成TCP协议,然后在封装成IP协议,也就是表现为IP数据包的形式。后面,我们需要数据链路层和物理层协调工作,把这个数据包发送到我们的终端。底下是如何做的呢? 我们首先我们网卡先和ADSL的控制器建立连接,这就是通过连路程的PPPoE协议建立起来的。建立这个链路层之后,网卡就可以和ADSL的控制器通讯了,然后网卡的数据链路层在通过ADSL的电话线端和电信局的交换机(服务器)建立一个连接,这个就是PPP链路。这样,我们发送的IP数据包,就会通过网线,发送到ADSL控制器,ADSL取出PPP封装后的IP数据包,然后使用电话线,交给电信局的交换机(服务器)。 为什么我们需要PPPoE呢?如果把PPP封装后的数据报直接发送给ADSL控制器难道不行吗?这样也是行的的,但是如果一个Ethernet局域网系统中如果有多个ADSL控制器,这样的方法就行不通了。(我的疑惑:难道仅仅就是这个原因?) 另外,就是PPP的必要性,我们假设IP数据包,直接交给PPPoE,这样就会被ADSL收到,ADSL控制器再把数据转换成电话线上传输的方式,交给交换机不就OK了?为什么我们必须PPP这个东西呢?关键是,我们知道数据链路层的数据传输,必须是有MAC地址的,对于局域网内部的机器,我们可以使用IP层的ARP协议,根据IP数据报的IP目的地址来找到连路程所发送的MAC地址,但是由于数据ADSL不是一个工作在IP层的设备,所以,其没有IP,所以,就无法使用ARP协议登记其MAC地址,所以,我们必须有一个协议找到这个MAC地址,这就是PPPoE的作用了。 然后,我们再进一步讨论为什么需要PPP! 按照道理,我们只需要把IP数据包交给ADSL控制器,然后由ADSL进行PPP封装,然后广域网的交换机把PPP封装的数据包送给接受者的ADSL控制器之类的东西,接受者然后就可以收到该IP数据包了,为什么在计算机段就需要封装呢?第一,因为ADSL不是工作在IP层,因此,其根据就不是哪些IP是往外部传的,哪些是内部的,所以这样,计算机段就自己进行判断,如果是网内,则不封装PPP,如果是网外,就进行PPP封装。
July 08 从前有座山,山里有座庙
从前有座山,山里有座庙,庙里有个老和尚,在讲故事给小和尚听,讲的是: 从前有座山,山里有座庙,庙里有个老和尚,在讲故事给小和尚听,讲的是:………… 这个故事无聊吗?很无聊,也很不无聊,因为这样的故事,整天在我们身边发生。 我们公司就是这样,每年都在重复同样的故事,重复同样的错误,指定同样的目标,结果是,我们每一年每一天都没有进步,我们缺乏反省的勇气,缺乏创新的能力。 N年前,老板就是我们一定要大家一起努力,把XXX项目做成一个示范项目,做成一个样板项目,可以,这样的热度过了两个月几乎就忘了。 N年前,我们就分析出货目标没有达成是因为缺电池缺屏缺塑胶件,N年过去了,我们依然还是缺电池缺屏缺塑胶件。 N年前,我们就通过计算甲客户这个月能够出多少,乙客户能够出多少来计算我们的销售额,结果没有一次我们计划是准的,N年后,我们依然还是这样的计算,结果我们还是没有算准。 N年前,我们就整天提流程啊,改造啊,结果流程是越理越乱,效率是越来越低下,员工流失是越来越严重。 N年了,我变化了多少?我是否还要重复昨日的故事?
一码归一码
现在公司内部,充满很多的混乱,逻辑混乱。例如,有的员工迟到了很久,问他原因,他说自己工资太低了。例如,项目Delay,他说公司阿姨做饭太难吃了。再如,项目做的Bug太多了,他说公司加班难调休。 这种思想是从哪里来的?为什么我们公司会出现这样的问题?是我们管理层平时思想沟通不到位?还是其他?
July 04 NDIS(NetworkDriverInterfaceSpecification)
NDIS(NetworkDriverInterfaceSpecification)是网络驱动程序接口规范的简称。它横跨传输层、网络层和数据链路层,定义了网卡或网卡驱动程序与上层协议驱动程序之间的通信接口规范,屏蔽了底层物理硬件的不同,使上层的协议驱动程序可以和底层任何型号的网卡通信。 NDIS为网络驱动程序创建了一个完整的开发环境,只需调用NDIS函数,而不用考虑操作系统的内核以及与其他驱动程序的接口问题,从而使得网络驱动程序可以从与操作系统的复杂通讯中分离,极大地方便了网络驱动程序的编写。另外,利用NDIS的封装特性,可以专注于一层驱动的设计,减少了设计的复杂性,同时易于扩展驱动程序栈。
NDIS支持三种类型的网络驱动程序: 网卡驱动程序(NICdrivers):网卡驱动程序是网卡与上层驱动程序通信的接口,它负责接收来自上层的数据包,或将数据包发送到上层相应的驱动程序,同时它还完成处理中断等工作。 中间驱动程序(Intermediateprotocoldrivers):中间驱动程序位于网卡驱动程序和协议驱动程序之间,它向上提供小端口(Minport)函数集,向下提供协议(protocol)函数集,因此对于上层驱动程序而言,它是小端口驱动程序。对于底层的驱动程序,它是协议驱动程序。 协议驱动程序(Upperlevelprotocoldrivers):协议驱动程序执行具体的网络协议,如IPX/SPX、TCP/IP等。协议驱动程序为应用层客户程序提供服务,接收来自网卡或中间驱动程序的信息。 我们开发的防火墙采用的是中间驱动程序。 中间驱动程序在协议驱动程序和小型端口驱动程序之间插了一层,使得来自上层的发送包和来自网络的接收包都必须经过它而进行传递,从而可以用来拦截较为底层的网络数据包,在此基础上进行过滤、加密、压缩、网络地址转换等操作。由于中间驱动程序实际上不是从最下层直接截获的比特流,而是经过了NDIS,所以实际的包没有了CRC(循环冗余校验码),这部分已经被NDIS过滤掉了。基于这个原因,可以说中间驱动程序的大概位置是在数据链路层和网络层之间。中间驱动程序在数据链路层和网络层之间对所有的数据包进行 检查,功能强大,但编程接口比较复杂。 基于IMD包过滤防火墙系统总体框架: (1)基于IMD的包过滤驱动程序PFilter.SYS 位于核心态,运行效率高,主要用于在NDIS中间驱动程序中拦截所有的网络数据包,根据过滤规则判别是否接收或发送数据包。同时处理上层应用程序发送的IRP,可以将数据包直接传送到应用程序、设置网卡的工作模式等。 (2)应用层的网络监控与防火墙软件Firewall.EXE。 负责提供用户界面,为用户提供方便的服务,选择底层包过滤驱动程序监控网卡,读取和过滤数据包,支持对常见协议和地址的过滤设置,用树状视图有层次地显示以太数据帧的解码信息,以十六进制的形式显示整个数据包的数据转储,对捕获到的数据包的存储和加载等。
包过滤驱动程序以虚拟网络设备驱动程序的方式“楔入”操作系统的协议堆栈,能截获所有进出系统的网络数据包,从而解决数据包过滤的核心问题。 此次驱动程序的开发主要基于Windows 2000 DDK中的NDIS中间驱动程序例程Passthru,以此为框架进行编程,在此基础上通过改写接收和发送包函数、增加与用户态应用程序通信等功能去实现。驱动程序在核心态具备设置、请求传递、包截获和包管理等有效手段,向上可以通过系统为设备I/O提供的统一界面与用户态应用交互。 当应用层程序要发送数据时,不是直接将数据包发送给NdisSend函数,而是先发送给包过滤驱动程序的MPSend或MPSendPackets函数,可以在这两个函数里截获并处理所有要通过网卡向外发送的数据包。 当外部数据包到达网卡时,首先由PtRequestComplete函数处理来自网卡外部数据包的请求,接着由驱动程序中的PtReceive或PtreceivePacket函数接受所有来自网卡的数据包,并将数据包读入数据包缓冲区,可以在两个函数里截获并处理所有系统接收到的来自网卡的数据包。
在拦截数据包过程中,如果读取等待队列中有上层应用程序请求读取数据包的IRP,则从读取等待队列的首部取出一个IRP,并将被截获的数据包拷贝到该IRP所指定的缓冲区中。 在驱动程序中,使用注册设备接口的方法创建设备对象和符号链接,并注册分发例程接口,实现与上层应用程序的通信。
上层应用程序在Visual C++6.0中利用MFC类库实现,用户界面友好。采用MFC SDI接口,在文档类中存储一些截获的简单统计信息,截获的数据以及数据包的解析信息,并在几个视图类中分别显示这些信息。 整个应用程序的核心部分时对底层驱动程序截获的数据包的读取。由于网络中流动的是海量数据,并且数据的流量是随机的,因此可能存在丢包的情况。为了能够保证处理所有的包,或者保证足够低的丢包率,必须尽可能在最小包传输周期内将其处理完毕。应用程序利用Win32的重叠I/O操作和完成端口以及多线程特性极大地提高了运行效率,在测试运行(100M局域网)中可捕获ICMP、UDP、TCP等数据包。 关于产业冬天的感想
上次烟台开会,周其仁教授分析了国内的局势,目前,美国次级债务、人民币升值,高油价和通货膨胀、工人工资提高等因素,已经导致了国内制造业和IT行业已经到了一个冬天。 冬天到了,我们应该怎么办?第一,想想办法度过这个冬天,例如,我们应该储备足够的粮食,买厚厚的棉衣,这样才能够抵御冬天。 除了抵御冬天以外,我们还应该珍惜这个冬天,因为气候变化了,所以,在这个变化中间会有很多大的机会存在,例如,冬天很多对手会被冻死,这正是我们抢夺他们粮食的好时候,或者,因为很多人都需要棉衣,所以,这个时候,是我们买棉衣最好的时候。 针对同一件事情,悲观的人感慨困难,乐观的人发现机会。乱世出英雄,如果没有变化,可能英雄就永远被埋没了。 玩转网卡MAC地址玩转网卡MAC地址 [编者按]人们经常感叹世界上没有完美的事物,但又忍不住努力去挑战完美极限,因为人们知道追求完美,取得进步的过程才真的是一种完美体验。我们众多的网络爱好者在探讨技术方面更是如此,这也正是我们所应鼓励的学习方式!
网卡上有一颗EEPROM芯片,通常是一颗93C46。里面记录了网卡芯片的供应商ID、子系统供应商ID、网卡的MAC地址、网卡的一些配置,如SMI总线上PHY的地址,BOOTROM的容量,是否启用BOOTROM引导系统等东西。
MAC和PHY集成在一颗芯片的以太网卡
三、IP地址、MAC地址和三层交换技术
四、真实MAC地址、注册表MAC地址和MAC地址的修改
五、MAC地址的捆绑、ARP命令缺陷和MAC地址重复
2、 服务器用ARP -S 做IP+MAC捆绑后,如果用户自己改MAC,保持IP不变,这种情况下,ARP -S的捆绑被用户轻易突破。
情况2、端口和MAC地址捆绑认证
2、虚拟主机的特点。这个主机可以设置MAC地址,也就是说:对外无论谁先拨号,服务商检测到的是已经注册的唯一的合法的MAC,轻松突破服务商IP+MAC捆绑或者MAC+端口捆绑;当服务器关机后,其它电脑将会自动成为服务器,保证网络可以继续使用,这样可以实现无缝切换:当服务器关机,客户机切换到服务器的过程中,可以保证客户机中正在进行中的游戏不会中断。无缝切换已经在大多数游戏中测试过,包括CS、Quake、联众世界等。
July 03 解密网络传输 工程师带你深入认识网卡
一、什么是网卡? 网卡现在已经上成为了目前电脑里的标准配置之一。小小的网卡,究竟蕴涵着多少秘密呢?让我们一起来看。 我们最常用的网络设备当属网卡了。网卡本身是LAN(局域网)的设备,通过网关、路由器等设备就可以把这个局域网挂接到Internet上。而Internet本身就是无数个这样的局域网组成的。 网卡有许多种,按照数据链路层控制来分有以太网卡,令牌环网卡,ATM网卡等;按照物理层来分类有无线网卡,RJ-45网卡,同轴电缆网卡,光线网卡等等。它们的数据链路控制、寻址、帧结构等不同;物理上的连接方式不同、数据的编码、信号传输的介质、电平等不同。以下主要介绍我们最常用到的蕴ā?lt;/P> 以太网采用的CSMA/CD(载波侦听多路访问/冲突检测)的控制技术。他主要定义了物理层和数据链路层的工作方式。数据链路层和物理层各自实现自己的功能,相互之间不关心对方如何操作。二者之间有标准的接口(例如MII,GMII等)来传递数据和控制。 以太网卡的物理层可以包含很多种技术,常见的有RJ45,光线,无线等,它们的区别在于传送信号的物理介质和媒质不同。这些都在IEEE的802协议族中有详细的定义。 这次我们主要讨论的RJ45的网卡属于IEEE802.3定义的范围。 二、网卡的组成 1.网卡的基本结构 一块以太网网卡包括OSI(开方系统互联)模型的两个层。物理层和数据链路层。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。 以太网卡中数据链路层的芯片一般简称之为MAC控制器,物理层的芯片我们简称之为PHY。许多网卡的芯片把MAC和PHY的功能做到了一颗芯片中,比如Intel 82559网卡的和3COM 3C905网卡。但是MAC和PHY的机制还是单独存在的,只是外观的表现形式是一颗单芯片。当然也有很多网卡的MAC和PHY是分开做的,比如D-LINK的DFE-530TX等。
图一:MAC和PHY分开的以太网卡(点击放大)
图二:MAC和PHY集成在一颗芯片的以太网卡(点击放大)
①RJ-45接口 ②Transformer(隔离变压器) ③PHY芯片 ④MAC芯片 ⑤EEPROM ⑥BOOTROM插槽
2.什么是MAC?
首先我们来说说以太网卡的MAC芯片的功能。以太网数据链路层其实包含MAC(介质访问控制)子层和LLC(逻辑链路控制)子层。一块以太网卡MAC芯片的作用不但要实现MAC子层和LLC子层的功能,还要提供符合规范的PCI界面以实现和主机的数据交换。
MAC从PCI总线收到IP数据包(或者其他网络层协议的数据包)后,将之拆分并重新打包成最大1518Byte,最小64Byte的帧。这个帧里面包括了目标MAC地址、自己的源MAC地址和数据包里面的协议类型(比如IP数据包的类型用80表示)。最后还有一个DWORD(4Byte)的CRC码。
可是目标的MAC地址是哪里来的呢?这牵扯到一个ARP协议(介乎于网络层和数据链路层的一个协议)。第一次传送某个目的IP地址的数据的时候,先会发出一个ARP包,其MAC的目标地址是广播地址,里面说到:"谁是xxx.xxx.xxx.xxx这个IP地址的主人?"因为是广播包,所有这个局域网的主机都收到了这个ARP请求。收到请求的主机将这个IP地址和自己的相比较,如果不相同就不予理会,如果相同就发出ARP响应包。这个IP地址的主机收到这个ARP请求包后回复的ARP响应里说到:"我是这个IP地址的主人"。这个包里面就包括了他的MAC地址。以后的给这个IP地址的帧的目标MAC地址就被确定了。(其它的协议如IPX/SPX也有相应的协议完成这些操作。)
IP地址和MAC地址之间的关联关系保存在主机系统里面,叫做ARP表,由驱动程序和操作系统完成。在Microsoft的系统里面可以用 arp -a 的命令查看ARP表。收到数据帧的时候也是一样,做完CRC以后,如果没有CRC效验错误,就把帧头去掉,把数据包拿出来通过标准的借口传递给驱动和上层的协议客栈,最终正确的达到我们的应用程序。 还有一些控制帧,例如流控帧也需要MAC直接识别并执行相应的行为。
3.网络传输的流程
收数据时的流程反之。
PHY还有个重要的功能就是实现CSMA/CD的部分功能。它可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将送数据出去。如果两块网卡碰巧同时送出了数据,那样必将造成冲突,这时候,冲突检测机构可以检测到冲突,然后各等待一个随机的时间重新发送数据。 这个随机时间很有讲究的,并不是一个常数,在不同的时刻计算出来的随机时间都是不同的,而且有多重算法来应付出现概率很低的同两台主机之间的第二次冲突。
许多网友在接入Internt宽带时,喜欢使用"抢线"强的网卡,就是因为不同的PHY碰撞后计算随机时间的方法设计上不同,使得有些网卡比较"占便宜"。不过,抢线只对广播域的网络而言的,对于交换网络和ADSL这样点到点连接到局端设备的接入方式没什么意义。而且"抢线"也只是相对而言的,不会有质的变化。
4.关于网络间的冲突
我们的PHY还提供了和对端设备连接的重要功能并通过LED灯显示出自己目前的连接的状态和工作状态让我们知道。当我们给网卡接入网线的时候,PHY不断发出的脉冲信号检测到对端有设备,它们通过标准的"语言"交流,互相协商并却定连接速度、双工模式、是否采用流控等。
通常情况下,协商的结果是两个设备中能同时支持的最大速度和最好的双工模式。这个技术被称为Auto Negotiation或者NWAY,它们是一个意思--自动协商。
5.PHY的输出部分
再就是设备接地方法不同,电网环境不同会导致双方的0V电平不一致,这样信号从A传到B,由于A设备的0V电平和B点的0V电平不一样,这样会导致很大的电流从电势高的设备流向电势低的设备。我们如何解决这个问题呢?
这时就出现了Transformer(隔离变压器)这个器件。它把PHY送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到连接网线的另外一端。这样不但使网线和PHY之间没有物理上的连接而换传递了信号,隔断了信号中的直流分量,还可以在不同0V电平的设备中传送数据。
隔离变压器本身就是设计为耐2KV~3KV的电压的。也起到了防雷感应(我个人认为这里用防雷击不合适)保护的作用。有些朋友的网络设备在雷雨天气时容易被烧坏,大都是PCB设计不合理造成的,而且大都烧毁了设备的接口,很少有芯片被烧毁的,就是隔离变压器起到了保护作用。
6.关于传输介质
一张网卡的传输最大距离和与对端设备连接的兼容性主要是PHY决定的。但是可以将信号送的超过100米的PHY其输出的功率也比较大,更容易产生EMI的问题。这时候就需要合适的Transformer与之配合。作PHY的老大公司Marvell的PHY,常常可以传送180~200米的距离,远远超过IEEE的100米的标准。
RJ-45的接头实现了网卡和网线的连接。它里面有8个铜片可以和网线中的4对双绞(8根)线对应连接。其中100M的网络中1、2是传送数据的,3、6是接收数据的。1、2之间是一对差分信号,也就是说它们的波形一样,但是相位相差180度,同一时刻的电压幅度互为正负。这样的信号可以传递的更远,抗干扰能力强。同样的,3、6也一样是差分信号。
网线中的8根线,每两根扭在一起成为一对。我们制作网线的时候,一定要注意要让1、2在其中的一对,3、6在一对。否则长距离情况下使用这根网线的时候会导致无法连接或连接很不稳定。
现在新的PHY支持AUTO MDI-X功能(也需要Transformer支持)。它可以实现RJ-45接口的1、2上的传送信号线和3、6上的接收信号线的功能自动互相交换。有的PHY甚至支持一对线中的正信号和负信号的功能自动交换。这样我们就不必为了到底连接某个设备需要使用直通网线还是交叉网线而费心了。这项技术已经被广泛的应用在交换机和SOHO路由器上。
在1000Basd-T网络中,其中最普遍的一种传输方式是使用网线中所有的4对双绞线,其中增加了4、5和7、8来共同传送接收数据。由于1000Based-T网络的规范包含了AUTO MDI-X功能,因此不能严格确定它们的传出或接收的关系,要看双方的具体的协商结果。
7.PHY和MAC之间如何进行沟通
而MAC对PHY的工作状态的确定和对PHY的控制则是使用SMI(Serial Management Interface)界面通过读写PHY的寄存器来完成的。PHY里面的部分寄存器也是IEEE定义的,这样PHY把自己的目前的状态反映到寄存器里面,MAC通过SMI总线不断的读取PHY的状态寄存器以得知目前PHY的状态,例如连接速度,双工的能力等。当然也可以通过SMI设置PHY的寄存器达到控制的目的,例如流控的打开关闭,自协商模式还是强制模式等。
我们看到了,不论是物理连接的MII界面和SMI总线还是PHY的状态寄存器和控制寄存器都是有IEEE的规范的,因此不同公司的MAC和PHY一样可以协调工作。当然为了配合不同公司的PHY的自己特有的一些功能,驱动需要做相应的修改。
一片网卡主要功能的实现就基本上是上面这些器件了。
其他的,还有一颗EEPROM芯片,通常是一颗93C46。里面记录了网卡芯片的供应商ID、子系统供应商ID、网卡的MAC地址、网卡的一些配置,如SMI总线上PHY的地址,BOOTROM的容量,是否启用BOOTROM引导系统等东西。
很多网卡上还有BOOTROM这个东西。它是用于无盘工作站引导操作系统的。既然无盘,一些引导用必需用到的程序和协议栈就放到里面了,例如RPL、PXE等。实际上它就是一个标准的PCI ROM。所以才会有一些硬盘写保护卡可以通过烧写网卡的BootRom来实现。其实PCI设备的ROM是可以放到主板BIOS里面的。启动电脑的时候一样可以检测到这个ROM并且正确识别它是什么设备的。AGP在配置上和PCI很多地方一样,所以很多显卡的BIOS也可以放到主板BIOS里面。这就是为什么板载的网卡我们从来没有看到过BOOTROM的原因。
8.网卡的供电
结语
解密网络传输 工程师带你深入认识网卡
一、什么是网卡? 网卡现在已经上成为了目前电脑里的标准配置之一。小小的网卡,究竟蕴涵着多少秘密呢?让我们一起来看。 我们最常用的网络设备当属网卡了。网卡本身是LAN(局域网)的设备,通过网关、路由器等设备就可以把这个局域网挂接到Internet上。而Internet本身就是无数个这样的局域网组成的。 网卡有许多种,按照数据链路层控制来分有以太网卡,令牌环网卡,ATM网卡等;按照物理层来分类有无线网卡,RJ-45网卡,同轴电缆网卡,光线网卡等等。它们的数据链路控制、寻址、帧结构等不同;物理上的连接方式不同、数据的编码、信号传输的介质、电平等不同。以下主要介绍我们最常用到的蕴ā?lt;/P> 以太网采用的CSMA/CD(载波侦听多路访问/冲突检测)的控制技术。他主要定义了物理层和数据链路层的工作方式。数据链路层和物理层各自实现自己的功能,相互之间不关心对方如何操作。二者之间有标准的接口(例如MII,GMII等)来传递数据和控制。 以太网卡的物理层可以包含很多种技术,常见的有RJ45,光线,无线等,它们的区别在于传送信号的物理介质和媒质不同。这些都在IEEE的802协议族中有详细的定义。 这次我们主要讨论的RJ45的网卡属于IEEE802.3定义的范围。 二、网卡的组成 1.网卡的基本结构 一块以太网网卡包括OSI(开方系统互联)模型的两个层。物理层和数据链路层。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。 以太网卡中数据链路层的芯片一般简称之为MAC控制器,物理层的芯片我们简称之为PHY。许多网卡的芯片把MAC和PHY的功能做到了一颗芯片中,比如Intel 82559网卡的和3COM 3C905网卡。但是MAC和PHY的机制还是单独存在的,只是外观的表现形式是一颗单芯片。当然也有很多网卡的MAC和PHY是分开做的,比如D-LINK的DFE-530TX等。
图一:MAC和PHY分开的以太网卡(点击放大)
图二:MAC和PHY集成在一颗芯片的以太网卡(点击放大)
①RJ-45接口 ②Transformer(隔离变压器) ③PHY芯片 ④MAC芯片 ⑤EEPROM ⑥BOOTROM插槽
2.什么是MAC?
首先我们来说说以太网卡的MAC芯片的功能。以太网数据链路层其实包含MAC(介质访问控制)子层和LLC(逻辑链路控制)子层。一块以太网卡MAC芯片的作用不但要实现MAC子层和LLC子层的功能,还要提供符合规范的PCI界面以实现和主机的数据交换。
MAC从PCI总线收到IP数据包(或者其他网络层协议的数据包)后,将之拆分并重新打包成最大1518Byte,最小64Byte的帧。这个帧里面包括了目标MAC地址、自己的源MAC地址和数据包里面的协议类型(比如IP数据包的类型用80表示)。最后还有一个DWORD(4Byte)的CRC码。
可是目标的MAC地址是哪里来的呢?这牵扯到一个ARP协议(介乎于网络层和数据链路层的一个协议)。第一次传送某个目的IP地址的数据的时候,先会发出一个ARP包,其MAC的目标地址是广播地址,里面说到:"谁是xxx.xxx.xxx.xxx这个IP地址的主人?"因为是广播包,所有这个局域网的主机都收到了这个ARP请求。收到请求的主机将这个IP地址和自己的相比较,如果不相同就不予理会,如果相同就发出ARP响应包。这个IP地址的主机收到这个ARP请求包后回复的ARP响应里说到:"我是这个IP地址的主人"。这个包里面就包括了他的MAC地址。以后的给这个IP地址的帧的目标MAC地址就被确定了。(其它的协议如IPX/SPX也有相应的协议完成这些操作。)
IP地址和MAC地址之间的关联关系保存在主机系统里面,叫做ARP表,由驱动程序和操作系统完成。在Microsoft的系统里面可以用 arp -a 的命令查看ARP表。收到数据帧的时候也是一样,做完CRC以后,如果没有CRC效验错误,就把帧头去掉,把数据包拿出来通过标准的借口传递给驱动和上层的协议客栈,最终正确的达到我们的应用程序。 还有一些控制帧,例如流控帧也需要MAC直接识别并执行相应的行为。
3.网络传输的流程
收数据时的流程反之。
PHY还有个重要的功能就是实现CSMA/CD的部分功能。它可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将送数据出去。如果两块网卡碰巧同时送出了数据,那样必将造成冲突,这时候,冲突检测机构可以检测到冲突,然后各等待一个随机的时间重新发送数据。 这个随机时间很有讲究的,并不是一个常数,在不同的时刻计算出来的随机时间都是不同的,而且有多重算法来应付出现概率很低的同两台主机之间的第二次冲突。
许多网友在接入Internt宽带时,喜欢使用"抢线"强的网卡,就是因为不同的PHY碰撞后计算随机时间的方法设计上不同,使得有些网卡比较"占便宜"。不过,抢线只对广播域的网络而言的,对于交换网络和ADSL这样点到点连接到局端设备的接入方式没什么意义。而且"抢线"也只是相对而言的,不会有质的变化。
4.关于网络间的冲突
我们的PHY还提供了和对端设备连接的重要功能并通过LED灯显示出自己目前的连接的状态和工作状态让我们知道。当我们给网卡接入网线的时候,PHY不断发出的脉冲信号检测到对端有设备,它们通过标准的"语言"交流,互相协商并却定连接速度、双工模式、是否采用流控等。
通常情况下,协商的结果是两个设备中能同时支持的最大速度和最好的双工模式。这个技术被称为Auto Negotiation或者NWAY,它们是一个意思--自动协商。
5.PHY的输出部分
再就是设备接地方法不同,电网环境不同会导致双方的0V电平不一致,这样信号从A传到B,由于A设备的0V电平和B点的0V电平不一样,这样会导致很大的电流从电势高的设备流向电势低的设备。我们如何解决这个问题呢?
这时就出现了Transformer(隔离变压器)这个器件。它把PHY送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到连接网线的另外一端。这样不但使网线和PHY之间没有物理上的连接而换传递了信号,隔断了信号中的直流分量,还可以在不同0V电平的设备中传送数据。
隔离变压器本身就是设计为耐2KV~3KV的电压的。也起到了防雷感应(我个人认为这里用防雷击不合适)保护的作用。有些朋友的网络设备在雷雨天气时容易被烧坏,大都是PCB设计不合理造成的,而且大都烧毁了设备的接口,很少有芯片被烧毁的,就是隔离变压器起到了保护作用。
6.关于传输介质
一张网卡的传输最大距离和与对端设备连接的兼容性主要是PHY决定的。但是可以将信号送的超过100米的PHY其输出的功率也比较大,更容易产生EMI的问题。这时候就需要合适的Transformer与之配合。作PHY的老大公司Marvell的PHY,常常可以传送180~200米的距离,远远超过IEEE的100米的标准。
RJ-45的接头实现了网卡和网线的连接。它里面有8个铜片可以和网线中的4对双绞(8根)线对应连接。其中100M的网络中1、2是传送数据的,3、6是接收数据的。1、2之间是一对差分信号,也就是说它们的波形一样,但是相位相差180度,同一时刻的电压幅度互为正负。这样的信号可以传递的更远,抗干扰能力强。同样的,3、6也一样是差分信号。
网线中的8根线,每两根扭在一起成为一对。我们制作网线的时候,一定要注意要让1、2在其中的一对,3、6在一对。否则长距离情况下使用这根网线的时候会导致无法连接或连接很不稳定。
现在新的PHY支持AUTO MDI-X功能(也需要Transformer支持)。它可以实现RJ-45接口的1、2上的传送信号线和3、6上的接收信号线的功能自动互相交换。有的PHY甚至支持一对线中的正信号和负信号的功能自动交换。这样我们就不必为了到底连接某个设备需要使用直通网线还是交叉网线而费心了。这项技术已经被广泛的应用在交换机和SOHO路由器上。
在1000Basd-T网络中,其中最普遍的一种传输方式是使用网线中所有的4对双绞线,其中增加了4、5和7、8来共同传送接收数据。由于1000Based-T网络的规范包含了AUTO MDI-X功能,因此不能严格确定它们的传出或接收的关系,要看双方的具体的协商结果。
7.PHY和MAC之间如何进行沟通
而MAC对PHY的工作状态的确定和对PHY的控制则是使用SMI(Serial Management Interface)界面通过读写PHY的寄存器来完成的。PHY里面的部分寄存器也是IEEE定义的,这样PHY把自己的目前的状态反映到寄存器里面,MAC通过SMI总线不断的读取PHY的状态寄存器以得知目前PHY的状态,例如连接速度,双工的能力等。当然也可以通过SMI设置PHY的寄存器达到控制的目的,例如流控的打开关闭,自协商模式还是强制模式等。
我们看到了,不论是物理连接的MII界面和SMI总线还是PHY的状态寄存器和控制寄存器都是有IEEE的规范的,因此不同公司的MAC和PHY一样可以协调工作。当然为了配合不同公司的PHY的自己特有的一些功能,驱动需要做相应的修改。
一片网卡主要功能的实现就基本上是上面这些器件了。
其他的,还有一颗EEPROM芯片,通常是一颗93C46。里面记录了网卡芯片的供应商ID、子系统供应商ID、网卡的MAC地址、网卡的一些配置,如SMI总线上PHY的地址,BOOTROM的容量,是否启用BOOTROM引导系统等东西。
很多网卡上还有BOOTROM这个东西。它是用于无盘工作站引导操作系统的。既然无盘,一些引导用必需用到的程序和协议栈就放到里面了,例如RPL、PXE等。实际上它就是一个标准的PCI ROM。所以才会有一些硬盘写保护卡可以通过烧写网卡的BootRom来实现。其实PCI设备的ROM是可以放到主板BIOS里面的。启动电脑的时候一样可以检测到这个ROM并且正确识别它是什么设备的。AGP在配置上和PCI很多地方一样,所以很多显卡的BIOS也可以放到主板BIOS里面。这就是为什么板载的网卡我们从来没有看到过BOOTROM的原因。
8.网卡的供电
结语
July 02 正龙拍虎
新成语:《正龙拍虎》 关于治标与治本的问题端午节外出河源旅游,刚到河源,接到家里电话,说母亲生病了,可能是高血压犯了,呕吐不断。我非常担心,赶紧打电话给我的同学,让他把我母亲送到医院,然后,我赶紧驱车赶回。直接到了中医院。 中医院的诊断就是我母亲的症状是呕吐,而且吐血了,说明胃里有毛病,需要做胃镜,但是他们没有胃镜,建议我去北大医院,我也只好去了北大医院。到了北大医院,那里的医生马上就给我母亲做CT和心电图,后来发现,是高血压和冠心病。我就问医生,中医院让我们做了做胃镜,怎么不需要做了?医生告诉我,吐血,一般严重的呕吐都会导致呕吐的,严重呕吐会损伤胃粘膜,当然有血了,但是,呕吐的原因是什么呢?一般而言,都是脑部有问题,我查CT是看看脑部有没有肿瘤之类的,查心电图是看看心脏供血有没有问题,现在原因已经确定是高血压引起的呕吐。事情就是这样的。可以看出,北大医院的医生确实比中医院的高明一些。 回想起我们公司很多事情,都是类似的,例如,我们公司供货一直不顺,然后就分析,这次是因为屏的问题,这次是因为电池问题,这次是因为塑胶件的问题等等。每次一个问题还没有完结,下一个问题又来了,5年了,供应链还是没有顺起来。 什么问题,说明这些电池屏等的问题,都不是根源,我们还没有找到根源,或者不原因找到根源,哎,把高血压当胃病治,会耽误人的。 July 01 什么是企业家精神----烟台会议感想。
前几天在烟台参加一个企业家论坛的活动,与会者商界领袖很多,例如,蒙牛的牛根生,联想的柳传志,中粮的宁高宁,万科的王石等,柳传志不亏为商界的领袖,教父级任务,明显可以看出大家对他的认可和尊敬,柳总的讲话总是能够博得大家最真诚的掌声。 柳总向大家阐述什么是企业家精神,我觉得阐述的非常好,其实他是阐述牛根生的经历,以此来阐述企业家的精神。 据说,牛根生是个苦孩子,很苦很苦的哪种,好像是被别人收养多次吧!具体记得不太清楚,不敢乱说,后来长大了,也不是很务正业,就做了几次牢,最后一次从牢里出来,他决定洗心革面,努力工作,于是他就去了伊利牛奶厂当了一个洗奶瓶的临时工,洗奶瓶的工作据说是最苦的,别人都不想干,但是他却卖了命干,为什么呢?他说,以前在牢里,一分钱都没有,还要挨管教的大头皮鞋,都拼了命干,现在条件这么好,还有钱拿,一个月20块,当然拼命干了!就这样,别人不干的活,他都一个人揽了过来,一个月之后,他就被提拔为洗奶瓶组的组长,半年之后,他就是一个类似车间主任(经理之类的了),他的工资也涨到了32块。可是他每个月只拿回家20元,还有12元钱用来作为部门内部的激励用。柳总就问他,这样你老婆没有意见,呵呵,牛根生说,虽然我年轻的时候坐过牢,但是他还是很有魅力的,年轻的时候,追求他的女孩子很多,结发夫人是竞争上岗的,所以,比较支持他。据说,他的夫人家世等等非常好,因为嫁给了牛根生,当年家里闹了大地震。这样,靠着自己的努力和拼命,1977年,好像牛根生因为工作优秀上了人民日报。 牛根生好像文凭最多也就是初中,但是,你现在和他交谈,各个方面,水平绝对达到大学本科以上,这就是不断的学习和积累提高的,据说,他对哈弗商学院的一套课程还是非常熟悉的。 这就是牛根生,说明了什么? 1) 企业家的精神就是一种拼了命干的精神。 2) 企业家精神就是不断学习提高的精神 3) 企业家的精神就是有宽大的胸怀 4) 企业家的精神就是要学会分享 5) 企业家的精神就是一种自信的精神
|
|
|