【计算机网络 】wireshark笔记
背景知识
IP & MAC
对于网络上的某一设备,如一台计算机或一台路由器,其IP地址是基于网络拓扑设计出的,同一台设备或计算机上,改动IP地址是很容易的(但必须唯一),而MAC则是生产厂商烧录好的,一般不能改动。我们可以根据需要给一台主机指定任意的IP地址,如我们可以给局域网上的某台计算机分配IP地址为192.168.0.112 ,也可以将它改成192.168.0.200。而任一网络设备(如网卡,路由器)一旦生产出来以后,其MAC地址不可由本地连接内的配置进行修改。如果一个计算机的网卡坏了,在更换网卡之后,该计算机的MAC地址就变了。
长度不同。IP地址为32位,MAC地址为48位。
分配依据不同。IP地址的分配是基于网络拓扑,MAC地址的分配是基于制造商。
寻址协议层不同。IP地址应用于OSI第三层,即网络层,而MAC地址应用在OSI第二层,即数据链路层。 数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点上(通过MAC地址),而网络层协议使数据可以从一个网络传递到另一个网络上(ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的网络)。
模型
软件介绍
用户界面介绍
https://jingyan.baidu.com/album/93f9803fe902f7e0e56f5553.html?picindex=1
操作
https://community.emc.com/message/818739#818739
各层信息
frame的基本信息是,帧序号和大小,以及到达时间。
进入Ethernet II(数据链路层)。此层所展示的,是发送方与接收方的Mac地址,即原Mac地址与目的Mac地址。而到了internet protocol(网络层),则主要显示了原IP地址与目的IP地址,以及IP首部的大小等。
如何解码分析wireshark捕获的数据包
transmission control protocol(传输层):是通信双方所开的端口号。即原端口与目的端口。
如果捕获的是一个OSI layer 2 的封包,您在Source(来源)和Destination(目的地)列中看到的将是MAC 地址,当然,此时Port(端口)列将会为空。
如果捕获的是一个OSI layer 3 或者更高层的封包,您在Source(来源)和Destination(目的地)列中看到的将是IP 地址。Port(端口)列仅会在这个封包属于第4 或者更高层时才会显示。
http://jingyan.baidu.com/article/3c48dd3485c90be10be358e4.html
显示过滤器和捕捉过滤器
这个的语法有大小写。
过滤器有两种,一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录;一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。 在Capture -> Capture Filters 中设置。
具体协议/操作
ARP
http://blog.csdn.net/shanzhizi/article/details/9995489
ICMP
ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
PING
Ping命令本身处于应用层,相当于一个应用程序,它直接使用网络层的ICMP。ICMP是TCP/IP协议族的一个子协议
可以看到windows下ping默认执行4次ping程序,wireshark抓到8个ICMP查询报文。
对于ICMP协议靠Sequence number来判断对应的请求和应答
Data只是一串具体数值无意义的数字(在ping不同的数据类型的时候值都是一样的)
具体操作是:
发送ICMP ECHO包时填充Identifier为进程ID,Sequence Number为从0递增计数,data填充为发送时间(不过我看起来data只是a-z的重复……)
接收ICMP ECHO REPLY包时检查Identifier, Sequence Number是否正确,通过IP报头的源地址字段获得回送报文的主机地址是否正确
Sequence确定的时候需要考虑环境,环境为WIN的时候为LE(小端)
ping命令相关
http://blog.csdn.net/u010999240/article/details/52969384
http://www.tuicool.com/articles/RJ3Qvy
ICMP报文分析
http://blog.csdn.net/ahafg/article/details/51009867
大小端
http://www.vants.org/?post=133
TRACE ROUTE
对于request报文,TLL字段和到它请求的地址中间需要跳转多少个路由器有关。在我的这次实验中是由1-10.
路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。所以这就是返回的11-0命令。
所以说到指定外网需要经过10个路由器,但是途中有两个路由器的实际数值,猜测可能由于封了ICMP Echo Request无法直接获得。
Tracert命令相对于Ping增加的部分是检测Ping的中间过程
使用icmp.type != 3(错误)显示过滤器后得到50组结果,符合Tracert命令10组无应答20组有应答的情况。
对于应答包的TTL字段,可以看到返回的长度不一样。
应答包有三种类型
类型1. 在同一网段中的11-0reply包
类型2. 在不同网段中的11-0reply包
类型3. 最后到达目的IP之后的reply包,这个和request包类型一样
1和2的类型是由于TTL而返回的错误包,其中1比2多出56byte的Data段。
reply包还包含了request包的数据。
ICMP - TYPE CODE 对应表
http://www.cnitblog.com/yang55xiaoguang/articles/59581.html
ICMP协议错误类型
http://www.cnblogs.com/jingmoxukong/p/3811262.html
UDP
NSLOOKUP
nslookup可以指定查询的类型,可以查到DNS记录的生存时间还可以指定使用哪个DNS服务器进行解释。
DNS(Domain Name System,域名系统), DNS通过域名和IP地址相互映射的一个分布式数据库,使易记的域名替代了枯燥的IP地址。在因特网中向主机提供域名解析服务的机器即为DNS服务器。DNS是基于IP协议中的UDP协议,端口号为53。目前,DNS分布式查询方式一般采用递归或递归迭代相结合的方法获得域名和对应的IP。
DNS服务器之间传输时使用TCP,而客户端与DNS服务器之间传输时用的是UDP
实验后发现三组问答。
对这三组问答分别进行分析之后发现,一二组应答是在question后面加上了answer,类似于ICMP对TTL的返回。第三组改变的只有Flags,相当于把query直接改成了response发回来。
看看三组的不同的问题。
分别是PTR(domain name PoinTeR; A(Host Address);AAAA(IPv6 Address)
第一组返回了域名
第二组返回了HostAddress
第三组没有answer段,认为有两种可能:
1. 这个信息可以在别的协议中找到所以只需要是发送返回
2. 163不给我查IPv6信息
然后试了好几个网站都没有合适的IPv6返回觉得好像是第二种
TCP & HTTP
打开网页
选择一个包,点击右键,选择跟踪一个TCP流,可以获得完整的HTTP请求消息和部分响应消息。
TCP三次握手
https://www.2cto.com/net/201208/149565.html
HTTP长连接&短连接
https://www.studyscript.com/Post/index/id/20.html
HTTP头部
http://www.cnblogs.com/ciimoo/articles/6477652.html
SMTP
收发电子邮件
电子邮件抓包分析
http://www.xlgps.com/article/167517.html
base64在线编码解码
http://base64.us/