网络流量监控第一次实验报告
实验目的
1) Wireshark工具熟练使用,包括混杂模式、抓包功能、过滤功能(捕获过滤和显示过滤,能够定位出目标对象数据包集)、统计功能等。
2) 实现网络协议分析,包括Ethernet协议、IP协议、TCP协议、UDP协议、DNS协议规范定义与二进制数据对应分析
3) 实现关键字段解读(TCP Seq number和Ack Number变化规律,IP fragment flag和offset关系,DNS A记录、NS记录、CNAME记录等含义等)
4) 解析协议处理流程,如DNS域名解析流程
实验原理
1) Wireshark混杂模式
混杂模式是计算机网络中的术语,指的是一台机器的网卡能够接受所有经过它的数据流,而不论目的地址是否是它。一般计算机网卡都工作在非混杂模式下,此时网卡只接受来自网络端口的目的地址指向自己的数据,当网卡工作在混杂模式下的时候,网卡将来自接口的所有数据都捕获并且交给相应的驱动程序,网卡的混杂模式一般在网络管理员分析网络数据作为网络故障诊断手段的时候用到,同时这个模式也被黑客用来作为网络数据窃听的入口,在linux操作系统中设置网卡混杂模式的时候需要管理员权限,在windows操作系统和linux操作系统中都有使用混杂模式的抓包工具,比如著名的开源软件wireshark。
但是也可以看出混杂模式并不简单。如果想要捕获到同一局域网内其他机器中的流量的话,需要结合arp欺骗。参考官方文档只有广播和多播的包会被发送到各个端口,
实验步骤与结果
1)混杂模式
在选择网卡的时候首先选择混杂模式promiscuous mode,这个地方可以过滤,输入broadcast来选出来广播包,从而证明混杂模式的效应:
2)抓包以及过滤功能
本机的ip地址是10.128.225.104
,通过ip.dst == 10.128.225.104
过滤出来目标地址是本机地址的数据包
3)统计功能
- statistics -> capture file properties 红框框圈出来的分别显示的是总体信息、时间信息、系统信息、借口信息、统计信息
- statistics -> protocol hierarchy 协议分布信息
- IO Graphs
4)网络协议分析
- Ethernet协议 以太网帧的格式比较简单:前六位是目标地址,中间六位是源地址,类型指的是IP、ARP,数据占16~1500字节,最后4位是CRC校验数据。
- IP协议分析 从45开始,首先4代表是IPV4,5代表header长度是20bytes,下一项00代表Differentiated Services,下两位是总长度,00 34代表52,下两位0x0000是identification的值。0x4000是flag值,0x40是存活时间,0x06代表TCP6协议,头部校验值为0x75bc,接下来是源地址和目标地址。
-
TCP协议分析 其中source port为f1 6f 下两位是Destination port,接下来四位是Sequence number,接下来是Acnknowledgment number,接下来是header长度 80。01是Flag代表ACK,接下来是ACK的一些参数,一直到00 00 剩下的是12bytes的可选项。
-
UDP协议分析
UDP和DNS协议的字段比较简单,就不做赘述。
- DNS协议分析
5)关键字段解读
- TCP Seq number和Ack Number
一个TCP连接的建立是通过三次握手的过程来实现的,A向B发起连接请求,以一个随机数初始化A的seq,假设是10000,在B收到A的连接请求之后,以一个随机数初始化B的seq,假设是20000,A收到B的回复之后,seq就是上个A发送的seq加1,此时的ACK是B的seq加1
- IP fragment flag和offset 参考NYU的课件
IP头部的total_length
字段是16比特,也就是说一个IP报文的最大长度是65535字节,但是物理层不能够允许一个这么大的包进行传输,比如说以太网的最大传输长度就是1500字节,所以IP包需要进行分片。
当一个IP报文被分片的时候,每个分片都被当成一个独立的报文,这些分片在终点重组,而不是路由器。
每一个分片都有自己的头部,一个比特用来代表flags,意味着更多的分片在后面,如果这个位是0的话,意思就是已经到了最后一个分片。
- DNS A记录、NS记录、CNAME记录
DNS(domain name system)的作用是把一个网站的域名解析成IP地址。
- NS(Name Server,域名和负责解析该域的权威DNS) NS记录被存储在Top Level Domain服务器中。一共有1000多个TLD服务器,也就是根服务器。在建立一个网站的时候,可以向自己购买域名的公司更新NS记录,这个公司会向TLD server来更新NS记录。
NS记录长成这个样子:
andy.ns.cloudflare.com
dave.ns.cloudflare.com
-
A record(记录某域名和IP的对应) A record也是IPv4 address record。A record用来将一个域名对应到一个或者多个IP地址。 参考 如果使用wordpress.com一类的提供商的话,就不需要创建A record。如果需要创建A record的话,需要填写以下字段: name/destination/TTL。AAAA record是针对IPv6 record的。
-
CNAME record(负责记录某域名和其别名) canonical name record通知所有访问subdomain的用户使用和另外一个域名/subdomain相同的DNS记录。当在同一个IP地址上面使用多种服务的时候,就会很方便。CNAME只对subdomain有效。
如果美国封锁根域名服务器会怎样?
DNS 域名解析协议处理过程
参考 LDNS是本地DNS,在查询一个IP地址的时候,首先问到权威DNS,能够直接回答的话,就回复A记录,需要其他权威DNS回答的时候就回复NS记录,然后LDNS再去找其他权威DNS问,如果记录是别名类型的就回复CNAME,LDNS就再解析别名。
但是在实际的DNS查询过程中,其实没有这么复杂,首先当用户在浏览器中输入域名的时候,浏览器首先会先看自身有没有对这个域名的缓存,如果有就直接返回,如果没有,就去问操作系统,操作系统查看自己的缓存,如果有就直接返回,如果没有就去看hosts文件,还没有才去问LDNS。
LDNS首先查看A记录,有就直接返回,没有的话就查看是否有NS记录,有的话就去NS记录对应的域名服务器查询,没有的话就查看下一级的NS记录,都没有的话才去问根服务器。
美国对根服务器的操作
其实因为之前一直是ICANN运行着IANA,ICANN是(The Internet Corporation for Assigned Names and Numbers,互联网名称与数字地址分配机构)成立于1998年的一家注册在美国的非营利性组织。IANA是The Internet Assigned Numbers Authority,互联网数字分配机构)在美国政府的合同管理之下。 2014年3月14日,美国商务部国家通讯与信息管理局(NTIA)宣布愿意将IANA的管理权完全移交给ICANN,并要求ICANN制定移交计划。NTIA尤其强调,移交计划要强化多利益相关方模式,不能以政府间组织或政府领导的组织取代当前NTIA扮演的角色。2016年3月17日,ICANN向NTIA提交了移交计划。2016年6月9日,NTIA公布审核意见,表示ICANN提交的移交计划
虽然遇到一些阻挠,最终,2016年10月1日,ICANN和美国商务部之间关于IANA职能的合同到期且不再续约,ICANN彻底成为独立的非营利机构。IANA部门的员工和其他的相关资源都被转移到ICANN新设立的附属机构PTI(Public Technical Identifiers,公共技术标识符)中。
也就是现在根DNS并不是在美国政府手中掌握,而是在一个非盈利性的国际组织。
从ICANN官网上面找到的根区文件如果删除和cn域名解析相关的记录的话,在所有的缓存都过期,同步到所有的根中之后,全体地球人都访问不到.cn后缀的网站。
如何应对
国内维护着根镜像,所以我们控制着镜像中的内容,我们可以不同步对于cn内容的修改。但是如此一来,除了国内其他国家都无法访问.cn的内容。但是其他国家想要访问.cn的话,就会把cn记录家回去,并且拒绝同步美国删除的几行,最后只有不想访问.cn的国家访问不到.cn