返回列表 发帖
第四讲   IP地址与子网掩码








一、 IP地址与网络分类
(1) IP地址
   我们知道,不同的物理网络技术有不同的编址方式;不同物理网络中的主机,有不同的物理网络地址。网间网技术是将不同物理网络技术统一起来的高层软件技术。网间网技术采用一种全局通用的地址格式,为全网的每一网络和每一主机都分配一个网间网地址,以此屏蔽物理网络地址的差异。
   IP协议提供一种全网间网通用的地址格式,并在统一管理下进行地址分配,保证一个地址对应一台网间网主机(包括网关),这样物理地址的差异被IP层所屏蔽。IP层所用到的地址叫做网间网地址,又叫IP地址。它由网络号和主机号两部分组成,统一网络内的所有主机使用相同的网络号,主机号是唯一的。IP地址是一个32为的二进制数,分成4个字段,每个字段8位。
(2) 三类主要的网络地址
   我们知道,从LAN到WAN,不同种类网络规模相差很大,必须区别对待。因此按网络规模大小,将网络地址分为主要的三类,如图:
A类: 0 1 2 3 8 16 24
31
0
网络号
主机号
B类:
1
0
网络号
主机号
C类:
1
1
0
网络号
主机号
   A类地址用于少量的(最多27个)主机数大于216的大型网,每个A类网络可容纳最多224台主机;B类地址用于主机数介于28~216之间数量不多不少的中型网,B类网络最多214个;C类地址用于每个网络只能容纳28台主机的大量小型网,C类网络最多221个。
   除了以上A、B、C三个主类地址外,还有另外两类地址,如图:
D类:
1
1
1
0
多目地址
E类:
1
1
1
1
0
留待后用
   其中多目地址(multicast address)是比广播地址稍弱的多点传送地址,用于支持多目传输技术。E类地址用于将来的扩展之用。
(3) TCP/IP规定
   网络地址除了一般地标识一台主机外,还有几种具有特殊意义的特殊形式。
* 广播地址
   TCP/IP规定,主机号全为“1”的网络地址用于广播之用,叫做广播地址。
   所谓广播,指同时向网上所有主机发送报文。
* 有限广播
   前面提到的广播地址包含一个有效的网络号和主机号,技术上称为直接广播(directed boradcasting)地址。在网间网上的任何一点均可向其他任何网络进行直接广播,但直接广播有一个缺点,就是要知道信宿网络的网络号。
   有时需要在本网络内部广播,但又不知道本网络网络号。TCP/IP规定,32比特全为“1”的网间网地址用于本网广播,该地址叫做有限广播地址(limited broadcast address)。
* “0”地址
   TCP/IP协议规定,各位全为“0”的网络号被解释成“本”网络。
* 回送地址
   A类网络地址127是一个保留地址,用于网络软件测试以及本地机进程间通信,叫做回送地址(loopback address)。无论什么程序,一旦使用回送地址发送数据,协议软件立即返回之,不进行任何网络传输。
   TCP/IP协议规定,一、含 网络号127的分组不能出现在任何网络上;二、主机和网关不能为该地址广播任何寻径信息。
   由以上规定可以看出,主机号全“0”全“1”的地址在TCP/IP协议中有特殊含义,不能用作一台主机的有效地址





二、 子网掩码
(1) 子网
  TCP/IP网间网技术产生于大型主流机环境中,它能发展到今天的规模是当初的设计者们始料未及的。网间网规模的迅速扩展对IP地址模式的威胁并不是它不能保证主机地址的唯一性,而是会带来两方面的负担:第一,巨大的网络地址管理开销;第二,网关寻径急剧膨胀。其中第二点尤为突出,寻径表的膨胀不仅会降低网关寻径效率(甚至可能使寻径表溢出,从而造成寻径故障),更重要的是将增加内外部路径刷新时的开销,从而加重网络负担。
  因此,迫切需要寻求新的技术,以应付网间网规模增长带来的问题。仔细分析发现,网间网规模的增长在内部主要表现为网络地址的增减,因此解决问题的思路集中在:如何减少网络地址。于是IP网络地址的多重复用技术应运而生。通过复用技术,使若干物理网络共享同一IP网络地址,无疑将减少网络地址数。
  子网编址(subnet addressing)技术,又叫子网寻径(subnet routing),英文简称subnetting,是最广泛使用的IP网络地址复用方式,目前已经标准化,并成为IP地址模式的一部分。
  一般的,32位的IP地址分为两部分,即网络号和主机号,我们分别把他们叫做IP地址的“网间网部分”和“本地部分”。子网编址技术将本地部分进一步划分为“物理网络”部分和“主机”部分,如图:
网间网部分
物理网络
主机
|←网间网部分→|←────本地部分─────→|
  其中“物理网络”用于标识同一IP网络地址下的不同物理网络,既是“子网”。
(2) 子网掩码
  IP协议标准规定:每一个使用子网的网点都选择一个32位的位模式,若位模式中的某位置1,则对应IP地址中的某位为网络地址(包括网间网部分和物理网络号)中的一位;若位模式中的某位置0,则对应IP地址中的某位为主机地址中的一位。例如位模式:11111111 11111111 11111111 00000000中,前三个字节全1,代表对应IP地址中最高的三个字节为网络地址;后一个字节全0,代表对应IP地址中最后的一个字节为主机地址。这种位模式叫做子网模(subnet mask)或“子网掩码”。
  为了使用的方便,常常使用“点分整数表示法”来表示一个IP地址和子网掩码,例如B类地址子网掩码(11111111 11111111 11111111 00000000)为:255.255.255.0
  IP协议关于子网掩码的定义提供一种有趣的灵活性,允许子网掩码中的“0”和“1”位不连续。但是,这样的子网掩码给分配主机地址和理解寻径表都带来一定困难,并且,极少的路由器支持在子网中使用低序或无序的位,因此在实际应用中通常各网点采用连续方式的子网掩码。像255.255.255.64和255.255.255.160等一类的子网掩码不推荐使用。
(3) 子网掩码与IP地址
  子网掩码与IP地址结合使用,可以区分出一个网络地址的网络号和主机号。
例如:有一个C类地址为:
192.9.200.13
其缺省的子网掩码为:
255.255.255.0
则它的网络号和主机号可按如下方法得到:
① 将IP地址192.9.200.13转换为二进制
11000000 00001001 11001000 00001101
② 将子网掩码255.255.255.0转换为二进制
11111111 11111111 11111111 00000000
③ 将两个二进制数逻辑与(AND)运算后得出的结果即为网络部分
11000000 00001001 11001000 00001101
AND
11111111 11111111 11111111 00000000
11000000 00001001 11001000 00000000
  结果为192.9.200.0,即网络号为192.9.200.0。
④ 将子网掩码取反再与IP地址逻辑与(AND)后得到的结果即为主机部分
11000000 00001001 11001000 00001101
AND
00000000 00000000 00000000 11111111
00000000 00000000 00000000 00001101
结果为0.0.0.13,即主机号为13。









三、 子网划分与实例
    根据以上分析,建议按以下步骤和实例定义子网掩码。
    1、 将要划分的子网数目转换为2的m次方。如要分8个子网,8=23。
    2、 取上述要划分子网数的2的m次方的幂。如23,即m=3。
    3、 将上一步确定的幂m按高序占用主机地址m位后转换为十进制。如m为3则是11100000,转换为十进制为224,即为最终确定的子网掩码。如果是C类网,则子网掩码为255.255.255.224;如果是B类网,则子网掩码为255.255.224.0;如果是C类网,则子网掩码为255.224.0.0。
  在这里,子网个数与占用主机地址位数有如下等式成立:2m=n。其中,m表示占用主机地址的位数;n表示划分的子网个数。
    根据这些原则,将一个C类网络分成4个子网。若我们用的网络号为192.9.200,则该C类网内的主机IP地址就是192.9.200.1~192.9.200.254(因为全“0”和全“1”的主机地址有特殊含义,不作为有效的IP地址),现将网络划分为4个部分,按照以上步骤:4=22,取22的幂,即2,则二进制为11,占用主机地址的高序位即为11000000,转换为十进制为192。这样就可确定该子网掩码为:192.9.200.192,4个子网的IP地址范围分别为:
二进制
十进制
① 11000000 00001001 11001000 00000001
~
11000000 00001001 11001000 00111110
192.9.200.1
~
192.9.200.62
② 11000000 00001001 11001000 01000001
~
11000000 00001001 11001000 01111110
192.9.200.65
~
192.9.200.126
③ 11000000 00001001 11001000 10000001
~
11000000 00001001 11001000 10111110
192.9.200.129
~
192.9.200.190
④ 11000000 00001001 11001000 11000001
~
11000000 00001001 11001000 11111110
192.9.200.193
~
192.9.200.254
在此列出A、B、C三类网络子网数目与子网掩码的转换表,以供参考。
A类:
子网数目
占用位数
子网掩码
子网中主机数
2
1
255.128.0.0
8,388,606
4
2
255.192.0.0
4,194,302
8
3
255.224.0.0
2,097,150
16
4
255.240.0.0
1,048,574
32
5
255.248.0.0
524,286
64
6
255.252.0.0
262,142
128
7
255.254.0.0
131,070
128
7
255.255.0.0
65,534
B类:
子网数目
占用位数
子网掩码
子网中主机数
2
1
255.255.128.0
32,766
4
2
255.255.192.0
16,382
8
3
255.255.224.0
8,190
16
4
255.255.240.0
4,094
32
5
255.255.248.0
2,046
64
6
255.255.252.0
1,022
128
7
255.255.254.0
510
256
8
255.255.255.0
254
C类:
子网数目
占用位数
子网掩码
子网中主机数
2
1
255.255.255.128
126
4
2
255.255.255.192
62
8
3
255.255.255.224
30
16
4
255.255.255.240
14
32
5
255.255.255.248
6
64
6
255.255.255.252
2

















HTTP协议 (学习笔记)









HTTP服务器与HTTP客户机之间的会话如下:
    1 客户机与服务器建立联系
    与服务器建立连接,就是与SOCKET建立连接,因此要指定机器名称、资源名称和断口号,可以通过URL来提供这些信息。URL的格式为:
HTTP:///[端口号]/[路径][?<查询信息>]
    资源的缺省值是INDEX或DEFAULT,断口号缺省为80.
    2 客户向服务器提出请求
    请求信息包括希望返回的文件名和客户机信息.客户机信息以请求头发送给服务器,请求头包括HTTP方法和头字段.HTTP方法常用的有GET、HEAD、POST,而PUT、DELETE、LINK、UNLINK方法许多HTTP服务器都不使用。
头字段包括:
。DATE:请求发送的日期和时间
。PARGMA:用于向服务器传输与实现无关的信息。这个字段还用于告诉代理服
务器,要从实际服务器而不是从高速缓存取资源
。FORWARDED:可以用来追踪机器之间,而不是客户机和服务器的消息。这个字段
可以用来追踪在代理服务器之间的传递路由。
。MESSAGE_ID:用于唯一地标识消息
。ACCEPT: 通知服务器客户所能接受的数据类型和尺寸。(*/*表示可以接受
所有类型的数据。
。AOTHORIZATION:向服务器提供旁路安全保护和加密机制,若服务器
不需要这个字段,则不提供这个字段
。FROM:当客户应用程序希望想服务器提供有关其电子邮件地址时使用
。IF-MODEFIED-SINCE用于提供条件GET。如果所请求的文档自从所指定
的日期以来没有发生变化,则服务器应不发送该对象。如果所发送的日期格式不合
法,或晚于服务器的日期,服务器会忽略该字段
。BEFERRER:向服务器进行资源请求用到的对象
。MIME-VERTION:用于处理不同类型文件的MIME协议版本号
。USER-AGENT:有关发出请求的客户信息
3 服务器对请求作出应答
服务器收到一个请求,就会立刻解释请求中所用到的方法,并开始处理应答。
服务器的应答消息也包含头字段形式的报文信息。
。报文第一行是状态行,格式为 <状态代码><解释短语>
状态码是个三位数字码,分为四类:
。以2开头,表示请求被成功处理
。以3开头,表示请求被重定向
。以4开头,表示客户的请求有错
。以5开头,表示服务器不能满足请求
解释短语是对状态码的解释。
。报文还向客户返回几个头字段,如:
。STATUS CODE/REASON PHRASE
。DATE
。LAST-MODIFIED
。SERVER
。CONTENT _TYPE
。RETRY_AFTER:服务器太忙时返回这个字段
。WWW_AUTHENTICATE:当服务器的安全机制要求客户发送某中授权信息时使用该字段
。报文最后是实体信息,即客户请求得到的HTTP服务器上的资源内容。
4 关闭客户与服务器之间的连接

TOP

第五讲    封面的设计










一、封面的设计是这样的,先出现一窗体,上面为你喜欢的图案。然后出现一艘从左向右行驶着的船。屏幕上方从两侧分别移动出“欢迎”两个字。具体的制作方法是:把预先选好的背景图案装入封面窗体中,窗体命名为CAI。再分别在三个图像控件(image)中装入预先制作好的位图“欢”、“迎”和船型图案。然后把三个image放置在初始位置(即图案刚在窗体出现时的位置),并把它们的可视属性都设置为“false”。程序如下:
Sub Form_load()
cai.Show ′显示封面窗体
Dim i ′定义变量
image3.visible=True ′船型图像控件出现
a1: If image3.Left < 6120 Then
′6120为船移动到屏幕右边的坐标,此值可以随需要选取
image3.Move image3.Left+50
′移动此图像控件如嫌移动慢,可改变移动值
Goto a1
End If
image1.visible=True ′“欢”字出现
a2: If image1.Left < 2120 Then
′2120为“欢”字移动到屏幕中间的位置
image1.Move image1.Left+50 ′移动此图像控件
Goto a2
End If
image2.visible=True ′“迎”字出现
a3: If image2.Left > 5420 Then
′5420为“迎”字移动到屏幕中间的位置
image2.Move image2.Left-50 ′移动此图像控件
Goto a3
End If
For i=1 To 10000
′使窗体暂停一段时间时间长短可通过改变循环次数实现
Next i
menul.Show ′显示程序主窗体
Unload cai ′卸载封面窗体
End Sub
二、简单的“动画”
点击一3D按钮后,屏幕表现光线平行进入一玻璃管,在管中有一散射中心,有的光线射到此中心后反射到管的初始端。程序如下:
Sub Command3Dl_Click()
Dim i, j, k, m, n ′定义变量
For i=2080 To 5520
′显示出三条线,直到图像中的散射中心处,颜色为黑色
Line(2080,2760)-(i,2760),RGB(0, 0, 0)
Line(2080,2860)-(i,2860),RGB(0, 0, 0)
Line(2080,2660)-(i,2660),RGB(0, 0, 0)
Next i
For j=5520 To 4800 Step-1 ′反射光线第一次射到管壁上
Line(5520,2760)-(j,2760-(5520-j)*.33333333),RGB
(255, 0, 0) ′反射光线,颜色为红色
Line(5520,2660)-(5520+(5520-j),2660),RGB(0, 0, 0)
Line(5520,2860)-(5520+(5520-j),2860),RGB(0, 0, 0)
′没有遇到散射中心的两条光线,为黑色,继续前进
Next j
For k=4800 To 3360 Step-1 ′反射光线第二次射到管壁上
Line(4800,2520)-(k,2520+(4800-k)*.33333333),
RGB(255, 0, 0) ′反射光线,颜色为红色
Line(6240,2660)-(6240+(4800-k),2660),RGB(0,0,0)
Line(6240,2860)-(6240+(4800-k),2860),RGB(0,0,0)
′没有遇到散射中心的两条光线,颜色为黑色
Next k
For m=3360 To 2080 Step-1 ′反射光线第三次射到管壁上
Line(3360,3000)-(m,3000-(3360-m)*.33333333),
RGB(255, 0, 0) ′反射光线,颜色为红色
Next m
End Sub
三、封底
封底的设计是:先出现全黑的屏幕,然后从上至下逐渐拉出白底红字的“再见”的字样。先按要求在画板中做一个BMP图,上面写着“再见”。然后在一名为BYE的窗体中加入一个全屏大的Picturel,将BMP图装入。程序如下:
Sub Form_Load()
Dim i ′定义变量
bye.Show ′封底出现
Unload menu1 ′卸载主菜单
al: If picture1.Height < 7130 Then ′7130为图的高度
picturel.Height=picture1.Height+50 ′下拉屏幕
GoTo al
End If
For i=1 To 20000 ′使窗体暂停一段时间
Next i
End ′结束所有操作
End Sub
利用Visual Basic让命令行软件全面转向Windows
众所周知,Windows以其优美的图形界面,方便快捷的操作环境,已成为当今的主流操作系统,但由于其程序编写过于复杂,有很多用户常用的工具和小程序仍然只能运行于DOS环境下,造成Windows和DOS的频繁切换、使工作缺乏连续性和效率低下。有什么方法可以解决这一问题呢?等待For Windows版本的面市,但仍会造成重复投资。据笔者观察发现,常用工具中有一部分为命令行软件,这些软件完全可以利用VB改编成For Windows版本的。首先由于VB的简单易用,使Windows的界面设计变得异常简单直观。所以可轻而易举的将命令选项、开关等转化为对应的图形界面(如复选钮等)。其次由于VB为用户提供了Shell函数,也使得命令调用非常简单。通过Shell其实你只做了个界面,核心还是DOS下的原来工具。其函数格式如下:
Shell(命令字符串<,窗口类型>)
命令字符串即具体执行的命令(如字符串“arj e a:user.arj c:\user ”)有关字符串的操作可查阅有关书籍。至于窗口型类型缺省即可。最后只须注意,在Shell执行函数之前,有必要对命令行中有可能引发错误的参数进行检测,如在执行前检查用户给的源文件是否存在等,以保证达到预期结果。笔者用VB改编的Arj for Windows版本,其结果出乎想象。希望大家能自己动手全面转向Windows。












让窗体居中









在主窗体的Form_load()中的最前面加入下列代码:
Dim X0 As long
Dim Y0 As Long
'让窗体居中
X0 = Screen.Width
Y0 = Screen.Height
X0 = (X0 - Me.Width) / 2
Y0 = (Y0 - Me.Height) / 2
Me.Move X0, Y0

TOP

返回列表