以太网数据帧的监听与分析Word格式文档下载.docx
- 文档编号:16357200
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:19
- 大小:160.38KB
以太网数据帧的监听与分析Word格式文档下载.docx
《以太网数据帧的监听与分析Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《以太网数据帧的监听与分析Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
长度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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 以太网 数据 监听 分析