1.5 TCP/IP基础
TCP/IP 是一组通信协议的代名词,是由一系列协议组成的协议簇。它本身指两个协议集:传输控制协议(TCP)和因特网协议(IP)。TCP/IP最早由美国国防高级研究计划局在其ARPANET上实现,已有几十年的运行经验。由于TCP/IP一开始用来连接异种机环境,再加上工业界的很多公司都支持它,特别是在Unix环境,TCP/IP已成为其实现的一部分;因特网的迅速发展,使TCP/IP已成为事实上的网络互连标准。
1.5.1 TCP/IP与OSI参考模型
因特网协议簇不仅包括第三、四层协议(TCP/IP),还包括一些很普遍的常用的应用程序(如E-mail、终端仿真以及文件传输等)的规格说明。TCP/IP与OSI参考模型的对应关系如表1-2所示。
表1-2 TCP/IP和OSI参考模型的对应关系
图1-12中显示了TCP/IP的主要协议之间的相关性。图中每个封闭的多边形对应了一个协议,并且位于它所直接使用的协议之上。如 SMTP依赖于TCP,而TCP依赖于IP。下面对图1-12做一些解释。
图1-12 TCP/IP的主要协议之间的相关性
最低层代表了硬件所提供的所有协议,该层包括所有硬件控制协议,其范围从媒体接入到逻辑链路分配。可以假设这层包括了任何分组传送系统,只需IP就可以用它来传送报文。
第二层列出了ARP和RARP。当然,不是所有的计算机或网络技术都要使用它们。ARP常用于以太网,而RARP一般用得比较少。其他的地址绑定协议划归在这层,但没有被广泛使用。
第三层包含了IP。它还含有所要求的因特网控制信息协议(ICMP),用于处理差错和控制信息,以及可选的因特网组管理协议(IGMP)。应当注意,IP 是唯一横跨整个层的协议。所有的低层协议都把得到的信息交付给IP,同时,所有的高层协议都必须使用IP向外发送报文。IP直接依赖于硬件层,因为在使用ARP绑定地址后,它需要使用硬件链路或接入协议来传送报文。
TCP和UDP构成传输层。图中的应用层显示了各种应用协议之间的复杂的相关性,例如,FTP使用Telnet所定义的虚拟网络终端来完成它的控制连接的通信,还使用TCP构成数据连接。所以, FTP同时依赖于Telnet和TCP。域名系统(DNS)同时使用TCP和UDP通信,所以DNS依赖于两者。NFS依赖于外部数据表示(XDR)协议和远端过程调用(RPC)协议。RPC出现了两次,这是因为它既可使用UDP又可使用TCP。
简单网络管理协议(SNMP)依赖于抽象语法表示(ASN.l),并且使用UDP发送报文。由于外部数据表示(XDR)和ASN.1只是描述语法约定和数据表示,它们涉及UDP和TCP,所以,图1-12中在ASN.1和XDR的下方有一个带点的区域,表示它们不依赖于UDP层。
与OSI参考模型不同,TCP/IP不是人为制定的标准,而是产生于网络之间的研究和实践应用中,虽然稍作修改后,OSI 参考模型也可用于描述 TCP/IP,但这只是形式而已,两者内部细节的差别是很大的。
1.TCP/IP的层次结构
TCP/IP由4个层次组成,包括应用层、传输层、网络层和网络接口层。
(1)应用层
应用层向用户提供一组常用的应用程序,例如,文件传输程序、电子邮件程序等。严格说来, TCP/IP只包含OSI参考模型的下三层,应用程序不能作为TCP/IP的一部分。就上面提到的常用应用程序,TCP/IP制定了相应的协议标准,所以也把它们作为TCP/IP的内容。事实上,用户完全可以在传输层之上,建立自己的专用程序,这些专用程序要用到TCP/IP,但它们并不属于TCP/IP。
(2)传输层(TCP和UDP)
传输层提供应用程序间的通信,提供了可靠的传输(UDP提供不可靠的传输)。为了实现可靠性,传输层要进行收发确认;若数据包丢失则进行重传、信息校验等。
(3)网络层(IP)
网络层负责数据包的寻径功能,以保证数据包能可靠地到达目标主机;若不能到达,则向源主机发送差错控制报文。网络层提供的服务是不可靠的,可靠性由传输层来实现。
(4)网络接口层
网络接口层是TCP/IP的最低层,负责接收IP数据包并通过网络发送这个IP数据包,或者从网络上接收物理帧,取出IP数据包,并把它交给IP层。网络接口一般是设备驱动程序,如以太网的网卡驱动程序等。
2.两种分层结构比较
OSI参考模型和TCP/IP模型两种分层的不同之处如下。
(1)TCP/IP在实现上力求简单高效,如IP层并没有实现可靠的连接,而是把它交给了TCP层实现,这样保证了IP层实现的简练性。事实上有些服务并不需要可靠的面向连接服务,如在IP层加上可靠性控制,只能说是一种处理能力的浪费。OSI参考模型在各层的实现上有所重复,而且会话层和表示层不是对很多服务都有用,无疑这种模型有些繁琐。
(2)TCP/IP结构经历了几十年的实践考验,而OSI参考模型只是人们作为一种标准设计出来的;再则TCP/IP有广泛的应用实例支持,而OSI参考模型并没有。
1.5.2 网络层
网络层(IP 层)将所有低层的物理实现隐藏起来,它的作用是将数据包从源主机发送出去,并且使这些数据包独立地到达目的主机。在数据包传送过程中,即使是连续的数据包,也可能走过不同的路径,到达目的主机的顺序也会不同于它们被发送时的顺序。这是因为网上的情况是复杂的,随时可能有一些路径发生故障,或是网络的某处出现数据包的堵塞。在网络层,定义了一个标准的包格式和协议。该格式的数据包能被网上所有的主机理解和正确处理。在这一层,路由选择是非常重要的,这一层相当于OSI参考模型的网络层。从应用层到链路层数据的封装流程如图1-13所示。
图1-13 TCP/IP数据流程
1.IP数据包
一个IP数据包由包头和数据体两部分组成。IP数据包的格式如图1-14所示。
图1-14 IP数据包格式
版本字段表示所用IP的版本号。
IHL字段指明数据包头部的全部长度,包括20个字节的固定部分和可变长部分。
服务类型字段指明需要协议栈的低层提供什么样的服务,不同的服务有着不同的可靠性和传输速率。
总长字段指出整个数据包的长度,包括包头和数据体的长度。一个数据包,最长为65 535个字节。
分片偏移量指出IP数据包中的数据在整个TCP数据包中的偏移。因为IP从TCP层收到TCP数据包后,总是先将过长的数据装配成几个IP数据包,再将它们依次发送出去。
在这种情况下,每一个IP数据包中都要携带信息,用以指明这一IP数据包中的数据及在源主机TCP数据包中的位置。目标主机将根据这些信息,在其IP层重新装配成一个完整的TCP数据包,交给目标主机的TCP层。
生存期字段限制了数据包的生存长短。IP数据包每经过一个路由器,生存周期都要减1;当减到0时,就丢弃这个包;同时,一个传送出错的信息被发往源主机。
协议类型字段用来区分使用IP的是TCP还是UDP。
头校验和字段用来校验数据包在传送过程中,是否发生了错误。
源地址和目的地址分别指出发送方和接收方的网络号和主机号,也就是发送方和接收方的因特网地址。
IP 选项用于为其后的版本增加新的信息,或用来在一些特殊情况下记录一些通常很少用到的信息。
数据区为数据包中携带的用户数据。
2.信息流动过程
下面以使用TCP传送文件(如FTP应用程序)为例说明TCP/IP的工作原理。
① 在源主机上应用层将一串字节流传给传输层。
② 传输层将字节流分成TCP段,加上TCP包头交给IP层。
③ IP层生成一个包,将 TCP段放入其数据域,并加上源主机和目的主机的 IP地址。将IP数据包交给数据链路层。
④ 数据链路层在其帧的数据部分装入IP数据包,发往目的主机或路由器。
⑤ 在目的主机,数据链路层将数据链路层帧头去掉,将IP数据包交给互联网层。
⑥ IP层检查IP包头,如果包头中的校验和与计算出来的不一致,则丢弃该包。
⑦ 如果校验和一致,IP层去掉IP包头,将TCP段交给TCP层,TCP层检查顺序号来判断是否为正确的TCP段。
⑧ TCP层为TCP包头计算TCP包头和数据。如果TCP包头和数据不对,TCP层丢弃这个包,若对,则向源主机发送确认信息。
⑨ 在目的主机,TCP层去掉TCP包头,将字节流传给应用程序。
于是目的主机收到了源主机发来的字节流,就像直接从源主机发来的一样。
实际上每向下一层,数据便多加了一个报头,而这个报头对上层来说是透明的,上层根本感觉不到下面报头的存在。假设物理网络是以太网,上述基于TCP/IP的文件传输(FTP)应用打包过程便是一个逐层封装的过程,当到达目的主机时,则从下而上去掉包头。
3.IP地址
在因特网中,每一台主机都有一个唯一的地址,网关常常有不止一个的地址。地址由网络号和主机号两部分组成,这种组合是唯一的,以使每一个IP地址表示因特网中的唯一一台主机。所有的IP地址都是32位。
IP地址分为五类,平常使用的是A、B和C三类地址,它们的格式如表1-3所示。
表1-3 IP地址的分类
表1-3中,N指网络号,H指主机号。N和H都是大于0小于256的整数。由于A类地址第一字节的最高位为0,用来表示地址为A类地址,因此,A类地址只可以表示l~126个网络,每个网络有16 000 000多台主机。0和127则有特殊用处。
B类和C类IP地址第一字节的最高两位用于表示地址的类型,因此,B类IP地址的第一字节的范围为128~191,共可以表示16 382(64×256)个网络,每个网络有64 000多台主机。C类IP地址的第一字节的范围为192~222,有200多万个网络,每个网络最多有254台主机。
D类地址称为多目的广播地址,即将分组的一个复制投递给每个目的地。
IP 地址作为一种紧俏资源,由 NIC(网络信息中心)分配。在国内,由中国科学院网络中心及其授权机构进行分配。
当一个网络内有太多的主机时,会给管理带来许多困难,且使网络的设置复杂而易于出错。在许多情况下,一个A类或B类地址的一个网络号,对应了很多的主机,一个组织或公司常常用不了。另一方面,C类地址一个网络只有254个主机号,又显得太少。
为此,在实际中,常常将一个较大的网络分成几个部分,每一部分称为一个子网。在外部,这几个子网依然对应一个完整的网络号。划分的办法是将地址的主机号部分进一步划分成子网号和主机号两部分。
当两台主机通信时,需要比较两台主机的IP地址,判断这两台主机是否在同一子网内。如果在同一子网内,则数据包可以直接发给那台主机,否则,就要发向网关所在的主机。这些问题可通过设置正确的网络掩码来解决。网络掩码就是对应于网络号和子网号为二进制l、主机号部分为0的字符串。可以通过ipconfig命令看一下自己所在的网络号、网络掩码等情况。
IP地址除了标识一台主机外,还有几种具有特殊意义的特殊形式。
① 广播地址
主机号部分是全1的IP地址用于本网段内广播,叫作广播地址。所谓广播,指同时向网上所有主机发送报文。
② 有限广播地址
广播地址包含一个有效的网络号和主机号,技术上称为直接广播(Directed Broadcasting)地址。在网络上的任何一点均可向其他任何网络进行直接广播,但直接广播有一个缺点,就是要知道信宿网络的网络号。
有时需要在本网络内部广播,但又不知道本网络的网络号。TCP/IP 规定,32 比特全为“1”的IP地址用于本网广播,该地址叫作有限广播地址(Limited Broadcast Address)。
③ “0”地址
网络号为0的IP地址指同一个网络内的主机。IP地址是0.0.0.0,在主机引导时使用,其后不再用。
④ 回送地址
A 类网络地址 127 是一个保留地址,用于网络软件测试以及本地进程间通信,叫作回送地址(Loop Back Address)。无论什么程序,一旦使用回送地址发送数据,协议软件立即返回,不进行任何网络传输。TCP/IP 规定:含网络号 127 的分组不能出现在任何网络上;主机和网关不能为该地址广播任何寻径信息。发向127.0.0.l的地址的数据包,被立刻放到本机的输入队列里,常用于调试网络软件。
由以上规定可以看出,主机号全“0”全“1”的地址在TCP/IP中有特殊含义,不能用作一台主机的有效地址。
4.子网掩码
IP标准规定:每一个使用子网的网点都选择一个32位的位模式,若位模式中的某位置1,则对应IP地址中的某位为网络地址中的一位;若位模式中的某位置0,则对应IP地址中的某位为主机地址中的一位。例如位模式:
11111111 11111111 11111111 00000000
中,前三个字节全1,代表对应IP地址中最高的3个字节为网络地址;后一个字节全0,代表对应IP地址中最后一个字节为主机地址。这种位模式叫作子网模(Subnet Mask)或“子网掩码”。
为了使用的方便,常常使用“点分整数表示法”来表示一个IP地址和子网掩码,例如,B类地址子网掩码(11111111 11111111 11111111 00000000)为:255.255.255.0。
(1)子网掩码与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。
(2)子网划分与实例
根据以上分析,建议按以下步骤和实例定义子网掩码。
① 要划分的子网数目转换为2的m次方。如要分8个子网,8=23。
② 取上述要划分子网数的2的m次方的幂。如23,即m=3。
③ 上一步确定的幂m按高序占用m位主机地址后转换为十进制。如m为3则是11100000,转换为十进制为224,即为最终确定的子网掩码。如果是C类网,则子网掩码为255.255.255.224;如果是B类网,则子网掩码为255.255.224.0;如果是A类网,则子网掩码为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。这样就可确定该子网掩码为255.255.255.192,4个子网的IP地址范围分别如表1-4所示。
表1-4 具有4个子网的IP地址的划分
表1-5列出了A、B和C三类网络子网数目与子网掩码的转换表,以供参考。
表1-5 子网数目与子网掩码的转换表
5.IP欺骗问题及解决方法
盗用IP不但是因为IP不够用,而且也是为了做一些非法的活动,例如,冒充另外的主机去攻击别人的主机。
要冒充不在同一网段的一台主机的 IP,虽然可以发出 IP 数据包(需要超级用户权限),但却接收不到回应的信息。这是因为网关不会将这些数据包转入这个网段内。
相比之下,冒充同一网段内的主机比较方便。在Windows操作系统中,改一改IP地址和掩码就可以了。在Unix里改这些信息则比较麻烦,需要编程才可以。编程可以伪造大多数使用IP的数据包。
如果两台主机同时使用了同一个IP地址,当它们都开机时,系统会报告IP冲突。通常是先开机的有效,可以继续使用这个IP地址。但如果是Unix和Windows冲突,失败的总是Windows,不论谁先开机。
为了获取访问权限,入侵者创建有欺骗性的源IP地址的数据包。这种方法利用了基于IP地址的认证应用程序的特点,并可能导致入侵者获取非授权访问的权限,甚至获取对目标系统的 root 访问权限。要注意的是,该攻击方法即使在返回包不能到达入侵者的情况下,也可以得逞。
可能遭受该方法攻击的情况有支持多内部接口到外部网络的路由器、在内部网络支持子网并有两个网络接口的路由器和代理程序使用源IP地址认证系统的代理防火墙。
易受IP欺骗技术攻击的服务有Sun RPC&NFS、BSD Unix“r”命令、X Windows和其他使用源IP地址作为认证的应用程序。
解决IP欺骗技术攻击的方法有以下两个。
(1)检查
使用 netlog 之类的网络监视软件来监视数据包,查看外部接口上的数据包,它上面有局域网中的源和目标IP地址。如果能找到这种数据包,系统很有可能就处于受攻击的状态。
另一个检查IP欺骗的方法是比较内部网络不同系统间的进程账号日志。如果IP欺骗攻击了一个系统,就可以在受攻击的系统上得到一个日志项,里面显示对应的远程访问。在源机器上,将没有对应的初始化该远程访问的记录项。
(2)防止
解决IP欺骗技术的最好方法是安装过滤路由器,不允许包含内部网络地址的数据包通过该路由器。此外,在发出的数据包中,应该过滤掉源地址与内部网络地址不同的数据包,这样可以防止源于内部网络的IP欺骗攻击。
6.网络层的其他协议
因特网控制信息协议(Internet Control Message Protocol,ICMP)用来传送一些关于网络和主机的控制信息。如目标主机是不可到达的、路由的重定向等。常用的Ping命令就是使用了ICMP。Echo Request是Ping发向目标主机的,而Echo Reply是由接收的主机发向源主机的。
地址解析协议(Address Resolution Protocol,ARP)用来将IP地址映射成相应的主机MAC地址。在局域网内两主机通信时,通常需要知道目标主机的物理地址。执行arp命令,可以看到IP地址和物理地址的一些对应关系,例如:
$arp -a
Net to Media Table
Device IP Address Mask Flags Phys Addr
1e0 11.22.44.190 255.255.255.255 00:20:af:3b:bb:8f
1e0 11.22.44.159 255.255.255.255 00:60:97:a8:a8:42
1e0 11.22.31.157 255.255.255.255 08:00:3e:30:4d:6e
反向地址解析协议(Reverse Address Resolution Protocol,RARP)用来将物理地址映射成32位的IP地址。该协议多用于无盘工作站启动时,因为无盘工作站只知道自己的物理地址,还需要利用RARP得到一个IP地址。
1.5.3 传输层
1.TCP
TCP/IP的传输层对应于OSI参考模型的传输层。在这一层定义了两个协议,第一个是TCP,即传输控制协议,它是一个可靠的、面向连接的协议。它允许在因特网上两台主机间进行信息的无差错传输。它将收到的很长的字节流分段,依次传送给网络层。在目标主机端,TCP 接收进程将收到的信息重新装配成源主机TCP层发送的形式,交给应用层。TCP还进行流量控制,以避免数据发送过快,使速度较慢的主机不致于因为过多的数据到达而发生堵塞。
在网络传输中,为了保证数据在网络中传输得正确、有序,使用了“连接”这个概念。一个TCP连接是指:在传输数据之前,先要传送三次握手信号,以便双方为数据的传送做好准备。这就好像在发送传真之前,先要拨通对方的电话一样。若没有连接就好像信封里装的是要发送的数据,往邮筒里一扔,也不管对方是否收到。三次握手信号传送完毕之后,才开始传送数据。发送的每一个数据包都有编号,接收方每收到一个数据包后,都要向发送方发送信息,表示确实收到了该数据包。如果发送的数据包在信道上出错,或者丢失,则发送方要重新发送这一数据包。发送完毕,通信的双方还要一起释放该连接。
2.UDP
传输层的第二个协议是 UDP,即用户数据报协议。使用该协议时,源主机有数据就发送出去。它不管发送的数据包是否到达目标主机,数据包是否出错,收到数据包的主机也不会告诉发送方是否正确收到了数据,因此,这是一种不可靠的数据传输方式。
TCP和UDP各有优缺点。面向连接的方式(TCP)可靠,但是,在通信过程中,传送了许多与数据无关的信息,降低了信道的利用率,常用于对数据可靠性要求比较高的应用。现在的许多应用层的服务,底层使用的都是 TCP,也就是面向连接的服务;无连接方式(UDP)不可靠,但因为不用传输许多与数据本身无关的信息,所以速率快。常用于一些实时的服务,也用于一些对差错不敏感的应用(如声音丢失一些数据,并不妨碍人对音乐的收听);图像丢失一些数据,人眼几乎不能分辨这些差别。
3.服务器进程
在一台主机上,常常同时运行着多个服务器进程。当与这台主机通信时,不但要指出通信的主机地址,还要指明是同这台主机上的哪个服务器通信。通常是用端口号来标识主机上这些不同的服务器。
下面是一份Unix中的服务文件,它说明了这台Unix主机能够向外界提供哪些服务。
#
# Network services,Internet style
#
ftp 21/tcp
telnet 23/tcp
smtp 25/tcp mail
time 37/tcp timeserver
time 37/udp timeserver
以上是服务文件中的一段。文件中的第一列是服务的名称,第二列是服务对应的端口号及所使用的协议,第三列是服务的别名。
从文件中可以看出,FTP服务使用的端口21,使用的协议是TCP;而系统的时间服务,则使用的是端口37。
端口号是一个16位的数,因此,端口号可以为l~65 535。在实际中,Unix操作系统也提供了相当多的服务。服务的数量是如此之多,如果它们全部运行时,不但会产生大量的进程,而且从CPU到内存,会占用大量的资源。由于Unix是分时系统,即使没有外来的服务请求,它们也会被操作系统在时间片中执行到。
为了解决这个矛盾,人们可以选择让服务进程总是处于执行状态或者当有了来自客户程序的请求时才执行。在许多WWW服务器的主机中,HTTPD进程,也就是WWW的服务进程就总是在执行,等待来自客户程序的服务请求。这时候,它是一个并发的服务进程。当有许多请求到来时,它就生成许多新的进程。
另外一种方式是只运行一个服务进程,就是inetd进程。在系统启动时,它就开始运行,直到系统关闭。
$ps –ef l grep inetd
root 101 1 0 10:09:52? 0:01/usr/sbin/inetd -s
可以看出,inetd进程是一个由1号进程启动执行,并具有root权限的进程。
inetd 进程监听各个端口,当有外部的请求时,它根据请求要求的端口号,查阅服务文件,得到相应的端口号名称,然后在Unix操作系统的inetd.conf文件中,找到端口号所对应的服务进程(这种进程也称为守护进程)。启动该进程,处理来自客户程序的服务请求。而 inetd 进程在启动完该进程之后,又在端口上监听,等待下一个服务请求。
以下是Unix操作系统的inetd.conf文件的一部分。
#
# To re-configure the running inetd process,edit this file,then
# send the inetd process a SIGHUP.
#
# Syntax for socket-based Internet services.
#<service_name> <socket_type><proto><flags><user><server_pathname><args>
#
# Syntax for TLI-based Internet services.
#
# <service_name> tli <proto><flags><user><server_pathname><args>
#
# Ftp and telnet are standard Internet services.
#
ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd
telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd
#
# T named serves the obsolete IEN-116 name server protocol.
#
name dgram udp wait root /usr/sbin/in.tnamed in.tnamed
从这份文件可知,inetd进程收到来自端口23的服务请求后,查阅服务文件,知道该服务的名称为telnet,于是,它在inetd.conf文件中找到telnet所在的一行。在这一行中,telnet是服务的名字,该服务使用的是TCP,数据是以一种位流的方式传送。服务进程的执行是在root权限下执行。该服务进程在文件系统的/usr/sbin/目录下,进程的文件名为in.telnetd。值得注意的是,在Unix操作系统中,服务进程的名字几乎都是以字母“d”结束。因此,在“杀”进程时,对这类进程应当谨慎,然而许多攻击者也将自己的非法进程命名为xxd,冒充守护进程,以免被系统管理员杀死。
1.5.4 应用层
TCP/IP的应用层有很多协议,下面简单介绍一下最常用的4种协议。
Telnet,即虚终端服务,它是用得较多的一类应用层协议。它允许一台主机上的用户登录到另一台远程主机,并在远程主机中工作,而用户当前所使用的主机就像远程主机的一个终端(包括键盘、鼠标、显示器和一个支持虚终端协议的应用程序)。
FTP,即文件传输协议,它提供了一个有效的途径,将数据从一台主机传送到另一台主机。文件传输有文本模式和二进制模式。文本模式用来传输文本文件,并实现一些格式转换。例如,在 Unix操作系统中,换行符只有一个ASCII码(0x0d),而在DOS中,换行符由两个ASCII码(0x0d,0x0a)组成,FTP 在传输中,要进行这种转换。在二进制传输模式时,如传输图像文件、压缩文件和可执行文件时,则不进行转换。用户可以向FTP服务器传输文件,即上载文件,也可以从FTP服务器向自己所在的主机传输文件,即文件的下载。
SMTP,即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议帮助每台计算机在发送或中转信件时找到下一个目的地。通过 SMTP协议所指定的服务器,我们就可以把E-mail寄到收信人的服务器上了。
HTTP,即超文本传输协议,用来在WWW服务器上取得用超文本标记语言书写的页面。在因特网上,无论是公司、学校还是个人,都可以将自己的信息做成HTML的页面。其他用户使用Netscape或Microsoft Internet Explorer这些浏览器,便可以方便地访问这些页面。