FTP是英文File Transfer Protocol的缩写,意思是文件传输协议。它和HTTP一样都是Internet上广泛使用的协议,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。
目前TCP/IP网络,全部是通过路由器互连起来的,Internet就是成千上万个IP子网通过路由器互连起来的国际性网络。这种网络称为以路由器为基础的网络(router based network),形成了以路由器为节点的“网间网”。在“网间网”中,路由器不仅负责对IP分组的转发,还要负责与别的路由器进行联络,共同确定“网间网”的路由选择和维护路由表。
在开始讲什么是端口之前,我们先来聊一聊什么是 port 呢?常常在网络上听说『我的主机开了多少的 port ,会不会被入侵呀!?』或者是说『开那个 port 会比较安全?又,我的服务应该对应什么 port 呀!?』呵呵!很神奇吧!怎么一部主机上面有这么多的奇怪的 port 呢?这个 port 有什么作用呢?!
由于每种网络的服务功能都不相同,因此有必要将不同的封包送给不同的服务来处理,所以啰,当你的主机同时开启了 FTP 与 WWW 服务的时候,那么别人送来的资料封包,就会依照 TCP 上面的 port 号码来给 FTP 这个服务或者是 WWW 这个服务来处理,当然就不会搞乱啰!(注:嘿嘿!有些很少接触到网络的朋友,常常会问说:『咦!为什么你的计算机同时有 FTP、WWW、E-Mail 这么多服务,但是人家传资料过来,你的计算机怎么知道如何判断?计算机真的都不会误判吗?!』现在知道为什么了吗?!对啦!就是因为 port 不同嘛!你可以这样想啦,有一天,你要去银行存钱,那个银行就可以想成是『主机』,然后,银行当然不可能只有一种业务,里头就有相当多的窗口,那么你一进大门的时候,在门口的服务人员就会问你说:『嗨!你好呀!你要做些什么事?』你跟他说:『我要存钱呀!』,服务员接着就会告诉你:『喝!那么请前往三号窗口!那边的人员会帮您服务!』这个时候你总该不会往其它的窗口跑吧?! ^_^\"\"这些窗口就可以想成是『 port 』啰!所以啦!每一种服务都有特定的 port 在监听!您无须担心计算机会误判的问题呦!)
· 每一个 TCP 联机都必须由一端(通常为 client )发起请求这个 port 通常是随机选择大于 1024 以上的 port 号来进行!其 TCP 封包会将(且只将) SYN 旗标设定起来!这是整个联机的第一个封包;
· 如果另一端(通常为 Server ) 接受这个请求的话(当然啰,特殊的服务需要以特殊的 port 来进行,例如 FTP 的 port 21 ),则会向请求端送回整个联机的第二个封包!其上除了 SYN 旗标之外同时还将 ACK 旗标也设定起来,并同时时在本机端建立资源以待联机之需;
附:如何使用钩子函数(接收到字母A按下时,窗体由最小化弹出的完整的代码)
Public Declare Function CallNextHookEx Lib \"user32\" _
(ByVal hHook As Long, _
ByVal nCode As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Public Declare Function UnhookWindowsHookEx Lib \"user32\" _
(ByVal hHook As Long) As Long
Public Declare Function SetWindowsHookEx Lib \"user32\" _
Alias \"SetWindowsHookExA\" _
(ByVal idHook As Long, _
ByVal lpfn As Long, _
ByVal hmod As Long, _
ByVal dwThreadId As Long) As Long
Public Const WH_KEYBOARD = 2
Public Const KEY_WINSTART = 91
Public Const KEY_WINMENU = 93
Global hHook As Long
Public Function KeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If nCode >= 0 Then
If wParam = KEY_WINMENU Or wParam = KEY_WINSTART Then
If (lParam And &HC0000000) = 0 Then
MsgBox \"\", , \"\"
KeyboardProc = 1
Exit Function
End If
End If
End If
KeyboardProc = CallNextHookEx(hHook, nCode, wParam, lParam)
End Function
Option Explicit
Private Sub Command1_Click()
Form2.Show 1
End Sub
Private Sub Form_Load()
hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, 0&, App.ThreadID)
Me.Show
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call UnhookWindowsHookEx(hHook)
End Sub 作者: 色狼||宝马 时间: 2007-2-6 08:55
“包”(Packet)是TCP/IP协议通信传输中的数据单位,一般也称“数据包”。有人说,局域网中传输的不是“帧”(Frame)吗?没错,但是TCP/IP协议是工作在OSI模型第三层(网络层)、第四层(传输层)上的,而帧是工作在第二层(数据链路层)。上一层的内容由下一层的内容来传输,所以在局域网中,“包”是包含在“帧”里的。
名词解释:OSI(Open System Interconnection,开放系统互联)模型是由国际标准化组织(ISO)定义的标准,它定义了一种分层体系结构,在其中的每一层定义了针对不同通信级别的协议。OSI模型有7层,1?7层分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。OSI模型在逻辑上可分为两个部分:低层的1?4层关注的是原始数据的传输;高层的5?7层关注的是网络下的应用程序。
??Ping能够以毫秒为单位显示发送回送请求到返回回送应答之间的时间量。如果应答时间短,表示数据报不必通过太多的路由器或网络连接速度比较快。Ping还能显示TTL(Time To Live存在时间)值,你可以通过TTL值推算一下数据包已经通过了多少个路由器:源地点TTL起始值(就是比返回TTL略大的一个2的乘方数)-返回时TTL值。例如,返回TTL值为119,那么可以推算数据报离开源地址的TTL起始值为128,而源地点到目标地点要通过9个路由器网段(128-119);如果返回TTL值为246,TTL起始值就是256,源地点到目标地点要通过9个路由器网段。
ASP即Active Server Page的缩写,是基于WEB的一种编程技术,可以说是CGI的一种。它可以完成以往CGI程序的所有功能,如计数器、留言簿、公告板、聊天室等等。ASP是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行交互。是一种简单、方便的编程工具。在了解了VBSCRIPT的基本语法后,只需要清楚各个组件的用途、属性、方法,就可以轻松编写出自己的ASP系统。
SLIP(Serial Line Internet Protocol)Internet串行线路协议,是第一个使Internet在标准拨号上得到应用的协议。随着Internet的发展,SLIP成为标准的、可靠的协议。SLIP不是真正地按某种实际的长期策略或目标而规划和实现的,但是在缺乏一种更好的协议之前,SLIP 栽谑褂米牛??堑缁跋呱辖换籌nternet业务的早期标准。 作者: 色狼||宝马 时间: 2007-2-6 09:08
-------------------------------------------
--------------------------------------------
WINS全称Windows Internet Name Service,即Windows互联网名称服务。它和DNS一样,都是用来将主机名转换成IP地址的。但在互联网解析主机名的是DNS,事实上WINS主要的是用在局域网内缓解网络风暴。
WINS基于计算机的NetBIOS名工作,所以要了解WINS,必须对计算机名、NetBIOS及NetBIOS名有一个初步的认识。
在微软的系统中,任何一台计算机,不论是否联网,都必须定义一个不超过15位的字符作为计算机名,该名在系统安装时指定,如不指定,则由系统随机生成。设定以后,可在我的电脑—属性—计算机选项卡(WIN2000以上)或网上邻居—属性—标识选项卡中(WINME以下)查看并管理;如果该计算机处于网络环境下,则该计算机名还必须在网络中保证唯一。这个计算机名的存在,是实现NetBIOS的前提。
在局域网发展早期,为在个人机上实现网络能力,MS和IBM合作开发了一套网络协议,认为它如同计算机的BIOS一样,将成为最基本的网络访问接口,因此使用了NetBIOS(Network Basic Input/Output System)这个名字。MS就利用NetBIOS接口开发网络服务器及相应的客户软件,后来, 打通NetBIOS和网络物理层的各种具体接口的NetBEUI(NetBIOS Extend User Interface)又开发成功,成为NetBIOS的增强版。它直接控制Token Ring(令牌环)和Ethernet(以太网)驱动程序,使之只能运行于局域网,其缺点是不支持路由, 要在大型的或路由式的网络间通信,必须使用基于路由的传输机制(一般是TCP/IP)加以补充,叫做NetBIOS over TCP/IP(NetBT),意为运行于TCP/IP基础上的NetBIOS。WIN2000以下的计算机强制使用NetBIOS名;WIN2000以上的计算机为了在网络中和WIN2000以下的计算机保持通信,保留NetBIOS名。
NetBIOS名的前15位沿用计算机名,最后增加一位字符作为后缀,用于标识某种服务或应用程序,所以对同一个计算机名,可以生成多个NetBIOS 名;而同一计算机的多个服务也可以注册到另一个计算机的NetBIOS名上,均由该后缀加以区分。 WIN2000中专门提供文件和打印机共享的 server服务就是典型的例子,它的后缀是八进制的20。
不难看出,即使没有WINS服务器,只要是基于NetBIOS的主机,它们都能够自己管理自己,其原理如下:
主机A登录网络时,它将向网络发送注册广播6--10次,声明自身的NetBIOS名称,确保网内其他主机收到该消息,如果该名与主机B重名,主机B将发出一个包括它自己NetBIOS名称的广播包,要求主机A停止注册,主机A会发出一个负的名称注册(negative name registration)广播作为响应,主机A注册失败;如无其他主机反对,A成功注册。
与此同时,网络上的其它主机也向A发出一个包括自己NetBIOS名称的广播包,声明自己的存在。这在形式上表现为其它主机的网络邻居窗口在刷新后会出现该主机A的NetBIOS名;而主机A的网络邻居窗口中也出现了其它主机的NetBIOS名,也就是通常所认为的计算机名。
当主机A联系主机B时,A广播一个包含B主机NetBIOS名的地址请求,如果B在线,它将向主机A广播一个包括自己IP地址的正的名称查询(positive name query)消息予以响应,然后A就可以利用这个地址连接到主机B;
当主机A正确关机时,自动发生名称释放操作,这时其它主机可以用主机A的名称登陆网络;但主机A非正常关机时,其它主机的网络邻居窗口中仍然会有该主机名,双击后会出现“找不到网络路径”的错误提示:主机A已经名存实亡。
这种“无组织无纪律”的自我管理,带来的是通信效率的大大下降:每台主机在登陆和重登陆网络的时候,都将向网络发送广播;然后所有主机再向它发送广播;然后主机间要求通信都以广播的方式进行……,每台主机随时都在大呼小叫,其巨大的数据流量将造成网络响应速度直线下降,这是最不能接受的网络问题。
所以,必须有一个“老板”对所有主机的NetBIOS名称和IP地址进行集中统一的管理和维护,NetBIOS客户端通过直接与“老板”进行名称的注册、更新、查询和释放操作,最大程度的减少了广播流量。这个“老板”就是WINS服务器。
在WINS中,NetBIOS名可以被注册为唯一的名称,这时它对应一个IP地址;也可以映射为一个组的名称,这时它对应多个IP地址。所以准确的说,WINS服务应该叫WINS的NetBIOS 名称服务,正是它使NetBIOS名称到地址的解析成为可能。
为更深刻的理解WINS,我们还要说明由NetBT规定的WINS名称解析的四种方法(又叫nodes,节点):① nodeB:广播的方法(broadcast);② nodeP:对等的方法(peer-to-peer),直接在WINS服务器中查询;③ nodeM:混合的方法(mixed),即联合使用nodeB和nodeP,默认为B;④ nodeH:另一种混合的方法(hybrid),和nodeM一样,但默认为nodeP。如果网络中没有WINS服务器,则系统默认使用B节点的方法,如前所述;如果系统中至少有一台WINS服务器,则系统默认使用H节点的方法。
NetBIOS客户机——即WINS客户机向WINS服务器注册、更新、查询和释放的工作流程与DHCP的工作流程异曲同工:都是以租约的形式进行——但在表现形式上更像是老板与员工之间签订用工合同的一幕。仍以客户机A 和B为例描述如下: 作者: 色狼||宝马 时间: 2007-2-6 09:12
一、 注册
客户机A一诶启动,就向TCP/IP配置中指定的WINS服务器发送一个名称查询请求(请求签订合同),要求注册其NetBIOS名和IP地址,如果WINS在线,它首先检查自己的数据库中是否已有该NetBIOS名,如客户机B与该名同名,则WINS以500毫秒为间隔向B发送三次名称查询请求,用以确定B是否仍然还在上班,如收到响应,则向A发出一个负的名称注册(negative name registration)。A注册失败;如果没有响应,则A注册成功,该WINS服务器会将这一对应关系(重新)记录在自己的数据库中,并向该客户机返回一个注册成功的消息,其中包括一个指定的生存周期 TTL(Time to Live)——它的存在表明了WINS客户机只是一个钟点工,此时合同签订成功。
一旦A三次联系WINS服务器都失败的话,意味着WINS服务器宕机或不可用,这时,如果网络中再无其它的WINS服务器存在,则又回到了无组织无纪律的洪荒状态,WINS客户机会按照上述“广播”的方式来工作。
三、 查询
当A需要联系B的时候,它首先检查缓存,看是否有B的NetBIOS名对应IP地址的记录,如果没有,则向WINS服务器发出该NetBIOS名称的IP查询请求,要求WINS回应其IP 地址。如果没有任何WINS服务器响应,或者某个WINS服务器发出了一个“Requested Name Does Not Exist”(请求的名称不存在)消息,客户机即启用广播的方式查找,如果仍未响应,如果有事先的设置,主机A还要尽最后的努力,去查找自己的数据库文件Lmhost,仍然无效的时候,才善罢甘休。
四、 释放
如果WINS客户机A停止某个注册的网络服务或正常关机的时候,该A即针对注册的某个服务或者A的NetBIOS名直接向WINS发出一个包括A机IP地址和NetBIOS名称的释放请求(要求解除合同)。WINS收到该请求后,先检查它的数据库,如果WINS找到了一个对应的记录,则向A发送一个正的名称释放(positive name release)消息作为响应,其中包括了被释放的NetBIOS名称和值为0的TTL,同时在数据库中将这条记录标记为已经释放,合同正式解除;
如果WINS没有找到对应的记录或者该NetBIOS名被 指向了另一个IP地址,那么WINS会向A发出一个负的名称释放(negative name release)消息作为回应。合同无法解除。
如果A非正常关机,是不会发出名称释放消息的,显然,WINS服务器的数据库中就会多出一条“假”记录,当B向WINS发出A的地址请求时,WINS仍然会向B给出已不存在了的A的地址信息,当然B不可能再通过这个地址联系到A,最终会出现超时错。在B的网络邻居窗口中,A的存在仅仅证明了A“曾经来过”。
限于篇辐,WINS与DNS的集成、WINS代理以及多个WINS服务器的管理维护和排故等WINS服务器的高级应用只有以后再谈了。
WINS是老生常谈了,希望本文对老资格的网管朋友能温故知新,对初入道的新网管朋友能有一些帮助。敬请专家指正。 作者: 色狼||宝马 时间: 2007-2-6 09:12
第三十八个:什么是DNS
DNS(Domain Name System) 翻成中文是「领域名称系统」.
在一个 TCP/IP 架构的网路 (例如 Internet) 环境中, DNS 是 一个非常重要而且常用的系统. 主要的功能就是将人易於记忆的 Domain Name 与人不容易记忆的 IP Address 做转换. 而上面执行 DNS 伺服软体的这台网路主机, 就可以称之为 DNS Server.
基本上, 通常我们都认为 DNS 只是将 Domain Name 转换成 IP Address, 然後再使用所查到的 IP Address 去做连线. 事实上, 将 IP Address 转换成 Domain Name 的功能也是相当常使用到的 , 当 login 到一台 Unix 工作站时, 工作站就会去做反查, 找出你是从哪个地方连线进来的.
DNS 是使用阶层式的方式来运作的. 例如:
chameleon的 Domain Name 为 www.cn90.net 这个 Domain Name 当然不是凭空而来的, 是从\" .net \"所分配下来的. 那么.net 又是从哪里来的呢? 答案是从 \".\", 也就是所谓的「根领域」 (root domain) 来的. 根领域已经是 Domain Name 的最上层. 而 \".\" 这层是由 InterNIC (Internet Network Information Center, 网际网路资讯中心) 所管理. 全世界的 Domain Name 就是这样, 一层一层的授与下来. 作者: 色狼||宝马 时间: 2007-2-6 09:12