那英儿女:精解局域网访问及共享(一) - 许一君的原创技术博客 - 51CTO技术博客

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 10:07:16

 一、基本服务和端口分析      为了方便实验,这里搭建了一个很简单的环境,基本配置如下图:       为了一步步探究局域网访问的根源和真相,我们用两台主机直连来模拟局域网环境,尽管vista、win7已经正式发布,但目前主流的系统仍是windows XP。所以我这里准备了XP1和XP2两台新装的主机,为了不受干扰,系统里基本没有安装什么软件。      登陆到XP1上,用netstat -a 这条命令查看一下系统所开放的什么端口,如下图:可以看到即使在最基本、最简单的环境下,系统也会默认开放一些端口和服务,第一列即为开放端口的协议类型,在这里主要是tcp和udp。第二列是本地地址及服务,即从本机所开放的端口或服务。它的基本表示形式是【IP地址/计算机名称】:【端口/服务】第三列,这里的foreign不能理解为【外国的】,它的另一个含义为【外来的、不属于本身的】,在这里就表示除本机以外的其他地址和连接端口,表现形式同上。第四列则为当前端口连接的状态,listening 表示正在监听。可能有的朋友会问,Local Address一列中为什么有的是服务名称,有的是端口名呢?这是因为这个命令默认不对计算机名进行IP解析,在显示端口时,如果有其对应服务名称,就显示出来,没有则直接显示端口号。我们从这里也可以知道,并不是每个端口都会对应一个服务,可能很多端口都是“无名氏”。我们可以通过netstat -an 来更改显示方式。如下图:对比这两个图可以看出,XP1一共对应2个地址,127.0.0.1和0.0.0.0 。127开头属于保留地址,作为系统内部还回测试之用。另一个应该是在网卡上设定的IP,因为此时我没有插网线,也没有分配IP地址,所以就会用0.0.0.0 代替。对于上面列出的9个条目,我们挑几个重点的分析一下。在上个图中可以看到几个熟悉的端口,如135、445 等。他们分别对应epmap和microsoft-ds服务。epmap即end-point map简称,从字面上理解就是终端映射服务,这个服务可以为dhcp、dns和wins服务提供网络定位。同时,135端口还可以用在RPC协议上。microsoft-ds即Microsoft directory service ,我们可以通过这个服务在445端口上利用SMB协议实现网络文件共享。还有isakmp和ntp,前者是ipsec体系中的一种主要协议,ntp为Network Time Protocol网络校时协议,主要是校准系统时间之用。后面2个服务和今天的话题关联不大,不多讨论。除了通过命令查看计算机连接情况外,还可以通过一些工具来查看。比如tcpview尽管方法不同,但结果都是一样的。OK,现在我们给XP1和XP2加上IP,并接入网络,然后再次查看连接情况,如下图:其中红框内是新增的5个连接,就是说在接通网络后,系统自动运行了几个新的协议,其中有非常重要的netbios三兄弟,即netbios-ssn、netbios-ns和netbios-dgm。我们来依次熟悉一下吧:Netbios-ssn:即Netbios Session Service,用于SMB协议提供文件共享和打印等服务Netbios-ns:即Netbios Name Service,实现netbios和IP地址的解析Netbios-dgm:即Netbios Datagram,通过它可以在两台主机之间相互发送datagram这类数据包。但是一种无连接服务,所以稳定性并不是很高。我们可以看到,系统已经做好了两台主机传送数据和互访的基本条件。很明显,这些是基于netbios名的,而非主机名。这一点需要多多留意,尽管netbios名和主机名差别很小,但并非一个等同的概念。【有关两者之间的区别,可以参考浅谈netbios及其相关内容这篇文章,里面叙述的更详细】只顾着说XP1这台主机了,XP2现在怎么样了? 是否和XP1一样呢?我们来看一下:这个是主机XP2上的连接情况,点击是上面的【A】字符切换一下显示模式,和XP1是一模一样的。OK,到此为止,基本端口和服务分析完毕,现在我们开始做一些关键性测试。 二、应用测试和分析 1、ping测试       在访问局域网时,大家习惯性会用到例如在地址栏输入\\ip 或者\\主机名等方式来访问对方的共享资源或者打印机等设备,那我们就试一下在这个非常纯净的环境下,看看访问是否顺利,并逐一解决如果不顺利,会发生什么情况?? 如何解决?等问题。      XP1和XP2仅仅是分配的IP以及子网掩码,其他的一概未设置。我们首先ping一下,看看这两台及是否能ping通,这也是我们的一贯思路。如上图,先用了hostname来验证本机身份,没错,是XP1。然后用ping一下XP2。从结果上可以看到ping是失败的。为什么呢?从上图似乎看不出什么问题,反馈信息只是告诉你“请求超时”,导致这个结果的原因有很多,我们不能靠猜测来解决问题,而是需要真凭实据!分析这类问题我们需要借助一些抓包工具,我用的是wireshark1.1(前身叫ethereal)。在XP2上运行wireshark,并重复上面的动作,下面是抓包的情况:一共有6条记录,我们一一分析。第一条:显然,我们发出ping命令后,因为最初XP1不知道XP2在哪里,所以就以自己为起点,向整个局域网发送广播,利用ARP协议来查找192.168.1.2的MAC地址。第一行的Source是XP1的网卡MAC地址(因为MAC的前24位是厂商标识符,XP是一台DELL笔记本,所以会显示DELL_OF),目的地则是广播,即该网段所有地址,INFO中说明,XP1正在查找XP2的MAC地址。第二条:这条是查询的结果,对方的MAC地址是Shenzhen_05(表示方法同上)。第三条:因为ping是一个依靠向对方发送icmp的请求包,并接受返回的reply包来判定网络是否连通的小程序。默认情况下,一共发送4个,每个大小为固定的32byte,从上面来看,数据包已经到了XP2主机上,但是并没有得到XP2的回应。体现在XP1就是Request timed out,每一条超时信息对应1个ICMP的请求信息。第四、五、六就是XP1的请求信息。 那如何解决呢?其实之所以没有得到XP2的回应,是因为对方开启了防火墙的原因。在XP防火墙的高级设置里,我们可以设置是否传入回显请求,只需要在下图所示的地方修改一下即可。然后再次测试就可以了。2、共享访问问题分析        由于这里没有dns服务器来对将主机名解析为IP,所以,目前XP1和XP2两台主机通讯只能依靠netbios名称服务,即NBNS来完成。这也是早期系统主要的局域网访问协议,比如win98等。我们在XP1上测试一下,用\\xp2 看是否能访问到XP2上的默认共享文件。如下图:可以看到,无法访问。试一下IP方式同样失败。       这个应该是大家平时在使用共享访问时常会出现一种情况,其实解决这个问题很简单,只要那XP1和XP2的默认防火墙关掉,问题就解决了。但,实际上,当我们遇到问题时似乎都习惯不去认真思考问题的原因。往往是通过一些通用的办法来解决,看似达到了效果,其实无形中失去了学习知识的机会,而就是这些知识点阻碍了你的进步和提高。比如系统中了很深的毒,我们可以直接重装,那个迅速,效率高啊!但,你知道这个是什么病毒?怎么引起的?就这样一刀切,下次遇到同样的问题怎么办?这类的例子非常多,发生在我身上也不少,我正努力纠正这个毛病,也希望和大家共勉。      回到这个问题上来,关闭防火墙就可以解决,这就是所谓的通用办法,当然也是最有效的。但,这里我们就要认真讨论这个问题的来龙去脉,否则这篇文章就不能冠以“精解”字眼了。     要分析这个问题,有个概念要事先介绍一下。那就是SMB(Server Message Block protocol)协议标准,SMB工作原理就是让Netbios和SMB在TCP/IP协议族上运行,并提供网络上的访问与共享。windows的网上邻居就是以这个协议作为基础的。可能有的朋友会问,怎么和netbios扯上关系了?  其实是这样的,smb需要利用netbios的Name Services服务来解析出要访问的对象,并利用netbios session服务与之建立会话,既而完成共享及访问的任务。这些都是在windows下的实现,在其他系统,比如linux就有些区别了,SAMBA就是实现SMB标准的一种软件,可以实现从linux到windows之间的共享。      之所以访问不成功,主要是因为防火墙阻止了SMB和netbios相关服务和协议的运行。我们试着在防火墙上打开它们,看看结果怎么样。      我们知道,SMB协议通过TCP的445端口来实现,因此我们需要在XP1的防火墙上打开这个端口,这样SMB协议才可以正常工作。输入一个识别名称及端口号445,默认已经选中TCP类型,然后确定咦? 为什么会有这样的提示呢?我们以前肯定没有添加过什么端口,自己检查一下发现在这个窗口里有一项【文件和打印机共享】双击打开后,发现TCP 445已经列在其中,原来如此。所以刚才无法添加这个端口了,这里也反应了一个现象, 就是即使这个端口没有被使用,windows 防火墙也不允许额外添加相同端口,此时我们将其启用。OK,SMB协议已经打开,我们可以进行访问测试了。3、三种共享访问方式测试及分析   为了得到更精确的结果,同时也是为了测试netbios的name services服务,我们把XP1和XP2的netbios名(默认等同于主机名)修改成xp1bios和xp2bios,如图:XP1:xp2:OK,一切准备就绪,开始测试。      在访问网上邻居一般会用到3种形式,从XP2上访问XP1的共享资源。依次测试后结果如下:1、基于UNC路径的IP地址访问,即\\IP地址,同时我们也扑捉一下当前的数据包已经出现连接对话框,表明是可以访问到XP1的,同时请大家注意访问方式从协议情况来看,SMB协议已经可以正常工作,其中microsoft-DS的端口即为445,SMB共享服务是需要通过microsoft-DS来实现。2、基于UNC路径的主机名访问,即\\主机名采用主机名的访问方式,结果失败。上图是失败时的抓包情况,可以看到NBNS服务在解析XP1的主机名时生效,原因很简单,因为NBNS为netbios名的提供解析服务,解析对象不是主机名。3、基于UNC路径的Netbios名访问,即\\NetbiosXP1bios也无法访问 总结:之所以只有IP方式可行,是因为SMB可以利用TCP/IP协议来实现访问,而其他两种方式均需要一个解析过程才可以完成,因此如果允许Netbios三个服务相关的137、138、139这三个端口,则可以利用netbios名访问对方。如下图:打开4个端口。通过xp2bios访问对方。请大家注意第二个红框。是XP2bios\guest而不是XP2\guest,说明这个是通过netbios名解析后并通过SMB协议访问的。此时的抓包情况,如下图:可以看到,开放137、138、139及445端口后,NBNS、SMB协议已经正常运行了。 

精解局域网访问及共享(一) - 许一君的原创技术博客 - 51CTO技术博客 多域之间的共享访问AGDLP策略 - net学无止境 - 51CTO技术博客 重读Route Print路由表的一些心得 - 许一君的原创技术博客 - 51CTO技术博... Active Directory中的访问控制 - 王达博客 - 51CTO技术博客 WINDOWS XP 开始→运行→命令 集锦 - 网络与英语共享 - 51CTO技术博客 交换机级联与堆叠的区别 - ckf网安技术小组 - 51CTO技术博客 集线器和交换机的区别 - ckf网安技术小组 - 51CTO技术博客 Cisco交换机接口模式精解 - 熊窝 - 51CTO技术博客 Cisco交换机配置新手篇-端口配置(一) - SwitchMan - 51CTO技术博客 spring整合activeMq 调试JMS<一> - 自娱自乐 - 51CTO技术博客 一个价值千万美金的忠告 - 北京看看 - 51CTO技术博客-领先的IT技术博客 手把手教你安装VMware虚拟机 - 虚客帝国 - 51CTO技术博客-领先的IT技术博客 在DOS下修改本机IP地址 - 大唐网络 - 51CTO技术博客-领先的IT技术博客 一个价值千万美金的忠告 - 北京看看 - 51CTO技术博客-领先的IT技术博客(转载) 08.09.05 from 大旺旺 Cisco IOS 基本命令集 - prozrtr - 51CTO技术博客 华为交换机、路由器命令集 - butter520 - 51CTO技术博客 输入法故障 - 改变自己,做强者!!! - 51CTO技术博客 IP地址规划实例 - 星星之火 - 51CTO技术博客 网络命令汇总 - 菜鸟小强 - 51CTO技术博客 AIX 常用命令汇总 - lengxf - 51CTO技术博客 C++/C程序员 - zkm - 51CTO技术博客 Windows2003下DNS架设攻略 - 大愚若智 - 51CTO技术博客 借助Sniffer分析网络流量 - 矩阵西点 - 51CTO技术博客 partprobe 小命令大作用 - seven - 51CTO技术博客