精华内容
下载资源
问答
  • 以太网MAC层协议

    万次阅读 2018-08-07 17:31:11
     MAC发送模块可将上层协议提供的数据封装之后通过MII接口发送给PHY。发送模块可接收主机接口模块的数据帧开始和数据帧结束标志,并通过 主机接口从外部存储器中读取要发送的数据,然后对数据进行封装,然后通过PHY...

    MAC发送模块

      MAC发送模块可将上层协议提供的数据封装之后通过MII接口发送给PHY。发送模块可接收主机接口模块的数据帧开始和数据帧结束标志,并通过 主机接口从外部存储器中读取要发送的数据,然后对数据进行封装,然后通过PHY提供的载波侦听和冲突检测信号,在信道空闲时通过MII接口将数据以4位的 宽度发送给PHY,最后由PHY将数据发送到网络上。
      发送模块由CRC生成模块(crc_gen)、随机数生成模块(random_gen)、发送计数模块(tx_cnt) 和发送状态机(tx_statem_模块等四个子模块组成。

    CRC生成模块(crc_gen)

      该模块用于计算发送数据的CRC值,并将CRC值添加到数据帧的帧校验序列字段(FCS)内。为了提高效率,并考虑到MAC与PHY的数据通道 为4位,设计时可采用4位并行CRC计算方法,算法中可使用一个次态函数,并通过循环迭代来模拟移位操作。这样,发送模块就可以在边发送数据到PHY的同 时,一边计算CRC,这样当数据发送完时,CRC值也计算完成了。

    随机数生成模块(random_gen)

      如在发送过程中检测到冲突,发送模块就先发送拥塞码(jam),随后停止发送。在下次重新发送之前,发送模块会先执行一个后退 (backoff)操作,即发送模块等待一个半随机(生成的随机数有范围限制)的时间之后再开始发送。该随机数就是由随机数生成模块产生的,它采用经典的 截断二元指数后退算法,后退的时间是一个与发生冲突次数有关的随机数,随着冲突的次数增多,用于生成该随机数的范同也将逐渐增大,以减少冲突的概率。

    发送计数模块(tx_cnt)

      发送计数模块由半字节计数器(nibcnt)、字节计数器和重试次数计数器(retrycnt)三个计数器组成。其中重试次数计数器 (retrycnt)可对发送某个帧时产生冲突次数进行计数。当计数器的值达到最大重试次数时,它将放弃重试,并丢弃发送缓冲器内的数据。同时,重试计数 器的值还被随机数生成模块用于计算下次重试之前需要后退(backoff)的时隙的个数。
      半字节计数器和字节计数器分别用于对发送过程中的半字节(bibble)和字节进行计数。
      信道忙时,发送模块会一直等待,半字节计算器一直计数。当计数到额定等待时间时(最大帧长度的两倍,即3036字节时间),系统会根据设置放弃 发送或是一直等待(可选功能)。一旦信道空闲再进入帧间间隙周期(≥96个比特时间),南半字节计数器从零开始计数。帧间间隙分为两个部分,在前2/3个 周期中,如果检测到信道忙信号,则半字节计数器复位,发送模块重新开始等待;在后l/3周期中,即使检测到信道忙信号,半字节计数器也不会复位,而是继续 计数,以保证每个站点公平的竞争信道。而当半字节计数器的值达到帧问间隙周期时,此时如果有数据等待发送,发送模块就开始发送数据。此外,半字节计算器还 用于前序码的生成和短帧的判断,在数据帧的长度小于最小帧时,发送模块必须根据系统设置进行填充或不填充。
      字节计算器还可用于滞后冲突(late collision)和超长帧的判断。当滞后冲突发生时,正在发送的数据将被丢弃。超长帧的判断则是从对帧内容(包括FCS)进行字节计数,如果字节计数 器的值大于最大有效帧的长度(1518个字节),发送模块就根据系统设置(是否支持超长帧)丢弃或发送。

    发送状态机模块(tx_statem)

      发送状态机模块是整个发送模块的核心,主要用于控制整个发送过程。发送状态机由I-die_State、Preamble_State、 Data0_State、 Da-tal_State、 PAD_State、 FCS_State、 IPG_State、Jam_State、BackOff_State、Defer_State等十个状态组成。
      系统复位后,发送模块即进入Defer_State状态,并一直检测载波侦听(CarrierSense)信号。当载波侦听信号变成无效(表示 信道空闲)时,状态机进人IPG_State状态。尔后,在等待一个帧间间隙之后,状态机则进入Idle_State状态。如果在帧间间隙的前2/3个周 期检测到信道忙信号,状态机将重新回到Defer_State状态。
      状态机进入Idle_State状态之后,发送模块将检测载波侦听信号和主机接口的发送请求。若主机模块请求发送,状态机将进入 Preamble_State状态,发送模块即通知PHY发送开始,同时开始发送前序码(7个0x5),然后发送帧起始定界符(SFD,0xd)。状态机 进入Data0_State后,发送模块将发送一个数据字节的低4位(LSB nibble),将当其进入Data1_State状态后,发送模块则发送数据字节的高4位(MSB nibble)。随后,状态机一直在data0和data1之间循环,直到数据发送完毕。当还剩一个字节时,主机模块将通过发送帧结束信号来通知发送模 块。如果数据帧的长度大于最小帧并且小于最大帧,状态机就进入FCS_State状态,此时发送模块则将CRC生成模块生成的CRC值添加到帧的FCS字 段中并发送给PHY。帧发送完之后,状态机进入Defer_State状态,之后是IPG_State和Idle_State状态。此后状态机又回到初始 状态,以重新等待新的发送请求。
      如果数据帧的长度小于最短帧,状态机就进入PAD_State状态,发送模块根据系统设置是否在数据之后来添加填充码。然后,状态机进入 FCS_State状态。如果数据帧的长度大于最大帧,而系统设置又支持发送超长帧,那么,状态机就进入FCS_State状态;如果不支持发送超长帧, 发送模块将放弃发送,状态机直接进入Defer状态,然后是IPG状态,最后回到Idle状态。
      在发送数据的过程中,发送模块会一直检查冲突检测信号(collision detected)。如果发现冲突且状态机正处于Preamble_State,状态机将在发送完前序码和SFD之后进入Jam_State,并发送拥塞 码,然后进入BackOff状态,以等待重试。之后,状态机经过Defer和IPG回到Idle状态。如果此时重试次数计数器的值没有达到额定值,发送模 块将重新开始发送刚才的帧,并将重试次数计数器的值加1;如果发现冲突且状态机处于data0、da-tal或FCS状态,而且没有超过冲突时间窗,那么 状态机将马上进入Jam状态发送拥塞码,之后经过BackOff、Defer、IPG、回到Idle,并根据重试计数器的值决定是否重新发送刚才的数据 帧;如果检测到发生冲突的时间超过了冲突时间窗,状态机将进入Defer状态,然后经过IPG到IDLE状态,并放弃重试。
      在全双工模式中发送帧时,不会进行延迟(defer),发送的过程中也不会产生冲突。此时,发送模块将忽略PHY的载波侦听和冲突检测信号。当 然,帧与帧之间仍然需遵守帧间间隙的规则。因此,全双工模式下的发送状态机没有Jam_State、。BackOff_State、 Defer_State三个状态。

    MAC接收模块

      MAC接收模块负责数据帧的接收。当外部PHY将通信信道的串行数据转换为半字节长的并行数据并发送给接收模块后,接收模块会将这些半字节数据 转换为字节数据,然后经过地址识别、CRC校验、长度判断等操作后,再通过主机接口写入外部存储器,并在主机接口模块的接收队列中记录帧的相关信息。此 外,接收模块还负责前序码和CRC的移除。
      接收模块由CRC校验模块、地址识别模块、接收计数器模块和接收状态机模块等四部分组成。
      接收模块中的CRC校验模块可通过检查输入帧的CRC值来验证帧的正确性。其算法与CRC生成模块相同。
      地址识别模块用于决定是否接收收到的帧,接收模块首先接收输入帧而不管目的地址,随后由地址识别模块检查帧中的目的地址。若MAC被设置为混杂模式(Promiscuous mode)且目的地址为广播地址,同时允许接收广播帧,帧则被接收。否则,帧被丢弃。
      接收计数器模块由字节计数器(Bytecnt)和帧间间隙计数器(IFGcnt)组成。字节计数器在接收帧过程中将对字节进行计数,以用于识别 帧中的各个字段(前序码、目的地址字段、数据、FCS等)以及判断超长帧。帧间间隙计数器则对两帧之间的间隔时间进行计数,以用于判断下一帧数据的开始。 IEEE 802.3规定,两帧之间的间隔至少必须为96个比特时间(10 Mbps中为9 600ns,100 Mbps中为960 ns)。如果两帧之间的间隔小于要求,帧将被丢弃。
      接收状态机为接收模块的核心,用于控制整个接收过程。接收状态机由Idle_State、Drop_State、Preamble_State、 SFD_State、 Da-ta0_State、Data1_State等六个状态组成。
      系统复位后,状态机处于Drop_State。如果此时MII的数据有效信号(MRxDV)无效,状态机马上进入Idle_State状态,并一直处于Idle等待接收输入帧。
      当接收模块检测到数据有效信号之后,状态机将进入Preamble_State,并开始接收前序码。此后再状态机进入SFD_State,接收 一个字节的帧起始定界符,之后,根据IFGcnt计数器的值进入不同的状态。如果,IFGcnt所确定的时间大于96个比特时间,状态机将进入Data0 状态以接收字节的低4位,然后是Data1状态,并接收字节的高4位,之后又回到Data0状态。状态机就一直在这两个状态之间循环,直到数据接收完毕 (PHY清除MRxDV信号)后进入Idle,以重新等待接收新的数据;如果接收到帧起始定界符时,IFGcnt计数器所确定的时间小于96个比特时间, 那么状态机将进入Drop_State状态,并一直维持该状态直到数据有效信号结束(PHY清除MRxDV信号)。之后,状态机再同到Idle等待接收新 的数据。
      如果在接收前序码、帧起始定界符和数据期间,数据有效信号被清除,那么,状态机将回到Idle。

    MII管理模块

      MII管理模块用于控制MAC与外部PHY之间的接口,以用于对PHY进行配置并读取其状态信息。该接口由时钟信号MDC和双向数据信号MDIO组成。MII管理模块则由时钟生成模块、移位寄存器模块和输出控制模块三部分组成。
      时钟生成模块可以根据系统时钟和系统设置中的分频系数来产生MII管理模块的时钟信号MDC(10 Mbps速率时为2.5 MHz,100 Mbps速率时为25 MHz)。
      移位寄存器模块既可用于对PHY的控制数据进行写入操作,也可用于对PHY的状态信息进行读出操作。写控制数据时,移位寄存器根据其他模块的控 制信号将并行控制数据转换为串行数据;而在读状态信息时,移位寄存器则将PHY的串行数据转换为并行数据,MAC中的其他模块可将该并行数据写入适当的寄 存器。
      由于MDIO是双向信号,因此,输出控制模块就用来决定MDIO是处于输入状态还是输出状态。当MDIO处于输出状态时,移位寄存器输出的串行控制数据在经过时钟同步后发送到PHY;当MDIO处于输入状态时,移位寄存器将数据线上的串行数据转换为并行数据。

    主机接口模块

      主机接口是运行以太网的上层协议(如TCP/IP协议)与MAC控制器的接口。通过该接口,上层协议可以设置MAC的工作模式并读取MAC的状态信息。该接口还可用于上层协议与MAC之间的数据交换。
      主机接口模块内有一组寄存器,可用于存储上层协议对MAC设置的参数以及MAC的状态信息。上层协议对MAC设置的参数包括接收超短帧的使能、 添加填充码使能、持发送超长帧的使能、添加CRC校验值使能、全双工模式或半双工模式、持超长延迟(Defer)使能、混杂模式 (Promiscuous)、接收广播帧使能、发送和接收使能、中断源和中断使能、帧间间隙的长度、最大帧和最小帧的长度、重试限制和冲突时间窗、MII 地址和MII控制命令、接收和发送队列的长度以及本机MAC地址等。
      上层协议通过MAC发送和接收数据的操作主要由主机接口模块内的两个队列来进行管理,这两个队列用于对等待发送的多个帧和接收到的多个帧进行排队。
      发送队列主要记录等待发送的帧的相关信息、发送该帧时对MAC的设置以及该帧发送完之后产生的状态信息。帧的相关信息包括帧的长度、帧在外部存 储器中的地址、该帧是否准备好发送以及队列中是否还有其它帧等待发送;对MAC的设置则包括中断使能、填充使能、CRC使能;产生的状态信息包括成功发送 之前的重试次数、由于达到重试限制而放弃发送、发送时产生的滞后冲突以及成功发送之前发生过的延迟。
      接收队列主要对接收到的数据帧进行排队并记录每个接收到的帧信息。这些信息包括帧的长度、是控制帧还是普通数据帧、帧中包含无效符号、接收到的 帧太长或太短、发生CRC错误、接收的过程中发生滞后冲突、帧是否接收完、队列中是否还有其它已接收到的帧以及帧存储在外部存储器中的地址等。该位同时队 列中还有针对每个帧的设置位,用来设置是否在接收到帧时产生中断。
      发送队列和接收队列的长度都可以在控制寄存器中进行设置。

    展开全文
  • 一、车载以太网DHCP协议

    常见DHCP过程

    1、DHCP DISCOVER
    当DHCP客户端计算机DHCP DISCOVER广播消息:
    2、DHCP OFFER
    所有接收到DHCP客户端发送的DHCPDISCOVER广播消息的DHCP服务器会检查自己的配置,如果具有有效的DHCP作用域和富余的IP地址,则DHCP服务器发起DHCPOFFER广播消息来应答发起DHCPDISCOVER广播的DHCP客户端
    3、DHCP REQUEST
    当DHCP客户端接受DHCP服务器的租约时,它将发起DHCPREQUEST广播消息,告诉所有DHCP服务器自己已经做出选择,接受了某个DHCP服务器的租约。
    4、DHCP ACK
    提供的租约被接受的DHCP服务器在接收到DHCP客户端发起的DHCPREQUEST广播消息后,会发送DHCPACK广播消息进行最后的确认,在这个消息中同样包含了租约期限及其他TCP/IP选项信息。
    5、租约续约
    DHCP服务器将IP地址提供给DHCP客户端时,会包含租约的有效期,默认租约期限为8天(691200秒)。除了租约期限外,还具有两个时间值T1和T2,其中T1定义为租约期限的一半,默认情况下是四天(345600秒),而T2定义为租约期限的的7/8,默认情况下为7天(604800秒)。当到达T1定义的时间期限时,DHCP客户端会向提供租约的原始DHCP服务器发起DHCP REQUEST请求对租约进行更新,如果DHCP服务器接受此请求则回复DHCP ACK消息,包含更新后的租约期限;如果DHCP服务器不接受DCHP客户端的租约更新请求(例如此IP已经从作用域中去除),则向DHCP客户端位于回复DHCP NACK消息,此时DHCP客户端立即发起DHCP DISCOVER进程以寻求IP地址。如果DHCP客户端没有从DHCP服务器得到任何回复,则继续使用此IP地址直到到达T2定义的时间限制。此时,DHCP客户端再次向提供租约的原始DHCP服务器发起DHCP REQUEST请求对租约进行更新,如果仍然没有得到DHCP服务器的回复则发起DHCP DISCOVER进程以寻求IP地址。

    车载以太网 DHCP协议

     

     

    电脑上网的首要步骤,是确定四个参数:

      * 本机的IP地址

      * 子网掩码

      * 网关的IP地址

      * DNS的IP地址

    这四个参数缺一不可。

           * 本机的IP地址:192.168.1.100
      * 子网掩码:255.255.255.0
      * 网关的IP地址:192.168.1.1
      * DNS的IP地址:8.8.8.8

    如果是人为手动设置,则它们是给定的,计算机每次开机,都会分到同样的IP地址,这种情况被称作"静态IP地址上网"。

    但是,这样的设置很专业,普通用户望而生畏,而且如果一台电脑的IP地址保持不变,其他电脑就不能使用这个地址,不够灵活。出于这两个原因,大多数用户使用"动态IP地址上网"。

    所谓"动态IP地址",指计算机开机后,会自动分配到一个IP地址,不用人为设定。它使用的协议叫做DHCP协议

    这个协议规定,每一个子网络中,有一台计算机负责管理本网络的所有IP地址,它叫做"DHCP服务器"。新的计算机加入网络,必须向"DHCP服务器"发送一个"DHCP请求"数据包,申请IP地址和相关的网络参数。

    如果两台计算机在同一个子网络,必须知道对方的MAC地址和IP地址,才能发送数据包。但是,新加入的计算机不知道这两个地址,怎么发送数据包呢?

    DHCP协议做了如下规定:

    DHCP协议,首先,它是一种应用层协议,建立在UDP协议之上,所以整个数据包是这样的:

    (1)最前面的"以太网标头",设置发出方(本机)的MAC地址和接收方(DHCP服务器)的MAC地址。前者就是本机网卡的MAC地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。

    (2)后面的"IP标头",设置发出方的IP地址和接收方的IP地址。这时,对于这两者,本机都不知道。于是,发出方的IP地址就设为0.0.0.0,接收方的IP地址设为255.255.255.255。

    (3)最后的"UDP标头",设置发出方的端口和接收方的端口。这一部分是DHCP协议规定好的,发出方是68端口,接收方是67端口。

        这个数据包构造完成后,就可以发出了。以太网是广播发送,同一个子网络的每台计算机都收到了这个包。因为接收方的MAC地址是FF-FF-FF-FF-FF-FF,看不出是发给谁的,所以每台收到这个包的计算机,还必须分析这个包的IP地址,才能确定是不是发给自己的。当看到发出方IP地址是0.0.0.0,接收方是255.255.255.255,于是DHCP服务器知道"这个包是发给我的",而其他计算机就可以丢弃这个包。

         接下来,DHCP服务器读出这个包的数据内容,分配好IP地址,发送回去一个"DHCP响应"数据包。这个响应包的结构也是类似的,以太网标头的MAC地址是双方的网卡地址,IP标头的IP地址是DHCP服务器的IP地址(发出方)和255.255.255.255(接收方),UDP标头的端口是67(发出方)和68(接收方),分配给请求端的IP地址和本网络的具体参数则包含在Data部分。

         新加入的计算机收到这个响应包,于是就知道了自己的IP地址、子网掩码、网关地址、DNS服务器等等参数。

    展开全文
  • 如图1所示,以太网OAM技术分为以下两个级别: • 链路级以太网 OAM 技术:多应用于网络的PE 设备—CE 设备—用户设备之间(也叫最后一 公里)的以太网物理链路,用于监测用户网络与运营商网络之间的链路状态,典型...
  • 以太网协议号字段定义

    千次阅读 2018-07-23 12:09:29
    当前使用的以太网协议一般指EthernetII协议,它是Xerox与DEC、Intel等公司在1982年制定的以太网标准帧格式,在当时是一种事实工业标准。到1985年,IEEE又发布了802.3/802.2以太网标准。这种标准都规定以太网MAC...

    当前使用的以太网协议一般指EthernetII协议,它是Xerox与DEC、Intel等公司在1982年制定的以太网标准帧格式,在当时是一种事实工业标准。到1985年,IEEE又发布了802.3/802.2以太网标准。这两种标准都规定以太网MAC地址为6字节,但对以太网首部第13、14字节的定义却不同。在EthernetII中,对这两字节的定义为上层协议类型字段,而在802.3中,却将这两字节定义为以太网帧的载荷长度。在目前的大多数以太网应用场景中使用的都是EthernetII帧结构,因此这两个字节一般被称为EtherType字段,即以太网类型;但在部分场景下,例如交换机之间的BPDU(桥协议数据单元)数据包则是IEEE802.3的帧,其中的EtherType字段表示的就是帧载荷长度。

    为了兼容这两种标准,IEEE在分配EtherType字段值时对这两个字节进行了复用。由于以太网帧本身有长度不得超过1500字节的限制,因此EtherType字段表示长度时其取值范围必定在0000-05DC之间。IEEE规定上层协议申请的EtherType编号必须大于0600,这样就可以通过以太帧中EtherType字段的取值范围来确定该帧是EthernetII协议帧还是802.3协议帧。目前大部分的网卡都支持接收EthernetII和802.3以太帧,就是通过这个字段的取值来区分帧类型的,但一般网卡发送帧时只支持EthernetII。

    EtherType编号的申请和管理由IEEE Registration Authority负责,虽然不由IANA负责,但也能在https://www.iana.org/assignments/ieee-802-numbers/ieee-802-numbers.xhtml#ieee-802-numbers-1中查看当前编号列表。

    对以太帧格式的详细介绍可以参考《以太网的几种标准》:https://blog.csdn.net/fall221/article/details/47861335

    展开全文
  • 以太网、IP、TCP、HTTP协议概述

    千次阅读 2018-10-24 22:50:19
    一、以太网是最底层的协议,规定了电子信号如何组成数据包(packet),解决了子网内部的点对点通信。 (图片说明:以太网协议解决了局域网的点对点通信。)  二、IP协议(internet protocol)  以太网的...

    以下内容转自:http://www.ruanyifeng.com/blog/2017/06/tcp-protocol.html     这个老师讲的很好,言简意赅。

    一、以太网是最底层的协议,规定了电子信号如何组成数据包(packet),解决了子网内部的点对点通信

    (图片说明:以太网协议解决了局域网的点对点通信。)

     二、IP协议(internet protocol)

         以太网的协议只能解决单个局域网内点对点通信, 并不能解决 多个局域网如何互通, 这个问题需要由IP协议解决。

    (图片说明:IP 协议可以连接多个局域网。)

        IP 协议定义了一套自己的地址规则,称为 IP 地址。它实现了路由功能,允许某个局域网的 A 主机,向另一个局域网的 B 主机发送消息。

      

    (图片说明:路由器就是基于 IP 协议。局域网之间要靠路由器连接。)

    路由的原理很简单。市场上所有的路由器,背后都有很多网口,要接入多根网线。路由器内部有一张路由表,规定了 A 段 IP 地址走出口一,B 段地址走出口二,......通过这套"指路牌",实现了数据包的转发。

    (图片说明:本机的路由表注明了不同 IP 目的地的数据包,要发送到哪一个网口(interface)。)

    IP 协议只是一个地址协议,并不保证数据包的完整。如果路由器丢包(比如缓存满了,新进来的数据包就会丢失),就需要发现丢了哪一个包,以及如何重新发送这个包。这就要依靠 TCP 协议。

    简单说,TCP 协议的作用是,保证数据通信的完整性和可靠性,防止丢包。

    三、TCP通信协议(Transmission Control Protocol-传输 )控制协议

        以太网数据包(packet)的大小是固定的,最初是1518字节,后来增加到1522字节。其中, 1500 字节是负载(payload),22字节是头信息(head)。

       IP 数据包在以太网数据包的负载里面,它也有自己的头信息,最少需要20字节,所以 IP 数据包的负载最多为1480字节。

    (图片说明:IP 数据包在以太网数据包里面,TCP 数据包在 IP 数据包里面。)

        TCP 数据包在 IP 数据包的负载里面。它的头信息最少也需要20字节,因此 TCP 数据包的最大负载是 1480 - 20 = 1460 字节。由于 IP 和 TCP 协议往往有额外的头信息,所以 TCP 负载实际为1400字节左右。

        因此,一条1500字节的信息需要两个 TCP 数据包。HTTP/2 协议的一大改进, 就是压缩 HTTP 协议的头信息,使得一个 HTTP 请求可以放在一个 TCP 数据包里面,而不是分成多个,这样就提高了速度。

        

    (图片说明:以太网数据包的负载是1500字节,TCP 数据包的负载在1400字节左右。)

    四、TCP 数据包的编号(SEQ)

        一个包1400字节,那么一次性发送大量数据,就必须分成多个包。比如,一个 10MB 的文件,需要发送7100多个包。

        发送的时候,TCP 协议为每个包编号(sequence number,简称 SEQ),以便接收的一方按照顺序还原。万一发生丢包,也可以知道丢失的是哪一个包。

        第一个包的编号是一个随机数。为了便于理解,这里就把它称为1号包。假定这个包的负载长度是100字节,那么可以推算出下一个包的编号应该是101。这就是说,每个数据包都可以得到两个编号:自身的编号,以及下一个包的编号。接收方由此知道,应该按照什么顺序将它们还原成原始文件。

        

    (图片说明:当前包的编号是1,下一个数据包的编号是126,由此可知,这个包的负载是125个字节。)

    五、TCP 数据包的组装

           收到 TCP 数据包以后,组装还原是操作系统完成的。应用程序不会直接处理 TCP 数据包。

        对于应用程序来说,不用关心数据通信的细节。除非线路异常,收到的总是完整的数据。应用程序需要的数据放在 TCP 数据包里面,有自己的格式(比如 HTTP 协议)。

       TCP 并没有提供任何机制,表示原始文件的大小,这由应用层的协议来规定。比如,HTTP 协议就有一个头信息Content-Length,表示信息体的大小。对于操作系统来说,就是持续地接收 TCP 数据包,将它们按照顺序组装好,一个包都不少。

    操作系统不会去处理 TCP 数据包里面的数据。一旦组装好 TCP 数据包,就把它们转交给应用程序。TCP 数据包里面有一个端口(port)参数,就是用来指定转交给监听该端口的应用程序。

    (图片说明:系统根据 TCP 数据包里面的端口,将组装好的数据转交给相应的应用程序。上图中,21端口是 FTP 服务器,25端口是 SMTP 服务,80端口是 Web 服务器。)

        应用程序收到组装好的原始数据,以浏览器为例,就会根据 HTTP 协议的Content-Length字段正确读出一段段的数据。这也意味着,一次 TCP 通信可以包括多个 HTTP 通信。

    六、TCP-慢启动和 ACK

        服务器发送数据包,当然越快越好,最好一次性全发出去。但是,发得太快,就有可能丢包。带宽小、路由器过热、缓存溢出等许多因素都会导致丢包。线路不好的话,发得越快,丢得越多。

    最理想的状态是,在线路允许的情况下,达到最高速率。但是我们怎么知道,对方线路的理想速率是多少呢?答案就是慢慢试。

    TCP 协议为了做到效率与可靠性的统一,设计了一个慢启动(slow start)机制。开始的时候,发送得较慢,然后根据丢包的情况,调整速率:如果不丢包,就加快发送速度;如果丢包,就降低发送速度。

    Linux 内核里面设定了(常量TCP_INIT_CWND),刚开始通信的时候,发送方一次性发送10个数据包,即"发送窗口"的大小为10。然后停下来,等待接收方的确认,再继续发送。

    默认情况下,接收方每收到两个 TCP 数据包,就要发送一个确认消息。"确认"的英语是 acknowledgement,所以这个确认消息就简称 ACK。

    ACK 携带两个信息。

    • 期待要收到下一个数据包的编号
    • 接收方的接收窗口的剩余容量

    发送方有了这两个信息,再加上自己已经发出的数据包的最新编号,就会推测出接收方大概的接收速度,从而降低或增加发送速率。这被称为"发送窗口",这个窗口的大小是可变的。

    (图片说明:每个 ACK 都带有下一个数据包的编号,以及接收窗口的剩余容量。双方都会发送 ACK。)

    注意,由于 TCP 通信是双向的,所以双方都需要发送 ACK。两方的窗口大小,很可能是不一样的。而且 ACK 只是很简单的几个字段,通常与数据合并在一个数据包里面发送。

       (图片说明:上图一共4次通信。第一次通信,A 主机发给B 主机的数据包编号是1,长度是100字节,因此第二次通信 B 主机的 ACK 编号是 1 + 100 = 101,第三次通信 A 主机的数据包编号也是 101。同理,第二次通信 B 主机发给 A 主机的数据包编号是1,长度是200字节,因此第三次通信 A 主机的 ACK 是201,第四次通信 B 主机的数据包编号也是201。)

        即使对于带宽很大、线路很好的连接,TCP 也总是从10个数据包开始慢慢试,过了一段时间以后,才达到最高的传输速率。这就是 TCP 的慢启动。

    七、数据包的遗失处理

    TCP 协议可以保证数据通信的完整性,这是怎么做到的?

    前面说过,每一个数据包都带有下一个数据包的编号。如果下一个数据包没有收到,那么 ACK 的编号就不会发生变化。

    举例来说,现在收到了4号包,但是没有收到5号包。ACK 就会记录,期待收到5号包。过了一段时间,5号包收到了,那么下一轮 ACK 会更新编号。如果5号包还是没收到,但是收到了6号包或7号包,那么 ACK 里面的编号不会变化,总是显示5号包。这会导致大量重复内容的 ACK。

    如果发送方发现收到三个连续的重复 ACK,或者超时了还没有收到任何 ACK,就会确认丢包,即5号包遗失了,从而再次发送这个包。通过这种机制,TCP 保证了不会有数据包丢失。

    (图片说明:Host B 没有收到100号数据包,会连续发出相同的 ACK,触发 Host A 重发100号数据包。)

    八、Http通信协议

        HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

    小结:以太网是底层的通信协议,用于硬件层面, 局域网内点对点传输;IP是internet protocol即以太网协议,用于突破局域网,实现网与网 之间的传输;TCP-传输协议,用于数据稳定性传输;HTTP:应用层面协议了,跟程序员的应用程序打交道了。数据封装流程如下图:

    展开全文
  • 以太网帧与ARP协议分析

    千次阅读 2019-12-04 09:22:01
    分析以太网帧,MAC地址和ARP协议 二、实验环境 与因特网连接的计算机网络系统;主机操作系统为windows;使用Wireshark、IE等软件。 三、实验步骤: IP地址用于标识因特网上每台主机,而端口号则用于区别在同一台主机...
  • 以太网MAC协议--CSMA/CD协议

    千次阅读 2019-11-27 11:38:55
    为了通信的方便,以太网采用了种重要的措施: CSMA/CD协议 采用无连接的工作方式:传输数据之前不用建立连接 对发送的帧不进行编号,也不要求接收方发回确认帧。这样做的理由:局域网的信道质量非常好,因为信道...
  • 以太网协议

    千次阅读 2018-11-23 15:38:52
    以太网桢中的类型指的是,其内部数据的协议类型,如果中间是IP数据报则协议类型为0800, 如果是ARP请求或者应答,则为0806,类型占两个字节 其最后面是CRC循环冗余码,用于差错控制,即检验桢的正确性 最后就是...
  • 以太网完整协议(一)

    万次阅读 多人点赞 2017-05-03 15:54:31
    一、太网中数据帧结构 以太网是目前最流行的一种局域网组网技术(其他常见局域网...在物理层上看,一个完整的以太网帧有7个字段,事实上,前两个字段并不能算是真正意义上的以太网数据帧,它们是以太网在物理层上发送
  • IEEE 802.3 和以太网协议属于...尽管有不兼容性,这两个协议还是有 许多共同点。 以太网实际上是最常使用的协议。本章展 示该协议的演化以及它如何能够适应技术进 步来保持其竞争力并在大多数情况下得以加 强其使用。
  • 以太网物理层协议整理-万兆以太网

    千次阅读 2017-06-27 09:51:11
    在万兆以太网标准化过程中,IEEE和10GEA(万兆以太网联盟)是两个最重要的组织。 万兆以太网标准和规范都比较繁多,在标准方面,首先有2002年的IEEE 802.3ae,后来也不断有新的万兆以太网规范推出,如2006年的IEEE ...
  • TCP-IP协议详解(2) 以太网与WiFi协议

    千次阅读 2018-09-14 14:07:47
    本文转自:https://blog.csdn.net/jjdiaries/article/details/48096295 在阅读“TCP-IP协议详解”系列文章之前,建议阅读以下篇文章,以便对互联网协议快速的全局了解和把握! 互联网协议入门...
  • CSMA/CD协议

    千次阅读 2019-10-04 15:54:54
    “载波监听”是指每一站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。  为了使数据链路层能更好地适应多种局域网标准,802 委员会...
  • 以太网帧的格式2. ARP协议2.1 ARP协议的作用2.2 ARP数据报的格式 1.以太网帧的格式 源地址和目的地址是指网卡的硬件地址(也叫MAC地址),用来识别数据链路层中相应的结点,长度是48位即6字节,是在网卡出厂...
  • 汽车以太网对TCP/IP协议簇的应用

    千次阅读 2019-03-05 14:48:05
    汽车以太网与传统以太网的主要区别在于物理层及应用层,而网络层及传输层大多参考传统应用,即TCP/IP协议簇(TSN暂不讨论)。使用传统网络TCP/IP协议簇,既能加快汽车以太网数据传输的速度,又能与因特网无缝连接,...
  • 西门子S7以太网通讯协议

    千次阅读 2019-09-22 21:10:48
    S7以太网协议属于TCP/IP协议族的一种,下图为S7以太网协议在ISO-OSI参考模型中的位置。 通过WireShark抓包,可以看出S7以太网协议的模型: ISO-OSI参考模型、TCP/IP模型及S7以太网协议模型对比 ...
  • 常用工业以太网协议性能及应用

    千次阅读 2018-08-30 09:01:17
    随着工业4.0概念的不断深入,世界制造业正逐步从数字化领域转向...目前的工业网络组态都是基于现有的工业以太网技术而实现的,其主流的工业以太网协议主要有:Modbus ,EtherNet/IP ,EtherCAT ,SERCOS Ⅲ ,PROFINE...
  • DoIP是车载以太网通讯的重要部分,本文主要介绍ISO13400相关链路层、网络层、传输层相关协议; 一、相关协议标准 二、DoIP应用场景(ISO13400-1相关): 三、网络连接方式: 四、物理层和链路层支持(ISO13400-3...
  • 以太网是一种产生较早,使用相当广泛的局域网技术,局域网就是一区域的网络互联,可以使办公室也可以是学校等等,大小规模不一。 最初是由Xerox(施乐)公司创建(大概是1973年诞生)并由Xerox、 Intel和DEC公司...
  • 以太网和wifi协议

    千次阅读 2015-08-26 16:30:12
    以太网和wifi协议 ...如果你知道”小喇叭开始广播了”,估计你得有一定的年纪了,开玩笑,小喇叭是很久以前的一儿童广播节目....”,听到这里,收音机前的小...以太网和wifi是链接层的协议.在链接层,信息以帧为单
  • 工业以太网的常见协议

    千次阅读 2016-08-12 14:48:21
    这是一种面向连接的方式,每一呼叫都要求一应答,这种呼叫/应答的机制与Modbus的主/从机制一致,但通过工业以太网交换技术大大提高了确定性,改善了一主多从轮询机制上的制约。 2 Profinet  
  • 以太网各种协议详解

    万次阅读 2014-02-13 17:17:38
    板子处于复位状态时,先做好一系列的准备工作。 1、从EEROM中读取板子的MAC...3、等待片刻,使以太网稳定。随后,启动DHCP协议,获取该电路板的IP地址。其中,PC机是服务机,板子是客户机。 4、获得板子的IP地址之后
  • 以太网协议-传输介质

    千次阅读 2017-11-12 21:10:02
    以太网协议-传输介质
  • 字段中1和0交互使用,结尾是两个连续的1,表示下一位是目的地址的起始位。 Destination address (DA)- 6 bytes. The DA field identifies which station(s) should receive the frame.目标地址. Source ...
  • 数据链路层之以太网协议

    万次阅读 2018-06-06 17:22:48
    这样说其实不太准确,因为以太网协议是一个规定数据链路层及物理层的协议,不能说它是数据链路层的一个协议以太网以太网帧就是将网络层交付的数据添加报头信息后,此时的数据以帧的形式传递。以太网帧的...
  • 以太网数据帧格式及ARP协议

    千次阅读 2020-08-29 15:59:52
    在物理层上看,一个完整的以太网帧有7个字段,事实上,前两个字段并不能算是真正意义上的以太网数据帧,它们是以太网在物理层上发送以太网数据时添加上去的。为了实现底层数据的正确阐述,物理层使用7个字节前同步码...
  • 1.1:以太网是实现LAN的一种技术,它允许嵌入式系统连接到一LAN中,并可通过使用网关经Internet连接到外部世界,以太网的主要目的是向LAN发送和从LAN接收以太网帧,在TCP/IP协议族中,不包括以太网协议,可以理解...
  • 传统以太网以及CSMA/CD协议

    千次阅读 2018-08-24 19:29:43
    1、最大覆盖距离(两个站点最远的距离):2500m; 2、挣用期(即一个信号最远来回的传播时间):51.2us;过来这个时间还未监听到冲突,则说明无冲突; 3、最小帧长:64字节;因为传统以太网速率是10Mbps,挣用期是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 84,901
精华内容 33,960
关键字:

以太网的两个协议