网络通讯协议编程1_IP编程基础

上传人:人*** 文档编号:557732018 上传时间:2023-09-07 格式:DOC 页数:20 大小:422KB
返回 下载 相关 举报
网络通讯协议编程1_IP编程基础_第1页
第1页 / 共20页
网络通讯协议编程1_IP编程基础_第2页
第2页 / 共20页
网络通讯协议编程1_IP编程基础_第3页
第3页 / 共20页
网络通讯协议编程1_IP编程基础_第4页
第4页 / 共20页
网络通讯协议编程1_IP编程基础_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《网络通讯协议编程1_IP编程基础》由会员分享,可在线阅读,更多相关《网络通讯协议编程1_IP编程基础(20页珍藏版)》请在金锄头文库上搜索。

1、第一章 网络编程基础IP协议(Internet Protocol,因特网协议)是目前网络编程的核心。不论在局域网环境(LAN)还是广域网中,IP都是系统之间传输数据的媒介。虽然还有其他Windows网络协议,但是相对于网络设备之间传输数据(尤其是在因特网上时)IP协议提供了一组最健壮,最通用的规范。用IP协议编程开发通常是一个比较复杂的过程,所以在阅读本书前,请适当作好相关网络知识的准备,比如搭建网络的一般常识、网络设备的简单概念等。我们的程序在网络中发送和处理数据有许多需要考虑的因素,比如客户和服务器的数量、网络类型、网络拥塞程度等等。理解他们的原理以及对数据传输的影响至关重要。我们最常见到

2、的问题是,开发者根本没有想到过的各种“意外”情况会不期而至,而我们却往往不知道他是何时、如何发生的这种时候,大家往往简单地将其统称为:网络不稳定而事实上,它们的绝大多数出现原因却是因为我们的网络程序编写不当,譬如在编写网络程序的时候没有考虑低速连接用户的网络环境(使用无线上网的QQ2007的用户肯定深有体会),或者忽视了路由器不转发UDP广播的特性等。在此首先声明,很多教材和参考书籍中将ASP.NET或其他网站开发技术称为“网络编程”,我们认为是不严谨的,在本书中如无特殊提示,则 “网络编程”均代表“网络协议编程”或“网络协议的实现”。当这种情况发生时,我们怎么办?因此,本章首先介绍如何使用网

3、络调试工具进行网络通讯的分析,以便在今后的学习过程中能尽快找到故障原因。事实上,网络分析是任何一个网络程序开发者、高级网络管理员和黑客的基本功。调试我们的网络网络程序开发和普通开发不同,我们面临的最大困难是不可能准确而及时地知道网络中到底发生了什么。经常出现的情况是,我们编写的程序长期处于一种“有时可用,有时出错”的奇怪状态中。网络分析器是网络程序员必备的工具,它能帮助我们发现“线上”正在发生的事情或者本该发生却没有发生的事情。通过监视应用程序数据之间的传输,往往可以相对“方便”的探测到编程错误。本节将介绍怎样在Windows上安装使用一个简单的公用网络分析器。说明:虽然Windows2000

4、和以后的Windows服务器操作系统上都已经自带了网络监视器(控制面板管理工具中,如果没有,可以使用“添加/删除程序”安装),但是为了更广泛的兼容性和更强大的功能,我们选择使用WinPcap和Sniffer作简单讲解。安装WinPcap驱动程序很多朋友都下载并安装过WinPcap程序,但是却无法在开始菜单找到它。这很正常,因为WinPcap并不是一个“应用程序”,而是一个“驱动程序”,就象我们使用的声卡、显卡驱动一样,它可以直接操作我们的底层硬件设备网卡。在编写本书的时候,WinPcap的最新稳定版本是4.0.1版。我们可以在www. WinPcap.org免费获得该程序及其源代码。安装Win

5、Pcap可以使网卡处于一种“混杂方式”中(大多数操作系统平台都可以使用的方式),该方式可以让网卡接受网上所有的通讯,不管是发送到哪里去的,或是从哪里收到的。很多网络分析工具都依赖WinPcap驱动,所以如果你的网络分析工具不能用,请先检查该驱动是否正常安装。以下我们将使用轻量级网络分析工具Commview作为讲解示范,它的作用就是让我们可以容易的看到我们的电脑在对别的电脑“说”些什么,而同时我们的电脑又“听见”了一些什么。其他网络分析工具功能和使用方式基本相同。CommView主界面如图一所示:(图一)我们要分析网络包之前,首先需要设置一个网卡用于捕获只有经过被选中的网卡的信息才会被捕获到。同

6、时还要明白一点:只有本机的网卡才可以被捕获,捕获远程网卡是不行的。其中Loopback网卡代表本机环回地址,也就是我们通常写的127.0.0.1地址代表一个本地网络地址。通过查看路由表,我们可以知道 NetworkDestinationNetmaskGatewayInterfaceMetric127.0.0.0255.0.0.0127.0.0.1127.0.0.11既然掩码是255.0.0.0,那么所以主机地址127.*.*.*都是127.0.0.0的网络目的地址。他们之间无法被区分,所以往往只使用 127.0.0.1。(图二)然后,按下网卡列表框左侧的蓝色的开始按钮,就开始了数据包的捕获过程

7、,此时如果你正在进行网络通讯,就会看到屏幕上飞快滚动的大量数据显示了。图中蓝色箭头表示当前正在进站或者出站的是哪一个通讯地址。使用网卡列表框左侧的蓝色的停止按钮,就可以停止对网络数据包的捕获,这时,我们可以使用“封包”标签卡来查看刚才获取到的各种封包信息。看到这里,应该已经有读者望而生畏了吧。确实,如此复杂的封包列表,显然不是人类大脑所应该处理的。没有关系,我们的Comview有能力将其简化,现在我们按下Ctrl+F或者点击搜索菜单中的“查找封包”项,就会看到如下界面:好了,现在是不是已经感到可以长吁一口气了呢?恐怕没那么简单!因为即使我们使用搜索功能减少了文件范围没,但是封包的数量还是大得惊

8、人。于是我们可以使用另一个功能来减少抓取的封包数量过滤!在Commview中,过滤封包使用的是“规则”选项卡。我们首先使用快捷工具栏清空刚才那些封包。然后点击“规则”选项卡,将见到如下设置界面。我们可以对捕获条件进行严格设置,比如限制只捕获针对武汉银河学院网站(地址58.49.58.250)的通讯包。当我们设置了以后,左侧树状图中已经有设置生效的项目,会以粗体显示。使用同样步骤,我们可以使用“警报”选项卡,这里的设置更为复杂和多样。我们可以限制在某个条件满足的时候,弹出一个提示或播放一段声音这个功能在长时间抓报捕获的时候特别有用。比如一个网络管理员蹲点守候黑客袭击的时候,就可以将黑客的袭击行为

9、特有的分包特征作为条件,一旦黑客再次来袭就会响起警报声。这样看起来是不是很Cool呢?现在我们开始捕获与武汉银河学院网站服务器之间的网络通讯,打开捕获按钮,然后使用网页浏览器查看武汉银河学院网站。会发现,只有符合条件的封包被捕获到了:现在我们就可以在“封包”选项卡看到所捕获的各种包了。通过右键点击一个封包,我们可以在功能菜单中将封包还原为我们可以识别的文字:接下来就可以看到一个新窗口,里面充满了各种各样的信息内容,比如网页的正文信息。在上图中,请注意右下角的下拉框,这里我们还可以将刚才抓取的封包直接还原为网页,这样看起来会更加直观。但是由于一个网页往往不是一个通讯包就能发完的,所以看到的网页可

10、能并不完整至少图片是不会出现的。在我们完成了大量捕获之后,还可以通过查看菜单中的各种功能来浏览整个网络环境中我们的主机都和谁产生了通讯,以及各种不同通讯协议之间包的比例关系等各种重要信息。下图是本机的通讯流向与流量。如果我们只做监视工作,那显然不能称之为网络调试。CommView还能发送我们自己构造的信息。在工具菜单中选择“封包发送器”,将可以自由构造我们所需要的封包,并发送到指定位置。这一点很重要,因为我们调试网络程序的时候显然不会同时开着好几台主机来回奔走,同时我们也无法要求其他主机发送我们所需要的特定包,这时,自己“伪造”一些封包发送出去(或发送回来)作为调试用途是一个非常方便的手段。当

11、然,这些令人眼花缭乱的网络包不是我们本章所应该学会的内容。抓包是一个繁琐而细致的工作,但是它也往往是编写、调试网络程序以及进行黑客袭击的重要手段,因此可以说网络抓包是网络编程的“内功”。深厚的内功当然只有靠大量的实践来积累,以上部分看起来有些难以理解,但是,耐心学会后你会发现自己受用无穷。在后面的章节中,有时你会需要重新回到这里,所以不要追求在阅读此处时能够一次就完全领悟。在真正的网络应用中,还有一些更为强大的网络分析工具,其中最著名的是NAI公司推出的Sniffer。Sniffer软件体积比较臃肿,运行时也需要占用很多内存,所以运行比较慢,这是它与其它工具相比的一个明显缺点。而且很有意思的一

12、个地方就是:Sniffer对网卡需要有针对性的安装百兆网卡和千兆网卡需要使用不同版本的Sniffer。但是它的强大完全可以弥补这一切不足,它的功能在所有同类软件中是最强大、最实用的,这些功能都需要读者自己在实践使用中去体会了。学到这里,我们应该对日常的网络通讯有了“另一种视角”的直观感受。经过各种网络通讯的抓取,我们会发现除了少数几种协议可以被还原成可识别的信息,其它大部分网络包都是无法理解的乱码。这时问题又来了:这些复杂的网络通讯包到底是什么意思? 这此,作者无法给出一个可供参考的答案,因为网络上可能发生的情况有千千万万种,各种不通的网络、各种不同的协议、各种不通的加密方式,都会通过我们的网

13、络将文本、音频、视频等信息流入流出,如果一一列举,显然是不现实的,也不是每位朋友所能接受和记忆的。所以,我们推荐当你阅读到这里的时候,请放下手中的书本,在计算机上亲身体验一下网络分析软件的强大。如果你发现了很多完全不可理解的奇怪乱码,这也很正常,因为这正是我们在本书后面章节中所要学习的网络协议编程!网络协议在本书网络通讯协议编程中,最为关键的字眼就是“协议”了。究竟什么是“协议”呢?我们可以简单的这样想象一下,如果一个意大利人和一个中国人在互相都不会使用对方语言的情况下进行沟通,将是一件多么繁琐而没有效率的景象。但是假设这2个人都认同并使用同一种规范性的语言,例如英文,那么沟通的过程将会变得轻

14、松起来但是同时也会变得繁琐一些。所以,协议就是一组控制数据通讯的规则。协议定义要传输什么、怎样传输以及何时传输,这就是协议的3要素:语法、语义、同步。语法,就是数据的结构和式样。相当于我们汉语语法中,“主谓宾”结构、“定补”结构、“独词句”等等这样的中文语法规则。如果我们不按照这样的规则说话,即使我们说的每个字词都是正常的汉字,大家还是会认为我们是在“语无伦次”。同时,仔我们汉语中的也存在着各种不同的方言,与之对应的情况在协议中也是存在的 ,由于协议(规则)是多种多样的,所以同时也产生了另外一个词汇:协议族。顾名思义,协议族就是由协议组成的群族,也就是在不同情况下使用的多种语法规范所构成的组合

15、。语义,就是语句中每一部分的意思。也就是在通讯过程中接收到的每一个部分各代表什么。同步,同步有2个特性:数据在何时发送出去,数据该发送多快。这两点很容易理解,比如你不太可能在大街上排练话剧;更不会在菜市场和人讨论艺术发展史无论你说什么话,都需要配合“场合”。网络通讯也是一样,当网络发生拥塞的时候,向外发送数据显然是不合时宜的。如果一个10M光纤用户和一个56K拨号小猫用户发生通讯,光纤用户用全速发送信息则必然让拨号用户过载。OSI模型OSI模型是目前网络模型中最具有广泛性的模型。它在上世纪七十年代末期被ISO(国际标准化组织)通过,主要用于分析、了解和设计网络结构,使两个不同的系统能够通讯。需要注意的是,它仅仅只是一个模型而不是协议,所以它并不承载任何“功能”。模型由下图中的层构成,这层各自分开但是各有分工,每一层都定义了网络传输信息的一部分过程。、应用层、表示层、会话层、运输层、网络层、数据链路层、物理层左图层可以看作是个部分,最低的层(物理层、数据链路层、网络层)是整个网络的支撑,他们的任务是把一个设备上的信息传输到另一个设备。这一部分相当于战场上传递信息的通信兵,当然,作为一个士兵,他无法对自己所传输军事命令做出处理和分析,仅仅只

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 劳务/用工合同

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号