它属于纯硬件网络底层设备,工做于OSI参考模型的第一层,即物理层。不解析。html
集线器只对信号进行整形、放大后再重发,不进行编码,转发的时候是以广播的方式进行的,即它要向某节点发送数据时,不是直接把数据发送到目的节点,而是把数据包发送到与集线器相连的全部节点。前端
交换机工做于OSI参考模型的第二层,即数据链路层。它能够解析到MAC地址。算法
交换机是针对共享工做模式(例hub)的弱点而推出的。交换机拥有一条高带宽的背部总线和内部交换矩阵。交换机的全部的端口都挂接在这条背部总线上,当控制电路收到数据包之后,处理端口会查找内存中的地址对照表(ARP表)以肯定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪一个端口上,经过内部交换矩阵迅速将数据包传送到目的端口。目的MAC若不存在,交换机才广播(ARP协议)到全部的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部地址表中。chrome
路由器工做于OSI参考模型的第三层,即数据网络层。它能够解析到IP。编程
提供了路由与转送两种重要机制,能够决定数据包历来源端到目的端所通过的路由路径(即两个网络或多个网络间转发数据包),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转送。c#
选择最佳路径的策略即路由算法是路由器的关键所在。为了完成这项工做,在路由器中保存着各类传输路径的相关数据——路径表(Routing Table),供路由选择时使用。路径表中保存着子网的标志信息、网上路由器的个数和下一个路由器的名字等内容。路径表能够是由系统管理员固定设置好的。windows
网卡收到传输来的数据,网卡内的单片程序先接收数据头的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不应接收,认为该接收就在接收后产生中断信号通知CPU,认为不应接收就丢弃无论,因此不应接收的数据网卡就截断了,计算机根本就不知道。CPU获得中断信号产生中断,操做系统就根据网卡驱动程序中设置的网卡中断程序地址调用驱动程序接收数据,驱动程序接收数据后放入信号堆栈让操做系统处理。浏览器
https://blog.csdn.net/jung_zhang/article/details/52100383tomcat
前提,要捕获的东西必须是要物理信号能收到的报文信息。显然只要通知网卡接收其收到的全部包(通常叫作混杂promiscuous模式:指网络上的全部设备都对总线上传送的数据进行侦听,并不只仅是它们本身的数据。),在HUB下就能接收到这个网段的全部包,可是交换机下就只能是本身的包加上广播包。服务器
要想在交换机下接收别人的包,那就要让其发往你的机器所在端口。交换机记住一个口的MAC是经过接收来自这个口的数据后并记住其源MAC,就像一个机器的IP与MAC对应的ARP列表,交换机维护一个物理口与MAC的表,因此能够欺骗交换机的。能够发一个包设置源MAC是你想接收的机器的MAC,那么交换机就把你机器的网线插的物理口与那个MAC对应起来了,之后发给那个MAC的包就发往你的网线插口了,也就是你的网卡能够Sniffer到了。注意这物理口与MAC的表与机器的ARP表同样是动态刷新的,那机器发包后交换HUB就又记住他的口了,因此其实是两个在争,这只能应用在只要收听少许包就能够的场合。
内部网基于IP的通讯能够用ARP欺骗别人机器让其发送给你的机器,若是要想不影响原来两方的通讯,能够欺骗两方,让其都发给你的机器再由你的机器转发,至关于作中间人,这用ARP加上编程很容易实现。而且如今不少设备支持远程管理,有不少交换机能够设置一个口监听别的口,不过这就要管理权限了。
wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你须要选择一个网卡。
使用方法:https://blog.csdn.net/zjy900507/article/details/79303359
Fiddler和wireshark工做原理不同。fiddler的实现原理是以代理服务器的方式工做,代理就是在客户端和服务器之间设置一道关卡,客户端先将请求数据发送出去后,代理服务器会将数据包进行拦截,代理服务器再冒充客户端发送数据到服务器;同理,服务器将响应数据返回,代理服务器也会将数据拦截,再返回给客户端。
Fiddler是一个http协议调试代理工具,即只是针对HTTP协议的(工做在OSI参考模型的应用层),而wireshark是针对几乎全部协议的。
浏览器与服务器之间经过创建TCP链接以HTTP协议进行通讯,浏览器默认经过本身发送HTTP请求到服务器。 而Fiddler是c#开发(微软出品,主要做者Eric Lawrence)的http代理服务器,fiddler工做于七层中的应用层,可以捕获到经过的http(s)请求。(浏览器 < -> Fiddler < -> 服务器)
启动Fiddler以后会监听8888端口(默认8888,能够修改)。
一个实验转自:https://blog.csdn.net/gscaiyucheng/article/details/26938019
1. 在启动fiddler以前端口8888的状态
命令:netstat -ano|findstr “8888″
表示查不到占用状态
2. 启动fiddler以后:
在启动fiddelr以后能够发现8888端口被5256线程给监听
能够查看到5256线程为fiddler程序:
命令:tasklist |findstr “5256″
3.而后启动Chrome浏览器,浏览网页就会发现:
5658进程与fiddler创建了tcp链接,发送端为5658进程占用3258端口,接收端为fiddler(5256)占用的8888端口
命令:netstat -ano|findstr “8888″
查看5568进程,为chrome程序
命令:tasklist |findstr “5568″
同理,打开Firefox浏览器,浏览网页也是如此:
7836进程与fiddler创建了tcp链接,发送端为7836进程占用3294端口,接收端为fiddler(5256)占用的8888端口
命令:netstat -ano|findstr “8888″
查看7836进程,为firefox程序:
命令:tasklist |findstr “7836″
ps:要注意的firefox中须要手工将代理设置成fiddler:127.0.0.1:8888,由于Firefox不是使用系统默认的winINET(不过刚亲自试验发现安装fiddler后,firefox会提示安装fiddler插件,以后就不须要在手动配置了,若是不能监听火狐,就手动配置一下吧~)
因此,fiddler做为一个代理服务器,跟浏览器创建链接以后,浏览器像目标服务器发送的请求都会通过fiddler代理,
因此fiddler能够捕获到http(s)请求,从而能够解释、分析、甚至重写发出去的http(s)请求。
使用方法:https://www.cnblogs.com/miantest/p/7289694.html
补充一个小知识:
1)127.0.0.1是回送地址,指本地机,通常用来测试使用。回送地址是本机回送地址(Loopback Address),即主机IP堆栈内部的IP地址,主要用于网络软件测试以及本地机进程间通讯,不管什么程序,一旦使用回送地址发送数据,协议软件当即返回,不进行任何网络传输。
2)localhost是本地DNS解析的127.0.0.1的域名,这个你打开本机的hosts文件就能够看到,通常位于c:\windows\system32\driver\etc下,通常在最后有这么一行:127.0.0.1 localhost。咱们在本机上安装tomcat默认即监听8080端口,咱们访问tomcat里的网页例如http://localhost:8080/login/to_login。
参考:
1,百度百科
2,《Wireshark 数据包分析实战(第二版)》