以太网数据帧的监听与分析Word格式文档下载.docx

上传人:b****3 文档编号:16357200 上传时间:2022-11-23 格式:DOCX 页数:19 大小:160.38KB
下载 相关 举报
以太网数据帧的监听与分析Word格式文档下载.docx_第1页
第1页 / 共19页
以太网数据帧的监听与分析Word格式文档下载.docx_第2页
第2页 / 共19页
以太网数据帧的监听与分析Word格式文档下载.docx_第3页
第3页 / 共19页
以太网数据帧的监听与分析Word格式文档下载.docx_第4页
第4页 / 共19页
以太网数据帧的监听与分析Word格式文档下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

以太网数据帧的监听与分析Word格式文档下载.docx

《以太网数据帧的监听与分析Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《以太网数据帧的监听与分析Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。

以太网数据帧的监听与分析Word格式文档下载.docx

长度8比特。

这个子段可以拆分成两个部分:

优先级(Precedence)和服务条款(TOS)。

TOS(前三位)目前不太使用。

而Precedence则用于QOS应用。

(TOS字段的详细描述RFC13401349)

8个BIT的含义是:

    000          

前三位不用

    0            

表示最小时延,如Telnet服务使用该位

    0               表示吞吐量,如FTP服务使用该位

    0               表示可靠性,如SNMP服务使用该位

    0               表示最小代价

    0               不用

IP包总长(TotalLength):

长度16比特。

IP包最大长度65535字节。

标识符(Identifier):

该字段和Flags和FragmentOffest字段联合使用,对大的上层数据包进行分段(fragment)操作。

标记(Flags):

长度3比特。

该字段第一位不使用。

第二位是DF位,DF位设为1时表明路由器不能对该上层数据包分段。

如果一个上层数据包无法在不分段的情况下进行转发,则路由器会丢弃该上层数据包并返回一个错误信息。

第三位是MF位,当路由器对一个上层数据包分段,则路由器会在除了最后一个分段的IP包的包头中将MF位设为1。

分段序号(FragmentOffset):

长度13比特。

该字段对包含分段的上层数据包的IP包赋予序号。

由于IP包在网络上传送的时候不一定能按顺序到达,这个字段保证了目标路由器在接受到IP包之后能够还原分段的上层数据包。

到某个包含分段的上层数据包的IP包在传送是丢失,则整个一系列包含分段的上层数据包的IP包都会被要求重传。

生存时间(TTL):

当IP包进行传送时,先会对该字段赋予某个特定的值。

当IP包经过每一个沿途的路由器的时候,每个沿途的路由器会将IP包的TTL值减少1。

如果TTL减少为0,则该IP包会被丢弃。

这个字段可以防止由于故障而导致IP包在网络中不停被转发。

协议(Protocol):

标识了上层所使用的协议。

如果是ICMP协议,此处的协议代码应为1。

如果TCP协议,则此处的协议代码应为6。

如果是UDP协议,则此处的协议代码应为17。

头部校验(HeaderChecksum):

长度16位,由于IP包头是变长的,所以提供一个头部校验来保证IP包头中信息的正确性。

起源和目标地址(SourceandDestinationAddresses) 

IP选项(options)主要用于控制和测试两大目的。

作为选项,用户可以使用也可以不使用IP选项,但作为IP协议的组成部分,所有实现IP协议的设备能处理IP选项。

在使用选项的过程中,有可能造成数据包头部不是32b的整数倍,那么则需要填充域来凑齐。

IP数据报选项有选项玛、长度、和选项数据3部分组成,

其中,选项玛用于确定该选项的具体内容,选项数据部分长度有选项字段决定。

1.源路由。

所谓源路由是指IP数据包穿越互联网所经过的路径是有源主机指定的,他区别于

有主机或路由器的互联层软件自行选择路由后得出的路径。

源路由选项是非常有用的一个选项,可用于测试某个特定网络的吞吐量,也可以是数据包绕开出错网络。

源路由选项可以分为两类,一类是严格源路由选项,一类是松散源路由选项。

2.记录路由

所谓记录路由是指记录下IP数据报从源主机到目的主机所经过的路径上的各个路由器的IP地址,记录路由功能可以通过IP数据报的记录路由选项完成。

利用记录路由选项,可以判断IP数据报传输过程中的所经过的路径,通常还可以测试互联网中路由配置是否正确。

3.时间戳

所谓时间戳 

(timerstamp)就是记录下IP数据报经过的每一个路由器时的当地时间,记录时间戳可以使用IP数据报的时间戳选项。

时间戳中的时间采用格林尼治时间。

时间戳选项提供了IP数据报传输中的时域参数,用于分析网路吞吐率,拥塞情况,负载情况等

ICMP报文结构如下:

internet控制消息协议ICMP是用于报告错误并代表IP对消息进行控制。

类型(8位)

代码(8位)

校验和(16位)

标示符(16位)

序号(16位)

当前时间(32位)

8bits类型和8bits代码字段:

一起决定了ICMP报文的类型.如下表:

16bits校验和字段:

包括数据在内的整个ICMP数据包的校验和,其计算方法和IP头部校验和的计算方法是一样的。

16bits标识符字段:

用于标识本ICMP进程 

16bits序列号字段:

用于判断回射应答数据报。

时间戳:

时间戳请求报文(Type=13)和时间戳应答报文(Type=14)用于测试两台主机之间数据报来回一次的传输时间。

传输时,主机填充原始时间戳,接收方收到请求后填充接收时间戳后以Type=14的报文格式返回,发送方计算这个时间差。

一些系统不响应这种报文。

TCP报文结构如下表:

(摘自

传输控制协议(TCP)向上与用户应用程序进程接口,向下与网络层协议IP接口。

用户应用程序采用首先调用TCP(或UDP),然后将应用程序数据递交给TCP这一方式,在IP网络上传送数据。

TCP将这些数据打包分段并调用IP模块向目的主机传送每个数据段。

接收方的TCP将段中的数据放入接收缓冲器,然后将段重装为应用程序数据,再将这些数据发送到目的的应用程序进程。

尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。

TCP提供一种面向连接的、可靠的字节流服务。

源端口号(16位),标识主机上发起传送的应用程序;

目的端口(16位)标识主机上传送要到达的应用程序。

源端和目的端的端口号,用于寻找发端和收端应用进程。

这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接。

一个IP地址和一个端口号有时也称为一个插口(socket),插口对(socket pair)(包含客户IP地址、客户端口号、服务器IP地址和服务器端口号的四元组)可唯一确定互联网络中每个TCP连接的双方。

IP+TCP端口唯一确定一个TCP连接。

TCP协议通过使用"

端口"

来标识源端和目标端的应用进程。

端口号可以使用0到65535之间的任何数字。

在收到服务请求时,操作系统动态地为客户端的应用程序分配端口号。

在服务器端,每种服务在"

众所周知的端口"

(Well-KnowPort)为用户提供服务。

●顺序号字段:

占32比特。

用来标识从TCP源端向TCP目标端发送的数据字节流,它表示在这个报文段中的第一个数据字节。

●确认号字段:

只有ACK标志为1时,确认号字段才有效。

它包含目标端所期望收到源端的下一个数据字节。

●头部长度字段:

占4比特。

给出头部占32比特的数目。

没有任何选项字段的TCP头部长度为20字节;

最多可以有60字节的TCP头部。

预留:

由跟在数据偏移字段后的6位构成,预留位通常为0.

●标志位字段(U、A、P、R、S、F):

占6比特。

各比特的含义如下:

 

  ◆URG:

紧急指针(urgentpointer)有效。

  ◆ACK:

确认序号有效。

  ◆PSH:

立即发送(默认要等到发送缓冲区存满再发送数据)

  ◆RST:

重建连接。

  ◆SYN:

发起一个连接。

  ◆FIN:

释放一个连接。

●窗口大小字段:

占16比特。

此字段用来进行流量控制。

单位为字节数,这个值是本机期望一次接收的字节数。

  ●TCP校验和字段:

对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,并由目标端进行验证。

  

  ●紧急指针字段:

它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。

  ●选项字段:

可能包括"

窗口扩大因子"

、"

时间戳"

等选项。

TCP三次握手:

创建TCP连接

1、A端SYN=1,ACK=0 

SequenceNumber=XXX

2、B端SYN=1,ACK=1 

SequenceNumber=YYY 

Acknowledgement=XXX+1

3、A端SYN=0,ACK=1 

SequenceNumber=XXX+1 

Acknowledgement=YYY+1 

这个TCP负载中已经可以包含业务数据了。

TCP链接撤销:

1、A端FIN=1,ACK=1 

SequenceNumber=XXX 

Acknowledgement=YYY

2、B端FIN=1,ACK=1 

3、A端FIN=0,ACK=1 

Acknowledgement=YYY+1

//定义TCP报头

typedefstruct_tcphdr

{

bytesource_port[2];

//发送端端口号,16位

bytedest_port[2];

//接收端端口号,16位

bytesequence_no[4];

//32位,标示消息端的数据位于全体数据块的某一字节的数字

byteack_no[4];

//32位,确认号,标示接收端对于发送端接收到数据块数值

byteoffset_reser_con[2];

//数据偏移4位,预留6位,控制位6为

bytewindow[2];

//窗口16位

bytechecksum[2];

//校验码,16位

byteurgen_pointer[2];

//16位,紧急数据指针

byteoptions[3];

//选祥和填充,32位

}TCP_HEADER;

本文来自CSDN博客:

TCP/IP协议简单分析

首先TCP和IP是两种不同的协议,它们来七层网络模型中分别在不同的层次,IP协议是网络层的协议,TCP是更高一层的传输层的协议,TCP是建立在IP协议之上的,所以一般把TCP和IP连在一起说TCP/IP协议。

Windows系统的TCP协议栈的数据包默认是1460字节大小,如果一次传输的数据大于这个长度,会把分割成几个长度都不大于1460字节的TCP数据包,每个数据包都会被赋予一个sequncenumber(相当于每个数据包的顺序号,凭这个接收端可以知道数据包的前后顺序)

之后TCP的数据包再被包裹上一层IP的数据的头,形成IP数据包在网上传输(其实最后还要包一层以太网数据包,网络上最终传输的都是以太网数据包)。

IP数据包到了目的地后,接收端首先把IP数据包的包头去掉,取出TCP的包。

接收端每收到一个TCP的数据包都需要返回给发送端一个ACK的数据包告诉发送端已接到此数据包,如果接收端在一定的时间内没有收到某个数据包的ACK响应,会再次发送这个数据包,这样就保证了数据都能被接收端接收到(因特网上丢数据包是很正常的事,如果没有数据包重发机制,很难保证发送的数据都能被接收端完整的收到)。

每个TCP数据包也是由包头和实际数据组成,包头包含如下主要内容:

lSourceport(2字节)

发送端的端口号

lDestinationport(2字节)

接收端的端口号

TCP包头中只包含双方的端口号,双方的IP地址在IP包的包头,所以在TCP数据包的包头中没有IP地址。

lSequencenumber(4字节)

数据的顺序号,表示当前数据包中的数据起始顺序号,比如前一个数据包的SEQ为十六进制的:

dfd5aa3d,数据包的实际数据长度为16字节,那么下一个数据包的SEQ就要在前一个数据包的SEQ基础上加上16,为:

dfd5aa4d

lAcknowledgementnumber(4字节)

接收到对方的某个数据包后的回应顺序号。

如果接收到了对方主动发送来的某个数据包,必须要返回对方一个ACK回应数据包,数据包的头部的Acknowledgementnumber部分根据对方发送数据的SEQ和实际数据长度,返回SEQ+实际数据长度,表示已经接收到这个数据包。

对方收到这个回应,根据数值计算后知道这个数据包已经被对方接收。

如果接收不到ACK的回应,就意味着这个数据包已经在网上被丢失,需要重新发送此数据包。

lHeaderlength(1字节)

表示TCP数据包的包头长度,整个TCP数据包的长度减包头长度就能得到TCP数据包的实际传送的数据长度。

lFlags(1字节)

标志字节,每一位都是一个标志,以下是几个主要标志:

ACK–表示数据包是个ACK回应数据包,表示接收到了对方的某个数据包,具体哪个包由包头的Acknowledgementnumber部分指示。

PSH–表示这是个有实际数据的包。

SYN–表示这是个建立连接的数据包,通讯双方要通讯,总是由客户端先发送SYN数据包到服务端以建立TCP的连接。

FIN–表示通讯结束,拆除连接的数据包。

下面描述一次TCP传送数据的完整过程,以一个客户端向服务端发送一些数据为例。

Figure1.一次完整的TCP通讯的过程

1、建立连接

TCP是面向连接的协议,客户端和服务端要通讯就必须先建立一个连接。

首先通讯双方都有地址,就是IP地址加端口号(IP:

Port)标识通讯的每一端,客户端的IP:

Port跟服务器IP:

Port之间就构成一个socket套接字。

所谓建立连接就是在客户端的IP:

Port之间建立一个通道,初始化一些通讯的基础设置,以便以后的数据通讯的正常进行。

1.1.客户端发送SYN

总是客户端发起连接,首先客户端发送SYN数据包到服务端以建立TCP连接。

SYN数据包只有TCP包头,没有实际数据。

Flags标志字节的SYN位置位,表示是SYN数据包。

Sequencenumber由客户端随机生成一个4字节的数据,作为本次连接通讯客户端数据的起始顺序号,以后客户端发往服务端的数据包的Sequencenumber都在此基础上加上每次传送的实际数据长度依次相加递增,这样根据每个数据包的Sequencenumber就能判断出数据包的前后顺序,以便接收方根据数据包的顺序拼接数据包。

1.2.服务端回应ACK、SYN

服务端收到客户端的SYN后,首先要发送一个ACK数据包给客户端表示收到了这个数据包。

数据包的Flags标志字节的ACK置位,表示是ACK回应数据包。

Acknowledgementnumber设置为接收到的数据包的SEQ+数据包实际长度,因为接收到的SYN的实际数据长度为0,但是TCP协议认为实际长度为0的主动发送的数据长度为1,SYN是客户端主动发送的数据包,所以服务端把Acknowledgementnumber设置为接收到的数据包的SEQ+1。

TCP通讯可以是双向的,一旦建立了连接,服务端也可以向客户端发送数据。

所以服务端也会向客户端发送一个SYN包,数据包的Flags标志字节的SYN置位,表示是SYN数据包,同时随机生成一个4字节的数据,作为本次连接通讯服务端数据的起始顺序号Sequencenumber。

实际中,服务端把这两个数据包合并为一个数据包,SYN和ACK都是置位,Sequencenumber和Acknowledgementnumber也同时设置,作为一个数据包发送回客户端。

1.3.客户端回应ACK

客户端收到服务端的SYN数据包后,需要回应一个ACK数据包,表示接收到此数据包。

同样ACK数据包的Acknowledgementnumber设置为接收到的数据包的SEQ+1(SYN、ACK数据包的实际数据长度也是0)。

2、相互收发数据

通讯双方建立了连接后,就可以相互进行数据包的传送。

发送数据的一端,把数据包的Flags标准字节的PSH置位,表示是有实际数据的数据包。

Sequencenumber置为前一次的数据包的Sequencenumber加上前一次数据包的长度。

如果数据包还兼做ACK包,则把ACK置位,同时设置好Acknowledgementnumber把数据包发送到对方。

接收方收到对方主动发送的数据数据包后,一定要回复ACK数据包,如果同时有数据发往对方,可以把实际数据包跟ACK数据包合在一起发送。

在拆除连接之前,通讯双方可以一直相互发送接收数据,数据的顺序都建立在各自的Sequencenumber基础上。

图1中,蓝色部分的数据通讯就表示这一阶段。

3、拆除连接

双方数据交换完毕,需要拆除连接,结束通讯。

3.1.客户端发送FIN

通讯的一方向另一方发送FIN数据包表示要结束通讯,拆除连接。

客户端把数据包的Flags标准字节的FIN置位,表示是通讯结束数据包。

3.2.服务端返回ACK,FIN

服务端收到客户端的FIN数据包后,先回应一个ACK数据包,然后也发送一个FIN数据包,还是服务端也结束通讯。

3.3.客户端回应ACK

客户端回应ACK表示接收到服务端的FIN数据,双方通讯结束。

UDP报文结构如下表:

UDP源端口号(16位)UDP目标端口号(16位

UDP长度(16位)UDP校验和(16位)

数据区

UDP协议不提供数据传送的保证机制。

如果在从发送方到接收方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示。

因此,通常人们把UDP协议称为不可靠的传输协议。

但UDP协议拥有TCP协议望尘莫及的速度。

主要应用于视频电话会议。

ARP协议数据包:

ARP,全称AddressResolutionProtocol,中文名为地址解析协议,它工作在数据链路层,在本层和硬件接口联系,同时对上层提供服务。

IP数据包常通过以太网发送,以太网设备并不识别32位IP地址,它们是以48位以太网地址传输以太网数据包。

因此,必须把IP目的地址转换成以太网目的地址。

在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。

但这个目标MAC地址是如何获得的呢?

它就是通过地址解析协议获得的。

ARP协议用于将网络中的IP地址解析为的硬件地址(MAC地址),以保证通信的顺利进行。

1.ARP和RARP报头结构

ARP和RARP使用相同的报头结构,如图1所示。

(图1ARP/RARP报头结构)

?

硬件类型字段指明了发送方想知道的硬件接口类型,以太网的值为1;

协议类型字段指明了发送方提供的高层协议类型,IP为0800(16进制);

硬件地址长度和协议长度指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;

操作字段用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;

发送方的硬件地址(0-3字节):

源主机硬件地址的前3个字节;

发送方的硬件地址(4-5字节):

源主机硬件地址的后3个字节;

发送方IP(0-1字节):

源主机硬件地址的前2个字节;

发送方IP(2-3字节):

源主机硬件地址的后2个字节;

目的硬件地址(0-1字节):

目的主机硬件地址的前2个字节;

目的硬件地址(2-5字节):

目的主机硬件地址的后4个字节;

目的IP(0-3字节):

目的主机的IP地址。

2.ARP和RARP的工作原理

ARP的工作原理如下:

1.首先,每台主机都会在自己的ARP缓冲区(ARPCache)中建立一个ARP列表,以表示IP地址和MAC地址的对应关系。

2.当源主机需要将一个数据包要发送到目的主机时,会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址,如果有﹐就直接将数据包发送到这个MAC地址;

如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。

此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。

3.网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。

如果不相同就忽略此数据包;

如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个ARP响应数据包,告诉对方自己是它需要查找的MAC地址;

4.源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。

如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

RARP的工作原理如下:

1.发送主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址;

2.本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址;

3.如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用;

4.如果不存在,RARP服务器对此不做任何的响应;

5.源主机收到从RARP

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1