UC头条:网络协议分析总结
网络协议分析
ARP协议
协议格式
工作原理
TCP/IP协议簇的层次及OSI/RM模型的网络层次及各层的主要作用及各层的主要协议
TCP/IP协议簇的层次
物理层:
数据链路层
网络层
传输层
应用层
OSI七层参考模型
ISO/OSI参考模型与TCP/IP协议模型中各层的对应关系
面向连接、无连接的最主要区别;哪些协议是面向连接的?哪些协议是无连接的?
TCP协议首部各字段含义及作用
TCP的特点及工作原理
工作原理
TCP的流量控制机制
IP报文首部信息各字段及各字段的作用
OSI参考模型中,各层的数据传输单元
ICMP的两大应用Ping 和 tracert
ping
tracert
UDP协议首部格式及各字段的位置及作用
PPP协议包括哪两个协议
IPv4特点
TCP和UDP常用的熟知端口号及常见端口号及对应的协议
网络分流器的分类
交换式网络中捕获网络流量的基本方法
1.端口镜像
2.集线器接出
3.分流器
4.ARP缓存污染
传输层可靠性的保障机制
以太网帧的最大帧长最大传输单元
三个私有地址块
A类地址
B类地址
C类地址
什么是网络协议及网络协议在“网络地图”中的作用
DHCP协议格式首部,用图表表示
通过在Wireshark的Packet Details面板中对捕获的IP协议头数据包进行分析
通过在Wireshark的Packet Details面板中对捕获的ICMP请求与响应数据包进行分析
通过在Wireshark的Packet Details面板中对捕获的HTTP协议数据包进行分析
通过在Wireshark的Packet Details面板中对捕获的DHCP协议各阶段数据包进行分析
DHCP发现阶段
DHCP提供阶段
DHCP的选择阶段
DHCP确认阶段
通过在Wireshark的Packet Details面板中对捕获的DNS协议各阶段数据包进行分析
ARP协议
协议格式
点击加载图片
工作原理
ARP地址解析协议用于将计算机的网络IP地址转化为物理MAC地址,ARP协议的基本功能
就是通过目标设备的IP地址。查询目标设备的MAC地址,以保证通信的顺利进行。
在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的
过程
点击加载图片
TCP/IP协议簇的层次及OSI/RM模型的网络层次及各层的主要作用及各层的主要协议
TCP/IP协议簇的层次
物理层:
为传输数据所需要的物理链路创建、维持、拆除,提供物理条件保证传输过程数据的安全性
数据链路层
主要提供链路控制(同步,异步,二进制,HDLC),差错控制(重发机制),流量控制(窗口机制)
网络层
提供阻塞控制,路由选择(静态路由,动态路由)等
主要协议
IP:IP协议提供不可靠、无连接的传送服务
ARP:地址解析协议。基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。以太网中的数据帧从一个主机到达网内的另一台主机是根据48位的以太网地址(硬件地址)来确定接口的,而不是根据32位的IP地址。内核必须知道目的端的硬件地址才能发送数据。P2P的连接是不需要ARP的。
RARP:反向地址转换协议。允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。局域网网关路由器中存有一个表以映射MAC和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。假设在路由表中已经设置了一个记录,RARP 服务器将会返回 IP 地址给机器。
IGMP:组播协议包括组成员管理协议和组播路由协议。组成员管理协议用于管理组播组成员的加入和离开,组播路由协议负责在路由器之间交互信息来建立组播树。IGMP属于前者,是组播路由器用来维护组播组成员信息的协议,运行于主机和和组播路由器之间。IGMP 信息封装在IP报文中,其IP的协议号为2。
ICMP:Internet控制报文协议。用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
BGP :边界网关协议。处理像因特网大小的网络和不相关路由域间的多路连接。
RIP:路由信息协议。是一种分布式的基于距离矢量的路由选择协议。
传输层
提供分割与重组数据,按端口号寻址,连接管理差错控制和流量控制,纠错的功能。传输层要向会话层提供通信服务的可靠性,避免报文的出错、丢失、延迟时间紊乱、重复、乱序等差错。
协议
TCP: 一种面向连接的、可靠的、基于字节流的传输层通信协议。
UDP: 用户数据报协议,一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
RTP: 实时传输协议,为数据提供了具有实时特征的端对端传送服务,如在组播或单播网络服务下的交互式视频音频或模拟数据。
SCTP: 一个面向连接的流控制传输协议,它可以在两个端点之间提供稳定、有序的数据传递服务。SCTP可以看做是TCP协议的改进,它继承了TCP较为完善的拥塞控制并改进TCP的一些不足:
. SCTP是多宿主连接,而TCP是单地址连接。
.一个TCP连接只能支持一个流,一个SCTP连接可以支持多个流。
.SCTP有更好的安全性。
应用层
HTTP:超文本传输协议,基于TCP,是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。
SMTP:简单邮件传输协议,是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
SNMP:简单网络管理协议,由一组网络管理的标准组成,包含一个应用层协议、数据库模型和一组资源对象。
FTP:文件传输协议,用于Internet上的控制文件的双向传输。同时也是一个应用程序。
Telnet:是Internet远程登陆服务的标准协议和主要方式。为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。
SSH:安全外壳协议,为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
NFS:网络文件系统,是FreeBSD支持的文件系统中的一种,允许网络中的计算机之间通过TCP/IP网络共享资源。
OSI七层参考模型
物理层:在物理媒体上传输原始的数据比特流。
数据链路层:将数据分成一个个数据帧,以数据帧为单位传输。有应有答,遇错重发。
网络层:将数据分成一定长度的分组,将分组穿过通信子网,从信源选择路径后传到信宿。
传输层:提供不具体网络的高效、经济、透明的端到端数据传输服务。
会话层:进程间的对话也称为会话,会话层管理不同主机上各进程间的对话。
表示层: 为应用层进程提供格式化的表示和转换数据服务。
应用层:提供应用程序访问OSI环境的手段
ISO/OSI参考模型与TCP/IP协议模型中各层的对应关系
点击加载图片
点击加载图片
面向连接、无连接的最主要区别;哪些协议是面向连接的?哪些协议是无连接的?
面向连接和无连接指的都是协议,两者的区别与承载数据的物理介质无关
它们的本质区别在于,对无连接协议来说,每个分组的处理都独立于所有其他分组,而对面向连接的协议来说,协议实现则维护了与后继分组有关的状态信息。
如TCP就是面向连接的协议而UDP则是无连接TCP中的IP协议又是无连接的
TCP协议首部各字段含义及作用
点击加载图片
点击加载图片
32位序号
序号用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的第一个数据字节。如果将字节流看作在两个应用程序间的单向流动,则TCP用序号对每个字节进行计数。序号是32bit的无符号数,序号到达2^32-1后又从0开始。
32位确认序号
确认序号包含发送确认的一端所期望收到的下一个序号。因此,确认序号应当是上次已成功收到数据字节序号加1。只有ACK标志为1时确认序号字段才有效。
4位首部长度
首部长度给出首部中32bit字的数目。需要这个值是因为任选字段的长度是可变的。
例如首部长度4位比特是0011,则表示该TCP首部长度为3*8=24字节。
6个标志比特
URG紧急指针(urgentpointer)有效
ACK确认序号有效。
PSH接收方应该尽快将这个报文段交给应用层。
RST重建连接。
SYN同步序号用来发起一个连接。这个标志和下一个标志将在第18章介绍。
FIN发端完成发送任务。
16位窗口大小
TCP的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。窗口大小是一个16bit字段,因而窗口大小最大为65535字节。在24.4节我们将看到新的窗口刻度选项,它允许这个值按比例变化以提供更大的窗口。
16位检验和
接收端根据此检验和再计算判断该TCP包是否正确(传输过程中是否出错)。
TCP的特点及工作原理
特点
有连接
可靠的
面向字节流
具有接受和发送缓冲区
工作原理
tcp的三次握手
在第一步中,客户端向服务端提出连接请求。这时TCP SYN标志置位。客户端告诉服务端序列号区域合法,需要检查。客户端在TCP报头的序列号区中插入自己的ISN。服务端收到该TCP分段后,在第二步以自己的ISN回应(SYN标志置位),同时确认收到客户端的第一个TCP分段(ACK标志置位)。在第三步中,客户端确认收到服务端的ISN(ACK标志置位)。到此为止建立完整的TCP连接,开始全双工模式的数据传输过程。
点击加载图片
TCP的流量控制机制
接受端处理数据的速度是有限的,如果发送端法的太快,导致接受端的缓冲区被打满,这个时候若发送端继续向接受端发送数据,接受端这时已经没有能力接受这些数据了,继而引起丢包和丢包重传等一系列连锁反应。
这时TCP就引入了一种机制:流量控制机制(流控制)-----根据接受端的处理能力,来决定发送端的发送速度。
具体操作:
接收端知己向发送端主机通知自己可以接收数据的大小,于是发送端会发送不超过这个限度的数据。该大小限度被称作窗口大小。
在TCP首部,有个字段专门用来通知窗口大小。接收端主机将自己缓冲区可以接受的数据大小放入这个字段中通知发给发送端。这个字段值越大,说明网络的吞吐量越高。
接受端的这个缓冲区一旦面临数据溢出时,窗口大小的值也会随之被设置为一个更小的值通知给发送端,从而控制数据发送量,也就是说,发送端主机会根据接收端主机的指示,对发送数据的量进行控制。这就形成了一个完整的TCP流控制
点击加载图片
如图:当接收端收到从3001号开始的书记段后接收缓冲区变满,不得不暂停接收数据。之后,在收到发送窗口更新通知后通信才得以继续进行。如果这个窗口的更新通知在传送途中丢失,可能会导致无法继续通信。为避免此类问题的发生,发送端主机会时不时的发送一个叫做窗口探测的数据段,此数据仅含一个字节以获取最新的窗口大小信息。
TCP首部40字节选项中还包含了一个窗口扩大因子M, 实际窗口大小是 窗口字段的值左移 M 位;
IP报文首部信息各字段及各字段的作用
1)目前的协议版本号是4,因此IP有时也称作IPv4
2)首部长度指的是首部占32 bit字的数目,包括任何选项。由于它是一个4比特字段,因此首部最长为60个字节。
3)服务类型(TOS)字段包括一个3bit的优先权子字段(现在已被忽略),4bit的TOS子字段和1bit未用位但必须置0。4bit的TO S分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4bit中只能置其中1bit。如果所有4bit均为0,那么就意味着是一般服务。
下图列出了对不同应用建议的TO S值。
4)总长度字段是指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据报最长可达65535字节,但是一般不会这么长。
5)标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加1。
6)3位标志和13位偏移字段用于分片过程。对于发送端发送的每份IP数据报来说,其标识字段都包含一个唯一值。该值在数据报分片时被复制到每个片中(我们现在已经看到这个字段的用途)。标志字段用其中一个比特来表示“更多的片”。除了最后一片外,其他每个组成数据报的片都要把该比特置1。片偏移字段指的是该片偏移原始数据报开始处的位置。另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。
标识字段代表划分每个分组属于的同一个数据报,等待重新组装。
偏于字段代表该分组位于总ip数据报偏移的长度(获取位置)
分片:物理网络层一般要限制每次发送数据帧的最大长度。任何时候IP层接收到一份要发送的IP数据报时,它要判断向本地哪个接口发送数据(选路),并查询该接口获得其MTU。IP把MTU与数据报长度进行比较,如果需要则进行分片。分片可以发生在原始发送端主机上,也可以发生在中间路由器上。
当IP数据报被分片后,每一片都成为一个分组,具有自己的IP首部,并在选择路由时与其他分组独立。这样,当数据报的这些片到达目的端时有可能会失序,但是在IP首部中有足够的信息让接收端能正确组装这些数据报片。
IP数据报 是指IP层端到端的传输单元(在分片之前和重新组装之后),
分组 是指在IP层和链路层之间传送的数据单元。一个分组可以是一个完整的IP数据报,也可以是IP数据报的一个分片。
点击加载图片
7)TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。
8)协议字段 表达了它如何被IP用来对数据报进行分用。根据它可以识别是哪个协议向IP传送数据。
比如:
ICMP:1
IGMP:2
TCP:6
UDP:17
EIGRP:88
OSPF:89
9)首部检验和字段是根据IP首部计算的检验和码。它不对首部后面的数据进行计算。ICMP、IGMP、UDP和TCP在它们各自的首部中均含有同时覆盖首部和数据检验和码。
10)每一份IP数据报都包含源IP地址和目的IP地址。
11)最后一个字段是任选项,是数据报中的一个可变长的可选信息。目前,这些任选项定义如下:
· 安全和处理限制(用于军事领域,详细内容参见RFC 1108[Kent 1991])
· 记录路径(让每个路由器都记下它的IP地址,见7.3节)
· 时间戳(让每个路由器都记下它的IP地址和时间,见7.4节)
· 宽松的源站选路(为数据报指定一系列必须经过的IP地址,见8.5节)
· 严格的源站选路(与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能经过其他的地址)。
这些选项很少被使用,并非所有的主机和路由器都支持这些选项。
选项字段一直都是以32 bit作为界限,在必要的时候插入值为0的填充字节。这样就保证IP首部始终是32 bit的整数倍(这是首部长度字段所要求的)。
OSI参考模型中,各层的数据传输单元
1、物理bai层 比特(bit)
2、数据du链路层zhi: 帧(frame)
3、网络层: 数据报(packet)
4、运输层: 数据段(segment)
5、会话层、表示层、应用层:一般就称呼为消息
ICMP的两大应用Ping 和 tracert
ping
ICMP的一个典型应用是Ping。 Ping是检测网络连通性的常用工具,同时也能够收集其他相关信息。用户可以在Ping命令中指定丌同参数,如ICMP报文长度、 发送的ICMP报文个数、 等待回复响应的超时时间等,设备根据配置的参数来构造并发送ICMP报文,迚行Ping测试。
tracert
ICMP的另一个典型应用是Tracert。Tracert基于报文头中的TTL值来逐跳跟踪报文的转发路径。 为了跟踪到达某特定目的地址的路径,源端首先将报文的TTL值设置为1。 该报文到达***个节点后,TTL超时,于是该节点向源端发送TTL超时消息,消息中携带时间戳。 然后源端将报文的TTL值设置为2,报文到达第二个节点后超时,该节点同样返回TTL超时消息,以此类推,直到报文到达目的地。 这样,源端根据返回的报文中的信息可以跟踪到报文经过的每一个节点,并根据时间戳信息计算往返时间。 Tracert是检测网络丢包及时延的有效手段,同时可以帮助管理员发现网络中的路由环路。
UDP协议首部格式及各字段的位置及作用
点击加载图片
16为源端口号
端口号,大家应该要了解,端口号是传输层中比较重要的概念。我们来结合UDP头部来解释一下。
端口号:在传输层中,是负责知道消息发送到某台主机上的某个进程重要的标记,知道端口号,才知道发送给哪个进程,一个进程可以绑定多个端口号,但是一个端口号只能有一个进程(一般情况,fork),端口总共65536个端口号,为什么是这么多呢?还是因为UDP或者TCP头部中给端口号的字节数为两个字节,那么两个字节表示的最大范围就是2的16次方65536。在这些端口号中,其中0 ~ 1023是知名端口号,是专门为http、ftp、ssh等知名的应用层协议使用的端口号。1024 ~ 65535是自己可以使用的。但是严格的来说,端口号可以随意用,但是定义知名端口号主要是为了大家同一的标准,可以更为方便。
列举一些常见的知名协议服务器使用的端口号:
ssh 22
ftp 21
telnet 23
http 80
https 443
SMTP 25
源端口号就是发送方主机上的端口号,为什么要写上自己的端口号呢?只写个对方端口号也好啊!其实是在通信过程中,往往是双方都要发送消息,所以要写上自己的端口号,让对方能知道自己的发送的进程。
16位目的端口号
目的端口号,是标识着要发送给对方的那个进程。没什么可说的
16位UDP长度
这个比较重要,UDP的长度为分配了16个比特位,那么这样说,每次发送的最大长度为65536个字节,既64K,而这64K中包含了头部协议信息,在今天互联网飞速发展中,64K对我们来说是非常小的,那么我们在发送数据的时候,要是发送的数据超过64K,就得手动进行分包,进行发送。
16位UDP校验和
在数据的发送过程中有可能会收到电磁等外界因素适原有的信号发生变化,所以采用了校验和的方式来进行数据的校验,发生丢包不可怕,可怕的是传过来的是错误信息,这样要是在银行系统中,那么就很恐怖了。在16为校验中采用的CRC校验,想了解,自行百度
PPP协议包括哪两个协议
LCP 链路控制协议
NCP 网络控制协议
IPv4特点
1)IPv4地址bai空间少于40亿个,du实际可以使zhi用的更少。
(2)IPv4不区分网络终端dao主机和终端设备,每台电脑都可以作为主机和路由器。路由协议管理路由表记录,常用的路由协议有路由信息协议、开放最短路径协议、边界网关协议等。
(3)IPv4独立于特定的网络硬件,可以运行在局域网、广域网、互联网中。网络地址分配方案唯一,设备有唯一的地址。
(4)IPv4缺乏对安全性的支持,无法实现网络实名制。网络中节点配置很复杂,不能满足用户“即插即用”的需求
TCP和UDP常用的熟知端口号及常见端口号及对应的协议
20、21/FTP(文件传输协议)
22/SSH(安全shell协议)
23/Telent(远程登录协议,明文传递)
53/DNS(域名系统)
25/SMTP(简单邮件传输协议)
110/POP3(邮局协议3代)
79/tcp finger Finger
69/udp TFTP Trivial File Transfer Protocol
80/tcp HTTP 超文本传送协议 (WWW)
88/tcp Kerberos Authenticating agent
113/tcp ident old identification server system
119/tcp NNTP used for usenet newsgroups
220/tcp IMAP3协议
443/tcp HTTPS协议
网络分流器的分类
网络分流器的类型主要有四种,一种是千兆的网络分流器,还有一种是10G的网络分流器,一种40G的网络分流器,最后一种就是100G的网络分流器
交换式网络中捕获网络流量的基本方法
1.端口镜像
端口镜像是交换式网络中捕获一个目标设备所有网络通信的最简单的方法,翻译成白话文就是端口镜像就是在一个局域网中,捕获别人电脑上接收和发送数据包的最简单的方法,为了使用端口镜像,你必须能够通过命令行或者web管理界面来访问你局域网的交换机,并且,该交换机必须支持端口镜像这个功能,并且,还有一个空闲端口,方便你的嗅探器连接这个端口
要启用端口镜像,你需要发出一个命令,来强制交换机将一个端口(假设是端口B)上的所有通信,都额外复制一份到另一个端口(假设是端口A)上,然后你的嗅探器连接到A端口上,这样,B电脑的所有通信,都可以被嗅探到,设置端口镜像的具体方法,取决于不同的交换机厂商,需要我们阅读交换机说明书
启用端口镜像的时候,还需要注意流量,假设交换机有100个端口,我把99个全双工端口,都镜像到1个端口上,那么这一个端口上的物理承受能力应该是扛不住这么多流量冲击的,这会导致数据报丢失,如果数据包丢失,那么嗅探的准确性也就降低了,得不偿失
在有持续网络流量安全监控需求的常经理,端口镜像虽然简单,但是很不稳定,所以,一会我会介绍分流器
2.集线器接出
这个方式,因为集线器很少见了,并且这个方式,当我第一次见到这个方式的时候,心中第一反应就是:“这种方式也叫方式???”,那么这种方式是什么呢,我大概阐述一下吧
(1)找到目标设备所连接的交换机,并将目标设备的网线从交换机上拔掉
(2)将目标设备插到我自己的集线器上
(3)将我的嗅探器插到我自己的集线器上
(4)将我自己的集线器插到交换机上
此处一万只动物
3.分流器
分流器也是个硬件设备,分两种,一种是聚集的,一种是非聚集的,不想过多介绍了,网上很多
4.ARP缓存污染
传输层可靠性的保障机制
TCP保证可靠性:
(1)校验和
(2)面向连接
(3)序号和确认序号
(4)确认应答机制
(5)超时重传机制
(6)流量控制
(7)拥塞避免
TCP提高效率:
(1)滑动窗口
(2)快重传
(3)延迟应答
(4)捎带应答
以太网帧的最大帧长最大传输单元
最小帧长64
最大1500
最大传输单元(MTU)1500个字节
三个私有地址块
A类地址的第一组数bai字为1~126。注意,数字0和 127不作为A类地址,数字127保留给内部回送函数,而数字0则表示该地址是本地宿主机,不能传送。
B类地址的第一组数字为128~191。
C类地址的第一组数字为192~223。
A类地址
A类地址的表示范围为:0.0.0.0~126.255.255.255,默认网络掩码为:255.0.0.0;A类地址分配给规模特别大的网络使用。A类网络用第一组数字表示网络本身的地址,后面三组数字作为连接于网络上的主机的地址。分配给具有大量主机(直接个人用户)而局域网络个数较少的大型网络。例如IBM公司的网络。
B类地址
B类地址的表示范围为:128.0.0.0~191.255.255.255,默认网络掩码为:255.255.0.0;B类地址分配给一般的中型网络。B类网络用第一、二组数字表示网络的地址,后面两组数字代表网络上的主机地址。
C类地址
C类地址的表示范围为:192.0.0.0~223.255.255.255,默认网络掩码为:255.255.255.0;C类地址分配给小型网络,如一般的局域网和校园网,它可连接的主机数量是最少的,采用把所属的用户分为若干的网段进行管理。C类网络用前三组数字表示网络的地址,最后一组数字作为网络上的主机地址。
什么是网络协议及网络协议在“网络地图”中的作用
为了进行网络中的数据交换而建立的规则、标准或约定称为网络协议。主要由语法、语义和同步(指事件实现中顺序的详细说明)。通信协议有层次特性,大多数 的网络组织都按层或级的方式来组织,在下一层的基础上建立上一层,每一层的目的都是向其上一层提供一定的服务,而把如何实现这一服务的细节对上一层加以屏 蔽。网络协议确定交换数据格式以及有关的同步问题。
DHCP协议格式首部,用图表表示
点击加载图片
op: 报文的操作类型。分为请求报文和响应报文。1:为请求报文,2为响应报文
htype: DHCP客户端的硬件地址类型。1代表以太网
hlen: DHCP客户端的硬件地址长度。Ethernet为6
hops: DHCP报文经过的DHCP中继的数目,默认为0.报文每次经过一个DHCP中继,该字段就会加1
xid: 客户端发起一次请求的随机数。
secs: DHCP客户端开始DHCP请求后所经过的时间。目前尚未使用,固定为0
flags: DHCP服务器响应报文是采用单播还是广播方式发送。只使用第0比特位。0表示单播,1表示广播。其余比特为保留
ciaddr: DHCP客户端的IP地址
yiaddr: DHCP服务端分配给客户端的IP地址
siaddr: DHCP服务端的IP地址
giaddr: DHCP客户端发出请求报文后经过的第一个DHCP中继的IP地址,也就是网管IP地址
chaddr: DHCP客户端的硬件地址,也就是MAC地址
sname: 服务器的名称
file: DHCP服务器为DHCP客户端指定的启动配置文件名称及路径信息
options: 可选变长选项字段,包含报文的类型,有效租期,DNS服务器的IP地址等
通过在Wireshark的Packet Details面板中对捕获的IP协议头数据包进行分析
点击加载图片
通过在Wireshark的Packet Details面板中对捕获的ICMP请求与响应数据包进行分析
请求
点击加载图片
应答
点击加载图片
这两个报文的type不一样,8代表请求,0代表应答;code都为0,表示为回显应答;标示符和序列号都是一样的,表示这两个报文是配对的
通过在Wireshark的Packet Details面板中对捕获的HTTP协议数据包进行分析
点击加载图片
1、Host:gitlab.hudoumiao.com
说明了服务器主机名是gitlab.hudoumiao.com
2、Connection:keep-alive
说明了客户端与服务器之间的TCP通信连接是持久链接
3、Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp, * / *; q=0.8
说明了客户端所能接收的媒体类型,且q值代表了优先级
4、User-Agent:…………
指明了发起请求的应用程序名称
5、Accept-Encoding:gzip,deflate,sdch
说明了客户端所能接收的编码类型有gzip,deflate和sdch
6、Accept-Language:zh-CN,zh;q=0.8
说明了客户端所能接收的语言,q值说明了语言类型的优先级
7、Cookie:…………………
用户的标签,用来服务器识别请求的用户,在这里有名值
响应报文分析:
该响应报文由起始行、首部和主体三部分组成。起始行中的版本号是HTTP/1.1,状态码是200,原因短语是OK。接下来是十五个首部
1、Server:nginx
标识了服务器软件是ngix
2、Date:Sat,15 Aug 2015 02:31:08 GMT
说明了响应报文产生的时间
3、Content-Type: text/html; charset=utf-8
说明了主体的媒体类型是text/html,字符集是utf-8
4、Transfer-Encoding: chunked
说明了响应报文采用了分块编码的传输编码,这也是首部中没有Content-Length首部的原因
5、Connection: keep-alive
说明了客户端与服务器之间通信是持久连接
6、Status: 200 OK
说明了对请求报文的响应状态
7、X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-UA-Compatible: IE=edge
上面的四个首部是扩展首部
8、Cache-Control: max-age=0, private, must-revalidate
该首部说明了缓存状态,max-age=0说明了服务器请求缓存不要缓存文档,即每次访问的时候都进行刷新,must-revalidate进一步说明了缓存没有跟服务器进行验证的情况下,不能提供这个对象的陈旧副本
9、Set-Cookie:………………………
服务器贴到客户端的标签,该首部中有强制的名值组合,还有path属性,还有该cookie的生存周期
10、X-Request-Id: 76494f45-4f41-4222-be4e-db9dfa0828b5
X-Runtime: 0.470905
这两个首部也是扩展首部
11、Content-Encoding: gzip
说明了主体的编码类型为gzip
通过在Wireshark的Packet Details面板中对捕获的DHCP协议各阶段数据包进行分析
DHCP发现阶段
对应的是94帧,可以明显的看到Info信息中显示的是: DHCP Discove
点击加载图片
客户端目前是没有IP地址的,发现阶段是以广播包的形式发送的。也就是网络上的DHCP服务器都是可以收到此数据包的。
点击加载图片
DHCP提供阶段
对应的是99帧可以明显的看到Info信息中显示的是: offer
点击加载图片
在发现阶段分析了Option的详细请求信息,那当然在提供阶段就需要分析对应的服务器分配给DHCP客户端的配置信息
点击加载图片
这时候DHCP客户端已经收到DHCP服务器的数据包了,当然如果有多台DHCP服务器,就必须回复DHCP服务器确认用那台DHCP服务器。
DHCP的选择阶段
DHCP服务器需要对提供的给自己IP的DHCP服务器做出相应的响应,对应的数据帧是100帧
点击加载图片
DHCP确认阶段
(对应的是分析101帧)
点击加载图片
从上图可以看出服务器分配客户端的IP地址为192.168.1.100. 关于服务器分配给客户端的IP的详细信息,需要详细分析option字段
点击加载图片
通过在Wireshark的Packet Details面板中对捕获的DNS协议各阶段数据包进行分析
(1) 实际上发送和回传的可并不只一次,客户端每发送一条查询消息,都会得到DNS服务器的响应。我们可以看到有个十六进制的号,使得发送和响应一一对应。
点击加载图片
(2) 我们首先来查看0x54d1发送包,和其它包一样,最前面是14个字节为以太网帧头,然后是20字节的IP帧头,这里就不再描述了, 这里看到的是8个字节的用户数据报文协议(指定了源和目标端口),30字节的域名解析查询。
Transaction ID(交易口):这个数值的作用是将一个域名查询消息和对应的响应消息对应起来。
query/response(查询/响应):每个DNS数据包都会被标记为查询消息或者响应消息,具体哪一类取决于消息中包含的内容。
Flags(标记):每个查询和响应消息都有不同的标记位置位。
Response(响应):标识该消息为查询消息还是响应消息。
Opcode(操作码):这个标记决定了查询消息的类型。Opcode范围是0~15。
Opcode 值 描 述
0 标准查询
1 逆向查询
2 服务器状态请求
3 未分配
4 通告
5 更新
6~15 未分配
Truncated(截断):这个标记决定了如果数据包过大(大于512字节)时,是否对数据包进行截断。
Recursion desired(期望递归):如果要所查的记录不存在,那么客户端发送的消息就会从一台DNS服务器到另一台DNS服务器这样执行一个递归的搜索流程。
Type(类型):这个字段显示的是查询的类型。
类 型 描 述
A 主机地址
NS 域名服务器
MX 邮件交互
SOA 起始授权机构
PTR 指针记录
AAAA IPv6 地址
AXFR 全量传输
IXFR 增量传输
点击加载图片
(3) 再看0x54d1响应包,8个字节的用户数据报文协议,46字节的域名解析响应,比查询包多16字节,也就是查询反馈内容。
Reply code(应答码):这个字段的值用来表示是否出现了错误,以及错误的类型。
Code (代码) 描 述
0 没有错误
1 格式错误
2 服务器故障
3 域名错误
4 未使用
5 拒绝
Questions(问题):表示数据包中包含的查询数量。
Answers RRs(回答):表示对查询消息所作响应的数量。
Authority RRs(授权):表示响应消息中授权资源记录的数量。
Additional RRs(额外):表示响应消息中额外资源记录的数量。
Answer(回答):对查询消息所作的响应。响应消息也可以有很多个。