起因是某个同事接到了领导安排下来的一个需求,要在一个Web应用(Java+Tomcat)中,记录用户登录时的IP地址和MAC地址,用于安全审计,于是咨询我如何实现。
第一反应是,这个需求本身是不成立的,根据以往的了解,MAC地址应该是过不了路由器的才对。
以往做开发,都是用engineer的思维:先动手做,遇到问题再解决问题。但这个需求,应当用scientist的思维去思考:首先确定能不能做,然后才是怎么做。
翻查了一些资料,想来证实" 为什么WEB服务器,可以获取到客户端的IP地址,但获取不到MAC地址 ",看着看着才发现,这是个挺大的命题,够写一篇BLOG了。
PS:由于个人对这块内容了解的不够彻底, 本文很可能会有谬误 ,请读者先不要太当真,另外希望平台组的同事给予指证。
我所认为的结论应该是这样的:
下面一步步解释一下。
先从>
原因:DNS问题;解决方法:点击网页的工具——Interner选项——连接——局域网设置——代理服务器(为WLAN使用代理服务器前的勾去掉)即可。
具体步骤如下:
(1)打开网页,点击“工具”;
(2)点击“Interner选项”;
(3)点击“连接”;
(4)点击“局域网设置”;
(5)把第三个设置前的勾选去掉,点击确定即可,如图所示。
// 都是开启服务器!udo apachectl -k start
udo apachectl start
// 1配置服务器根路径! --->别人通过网页访问的时候,本台计算机上的文件夹!
// 打开服务器所在的目录
cd /etc/apache2/
// 打开需要更改的文件/ vim 编辑器!
udo vim >自然需要,知道ARP干什么的,就很好理解,使用IP地址通信前,需要通过先知道对端的MAC地址,这个MAC地址相当于门牌号。而不管web服务器还是其他什么终端设备,访问同段IP地址前,都存在这一过程。什么是ARP?自行百度,没必要展开,除非你百度后还看不懂。
默认网关的概念,来自于路由查找,路由是选路。每个设备上都有一个路由表,里面有一些自动生成的路由信息,还有你添加的默认网关路由等信息,对于windows,可以在命令行下用route print看到这张路由表。什么是路由?什么是路由表?这个问题自己百度吧,在这里展开有必要吗?
比如服务器地址是19216812/24,默认网关是19216811。那么会有一条路由目的是19216810/24,通过19216812走,是根据你的本地IP生成的。这条路由的意思是说,同网段地址是直连的,直接从端口发送出去即可。另外还有一条路由目的地址是0000/0,通过19216811走,这就是默认路由,是根据你的默认网关生成的。这条路由是说,不是同网段的IP访问,都发送给19216811,让它来转发。
那么ARP的过程在哪里?当本机发送一个IP包时,比如访问百度的包,目的地址肯定不是同网段的,自然发给了默认网关即19216811。若是二者第一次通信,本机的MAC地址表(在哪看?windows下用arp -a命令)肯定没有19216811的MAC地址,那么就不知道该把包发给谁。所以先会发送一个ARP请求广播,向同网询问谁是19216811?19216811收到广播后,会向12应答这个请求,告知12自己的MAC地址,自此ARP过程结束,二者通过MAC地址开始发送IP数据。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)