抓包原理
本机环境 直接抓包本机网卡进出量
集线器环境 流量防洪,同一冲突域
交换机环境 端口镜像 ARP欺骗 MAC泛洪
ARP攻击软件Cain&Abel
GTK1/2 图像处理工具
Core 核心引擎 Epan 包分析引擎
Wiretap 格式支持
Capture 捕包引擎
Win-/libpcap 库文件
标题栏
菜单栏
工具栏
数据包过滤栏
数据包列表栏
数据包详细区
数据包字节区
数据包统计区
传输名字解析
网络名字解析
MAC地址解析
抓包过滤器设置
类型Type:host net port
方向Dir:src、dst
协议Proto:ether、ip、tcp、udp、http、ftp
逻辑运算符&& || !
过滤MAC地址 ether src/host
过滤IP地址 src/dst host
过滤端口 src/dst port
过滤协议 arp icmp
显示过滤器(使用等于号)
逻辑操作符 and or not xor(有且仅有一个条件被满足)
IP地址 ip.addr ip.src ip.dst
端口过滤 tcp.port tcp.srcport tcp.dstport
过滤协议 arp icmp
数据流追踪
功能 TCP、UDP、SSL流重组并呈现
红色部分发起端信息
蓝色部分接收端信息
专家信息
对数据包特定状态进行警告说明
错误 警告 注意 对话
协议分层统计
包,字节,速率
IO图表
对网络中的吞吐流量进行实时图形显示
数据流图
将会话通信过程图形可视化出来
流追踪
专家信息
捕获文件属性
协议分级
对话、端点
分组长度
I/O图表
流量图
TCP/IP协议栈
路由协议
交换协议
DOD模型(链路层 网络层 传输层 应用层)
BASE前的数字表示网络的数据传输率
BASE指基带传输,即未经过调制,不能复用的传输,与其对应的BROAD指宽带传输(多用于有线电视网)
BASE后的字母或数字指的是传输介质,反应介质特点
以太网目的地址 以太网源地址 帧类型 硬件类型 协议类型 硬件地址长度 协议地址长度 操作代码 发送端以太网地址 发送端IP地址 目的以太网地址 目的IP地址
代理ARP(当局域网内部主机发起跨网段ARP请求时,出口路由器/网关将自身MAC地址回复该请求)
场景 没有路由功能的主机/有路由功能目的地指向本地出口
免费ARP(实现局域网内部地址冲突检测)
场景 IP地址修改 DHCP刚获取地址
ip dhcp pool
network 192.168.1.0 /24
default-router 192.168.1.254
dns-server 8.8.8.8
lease 7
no ip add
ip add dhcp
逆向ARP
帧中继环境下,用于实现ip和DLCI地址的映射
show frame-relay map
反转ARP
无盘工作站通过RARP协议来获取IP地址(有ip地址后通过TFTP引导加载系统)
IP协议(面向无连接、不可靠传输,ip地址唯一性)
版本号 头部长度 服务类型(QoS有关) 16位总长度(最大65535)
16位标识(分片的重组) 3位标志(是否还有分片) 13位片偏移(分片的位置)
8位生存时间 8位协议 16位首部校验和
32位源ip
32位目的ip
选项
数据
show ip route ospf
show ip ospf nei
show run int f0/0
MAC地址每段链路改变 TTL改变 IP地址不变 检验和改变
接受者根据分片信息的ID值将不同分片信息分类除了最后一个分片MF位为0,其余分片MF1,看到MF为0的时候结束分片收集过程
fragment offset 偏移位
DF位不允许分片
ip mtu 1500
ping 3.3.3.3 size 200 repeat 1
ping 3.3.3.3 size 200 df-bit repeat 1 大小是200 而且不进行分片 只发一个包
ICMP 互联网控制信息协议,用于实现ip网络层及上层协议的连通性测试和差错报告
源发送者或者上层程序根据返回ICMP错误信息,执行下一步动作
8位类型 8为代码 16位检验和
类型值为三,就是不可达
ping
回显请求 echo request
回显应答 echo reply
traceroute (UDP包)
ICMP生存时间超时 11|0
端口不可达 3|3
traceroute 3.3.3.3 probes 1 每一跳探测一个包
ICMP不可达
主机不可达 3|1
端口不可达 3|3
UDP:ICMP端口不可达
copy tftp: flash:
TCP:RST 重置服务
telnet 3.3.3.3 80
禁止不可达 3|13
防火墙或者访问控制列表
access-list 1 deny any
int f0/0
ip access-group 1 in
分片不可达
端口的 ip mtu 100
ping 3.3.3.3 size 200
看到分片包
进行不可分片的设置
ping 3.3.3.3 df-bit
ICMP重定向 分组 5|1
当本地收到IP数据包目的地的下一跳IP地址与源发送者处于同一网段时,则告知源发送者将路哟偶重定向到邻居设备
IP记录路由
通过IP路由选项,可以将沿途设备的出接口IP地址都记录下来,最多支持九个IP地址(因为option内长度为40个字节,IP地址为4个字节,所以最多9个)
ping 拓展ping
IP源站路由 通过IP源站选项,可以在源发送者指定特定路径(将路径放入IP 头部选项)来进行数据转发
严格源站路由
严格的源路由选择,发送端指明ip数据包所必须采用的确切路由,如果一个路由器发现源路由所指定的下一个路由器不在其直接连接的网络上,那么它就返回一个“源站路由失败”的ICMP差错报文
宽松源站路由
宽松的源站路由,发送端指明了一个数据报经过的IP地址清单,但是数据报在清单上指明的任意两个地址之间可以通过其他路由器
UDP 用户数据包协议,提供面向无连接的不可靠服务,在传输层
特征 不可靠,无连接(无协商),不分片,速度快,实时性(语音流视频流)
DHCP DNS TFTP QICQ
UDP数据包,首部8字节
DHCP 为网络设备提供动态IP地址信息,包括IP地址 网关 DNS
67端口服务端
68端口客户端
discover offer request ack release decline nak inform
首先广播发送分组,在接受到发现分组的服务器会从地址池拿出一个IP返回DHCP分组提供给客户端,并告知服务器能提供地址
若同时有几个DHCP服务器时,优先选择最快到达本地的提供OFFER分组并发起请求
DHCP地址请求
ip dhcp pool PINGINGLAB
network 12.1.1.0 /24
default-router 12.1.1.2
dns-server 114.114.114.114
lease 7
request (option 50 54)
offer 与 ack 几乎没有区别 强调作用
全网地址 0.0.0.0 广播包解决地址冲突(四个包完成之前是未必拿到这个地址的,有可能是缓存的过程,结合免费ARP的内容)
地址续约(更新)使用request报文续约
通过发送DHCP Request向DHCP服务器重新续约IP地址
renewal 在50%租用期
rebinding 在87.5%租用期
地址释放
客户端通过DHCP Release 向DHCP服务器释放其所用的地址
三个单播释放包
在用户模式下面
release dhcp f0/0
renew dhcp f0/0
地址冲突
dhcp decline 拒绝包
ICMP是服务器防冲突机制,免费ARP是客户端防止冲突机制
loopback 口同网段的状况下
DHCP中继代理
当跨网段执行DHCP请求时通过中继代理,将请求信息以单播方式转发给DHCP服务器
int f0/0
ip helper-address 23.1.1.3
DNS 域名系统 用于互联网上提供域名到IP的解析服务
端口号53 DNS服务器通信采用TCP 用户到服务器采用UDP
域名结构(13个根)
域名查询(正向查询,反向查询)单播请求,单播回复
查看域名
DNS 客户端
ip domain-lookup 开启域名查询如果本地没有,则向其他DNS服务器查询
ip name-server 192.168.1.2 定义DNS服务器,有定义为单播,无定义为广播
ping www.baidu.com 访问域名
DNS服务器
ip dns server 开启DNS服务
ip host www,baidu,com 5.5.5.5 绑定域名和IP映射
多服务器环境(采用主备服务器)
递归查询 告诉我最终答案的
迭代查询 给出另一个地址来再次查找
电脑到服务器 递归 服务器之间 迭代
在服务器那里在弄一个ip dns-server 192.168.2.4 和 ip domain lookup
区域传送
主备服务器同步DNS域名映射库
封装(头部 查询 回答 授权 额外)
基于三次握手 SOA
TFTP 简单文件传送协议,用于实现无盘系统引导,小文件传输,系统镜像升级引导
基于UDP(69端口)停止等待方式进行数据传输,超时重传机制切割成每块512字节方式传输
操作码 TFTP数据报
1=RRQ 文件名字段说明读写位于服务器上的文件,这个文件字段以0字节作为结束
模式字段是以ASCII码或者OCTET组合,以0字节结束
2=WRQ
3=DATA 块编码 + 数据 被读取时TFTP服务器返回一个块编号为1的数据分组,TFTP客户发送块编号为1的ACK,TFTP服务器随后发送块编号为2的数据
4=ACK
5=error 差错码,差错信息
为了实现多线程并发 传输过程服务器的端口会变大,不会再用69号端口
copy flash: tftp:
TCP 传输控制协议,面向连接的可靠传输服务,OSI七层模型
面向字节流的传输服务,通过MSS字段对数据进行分段传输
通过确认机制i,重传机制保证数据可靠传输
通过滑动窗口,拥塞比面等机制实现流量控制
MSS+头部数据=MTU
数据最大值 最大报文包
有TCP的情况下,不需要IP分片,IP分片是在UDP的情况下
SYN(SEQ Number 初始序列号ISN)-->SYN/ACK(SEQ ACK确认号==SEQ+1)-->ACK(ACK=SEQ+1)
初始序列号计算方式RFC 793 RFC 1948 序号每4毫秒加一,到了2的32次方之后回滚,根据哈希算法以源目IP,源目端口生成一个随机数值,ISN=M+F
后续数据交互过程序列号以初始序列列号为基础进行增加
防止网络中延迟的分组在以后又被传送,导致某个连接的一方对它作错误的解释
防止黑客进行TCP会话劫持,重放攻击等
TCP FIN--> TCP ACK -->TCP FIN-->TCP ACK
TCP是双向传输机制,一方的FIN只代表单方向的,不代表另一方的数据结束,另一方可能还需要发送数据
username admin privilege 15 password admin
line vty 0 15
login local
结合流量图进行观察分析
TCP状态机(从初始建立到后期关闭,需要状态机进行维持)
主动打开SYN_SENT主动打开 SYN_RCVD被动打开
ESTABLISHED
FIN_WAIT_1 CLOSE_WAIT
FIN_WAIT_2 LAST_ACK
TIME_WAIT CLOSED
连接建立超时(SYN重传 SYN/ACK重传)
连接建立关闭
ip access-list extended TCP
deny tcp any any ack
permit ip any any
exit
int f0/0
ip access-group TCP in
超时重传机制
no ip unreachable
半关闭(TCP一方发送FIN位进行单方向会话关闭,另一方依然可以发数据给对方)
半打开(如果一方已经关闭或异常终止连接而另一方不知道)
同时打开
同时关闭
可靠传输机制(确认机制,重传机制)
通过序列号,确认号,分组长度等字段,接收方对发送放的数据进行实时的反馈
在不丢包的情况下,ACK(n+1)=Seq(n)+Len(n)
若返回ACK比数值要小则丢失,需要进行数据重传
发送方看seq和len,接受方看ack
真实环境发很多次,总有一次会匹配到,匹配到以上的都正常传输
重传机制
底层协议编程
1.发送方没有收到接收方的确认信息,发送方启动超时重传机制 (被动式)
windows重传5次,linux重传15次
RTT(round trip time)往返时间,记录数据从发出到收到确认所使用的时间
RTO(restransmission timeout)重传超时时间,数据丢失后一局RTO值来进行重传,一般RTO根据RTT来计算出来的
RFC 793 RFC6298/Jacobson 1988 Karn算法
R<--aR+(1-a)M RTO=Rb
M为当前测试出来的往返时间 b推荐为2
R为以前测试出来的往返时间 RTO=2RTT
a为一个值为0.9的平滑因子
当RTT全局变得很大,比较难得到网络较好的RTO值
Err=M-A A<--A+gErr(g=0.125)RTO=A+4D
M为当前测试出来的往返间隔 D<--D+h(|Err|-D)(h=0.25)超时重传时间由平滑的RTT和RTT的方差来决定
A为平滑的RTT(均值的估计器) A为平滑的RTT,D为平滑的均值偏差
Err是刚得到的测量结果与当前的RTT估计器的差
往返时间变化起伏较大的情况下,能提供更好的网络状况描述
GNS搭建SSH 暂停服务器即可
ip domain-name cisco.com
crypto key gernate rsa
username admin privilege 15 password admin
line vty 0 15
login local
ssh -l admin 12.1.1.2
tcp.analysis.rto 指数退避
经典重传,当接受方检测到有数据包没有收到时候,则会向发送方返回ACK (telnet ssh)
发送方从丢失序号开始重新发送所有的数据包
tcp dup-ack TCP重复ACK tcp retransmission TCP重传包
2.接收方本身检测到数据包丢失了,接收方主动返回ACK信息告知接收方,要求重传,快速重传/选择性重传机制 (主动式) (http https)
快速重传:当接收方检测到有数据包没收到,则会向发送方返回三个重复的ACK 告知某个序号的数据包需要重传
发送方从丢失序号开始重新发送之后的所有的数据包
快速选择重传:发送方仅仅需要重新发送丢失序号的数据包,提高数据恢复的效率
选择性ACK SACK
有SLE与SRE 的选项,表示缓存的窗口选项