以太网帧PPPOEIPTCPUDPFTPDNS协议分析教材.docx
- 文档编号:9162682
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:16
- 大小:25.20KB
以太网帧PPPOEIPTCPUDPFTPDNS协议分析教材.docx
《以太网帧PPPOEIPTCPUDPFTPDNS协议分析教材.docx》由会员分享,可在线阅读,更多相关《以太网帧PPPOEIPTCPUDPFTPDNS协议分析教材.docx(16页珍藏版)》请在冰豆网上搜索。
以太网帧PPPOEIPTCPUDPFTPDNS协议分析教材
1、以太网帧格式
来自线路的二进制数据包称作一个帧。
从物理线路上看到的帧,除其他信息外,还有前导码和帧开始符。
任何物理硬件都会需要这些信息。
下面的表格显示了在以1500个八位元组为MTU传输(有些吉比特以太网甚至更高速以太网支持更大的帧,称作巨型帧)时的完整帧格式。
一个八位元组是八个位组成的数据(也就是现代计算机的一个字节)。
表1:
802.3以太网帧结构
802.3以太网帧结构前导码
帧开始符
MAC目标地址
MAC源地址
802.1Q标签(可选)
以太类型或长度
负载
冗余校验
帧间距
101010107个octet
101010111个octet
6octets
6octets
(4octets)
2octets
46–1500octets
4octets
12octets
64–1522octets
72–1530octets
84–1542octets
2、PPPOE格式
PPPOE,全称Point-to-PointProtocolOverEthernet,它工作在OSI的数据链路层,PPPOE协议提供了在广播式的网络(如以太网)中多台主机连接到远端的访问集中器(我们对目前能完成上述功能的设备为宽带接入服务器)上的一种标准。
PPPOE协议共包括两个阶段,即PPPOE的发现阶段(PPPOEDiscoveryStage)和PPPOE的会话阶段(PPPOESessionStage)。
而两者的主要区别在于只是在PPP的数据报文前封装了PPPOE的报文头。
PPPOE的数据报文是被封装在以太网帧的数据域内的。
简单来说我们可能把PPPOE报文分成两大块,,一大块是PPPOE的数据报头,另一块则是PPPOE的净载荷(数据域),对于PPPOE报文数据域中的内容会随着会话过程的进行而不断改变。
下表为PPPOE的报文的格式:
表2:
PPPOE报文的格式
+
Bits0–3
4–7
8–15
16–31
0
版本
类型
代码
会话ID
32
长度
数据
以下是对上表中PPPOE各个字段的描述:
表1:
PPPOE各个字段的描述
版本
这个域的内容填充0x1。
类型
这个域的内容填充0x1
代码
对于PPPOE的不同阶段这个部分的内容也是不一样的
会话ID
当访问集中器还未分配唯一的会话ID给用户主机的话,则该域内的内容必须填充为0x0000,一旦主机获取了会话ID后,那么在后续的所有报文中该域必须填充那个唯一的会话ID值。
长度
数据部分的长度
数据
在PPPOE的不同阶段该域内的数据内容会有很大的不同。
在PPPOE的发现阶段时,该域内会填充一些Tag(标记);而在PPPOE的会话阶段,该域则携带的是PPP的报文。
3、IP数据报格式
TCP/IP协议定义了一个在因特网上传输的包,称为IP数据报(IPDatagram)。
这是一个与硬件无关的虚拟包,由首部和数据两部分组成。
首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。
在首部的固定部分的后面是一些可选字段,其长度是可变的。
首都中的源地址和目的地址都是IP协议地址。
IP数据报头格式见下图:
:
表3:
IP数据报格式
+
Bits0–3
4–7
8–15
16–18
19–31
0
版本
首部长度
服务类型
总长度
32
标识(Identification)
标志(Flag)
片偏移
64
生存时间
协议
首部检验和
96
源地址
128
目的地址
160
选用
160/192+
数据
IP数据报各个字段的描述:
版本
指IP协议的版本。
通信双方使用的IP协议版本必须一致。
日前广泛使用的IP协议版本号为4。
首部长度
该字段用来描述32位字的个数,最大为15(即60字节),当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。
服务
只有在使用区分服务时,这个字段才起作用。
总长度
总长度指首都及数据之和的长度,单位为字节。
标识
该字段并不表示序号,当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。
标志
目前只有2位有意义。
最低位记为MF(MoreFragment),MF=1即表示后面“还有分片”的数据报,标志字段中间的一位记为DF(Don'tFragment),意思是“不能分片”。
只有当DF=0时才允许分片。
片偏移
较长的分组在分片后,某片在原分组中的相对位置。
片偏移以8个字节为偏移单位。
生存时间
TTL(TimeToLive),其表明数据报在网络中的寿命。
协议
指出此数据报携带的数据是使用何种协议。
首部检验和
这个字段只检验数据报的首部。
源地址
源主机IP地址
目的地址
目的主机IP地址
4、TCP数据报格式
在因特网协议族(Internetprotocolsuite)中,TCP层是位于IP层之上,应用层之下的传输层。
不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。
TCP使用了端口号(Portnumber)的概念来标识发送方和接收方的应用层。
对每个TCP连接的一端都有一个相关的16位的无符号端口号分配给它们。
端口被分为三类:
众所周知的、注册的和动态/私有的。
众所周知的端口号是由因特网赋号管理局(IANA)来分配的,并且通常被用于系统一级或根进程。
众所周知的应用程序作为服务器程序来运行,并被动地侦听经常使用这些端口的连接。
例如:
FTP、TELNET、SMTP、HTTP等。
TCP报头的分析主要用于端口号识别,一些常用的邮件传输协议以及网络通信协议都有固定的端口号,因此我们可以通过端口号来判断现在正在通信的协议种类,同时,TCP/IP对可用来确定该网络通信的信道的唯一性。
表4:
TCP报文结构
+
Bits0–3
4–7
8–15
16–31
0
源端口
目的端口
32
序列号码
64
确认号码
96
数据偏移量
保留
标志符
窗口大小
128
校验和
紧急指针
160
选用
160/192+
数据
TCP报文各个字段描述:
源端口
发送端的端口
目的端口
目的端的端口
序列号码
即SYN,表示数据第一字节所占的序号。
确认号码
即ACK,表明准备接收的包的序号。
数据偏移量
4位包括TCP头大小,指示何处数据开始。
标志符
6位标志域。
表示为:
紧急标志、有意义的应答标志、推、重置连接标志、同步序列号标志、完成发送数据标志。
按照顺序排列是:
URG、ACK、PSH、RST、SYN、FIN。
窗口
用来表示想收到的每个TCP数据段的大小。
校验和
基于数据内容计算一个数值。
紧急指针
在标志符中紧急标志设定了才有效。
5、UDP数据报格式
UDP报头由4个域组成,其中每个域各占用2个字节,源端口,目标端口号,数据报长度,校验值。
UDP首部字段由4个部分组成,其中两个是可选的。
各16bit的来源端口和目的端口用来标记发送和接受的应用进程。
表5:
UDP报文结构:
+
Bits0–15
16–31
0
来源连接端口
目的连接端口
32
长度
校验和
64/96+
数据
6、FTP协议规范
FTP是另一个常见的应用程序。
它是用于文件传输的Internet标准。
与Telnet类似,FTP最早的设计是用于两台不同的主机,这两个主机可能运行在不同的操作系统下、使用不同的文件结构、并可能使用不同字符集。
但不同的是,Telnet获得异构性是强制两端都采用同一个标准:
使用7比特ASCII码的NVT。
而FTP是采用另一种方法来处理不同系统间的差异。
FTP支持有限数量的文件类型(ASCII,二进制,等等)和文件结构(面向字节流或记录)。
FTP与我们已描述的另一种应用不同,它采用两个TCP连接来传输一个文件。
(1)控制连接以通常的客户服务器方式建立。
服务器以被动方式打开众所周知的用于FTP的端口(21),等待客户的连接。
客户则以主动方式打开TCP端口21,来建立连接。
控制连接始终等待客户与服务器之间的通信。
该连接将命令从客户传给服务器,并传回服务器的应答。
(2)每当一个文件在客户与服务器之间传输时,就创建一个数据连接。
下表列出了FTP在交互过程中常用的命令:
表1:
DTP
数据传输过程,建立和管理数据连接,DTP可以是主动的也可以是被动的。
PI
协议解释器。
用户和服务器各拥有明确的任务user-PI和server-PI。
server-DTP
数据传输过程,一般是“主动的”状态,建立一个含有“监听”端口的数据连接。
为传输和存储设置参数,从它的PI通过指令传输数据。
DTP被设置为“被动的”状态收听消息,比开按就连接到数据端口的效果要好。
server-FTP过程
在和user-FTP过程,戒者可能是其他服务器合作,完成文件传输过程功能的过程,由多个处理组成的集合,该功能由一个协议解释器(PI)和一个数据传输过程(DTP)组成。
server-PI
服务器协议解释器在端口L“监听”,以期来自user-PI的连接连接,建立一个控制通信连接。
它从user-PI收到标准的FTP指令,然后发出回应,接着管理server-DTP。
user-DTP
为了来自server-FTP过程的数据连接,数据传输过程“监听”数据端口。
如果两个服务器乊间传输数据,user-DTP就停止了。
user-DTP过程
不一个戒多个server-FTP过程合作,为了完成文件传输功能的功能集合。
包括一个协议解释器,一个数据传输过程和一个用户界面。
用户界面允许使用本地诧言显示指令回应的对话。
user-PI
用户协议解释器开始控制连接从它的U端口到server-FTP过程,如果这个过程是文件传输的一部分,接着初始化FTP指令,然后管理user-FTP。
对于一个请求命令,FTP都会给出一个应答,应答3位码中每一位数字都有不同的含义,下表列出了前两位一些可能的应答:
表1:
应答
说明
1yz
肯定预备应答。
它仅仅是在发送另一个命令前期待另一个应答时启动
2yz
肯定完成应答。
一个新命令可以发送
3yz
肯定中介应答。
该命令已被接受,但另一个命令必须被发送
4yz
暂态否定完成应答。
请求的动作没有发生,但差错状态是暂时的,所以
命令可以过后再发
5yz
永久性否定完成应答。
命令不被接受,并且不再重试
x0z
语法错误
x1z
信息
x2z
连接。
应答指控制或数据连接
x3z
鉴别和记帐。
应答用于注册或记帐命令
x4z
未指明
x5z
文件系统状态
例:
通常每个FTP命令都产生一行回答,例如:
QUIT命令可以产生如下应答:
221Goodbye。
7、DNS协议解析
DNS的报文有3种,分别是查询、响应、和更新。
表6:
DNS报文格式:
+
Bits0–15
16–31
0
标识
标志
32
问题数
资源记录数
64
授权资源记录数
额外资源记录数
96+
查询问题
…
回答(资源记录数可变)
…
授权(可选,资源记录数可变)
…
额外信息(可选,资源记录数可变)
其中,16比特的标志段如下:
表7:
标识段结构
Bits0
1–4
5
6
7
8
9–11
12–15
QR
Opcode
AA
TC
RD
RA
0(zero)
Rcode
以下是对字段的描述:
字段
描述
QR
1字段设置为0,则表示名称服务请求,或者设置为1,则表示名称服务的响应。
Opcode
通常值为0(标准查询),其他值为1(反向查询)和2(服务器状态请求)。
AA
表示授权回答(authoritativeanswer).。
TC
表示可截断的(truncated)。
RD
表示期望递归。
RA
表示可用递归。
Rcode
返回码,通常为0(没有差错)和3(名字差错)。
(1)“查询问题”字段格式:
每个问题都由一个长度不定的查询名和两个16比特的查询类型和查询类构成,查询名为要查找的名字,它由一个或者多个标示符序列组成。
每个标示符已首字节数的计数值来说明该标示符长度,每个名字以0结束。
计数字节数必须是0~63之间。
该字段无需填充字节。
表8:
查询字段格式
查询名(长度不确定)
查询类型(标明是主机地址或是其他)
查询类(通常为1,代表IN(Internet))
例如:
查询名是gemini.tuc.noao.edu的表示:
表9:
查询名格式
6
g
e
m
i
n
i
3
t
u
c
4
n
o
a
o
3
e
d
u
查询类型用于表示应返回的资源记录类型,一般有下面几种表示:
表10:
常见的查询类型
类型值
返回的记录
0x01
主机(A)记录
0x02
名称服务器(NS)记录
0x05
别名(CNAME)记录
0x0c
反向搜索(PTR)记录
0x0f
邮件交换(MX)记录
…
…
(2)回答字段:
DNS最后3个字段,回答字段,授权字段和附加信息字段均采用资源记录RR(ResourceRecord)的相同格式
表11:
回答字段格式
查询名(长度不确定)
查询类型(标明是主机地址或是其他)
查询类(通常为1)
生存时间
资源数据长度
资源数据
资源数据…
其中,域名(查询名)是记录中资源数据对应的名字。
它的格式和查询名字段格式相同。
类型说明RR的类型码。
类通常为1,指Internet数据。
生存时间字段是客户程序保留该资源记录的秒数。
资源数据长度说明资源数据的数量。
该数据的格式依赖于类型字段的值。
对于类型1(A记录)资源数据是4字节的IP地址。
(3)压缩算法:
为了减小报文,域名系统使用一种压缩方法来消除报文中域名的重复。
使用这种方法,后面重复出现的域名或者labels被替换为指向之前出现位置的指针。
指针占用2个字节,格式如下:
表12:
压缩算法的表示
Bits0–1
2–15
11
OFFSET
前两个比特位都为1。
因为lablels限制为不多于63个字节,所以label的前两位一定为0,这样就可以让指针与label进行区分。
(10和01组合保留,以便日后使用)。
偏移值(OFFSET)表示从报文开始的字节指针。
偏移量为0表示ID字段的第一个字节。
由于有压缩算法的存在,所以DNS报文中的域名有下列三种形式:
1.以0结尾的labels序列
2.一个指针
3.以指针结尾的labels序列
(4)DNS报文还有几点需要注意:
1.如果报文中的域名需要计算长度,并且使用了压缩算法,那么应该使用压缩后的长度,而不是压缩前的长度。
2.程序可以自由选择是否使用指针,虽然这回降低报文的容量,而且很容易产生截断。
不过所有的程序都应该能够理解收到的报文中包含的指针。
4.2.10SIP协议解析
SIP协议消息分请求和响应两类,其中请求消息由客户机发往服务器,响应消息由服务器发往客户机。
除选用的字符集以及语法定义外,请求和响应消息均采用RFC2822定义的基本格式进行编码。
请求和响应消息格式由一个起始行、若干个头字段,以及一个可选的消息体组成。
其中消息体为可选项,头字段与消息体之间用空行进行分隔。
请求和响应消息格式如下:
SIP消息
起始行
*消息头部(1个或多个头部)
CRLF(空行)
[消息体]
其中,每个部分的规定如下:
(1)起始行=请求行/状态行
其中,“*”表示该消息头部可包含一个或多个,“[]”表示该参数为可选项。
SIP规范规定起始行、每一个消息头部以及空行都必须使用回车换行字符(CRLF)来表示行终结,即使消息中未包含消息体可选项空行也不能省略。
1.请求消息
请求行的格式如下所示,由方法名、请求URL和协议版本组成,各部分之间均用一个空格字符进行分隔。
Request-Line=Method[]Request-URI[]SIP-VersionCRLF
ØMethod方法分为6种:
INVITE、ACK、BYE、CANCEL、REGISTER、OPTIONS,其中各自的描述如下:
INVITE
说明一个用户或业务请求参加一个会话。
消息体部分包含了被叫的信息说明。
对于双方呼叫,主叫需说明他能接受和发送的媒质类型。
ACK
方法主要用于向客户端确认对INVITE方法的请求已经响应。
BYE
客户机用BYE方法向服务器发消息来结束一个呼叫。
CANCEL
方法用于取消一个挂起的呼叫。
REGISTER
用于向注册服务器注册客户机的相关信息。
OPTIONS
用于查询服务器的相关信息和功能。
ØRequest-URL:
指示被邀请用户的当前地址,本协议规定Request-URL中不允许出现空格或其他控制字符且不能包含于“<>”符号之内。
ØSIP-Version:
用于定义协议的当前版本号,本协议的版本号为SIP/2.0。
2.响应消息
响应消息的起始行为状态行(Status-Line),状态行由协议版本、状态码和与状态码相关的文本描述组成,各个部分之间用一个空格字符进行分隔。
状态行的格式如下所示:
Status-Line=SIP-Version[]Status-Code[]Reason-PhraseCRLF
除状态行的尾部可使用回车换行CRLF字符之外,状态行内不允许出现CRLF字符。
ØStatus-Code(状态码):
该参数为一个3位的十进制整数,用于指示请求消息的执行响应结果。
响应消息分为6类:
1xx,2xx,3xx,4xx,5xx,6xx。
其中具体的描述如下:
1xx
Informational(通知)
服务器或代理正在执行处理,通知终端等待响应。
如果服务器需要200毫秒以上的时间进行处理,则向终端发送1xx通知。
服务器可以发送多个1xx通知,终端收到后不需响应ACK。
2xx
Successful(成功)
请求成功。
3xx
Redirection(重定向)
响应告知用户新的位置,或者能够满足呼叫的另一个服务器,主叫应该终止当前查询,开始新的查询。
用户代理或者代理服务器必须检查从重定向服务器返回的地址,确认与以前尝试过的地址不相同,以免重复查询。
4xx
RequestFailure(请求失败)
响应定义了服务器的失败响应,客户端不应该重新发送相同的请求。
不过,同样的请求发到其他的服务器有可能成功。
5xx
ServerFailure(服务失败)
当服务器本身错误时,返回5xx响应。
5xx响应并不表示最终错误,如果其他的可能的地址还没有尝试过,就不能结束一个查询。
6xx
GlobalFailures(全局错误)
响应指出这是关于指定的用户的最终信息,而不仅仅是Request-URI中指出的实例请求。
所有未来的对该用户的请求都会失败,还未结束的对该用户的查询都应该中断。
ØReason-Phrase(原因):
该参数用于对Status-Code参数进行简单的文本描述。
客户机不必检查或显示Reason-Phrase参数。
尽管本规范建议使用特定字符表示Reason-Phrase,具体实现过程中Reason-Phrase仍可使用其他的文本字符。
(2)头字段格式:
头字段格式由字段名和字段值组成,中间用“:
”分隔,
3.1值得注意的几个字段名:
Call-ID
在一次sip会话中用Call-ID标识每一个会话,不同的会话有不同的Call-ID
Content-Type
当消息体部分有内容时,表示消息体所用的协议,通常为“application/sdp”
Content-Encoding
当消息体中有压缩编码时该字段表示压缩方法
Content-Length
定义消息体的长度
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 以太网 PPPOEIPTCPUDPFTPDNS 协议 分析 教材
![提示](https://static.bdocx.com/images/bang_tan.gif)