Zynq学习_____以太网三部曲(一)理论篇

    博主做了一学习以太网方面的调研,认为学习以太网不是简单看看百度或者看看博客就可以上手写代码的。首先要对以太网体系架构有一定的了解,其次在了解基本知识的基础上还需要了解以太网的驱动程序,最后才是在应用层做一些收发的应用。

    不太喜欢把这种知识写的和教材一样,喜欢写成通俗易懂的大白话。

    陆陆续续会更新后两篇驱动程序讲解篇和程序实例篇,开发平台为了方便使用的是赛灵思公司的ZedBoard。下面对学习计算机网络的基础知识做一下梳理

以太网理论篇

一.计算机网络概述

    计算机网络是由若干节点和连接这些节点的链路组成的。网络节点可以是计算机、集线器、交换机或路由器构等。网络之间还可以通过路由器连接起来,这就构成了一个范围更大的计算机网络,这样的网络也成为互联网,所以互联网也叫网络的网络。网络有许多名词,首先要区分形容网络的几个概念

互联网的英文是 internet,它的意思是“网络的网络”,是一个通用名词,泛指有多个计算机网络互连而成的网络,这些网络之间的通信协议(即通信规则)是可以任意的。

    因特网,即 Internet,记住它与 internet 之间绝对不能使用等于号,因为 Internet 是一个专有名词,它是指当前全球最大的、开放的、有众多网络互相连接而成的特定的计算机网络,它采用 TCP/IP 协议族作为通信的规则,其前身是美国的 ARPNET。

以太网(Ethernet),是当今现有局域网采用的最通用的通信协议标准。以太网络使用CSMA/CD(载波监听多路访问冲突检测)技术,并以10M/S的速率(仅指标准以太网的速率而已)运行在多种类型的电缆上。以太网与IEEE802.3系列标准相类似。以太网可以说是局域网的一种,但是目前局域网大多数都是使用以太网标准,故可认为以太网就是局域网。然后,局域网之间的通信协议必须是相同的,即局域网内计算机(或计算机网络)只允许使用同一种通信规则进行通信。而不同的局域网之间,又可以通过其他任意的通信规则进行通信(内部只是用一种通信规则),这就构成了互联网。

所以:以太网 <= 局域网 <= 互联网 != 因特网。

1.互联网采用的通信方式为客户—服务器方式:

如下图:以太网采用的通信方式为客户—服务器方式,即发起的通信一方A发送通信请求,给被通信的一方B,B再开始响应A从而建立通信。A为客户,B为服务器。

Zynq学习_____以太网三部曲(一)理论篇_第1张图片

2.计算机网络的分类:  分类方式有很多种,我认为最清晰的分类便是按照网络的作用进行分类。

1>广域网:作用范围为几十到几千公里,也叫远程网,一般连接城域网的各交换机的链路都是高速链路。

2>城域网:作用范围一般为5--50KM,作用域为一个城市。用来将各个局域网互联。

3>局域网:一般用微型计算机或工作站通过高速通信线路相连,局域网一般采用以太网技术。

4>个人区域网。范围很小,一般为10m左右。

3.评价计算机网络的性能指标

1>速率:这里的速率是指数据传送速率。单位为bps

2>带宽:带宽表示信道可以通过的最高数据率单位为bits/s

3>吞吐量:表示在单位时间内通过某个网络(或信道或接口)的实际数据量,

4>时延:分为发送时延、传播时延、处理时延、排队时延。

时延=发送时延+传播时延+处理时延+排队时延

Zynq学习_____以太网三部曲(一)理论篇_第2张图片

5>时延带宽积:时延带宽积:=传播时延*带宽,单位为bit

6>往返时间RTTLS是一个重要的性能指标,这是因为许多情况下互联网上的信息不仅仅是单向的也是双向的。

7>利用率

4.协议与划分层次

Zynq学习_____以太网三部曲(一)理论篇_第3张图片

下面一一介绍各层作用及相关协议族。当前最流行的是五层体系结构。

数据从应用层出发,依次封装成各自层的包然后另一端再依次解包向上传递。

在两个主机通信时的数据流向为

Zynq学习_____以太网三部曲(一)理论篇_第4张图片

路由器只使用下三层

各层协议示意图:

Zynq学习_____以太网三部曲(一)理论篇_第5张图片

5.概述总结:

1>计算机网络把许多计算机连接在一起,而互联网是把许多网络连接在一起。

2>互联网采取存储转发的分组技术。

3>计算机通信是一台计算机的进程与另一台计算机的进程之间的通信。

4>互联网按工作模式划分可以分为边缘部分和核心部分,主机在网络的边缘部分,作用是进行信息处理而路由器在网络的核心部分,作用是存储转发进行分组交换。

二.物理层(PHY)

1.物理层的基本概念:物理层考虑的是怎么样才能在连接各种计算机的传输媒体上传输数据,可以将物理层的主要任务描述为确定与传输媒体的接口有关的一些特性即

1>机械特性:描述接口所用的接线器的形状和尺寸、引脚数目和排列、固定和锁定装置,各种器件都有严格的标准化规定。

2>电气特性:描述在接口电缆的各线上出现电压的范围

3>功能特性:描述某条线上出现某一电平的意义

4>过程特性:描述对于不同功能的各种可能事件出现的顺序、

2.传输媒体的分类

1>导引型传输媒体

双绞线:为了提高双绞线抗电磁干扰的能力,可以在双绞线的外面加一层金属丝编成的屏蔽层,这就是屏蔽双绞线。

同轴电缆

光缆

2>非导引型传输媒体:电磁波

3.信道复用技术:在传输时,往往复用器和分用器成对使用,典型的复用技术如下

1>频分复用FDM:在相同的时间占用不同的带宽资源

2>时分复用TDM:在不通时间占用相同的带宽资源

3>波分复用WDM: 使用不同的波长

4>码分复用CDM:用户经过特殊挑选不同的码型

三.数据链路层

点对点信道:一对一的点对点通信

广播信道:一对多的广播通信

1.数据链路层的地位


2.点对点信道的数据链路层的通信方式

主要步骤如下:

节点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧

节点A把封装好的帧发送给B的数据链路层

节点B的数据链路层收到的帧无差错,则从收到的帧中提取IP数据报上交给网络层。若有差错则丢弃此帧。


3.三个基本问题——封装成帧、透明检验、差错检测

1>封装成帧:在一段数据前后添加首部和尾部,每一种链路层协议都规定了所能传送帧的数据部分的长度上限——MTU,如果不是完整的帧便丢弃。

Zynq学习_____以太网三部曲(一)理论篇_第6张图片

2>透明传输:当传送的帧是用文本文件组成的帧时,数据部分显然不会出现SOH和EOT这样的帧界定符。 可见不管键盘上输入什么字符都可以放在帧中传输过去。,当数据部分出现帧界定符的字符的时候需要在这种数据前插入转义字符。

3>差错检验:使用循环冗余检验CRC,由硬件完成。数据链路层只能做到收到的帧无差错,传输错误分为比特错和帧丢失、帧失序、帧重复。因此针对后三种情况,在CRC的基础上还增加了帧编号,确认和重传机制。

4.点对点协议PPP(广域网的范畴):PPP协议主要用于建立拨号连接。当然拨号的机器可以是路由器、也可以是PC机。在拨号线上,数据包被按照PPP协议进行封装并转发。

1>PPP帧格式:

Zynq学习_____以太网三部曲(一)理论篇_第7张图片

  • 首部中的标志字段F(Flag),规定为0x7E(符号0x表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110),标志字段表示一个帧的开始。
  • 首部中的地址字段A规定为0xFF(即11111111)。
  • 首部中的控制字段C规定为0x03(即00000011)。
  • 首部中的2字节的协议字段: 
    (1)当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。 
    (2)当协议字段为0xC021时,PPP帧的信息字段就是PPP链路控制协议LCP的数据。 
    (3)当协议字段为0x8021时,PPP帧的信息字段就是网络层的控制数据。
  • 尾部中的第一个字段(2个字节)是使用CRC的帧检验序列FCS。
  • 尾部中的标志字段F(Flag),规定为0x7E(符号0x表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110),标志字段表示一个帧的结束。

注:标志字段就是PPP帧的定界符。连续两帧之间只需要用一个标志字段。如果连续出现两个标志字段,就表示这是一个空帧,应当丢弃

2>透明传输的实现方式

字节填充——PPP使用异步传输

  • 当PPP使用异步传输时,它把转移符定义为0x7D,并使用字节填充。
  • RFC1662规定了如下填充方法: 
    (1)把信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)。 
    (2)若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把转义字符0x7D转变为2字节序列(0x7D,0x5D)。 
    (3)若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为2字节序列的(0x7D,0x31)。
  • 由于在发送端进行了字节填充,因此在链路上传送的信息字节数就超过了原来的信息字节数。但接收端在接收到数据后再进行与发送端字节填充相反的变换,就可以正确地恢复出原来的信息。

零比特填充——PPP使用同步传输

  • 当PPP使用同步传输时,使用零比特填充。
  • 零比特填充的具体方法: 
    (1)在发送端先扫描整个信息字段(通常使用硬件实现,但也可以用软件实现,但是会慢一些)。 
    (2)只要发现有5个连续的1,则立即填入一个0。 
    (3)接收端在收到一个帧时,先找到标志字段F以确定帧的边界,接着再用硬件对其中的比特流进行扫描,每当发现5个连续1时,就把5个连续1后的一个0删除,以还原成原来的信息比特流。
  • 因此通过这种零比特填充后的数据,就可以保证在信息字段中不会出现连续6个1。 

Zynq学习_____以太网三部曲(一)理论篇_第8张图片

3>PPP协议工作状态

Zynq学习_____以太网三部曲(一)理论篇_第9张图片

4.使用广播信道的数据链路层

1)共享信道的两种方式

1>静态划分信道:之前提到的各种复用,就是视线划分好信道这样一定不会造成冲突,但是代价很高

2>动态媒体接入控制:随机接入,受控接入。

2)适配器:

作用:计算器与外界局域网相连;

     数据串行传输和并行传输的数据转换;

     收到正确的帧的时候,使用中断来通知计算机,并交付协议栈中的网络层;

     计算机的mac地址就存在适配器的rom中

Zynq学习_____以太网三部曲(一)理论篇_第10张图片

3) CSMA/CD协议(载波监听、多点接入、碰撞检测):无连接的工作方式,半双工

   CSMA/CD的基本原理是:每个节点都共享网络传输信道,在每个站要发送数据之前,都会检测信道是否空闲,如果空闲则发送,否则就等待;在发送出信息后,则对冲突进行检测,当发现冲突时,则取消发送。我们可以借助于生活中的一个例子来解释:假设有这一层楼,两旁住了几十户人,中间只有一条仅供一人同行的走道。我们看情况会怎么样:①当这些住户要经过走道出来时,首先探出头来看看走道上有没有人(这就是载波监听),如果没有,就通过走道出来;②如果走道上有人走,那么就一直盯着走道,直到走道上没人时再出来(1-坚持监听算法);③如果有两人同时看到走道上没有人,而同时走向走道(冲突检测),则两个人发现时就马上回到自己屋里。在整个协议中最关键的是载波监听、冲突检测两部分。

    载波监听:在任何时候不断检测信道有人发送,就停止说话。什么时候再进行通信————退避二进制算法

    多点接入:许多计算机以多点接入的方式连接在一根总线上

    碰撞检测:边发送边监听,当碰撞之后还继续发送32bits或者48bits的认为干扰信号,让所有用户都知道发生了碰撞


4)以太网的MAC层

    MAC即Media Access Control,即媒体访问控制子层协议.该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质.在发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC层.该层协议是以太网MAC由IEEE-802.3以太网标准定义.最新的MAC同时支持10Mbps和100Mbps两种速率.

1>常用的以太网MAC帧格式有两种标准

  DIX Ethernet II标准,IEEE 的 802.3 标准。

  Ethernet II和IEEE802.3的帧格式比较类似,主要的不同点在于前者定义的2字节为包类型,而后者定义的2字节为的长度;所幸的是,后者定义的有效长度值与前者定义的有效类型值无一相同,这样就容易区分两种帧格式了。如果值大于 1500(0x05DC),说明是以太网类型字段,EthernetII 帧格式。如果值小于等于1500,说明是长度字段,IEEE802.3 帧格式。因此类型字段值最小的是 0x0600。而长度最大为 1500。MAC层要求定界字符之后的内容要在64字节到1518个字节之间,其中包括14字节的目标和源MAC,4字节的CRC32值。并且报文帧之间的传递间隔要大于9.6us。

Zynq学习_____以太网三部曲(一)理论篇_第11张图片

只关注V2 标准

Zynq学习_____以太网三部曲(一)理论篇_第12张图片

    类型字段 2个字节):用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议;数据字段 (46-1500):正式名称是MAC客户数据字段最小长度64 字节-18字节的首部和尾部=数据字段的最小长度;FCS字段 (4字节):当数据字段的长度小于46字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的MAC帧长不小于64字节;在帧的前面插入的8字节中的第一个字段共7个字节,是前同步码,用来迅速实现 MAC帧的比特同步。第二个字段是帧开始定界符,表示后面的信息就是MAC帧。

四.网络层

1.网络层向上只提供灵活简单,无连接,尽最大努力交付的数据服务,不承诺服务质量。

2.网际协议IP:ARP、ICMP、IGMP

Zynq学习_____以太网三部曲(一)理论篇_第13张图片

地址解析协议ARP:通过从网络层使用的IP地址,解析出数据链路层使用的mac地址。

控制报文协议ICMP:用于在IP主机路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

3.IP数据报格式:

Zynq学习_____以太网三部曲(一)理论篇_第14张图片

注意,上图表示的数据,最高位在左边,记为0位;最低位在右边,记为31位。在网络中传输数据时,先传输0~7位,其次是8~15位,然后传输16~23位,最后传输24~31位。由于TCP/IP协议头部中所有的二进制数在网络中传输时都要求以这种顺序进行,因此把它称为网络字节顺序。在实际编程中,以其他形式存储的二进制数必须在传输数据前使用网络编程API相应的函数把头部转换成网络字节顺序。

IP数据报各字段功能如下:

1)版本号:占用4位二进制数,表示该IP数据报使用的IP协议版本。目前Internet中使用的主要是TCP/IP协议族中版本号为4的IP协议。

2)头长度:占用4位二进制位,此域指出整个报头的长度(包括选项),该长度是以32位二进制数为一个计数单位的,接收端通过此域可以计算出报头在何处结束及从何处开始读数据。普通IP数据报(没有任何选项)该字段的值是5(即20个字节的长度)。

3)服务类型(TOS、type of service):占用8位二进制位,用于规定本数据报的处理方式。服务类型字段的8位分成了5个子域:

(1)—优先权(0-7)数越大,表示该数据报优先权越高。网络中路由器可以使用优先权进行拥塞控制,如当网络发生拥塞时可以根据数据报的优先权来决定数据报的取舍。

(2)—短延迟位D(Delay):该位置1时,数据报请求以短延迟信道传输,0表示正常延时。

(3)—高吞吐量位T(Throughput):该位置1时,数据报请求以高吞吐量信道传输,0表示普通。

(4)—高可靠位R(Reliability):该位置1时,数据报请求以高可靠性信道传输,0表示普通。

(5)—保留位。

目前在Internet中使用的TCP/IP协议大多数情况下网络并未对TOS进行处理,但在实际编程时,有专门的函数来设置该字段的各域。一些重要的网际应用协议中都设置了建议使用的TOS值:

从上表可以看出,对于与用户直接交互的应用,一般使用短延时;对于有大量数据需要进行传输的应用,一般选用高吞吐量;对于数据报要传输控制信息的应用,一般选用高可靠性。在数据报的生存期内不支持TOS的,TOS字段就设置为0x00。

4)总长度:占用16位二进制位,总长度字段是指整个IP数据报的长度(报头区+数据区),以字节为单位。利用头部长度字段和总长度字段就可以计算出IP数据报中数据内容的起始位置和长度。由于该字段长度为16位二进制数,因此理论上IP数据报最长可达65536个字节(事实上受物理网络的限制,要比这个数值小很多)。

5)生存时间(TTL,time to live):占用8位二进制位,它指定了数据报可以在网络中传输的最长时间。实际应用中把生存时间字段设置成了数据报可以经过的最大路由器数。TTL的初始值由源主机设置(通常为32、64、128或256),一旦经过一个处理它的路由器,它的值就减1。当该字段为0时,数据报就丢弃,并发送ICMP报文通知源主机,因此可以防止进入一个循环回路时,数据报无休止地传输下去。

6)上层协议标识:占用8位二进制位,IP协议可以承载各种上层协议,目标端根据协议标识就可以把收到的IP数据报送到TCP或UDP等处理此报文的上层协议了。

常用网际协议编号:

7)校验和:占用16位二进制数,用于协议头数据有效性的校验,可以保证IP报头区在传输时的正确性和完整性。头部检验和字段是根据IP协议头计算出的检验和,它不对头部后面的数据进行计算。

原理:发送端首先将检验和字段置0,然后对头部中每16位二进制数进行反码求和的运算,并将结果存在校验和字段中。 由于接收方在计算过程中包含了发送方放在头部的校验和,因此,如果头部在传输过程中没有发生任何差错,那么接收方计算的结果应该是全1。

8)源地址:占用32位二进制数,表示发送端IP地址。

9)目的地址:占用32位二进制数,表述目的端IP地址。

======================IP数据报分片和重组======================

最大传输单元:

IP数据报在互联网上传输时,可能要经过多个物理网络才能从源端传输到目的端。不同的网络由于链路层和介质的物理特性不同,因此在进行数据传输时,对数据帧的最大长度都有一个限制,这个限制值即最大传输单元MTU(Maximum Transmission Unit).

同一个网络上的两台主机之间通信时,该网络的MTU值是确定的,不存在分片问题。分片问题一般只存在于具有不同MTU值的互联网中。由于现在互联网主要使用路由器进行网络连接,因此分片工作通常由路由器负责。

当两台主机之间的通信要通过多个具有不同MTU值的网络时,MTU的瓶颈是通信路径上最小的MTU值,它被称为路径MTU。由于路由选择不一定是对称的(从A到B的路由可能与从B到A的路由不同),因此,路径MTU在两个方向上不一定是一致的,下表是几种常用网络的MTU值:

分片:

把一个数据报为了适合网络传输而分成多个数据报的过程称为分片,被分片后的各个IP数据报可能经过不同的路径到达目标主机。

一个IP数据报在传输过程中可能被分片,也可能不被分片。如果被分片,分片后的IP数据报和原来没有分片的IP数据报结构是相同的,即也是由IP头部和IP数据区两个部分组成:

分片后的IP数据报,数据区是原IP数据报数据区的一个连续部分,头部是原IP数据报头部的复制,但与原来未分片的IP数据报头部有两点主要不同:标志和片偏移:

(1)—标志:在IP数据报头部有一个叫“标志”的字段,用3位二进制数表示:

不分片DF(Do not Fragment)标志如果被置1,则数据报在传输过程中不能被分片,如网络连通性测试命令ping就可以用-F参数设置为在数据传输时不分片,但这样当数据不能通过MTU较小的网络时,将产生数据不可达的错误。

片未完MF(More Fragment)标志如果被置1,说明该数据报不是分片后的最后一个数据报,最后一个数据报的该位被置0。

(2)—片偏移:IP数据报被分片后,各片数据区在原来IP数据区中的位置用13位片偏移来表示。上图中分片1的偏移为0;分片2的偏移为600;分片3的偏移为1200实际在IP地址中,由于偏移是以8个字节为单位进行计算的,因而在IP数据报中分片1的偏移是0;分片2的偏移是75;分片3的偏移是150。

重组:

当分了片的IP数据报到达最终目标主机时,目标主机对各分片进行组装,恢复成源主机发送时的IP数据报,这个过程叫做IP数据报的重组。

在IP数据报头部中,标识用16位二进制数表示,它唯一地标识主机发送的每一份数据报。在一个数据报被分片时,每个分片仅把数据报“标识”字段的值原样复制一份,所以一个数据报的所有分片具有相同的标识。

目标端主机重组数据报的原理是:

(1)—根据“标识”字段可以确定收到的分片属于原来哪个IP数据报;

(2)—根据“标志”字段的“片未完MF”子字段可以确定分片是不是最后一个分片;

(3)—根据“偏移量”字段可以确定分片在原数据报中的位置。
五.运输层

运输层向应用层提供通信服务

Zynq学习_____以太网三部曲(一)理论篇_第15张图片

1>UDP:无连接、尽最大努力交付、面向报文、无拥塞控制、支持一对一一对多多对一、首部开销小                                                                                           2>TCP :面向连接、点对点、可靠交付、全双工                     Zynq学习_____以太网三部曲(一)理论篇_第16张图片                                                    停止等待协议:  

发送一个分组后,必须暂存此分组;分组都必须编号;超时计时器设置重传时间。                                                                                          Zynq学习_____以太网三部曲(一)理论篇_第17张图片        连续ARQ协议:  滑框                                                                                   

连续ARQ(Automatic Repeat reQuest)协议指发送方维持着一个一定大小的发送窗口,位于发送窗口内的所有分组都可连续发送出去,而中途不需要等待对方的确认。这样信道的利用率就提高了。而发送方每收到一个确认就把发送窗口向前滑动一个分组的位置。
接收方一般都是采用积累确认的方式。这就是说,接收方不必对收到的分组逐个发送确认,而是在收到几个分组后,对按序到达的最后一个分组发送确认,这就表示:到这个分组为止的所有分组都已正确收到了。
积累确认有优点也有缺点。优点是:容易实现,即使确认丢失也不必重传。但缺点是不能向发送方反映出接收方已经正确收到的所有分组的信息。
例如,如果发送方发送了前5个分组,而中间的第3个分组丢失了。这时接收方只是对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。这就叫做Go-back-N(回退N),表示需要再退回来重传已发送过的N个分组。可见当通信线路质量不好时,连续ARQ协议会带来负面的影响。
     Zynq学习_____以太网三部曲(一)理论篇_第18张图片

      Zynq学习_____以太网三部曲(一)理论篇_第19张图片        

端口号:用来标识同一台计算机的不同的应用进程。

源端口源端口和IP地址的作用是标识报文的返回地址。

目的端口:端口指明接收方计算机上的应用程序接口。

TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。

序号和确认号:是TCP可靠传输的关键部分。序号是本报文段发送的数据组的第一个字节的序号。在TCP传送的流中,每一个字节一个序号。e.g.一个报文段的序号为300,此报文段数据部分共有100字节,则下一个报文段的序号为400。所以序号确保了TCP传输的有序性。确认号,即ACK,指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。确认号只有当ACK标志为1时才有效。比如建立连接时,SYN报文的ACK标志位为0。

数据偏移/首部长度:4bits。由于首部可能含有可选项内容,因此TCP报头的长度是不确定的,报头不包含任何任选字段则长度为20字节,4位首部长度字段所能表示的最大值为1111,转化为10进制为15,15*32/8 = 60,故报头最大长度为60字节。首部长度也叫数据偏移,是因为首部长度实际上指示了数据区在报文段中的起始偏移值。

保留:为将来定义新的用途保留,现在一般置0。

控制位:URG  ACK  PSH  RST  SYN  FIN,共6个,每一个标志位表示一个控制功能。

URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。

ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。

PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。

RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。

SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1

FIN:finish标志,用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。

窗口:滑动窗口大小,用来告知发送端接受端的缓存大小,以此控制发送端发送数据的速率,从而达到流量控制。窗口大小时一个16bit字段,因而窗口大小最大为65535。

校验和:奇偶校验,此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得。由发送端计算和存储,并由接收端进行验证。

紧急指针:只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。 TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。

选项和填充:最常见的可选字段是最长报文大小,又称为MSS(Maximum Segment Size),每个连接方通常都在通信的第一个报文段(为建立连接而设置SYN标志为1的那个段)中指明这个选项,它表示本端所能接受的最大报文段的长度。选项长度不一定是32位的整数倍,所以要加填充位,即在这个字段中加入额外的零,以保证TCP头是32的整数倍。

数据部分 TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段。

六.应用层

    网络通信是一台主机的进程与另一台主机的进程通信传输层之上,便是应用层。传输层的 UDP 报文和 TCP 报文段的数据部分就是应用层交付的数据。不同类型的网络应用有不同的通信规则,因此应用层协议是多种多样的,比如 DNS、FTP、Telnet、SMTP、HTTP、RIP、NFS 等协议都是用于解决其各自的一类问题。介绍 DNS、FTP、HTTP 三个常用的应用层协议。

1.DNS:

DNS (Domain Name Service 域名服务) 协议基于 UDP,使用端口号 53。由数字组成的 IP 地址很难记忆,所以我们上网使用网站 IP 地址的别名——域名。实际使用中,域名与 IP 地址是对应的,这种对应关系保存在DNS 服务器之中。在浏览器中输入一个域名后,会有 DNS 服务器将域名解析为对应的 IP 地址。注意这和网络层的 ARP 协议的不同之处:DNS 提供的是域名与 IP 地址的对应关系,而 ARP 提供的是 IP 地址和 MAC 地址的对应关系。

DNS 服务器

DNS 服务器是个分层次的系统:

  • (1)根 DNS 服务器 :全世界共有 13 台根域名服务器,编号 A 到 M,其中大部分位于美国。

  • (2)顶级(TLD)DNS 服务器 :负责如 com 、org 、edu 等顶级域名和所有国家的顶级域名(如 cn 、uk 、jp )。

  • (3)权威 DNS 服务器 :大型组织、大学、企业的域名解析服务。

  • (4)本地 DNS 服务器 :通常与我们主机最近的 DNS 服务器。

  • 而域名解析的过程,有迭代查询和递归查询两种方式Zynq学习_____以太网三部曲(一)理论篇_第20张图片

2.FTP

FTP (File Transfer Protocol 文件传输协议) 基于 TCP,使用端口号 20(数据)和 21(控制)。

它的主要功能是减少或消除在不同操作系统下处理文件的不兼容性,以达到便捷高效的文件传输效果。

  • FTP 只提供文件传输的基本服务,它采用 客户端—服务器 的方式,一个 FTP 服务器可同时为多个客户端提供服务。

  • 在进行文件传输时,FTP 的客户端和服务器之间会建立两个 TCP 连接:21 号端口建立控制连接,20 号端口建立数据连接

  • FTP 的传输有两种方式:ASCII 传输模式和二进制数据传输模式。

3.HTTP

HTTP (HyperText Transfer Protocol 超文本传输协议) 基于 TCP,使用端口号 80 或 8080。

每当你在浏览器里输入一个网址或点击一个链接时,浏览器就通过 HTTP 协议将网页信息从服务器提取再显示出来,这是现在使用频率最大的应用层协议。

这个原理很简单:

  • 点击一个链接后,浏览器向服务器发起 TCP 连接;

  • 连接建立后浏览器发送 HTTP 请求报文,然后服务器回复响应报文;

  • 浏览器将收到的响应报文内容显示在网页上;

  • 报文收发结束,关闭 TCP 连接。

HTTP 报文会被传输层封装为 TCP 报文段,然后再被 IP 层封装为 IP 数据报。HTTP 报文的结构:

可见报文分为 3 部分:

  • (1)开始行:用于区分是请求报文还是响应报文,请求报文中开始行叫做请求行,而响应报文中,开始行叫做状态行。在开始行的三个字段之间都用空格分开,结尾处 CRLF 表示回车和换行。

  • (2)首部行:用于说明浏览器、服务器或报文主体的一些信息。

  • (3)实体主体:请求报文中通常不用实体主体。

请求报文的方法字段是对所请求对象进行的操作,而响应报文的状态码是一个 3 位数字,分为 5 类 33 种:

  • 1xx 表示通知信息,如收到或正在处理。

  • 2xx 表示成功接收。

  • 3xx 表示重定向。

  • 4xx 表示客户的差错,如 404 表示网页未找到。

  • 5xx表示服务器的差错,如常见的 502 Bad Gateway。

你可能感兴趣的:(Zynq)