物理层PHY:数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口;
数据链路层MAC:提供寻址机构,数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。
100BASE-T1在物理连接上使用了一对双绞线实现全双工的信息传输,而100BASE-TX则使用了两对双绞线实现全双工,一对用于收,另一对用于发。
100BASE-T1利用所谓的回音消除技术(echocancellation)实现了在一对双绞线上的全双工通信。
回音消除技术的主要过程:作为发送方的节点将自己要发送的差分电压加载到双绞线上,而作为接收者的节点则将双绞线上的总电压减去自己发出去的电压做减法得到的结果就是发送节点发送的电压。
2.2物理层架构
物理层主要作用:
1)定义硬件接口;
2)定义信号与编码;
3)定义数据与信号之间的转换收发;
物理层基本架构
主要包括PMD,PMA和PCS。
PMD,介质依赖层,主要职责是转换PMA的数据与实际网络上的信号。发送时,它从PMA读取数据并执行实现该功能所需的必需的低级行编码功能设计的媒介。接收时,它会读取并解释这些内容编码信号,然后将它们转换回位以发送到PMA。
PMA,介质连接层,结余PMA和PCS之间,其中PMD是按照bit串行处理方式,而PCS则是按照数据块处理方式,因此PMA则是起到中间转换的作用,此外还起到数据冲突检测的功能。
PCS,编码子层,主要进行初始编码,实现特定于以太网速度和传输介质要求的子层中的一部分。
2.3物理层控制器的架构
其中,MDI,MediumDependentInterface。MIIMediumIndependentInterface,MIIM主要用于寄存器的配置管理。
我们这里需要注意的是RXD和TXD都是4个数据。
2.4物理层编码原理
首先总线上的电平信号有,-10和1如图:
数据和电平的编码转换关系有如下表关系:
如数据000对应两根线上的电平为-101,
主要数据到电平转换过程为以下四步:
1.首先从MII接收到数据(4bit4bit...)
2.接下来分割成(3bit3bit...)进行处理;
3.根据上表,申平与数据编码的关系,转换为申平信号;
4.将电平信号发到总线。
一个案例说明以上的转换过程:
100Mbps速度的由来:
在微控制器的每个时钟周期中,MII接口到来的数据是4个bit,PHY从MII接口收到数据后,会首先进行一个4B3B的转换,为了匹配25MHz*4bit=100Mbit/s的速率,PHY的MI接口时钟周期应该是33.3333M每次接收3bit,也实现了33.3333M*3bit=100Mbit/s的速率。之后PHY要再进行3B2T的操作,将每次接收到的3个bit转化为2个申平值(取值范围是-1,01),具体的对应关系如上图中的表所示。3个bit有8种组合(即2的三次方),两个电平值有9种组成(即3的平方),所以后者可以覆盖前者。此时时钟周期仍然是33.333M,但是每个时钟周期中的两个电平就能够表示3个bit了,所以此时的数据速率仍然是100Mbit/s,每个电平实际上包含了1.5bit信息。最后一步是PAM3,将逻辑的-1,0,1转化为在双绞线上的电压,所以,最终在总线上信号的波特率是66.666MHz,但是它实现了100Mbit/s的通信速率。
3
MAC层主要内容,
1)寻址
2)传输方式
3)帧格式
3.1MAC控制器架构
其中比较关键的是MI和MIM与PHY接口连接。
数据发送,MAC协议会判断当前是否适合发送数据,若能,它会在将要发送的数据上附加一些控制信息最终使数据以规定的格式到达物理层;
数据接收,它会判断数据是否有错误,如果没有错误的话,它会去掉附加的控制信息发送至LCC(逻辑链路控制)子层。
SMI接口包括MDIO(控制和管理PHY以获取PHY的状态)和MDC(为MDIO提供时钟)。
MDC由MAC提供,MDIO是一根双向的数据线。用来传送MAC层的控制信息和物理层的状态信息。
MDIO数据与MDC时钟同步,在MDC上升沿有效。
3.2MAC地址
MAC地址长度为48bit、6byte,前三个字节是组织标识ID,后三个字节是本地管理ID。
全局或本地地址U/L:第一个字节的第二位MAC地址的OUI字段(从右数第二低位开始计数)被称为U/L(通用/本地)标志。设为0时,将MAC地址标记为被普遍管理;当它是1时,MAC地址是本地管理的。
单播与组播MAC地址I/G:OUI的第一个字节的第一个(最低有效)位MAC地址的字段,称为I/G(个人/组)标志。当这个位设置为0,MAC地址是单个设备,并且消息是单播。设置为1时,表示组地址(多播).
广播MAC地址:FF-FF-FF-FF-FF-FF
3.3数据传输
主要介绍一下CSMA/CD冲突检测方法。
在以太网中,网络不断监控(或感知)传输线,侦听确定线路是否繁忙。任何设备听到正在进行的传输则禁止尝试发送自己的消息,直到线路空闲为止。
3.4MAC帧格式
Preamble:7byte帧前缀,主要用于帧设备之间的事件同步;
Startofframedelimiter:1byte,标识帧开始
MACdestination:目标MAC地址
MACsource:源MAC地址
802.1QTag:是一个可选项,主要用于VLAN,如在这个字段中定义VLAN的ID或优先级等,未定义的则会自动把该帧丢弃。
length:数据长度/payload长度
Payload:有效负载、数据
framecheck:CRC
interframegap:帧之间的间隔
4
4.1IP地址
主要作用为,寻址,数据封装,路由。仅以IPV4说明
长度为4byte32bit,每个字节用dot隔开,用十进制表示。
192168.0.1,其中加粗的前三个字节192.168.0表示网络ID,最后一个字节1表示主机ID
网络ID(网络ID):一定位数,从头开始从最左边的位开始,用于标识主机或位于其他网络接口。有时也称为网络前缀,甚至只是前缀。
主机ID(主机ID):其余位用于标识网络上的主机。
IP地质类别:
A类地址第一字节为网络ID,后三个字节为主机ID范围是1001-126.155.255.254;
B类地址第一二字节为网络ID,后两个字节为主机ID范围是128.0.0.1-191.255.255.254;
C类地址前三个字节为网络ID,最后一个字节为主机ID,范围是192.0.0.1-223.255.255.254
D类地址:为组播地址
224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;
224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;
224.0.2.0~238255255255为用户可用的组播地址(临时组地址),全网范围内有效;
239.0.0.0~239.255255.255为本地管理组播地址,仅在特定的本地范围内有效。
D类地址的MAC有特殊转换关系:
MAC地址前三位为:01005E
MAC地址后三位为:Ox7FFFFF&组播IP地址
举例来说组播IP地址242.147.109.235对应的MAC地址为:01.00.5E.13.6D.EB
4.2IP协议
Version:版本如4表示IPV4IPV4:4,IPV6:6
IHL:InternetHeaderlength,Header长度没有选项,则-般为5(5x32bit=20B)
DSCP:DifferentiatedService一般没有使用,详细参考RFC
ECN:ExplicitCongestionNotification用于扩展检测丢包
Totallength:总长度,header+数据总长度
Identification:占16位,它是一个计数器,用来产生数据报的标识
Flags:标明是否分片bit0:Reserved;mustbezerobit1:Don'tFragment(DF)bit2:MoreFragments(MF)
FragmentOffset:占12位,指较长的分组在分片后某片在原分组中的相对位置.片偏移以8个字节为偏移单位
Protocol:占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程,1表示为ICMP协议,2表示为IGMP协议,6表示为TCP协议,17表示为UDP协议
Headerchecksum:数据头CRC
SourceIPaddress:源IP地址
DestinationIPAddress:日标IP地址
4.3ICMP协议
ICMP:InternetControlMessageProtocol网际控制报文协议
作用:提高IP数据报交付成功的机会用于ping,跟踪路由
这里的Type如下图所示:
4.4ARP协议
ARP:AddressResolutionProtocol地址解析协议
由于上层用的是IP地址,下层用的是MAC地址,ARP协议就是用于解决协议转换的问题。
主要用两种映射方式,一种为直接mapping,一种为动态mapping
以下说明ARP过程:
1)首先查询表中是否有目标地址,若没有则下一步;
2)产生ARP请求帧;
3)广播ARP请求帧;
4)目标方接收ARP请求帧,并处理
5)目标方产生ARP响应帧
6)目标方更新ARP表
7)目标方发送ARP响应帧
8)请求方接收响应帧并处理
9)请求方更新ARP表。
5
传输层的目的在于,控制分段传输大块数据。
5.1端口与Socket
前面我们提到了IP地址,IP地址一般表示一个ECU级别;
而为了进一步表示一个ECU上的不同软件进程,功能或模块,我们引入端口的概念(port)。
在TCP和UDP中,都包含了16bit的源地址端口和目标地址端口。
而IP地址+port=socket。
5.2UDP
UDP:UserDatagramProtocol用户数据报协议
5.3TCP
TCP:TransmissionControlProtocol传输控制协议
主要特点,主要是用于可靠的面向连接的传输,在传输数据之前,必须先建立连接,同时确保所有数据按顺序到达客户端,客户端收到数据包后需要给出确认应答,若未确认,则该数据包会进行重传。
协议格式:
SourcePort:源端口
DestinationPort:目标端口
SequenceNumber:序列号,用于确保传输顺序;
AcknowledgmentNumber:应答号比如当前接收端接收到一个净荷为12byte的数据包,SN为8,则会回复一个确认收到的数据包,如果这个数据包之前的数据也都已经收到了,这个数据包中的ACKNumber则设置为12+8=20,表示之前的数据都已经收到了,准备接受SN=20的数据包
dataoffset:4位包括TCP头大小,指示TCP头的长度,即数据从何处开始。
CWR(CongestionWindowReduce):拥塞窗口减少标志setbysender,用来表明它接收到了设置ECE标志的TCP包;
ECE(ECNEcho):ECN响应标志被用来在TCP3次握手时表明一个TCP端是具备ECN功能的。在数据传输过程中也用来表明接收到的TCP包的IP头部的ECN被设置为11;
URG(Urgent):该标志位置位表示紧急(Theurgentpointer)标志有效。
ACK:取值1代表AcknowledgmentNumber字段有效,这是一个确认的TCP包,取值0则不是确认包。
PSH(Push):该标志置位时,一般是表示发送端缓存中已经没有待发送的数据,接收端不将该数据进行队列处理,而是尽可能快将数据转由应用处理。
RST(Reset):用于reset相应的TCP连接。通常在发生异常或者错误的时候会触发复位TCP连接。
SYN:同步序列编号(SynchronizeSequenceNumbers)有效。该标志仅在三次握手建立TCP连接时有效。
FIN(Finish):Nomoredatafromsender。当FIN标志有效的时候我们称呼这个包为FIN包。
WindowSize:从AckNumber开始还愿意接收多少byte的数据量,用于TCP的流量控制。
UrgentPointer:优先指针指向后面是优先数据的字节,在URG标志设置了时才有效。
6
6.1DHCP协议
DHCP的全称是DynamicHostConfigurationProtocol,翻译作动态主机配置协议。它的用途是为网络节点自动配置IP地址。
DHCP是一个局域网应用层协议,使用UDP协议工作,用于在局域网内自动分配IP地址。
该协议基于Client/Server模式工作(Server一般由路由器担任),
DHCP的三种机制分配IP地址:
1)自动分配方式(AutomaticAllocation),DHCP服务器为客户端指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后就可以永久性的使用该地址。
3)手工分配方式(ManualAllocation),客户端的lP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。
其中我们最常使用的是第二种,即动态分配方式。
UDP数据包
OP:
若是client送给server的封包,设为1,反向为2。
HTYPE:
硬件类别,Ethernet为1。
HLEN:
硬件地址长度,ethernet为6.
HOPS:
若封包需经过router传送,每站加1,若在同一网内,为0。
SECONDS:
TransactionID:
一个随机数,用于客户和服务器之间匹配请求和相应消息。
Flags:
从0-15bits,最左-bit为1时表示server将以广播方式传送封包给client,其余尚未使用。
ciaddr:
要是client端想继续使用之前取得之IP地址,则列于这里。
yiaddr:
在server送回client的DHCPOFFER与DHCPACK封包中,此栏填写分配给client的IP地址。
siaddr:
若client需要通过网络开机,从server送出之DHCPOFFER、DHCPACK、DHCPNACK封包中,此栏填写开机程序代码所在server之地址。
giaddr:
若需跨网域进行DHCP发放,此栏为relayagent的地址,否则为0。
chaddr:
Client之硬件地址。(包括6字节MAC和10字节padding)
sname:
Server之名称字符串,以0x00结尾。
file:
若client需要通过过网络开机,此栏将指出开机程序名称,稍后以TFTP传送。
options:
允许厂商定议选项。每个option项由Type(1字节)、Length(1字节)、Value(长度由Length决定)三部分组成。
第一步:DHCP客户端主动发送DHCPDiscover包,用来寻找DHCP服务器,其中:
源MAC是自己的MAC地址,目的MAC是FF:FF:FF:FF:FF:FF的广播;
源IP是0.0.0.0(现在还没有IP,就用全0地址),目的IP是255.255.255.255的三层广播地址。
因为此时客户端还不知道DHCP服务器在哪里,所以使用广播来寻找,请求会被广播到整个网段中。
第二步:
DHCP服务器收到客户端发的DHCPDiscover之后,会在自己的地址池中拿出一个没有分配的地址以及配套的参数(如:掩码、DNS、网关、域名、租期……),然后以一个DHCPOffer包发送出去。这个DHCPOffer数据包的地址如下:
源MAC是DHCP服务器的MAC,目的MAC是DHCP客户端的MAC地址;
源IP是DHCP服务器的IP,目的IP是即将分配给客户端使用的IP地址。
因为客户端目前还没有IP地址,所以在这个单播IP发送之前,服务器会使用客户端的MAC地址与之通信,如果MAC地址通信失败,那么服务器会使用广播的方式提供(Offer)数据包。
第三步:
客户端收到这个DHCPOffer后,会再发出一个DHCPRequest给服务器来申请这个Offer中包含的地址。此时客户端还没有正式拿到地址,所以还需要向DHCP服务器申请。
这个DHCPRequest数据包的地址如下:
这时客户端的源IP还是0.0.0.0,目的IP还是255.255.255.255
源MAC是客户端的MAC,目的MAC是FFFF.FFFF.FFFF广播包
第四步:
服务器收到客户端的请求后,会发出一个DHCPACK用来确认这个IP地址可以分配给这个客户端。
客户端收到这个DHCPACK数据包才算正式拿到了这个IP。
在租约内续租的时候,发现(Discovery)和提供(Offer)数据包就变得没有必要了,只需要完成请求和确认两个步骤就可以
7
其中LDCOM可以认为类似于COM模块,只是LD表示largedata,此外SOAD表示socketadapter,用于以太网中的socket适配。