嵌入式linux网络编程之——终于有人讲清楚了TCPIP网络七层,精品
wxchong 2025-02-09 14:30:19 开源技术 21 ℃ 0 评论
本文主要给大家分享网络七层概念之应用层,前边的章节已经给大家讲述了链路层、物理层、网络层、传输层等,欢迎学习嵌入式网络编程的朋友关注、转载和发表评论!
(绝对的好文,建议先收藏和转载!)
本文的主要讲述内容为:
1应用层常用的协议
1.1DNS
1.2FTP
1.3TFTP
1.4TELNET
1.5电子邮件
1.6万维网 WWW
2 C/S 交互模型
2.1C/S 概述
2.2C/S 模型
2.3C/S 特性
2.4 常用网络命令
应用层位于 OSI 参考模型的最高层,它通过使用下面各层所提供的服务,直接向用户提供服务,是计算机网络与用户之间的界面或接口。应用层由若干面向用户提供服务的应用程序和支持应用程序的通 信组件组成。
为了向用户提供有效的网络应用服务,应用层需要确立相互通信的应用程序或进程的有效性并提供 同步,需要提供应用程序或进程所需要的信息交换和远程操作,需要建立错误恢复的机制以保证应用层 数据的一致性。应用层为各种实际应用所提供的这些通信支持服务统称为应用服务组件(Application Service Element,简称 ASE)。
7.1 应用层常用的协议
7.1.1 DNS
每个应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的 多个应用进程之间的通信和协同工作来完成的。应用层的具体内容就是规定应用进程在通信时所遵循的 协议。
应用层的许多协议都是基于客户服务器方式。
一、域名系统概述
许多应用层软件经常直接使用域名系统 DNS (Domain Name System),但计算机的用户只是间接而不是直接使用域名系统。
因特网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS。
名字到 IP 地址的解析是由若干个域名服务器程序完成的。域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。
二、因特网的域名结构
因特网采用了层次树状结构的命名方法。 任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。
域名的结构由若干个分量组成,各分量之间用点隔开:….三级域名.二级域名.顶级域名 各分量分别代表不同级别的域名.
(1) 国家顶级域名 nTLD:如: .cn 表示中国,.us 表示美国,.uk 表示英国,等等。
(2) 国际顶级域名 iTLD:采用.int。国际性的组织可在 .int 下注册。
(3) 通用顶级域名 gTLD:最早的顶级域名是:
.com 表示公司企业
.net 表示网络服务机构
.org 表示非赢利性组织
.edu 表示教育机构(美国专用)
.gov 表示政府部门(美国专用)
.mil 表示军事部门(美国专用)
新增加了七个通用顶级域名 :.aero 用于航空运输企业 .biz 用于公司和企业 .coop 用于合作团体 .info 适用于各种情况 .museum 用于博物馆 .name 用于个人 .pro 用于会计、律师和医师等自由职业者
三、用域名服务器进行域名解析
授权域名服务器 :因特网允许各个单位根据具体情况将本单位的域名划分为若干个域名服务器管辖区(zone),并在各管辖区中设置相应的授权域名服务器。
递归查询 :
递归与迭代相结合的查询 :
名字的高速缓存:使用名字的高速缓存可优化查询的开销。 每个域名服务器都维护一个高速缓存, 存放最近用过的名字以及从何处获得名字映射信息的记录。
7.1.2 FTP
FTP(File Transfer Protocol, FTP)是 TCP/IP 网络上两台计算机传送文件的协议,FTP 是在 TCP/IP
网络和 INTERNET 上最早使用的协议之一,它属于网络协议组的应用层。FTP 客户机可以给服务器发出命令来下载文件,上载文件,创建或改变服务器上的目录。
一、概述
FTP 是一个 8 位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像 MIME 或
Unencode 一样。但是,FTP 有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间会非常长,并且不时的必需执行一些冗长的登陆进程。
FTP 服务一般运行在 20 和 21 两个端口。端口 20 用于在客户端和服务器之间传输数据流,而端口
21 用于传输控制流,并且是命令通向 ftp 服务器的进口。当数据通过数据流传输时,控制流处于空闲状态。而当控制流空闲很长时间后,客户端的防火墙会将其会话置为超时,这样当大量数据通过防火墙 时,会产生一些问题。此时,虽然文件可以成功的传输,但因为控制会话会被防火墙断开,传输会产生 一些错误。
网络环境下复制文件的复杂性:(1) 计算机存储数据的格式不同。 (2) 文件的目录结构和文件命名的规定不同。 (3) 对于相同的文件存取功能,操作系统使用的命令不同。 (4) 访问控制方法不同。
FTP 特点:文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务;
FTP 的主要功能是减少或消除在不同操作系统下处理文件的不兼容性; FTP 使用客户服务器方式。
二、FTP 的基本工作原理
主进程的工作步骤如下:打开熟知端口(端口号为 21),使客户进程能够连接上; 等待客户进程发出连接请求; 启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程; 回到等待状态,继续接受其他客户进程发来的请求,主进程与从属进程的处理是并发地进行。
两个连接:控制连接在整个会话期间一直保持打开,FTP 客户发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接不用来传送文件;实际用于传输文件的是"数据连接"。
两个不同的端口号 :当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口(21),同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。 接着,服务器进程用自己传送数据的熟知端口(20)与客户进程所提供的端口号码建立数据传送连接。由于 FTP 使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。
使用两个独立的连接的主要好处是:使协议更加简单和更容易实现; 在传输文件时还可以利用控制连接(例如,客户发送请求终止传输)。
NFS 采用另一种思路:NFS 允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据。 NFS 可使用户只复制一个大文件中的一个很小的片段,而不需要复制整个大文件。
7.1.3 TFTP
一、概述
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为 69。
TFTP 是一个传输文件的简单协议,它基于 UDP 协议而实现,但是我们也不能确定有些 TFTP 协议是基于其它传输协议完成的。此协议设计的时候是进行小文件传输的。因此它不具备通常的 FTP 的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输 8 位数据。传输中有三种模式:netascii,这是 8 位的 ASCII 码形式,另一种是 octet,这是 8 位源数据类型;最后一种 mail 已经不再支持,它将返回的数据直接返回给用户而不是保存为文件。
TFTP 是一个很小且易于实现的文件传送协议。 TFTP 使用客户服务器方式和使用 UDP 数据报,因此 TFTP 需要有自己的差错改正措施。 TFTP 只支持文件传输而不支持交互。 TFTP 没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。
主要特点:(1) 每次传送的数据 PDU 中有 512 字节的数据,但最后一次可不足 512 字节。(2) 数据 PDU 也称为文件块(block),每个块按序编号,从 1 开始。 (3) 支持 ASCII 码或二进制传送。 (4) 可对文件进行读或写。 (5) 使用很简单的首部。
二、 与其它协议的联系
因为 TFTP 使用 UDP,而 UDP 使用 IP,IP 可以还使用其它本地通信方法。因此一个 TFTP 包中会有以下几段:本地媒介头,IP 头,数据报头,TFTP 头,剩下的就是 TFTP 数据了。TFTP 在 IP 头中不指定任何数据,但是它使用 UDP 中的源和目标端口以及包长度域。由 TFTP 使用的包标记(TID)在这里被用做端口,因此 TID 必须介于 0 到 65,535 之间。对它的初始化我们在后面讨论。TFTP 头中包括两上字节的操作码,这个码指出了包的类型下面我们看看大体上的 TFTP 包格式,相关的内容我们在后面的章节中进行讨论。
---------------------------------------------------
| Local Medium | Internet | Datagram | TFTP |
---------------------------------------------------
三、 初始连接
初始连接时候需要发出 WRQ(请求写入远程系统)或 RRQ( 请求读取远程系统),收到一个确定应答,一个确定可以写出的包或应该读取的第一块数据。通常确认包包括要确认的包的包号, 每个数据包都与一个块号相对应, 块号从 1 开始而且是连续的。因此对于写入请求的确定是一个比较特殊的情况,因此它的包的包号是 0。如果收到的包是一个错误的包,则这个请求被拒绝。创建连接时,通信双方随机选择一个 TID, 因此是随机选择的,因此两次选择同一个 ID 的可能性就很小了。每个包包括两个 TID, 发送者 ID 和接收者 ID。这些 ID 用于在 UDP 通信时选择端口,请求主机选择 ID 的方法上面已经说过了,在第一次请求的时候它会将请求发到 TID 69,也就是服务器的 69 端口上。应答时,服务器使用一个选择好的 TID 作为源 TID, 并用上一个包中的 TID 作为目的 ID 进行发送。这两个被选择的 ID 在随后的通信中会被一直使用。下例是一个写入的例子,其中 WRQ,ACK 和 DATA 代表写入请求,确认和数据。
四、 TFTP 支持五种类型的包:
opcode operation 1.Read
request (RRQ) 2.Write
request (WRQ) 3.Data
(DATA) 4.Acknowledgment
(ACK) 5.Error (ERROR)
包头中包括了这个包所指定的操作码。
1. bytes string 1 byte string 1 byte
------------------------------------------------
| Opcode | Filename | 0 | Mode | 0 |
------------------------------------------------
RRQ/WRQ 包RRQ 和 WRQ 包(代码分别为 1 和 2)的格式如上所示。文件名是 NETASCII 码字符,以 0 结束。而MODE 域包括了字符串"netascii","octet"或"mail",名称不分大小写。接收到 NETASCII 格式数据的主机必须将数据转换为本地格式。OCTET 模式用于传输文件,这种文件在源机上以 8 位格式存储。假设每个机器都存在一个 8 位的格式,这样的假设是最一般的。比如 DEC-20,这是一种 36 位机,我们可以假设它是 4 个 8 位外加另外 4 位而构成。如果机器收到 OCTET 格式文件,返回时必须与原来文件完全一样。在使用 MAIL 模式时,用户可以在 FILE 处使用接收人地址,这个地址可以是用户名或用户名@主机的形式,如果是后一种形式,允许主机使用电子邮件传输此文件。如果使用 MAIL 类型,包必须以 WRQ 开始,否则它与 NETASCII 完全一样。我们的讨论建立在发送方和接收方都在相同模式的情况下,但是双方可以以不同的模式进行传输。例如一个机器可以是一台存储服务器,这样一台服务器需要将NETASCII 格式转换为自己的格式。另外,我们可以设想 DEC-20 这种机器,它使用 36 位字长,用户这边可以使用特殊的机制一次读取 36 位,而服务器却可以仍然使用 8 位格式。在这两种情况下,我们看到了两台机器使用不同格式的情况。可以在两台主机间定义其它的传输方式,但是定义要小心,因为这 种传输方式不为人知,而且也没有权威机构为其指定名称或定义它的模式。
2. bytes 2 bytes n bytes
----------------------------------
| Opcode | Block # | Data |
----------------------------------
DATA 包
数据在数据包中传输,其格式如上图所示。数据包的 OP 码为 3,它还包括有一个数据块号和数据。数据块号域从 1 开始编码,每个数据块加 1,这样接收方可以确定这个包是新数据还是已经接收过的数据。数据域从 0 字节到 512 字节。如果数据域是 512 字节则它不是最后一个包,如果小于 512 字节则表示这个包是最后一个包。除了 ACK 和用于中断的包外,其它的包均得到确认。发出新的数据包等于确认上次的包。WRQ 和 DATA 包由 ACK 或 ERROR 数据包确认,而 RRQ 数据包由 DATA 或 ERROR 数据包确认。下图即是一个 ACK 包,操作码为 4。其中的包号为要确认的数据包的包号。
3. bytes 2 bytes
---------------------
| Opcode | Block # |
---------------------
ACK 包
WRQ 数据包被 ACK 数据包确认,WRQ 数据包的包号为 0。4.bytes 2 bytes string 1 byte
-----------------------------------------
| Opcode | ErrorCode | ErrMsg | 0 |
-----------------------------------------
ERROR 包
一个 ERROR 包,它的操作码是 5,它的格式如上所示。此包可以被其它任何类型的包确认。错误码指定错误的类型。错误的值和错误的意义在附录中。错误信息是供程序员使用的。
7.1.4 TELNET
一、概述
Telnet 协议是 TCP/IP 协议族中的一员,是 Internet 远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用 telnet 程序,用它连接到服务器。终端使用者可以在 telnet 程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个 telnet 会话,必须输入用户名和密码来登录服务器。Telnet 是常用的远程控制 Web 服务器的方法。
它最初是由 ARPANET 开发的,但是现在它主要用于 Internet 会话。它的基本功能是,允许用户登录进入远程主机系统。起初,它只是让用户的本地计算机与远程计算机连接,从而成为远程主机的一个 终端。它的一些较新的版本在本地执行更多的处理,于是可以提供更好的响应,并且减少了通过链路发 送到远程主机的信息数量。
Telnet 是位于 OSI 模型的第 7 层---应用层上的一种协议,是一个通过创建虚拟终端提供连接到远程主机终端仿真的 TCP/IP 协议。这一协议需要通过用户名和口令进行认证,是 Internet 远程登陆服务的标准协议。应用 Telnet 协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。它提供了三种基本服务:
1) Telnet 定义一个网络虚拟终端为远程系统提供一个标准接口。客户机程序不必详细了解远程系统,他们只需构造使用标准接口的程序;
2) Telnet 包括一个允许客户机和服务器协商选项的机制,而且它还提供一组标准选项; .
3) Telnet 对称处理连接的两端,即 Telnet 不强迫客户机从键盘输入,也不强迫客户机在屏幕上显示输出。
二、适应异构
为了使多个操作系统间的 Telnet 交互操作成为可能,就必须详细了解异构计算机和操作系统。比如,一些操作系统需要每行文本用 ASCII 回车控制符(CR)结束,另一些系统则需要使用 ASCII 换行符
(LF),还有一些系统需要用两个字符的序列回车-换行(CR-LF);再比如,大多数操作系统为用户提供了一个中断程序运行的快捷键,但这个快捷键在各个系统中有可能不同(一些系统使用 CTRL+C,而另一些系统使用 ESCAPE)。如果不考虑系统间的异构性,那么在本地发出的字符或命令,传送到远地并被远程系统解释后很可能会不准确或者出现错误。因此,Telnet 协议必须解决这个问题。 为了适应异构环境,Telnet 协议定义了数据和命令在 Internet 上的传输方式,此定义被称作网络虚拟终端 NVT(Net Virtual Terminal)。它的应用过程如下: 对于发送的数据:客户机软件把来自用户终端的按键和命令序列转换为 NVT 格式,并发送到服务器,服务器软件将收到的数据和命令,从 NVT 格式转换为远地系统需要的格式; 对于返回的数据:远地服务器将数据从远地机器的格式转换为 NVT 格式,而本地客户机将将接收到的 NVT 格式数据再转换为本地的格式。 对于 NVT 格式的详细定义,有兴趣的朋友可以去查找相关资料。
三、传送远程命令
我们知道绝大多数操作系统都提供各种快捷键来实现相应的控制命令,当用户在本地终端键入这些快捷键的时候,本地系统将执行相应的控制命令,而不把这些快捷键作为输入。那么对于 Telnet 来说, 它是用什么来实现控制命令的远程传送呢? Telnet 同样使用 NVT 来定义如何从客户机将控制功能传送到服务器。我们知道 USASCII 字符集包括 95 个可打印字符和 33 个控制码。当用户从本地键入普通字符时,NVT 将按照其原始含义传送;当用户键入快捷键(组合键)时,NVT 将把它转化为特殊的 ASCII 字符在网络上传送,并在其到达远地机器后转化为相应的控制命令。
将正常 ASCII 字符集与控制命令区分的原因:
1)这种区分意味着 Telnet 具有更大的灵活性:它可在客户机与服务器间传送所有可能的 ASCII字符以及所有控制功能;
2) 这种区分使得客户机可以无二义性的指定信令,而不会产生控制功能与普通字符的混乱。
四、数据流向
上面我们提到过将 Telnet 设计为应用级软件有一个缺点,那就是:效率不高。这是为什么呢?下面给出 Telnet 中的数据流向:
数据信息被用户从本地键盘键入并通过操作系统传到客户机程序,客户机程序将其处理后返回操作系统,并由操作系统经过网络传送到远程机器,远程操作系统将所接收数据传给服务器程序,并经服务器程序再次处理后返回到操作系统上的伪终端入口点,最后,远程操作系统将数据传送到用户正在运行的应用程序,这便是一次完整的输入过程;输出将按照同一通路从服务器传送到客户机。 因为每一次的输入和输出,计算机将切换进程环境好几次,这个开销是很昂贵的。还好用户的键入速率并不算高, 这个缺点我们仍然能够接受。
五、 强制命令
我们应该考虑到这样一种情况:假设本地用户运行了远地机器的一个无休止循环的错误命令或程序,且此命令或程序已经停止读取输入,那么操作系统的缓冲区可能因此而被占满,如果这样,远程服 务器也无法再将数据写入伪终端,并且最终导致停止从 TCP 连接读取数据,TCP 连接的缓冲区最终也会被占满,从而导致阻止数据流流入此连接。如果以上事情真的发生了,那么本地用户将失去对远程机器的控制。
为了解决此问题,Telnet 协议必须使用外带信令以便强制服务器读取一个控制命令。我们知道 TCP 用紧急数据机制实现外带数据信令,那么 Telnet 只要再附加一个被称为数据标记(date mark)的保留八位组,并通过让 TCP 发送已设置紧急数据比特的报文段通知服务器便可以了,携带紧急数据的报文段将绕过流量控制直接到达服务器。作为对紧急信令的相应,服务器将读取并抛弃所有数据,直到找到了一 个数据标记。服务器在遇到了数据标记后将返回正常的处理过程。
六、 选项协商
由于 Telnet 两端的机器和操作系统的异构性,使得 Telnet 不可能也不应该严格规定每一个 telnet 连接的详细配置,否则将大大影响 Telnet 可适应异构性。因此,Telnet 采用选项协商机制来解决这一问题。
Telnet 选项的范围很广:一些选项扩充了大方向的功能,而一些选项制涉及一些微小细节。例如: 有一个选项可以控制 Telnet 是在半双工还是全双工模式下工作(大方向);还有一个选项允许远地机器上的服务器决定用户终端类型(小细节)。
Telnet 选项的协商方式也很有意思,它对于每个选项的处理都是对称的,即任何一端都可以发出协商申请;任何一端都可以接受或拒绝这个申请。另外,如果一端试图协商另一端不了解的选项,接受请求的一端可简单的拒绝协商。因此,有可能将更新,更复杂的 Telnet 客户机服务器版本与较老的, 不太复杂的版本进行交互操作。如果客户机和服务器都理解新的选项,可能会对交互有所改善。否则, 它们将一起转到效率较低但可工作的方式下运行。所有的这些设计,都是为了增强适应异构性,可见
Telnet 的适应异构性对其的应用和发展是多么重要。
7.1.5 电子邮件
一、概述
电子邮件(e-mail)是因特网上使用得最多的和最受用户欢迎的一种应用。电子邮件把邮件发送到
ISP 的邮件服务器,并放在其中的收信人邮箱中,收信人可随时上网到 ISP 的邮件服务器进行读取。电子邮件不仅使用方便,而且还具有传递迅速和费用低廉的优点。 现在电子邮件不仅可传送文字信息, 而且还可附上声音和图像。
在 1982 年制定出简单邮件传送协议 SMTP (Simple Mail Transfer Protocol) 和因特网文本报文格式,它们都已成为因特网的正式标准、1993 年提出了通用因特网邮件扩充 MIME (Multipurpose Internet Mail Extensions)。
电子邮件的最主要的组成构件 :
应当注意:一个邮件服务器既可以作为客户,也可以作为服务器。
电子邮件的发送和接收过程 :(1) 发信人调用用户代理来编辑要发送的邮件。(2)发送端邮件服务器将邮件放入 邮件缓存队列中,等待发送。(3) 运行在发送端邮件服务器的 SMTP 客户进程,发现 在邮件缓存中有待发送的邮件,就向运行在接收端邮件 服务器的 SMTP 服务器进程发起 TCP 连接的建立。(4) TCP 连接建立后,SMTP 客户进程开始向远程的 SMTP 服务器进程发送邮件。当所有的待发送邮件发完了,SMTP 就关闭所建立的 TCP 连接。(5) 运行在接收端邮件服务器中的 SMTP 服务器进程收到邮件后,将邮件放入收信人的用户邮箱中,等待收信人在方便时进行读取。(6) 收信人在打算收信时, 调用用户代理,使用 POP3(或 IMAP)协议将自己的邮件从接收端邮件服务器的用户邮箱中的取回(如果邮箱中有来信的话)。
电子邮件由信封(envelope)和内容(content)两部分组成。
TCP/IP 体系的电子邮件系统规定电子邮件地址的格式如下:收信人邮箱名@邮箱所在主机的域名。
二、简单邮件传送协议 SMTP
SMTP 所规定的就是在两个相互通信的 SMTP 进程之间应如何交换信息。由于 SMTP 使用客户服务器方式,因此负责发送邮件的 SMTP 进程就是 SMTP 客户,而负责接收邮件的 SMTP 进程就是 SMTP 服务器。
SMTP 通信的三个阶段 :连接建立、邮件传送、连接释放。
三、电子邮件的信息格式
一个电子邮件分为信封和内容两大部分。[RFC 822]只规定了邮件内容中的首部(header)格式,而对邮件的主体(body)部分则让用户自由撰写。
四、邮件读取协议 POP3 和 IMAP
邮局协议 POP 是一个非常简单、但功能有限的邮件读取协议,现在使用的是它的第三个版本 POP3。
POP 也使用客户服务器的工作方式。
IMAP 也是按客户服务器方式工作,现在较新的版本是 IMAP4。 用户在自己的 PC 机上就可以操纵
ISP 的邮件服务器的邮箱,就像在本地操纵一样。 因此 IMAP 是一个联机协议。
IMAP 最大的好处就是用户可以在不同的地方使用不同的计算机随时上网阅读和处理自己的邮件。
IMAP 还允许收信人只读取邮件中的某一个部分。
IMAP 的缺点是如果用户没有将邮件复制到自己的 PC 机上,则邮件一直是存放在 IMAP 服务器上。因此用户需要经常与 IMAP 服务器建立连接。
五、通用因特网邮件扩充 MIME
SMTP 有以下缺点:SMTP 不能传送可执行文件或其他的二进制对象;SMTP 限于传送 7 位的 ASCII 码;SMTP 服务器会拒绝超过一定长度的邮件;某些 SMTP 的实现并没有完全按照[RFC 821]的 SMTP 标准。
MIME 的特点:MIME 并没有改动 SMTP 或取代它;MIME 的意图是继续使用目前的[RFC 822]格式, 但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。
7.1.6 万维网 WWW
一、概述
万维网 WWW (World Wide Web)并非某种特殊的计算机网络。 万维网是一个大规模的、联机式的信息储藏所。万维网提供分布式服务 。
万维网是分布式超媒体(hypermedia)系统,它是超文本(hypertext)系统的扩充。万维网以客户服务器方式工作。
怎样标志分布在整个因特网上的万维网文档? 使用统一资源定位符 URL (Uniform Resource
Locator)来标志万维网上的各种文档。 使每一个文档在整个因特网的范围内具有唯一的标识符 URL。用何协议实现万维网上各种超链的链接? 在万维网客户程序与万维网服务器程序之间进行交互所
使用的协议,是超文本传送协议 HTTP (HyperText Transfer Protocol)。
怎样使各种万维网文档都能在因特网上的各种计算机上显示出来,同时使用户清楚地知道在什么地 方存在着超链? 超文本标记语言 HTML (HyperText Markup Language)使得万维网页面的设计者可以很方便地用一个超链从本页面的某处链接到因特网上的任何一个万维网页面,并且能够在自己的计算机屏 幕上将这些页面显示出来。
怎样使用户能够很方便地找到所需的信息? 为了在万维网上方便地查找信息,用户可使用各种的搜索工具(即搜索引擎)。
二、统一资源定位符 URL
统一资源定位符 URL 是对可以从因特网上得到的资源的位置和访问方法的一种简洁的表示。 URL 给资源的位置提供一种抽象的识别方法,并用这种方法给资源定位。 只要能够对资源定位,系统就可以对资源进行各种操作,如存取、更新、替换和查找其属性。 URL 相当于一个文件名在网络范围的扩展。
URL 的一般形式是:://<主机>:<端口>/<路径>
三、超文本传送协议 HTTP
万维网的工作过程 :
HTTP 的主要特点 : 是面向事务的客户服务器协议;HTTP 1.0 协议是无状态的;协议本身也是无连接的。
万维网高速缓存 (Web cache) :万维网高速缓存代表浏览器发出 HTTP 请求,因此又称为代理服务器(proxy server)。 万维网高速缓存将最近的一些请求和响应暂存在本地磁盘中。 使用高速缓存可减少 访问因特网服务器的时延。
HTTP 有两类报文:请求报文、响应报文
四、超文本标记语言 HTML
HTML 定义了许多用于排版的命令(标签)。 HTML 把各种标签嵌入到万维网的页面中。这样就构成了所谓的 HTML 文档。HTML 文档是一种可以用任何文本编辑器创建的 ASCII 码文件。
仅当 HTML 文档是以.html 或 .htm 为后缀时,浏览器才对此 文档的各种标签进行解释。
元素(element)是 HTML 文档结构的基本组成部分。一个 HTML 文档本身就是一个元素。每个 HTML 文档由两个主要元素组成:首部(head)和主体(body) 。文档的主体是 HTML 文档的最主要的部分。
HTML 用一对标签(即一个开始标签和一个结束标签)或几对标签来标识一个元素。 开始标签由一个小于字符"<"、一个标签名、和一个大于字符">"组成。 结束标签和开始标签的区别只是在小于字符的后面要加上一个斜线字符"/"。 虽然标签名并不区分大写和小写。 有一些标签可以将结束标签省略。
五、万维网页面中的超链
定义一个超链的标签是。字符 A 表示锚(Anchor)。
在 HTML 文档中定义一个超链的语法是: X
六、动态万维网文档与 CGI 技术
静态文档是指该文档创作完毕后就存放在万维网服务器中,在被用户浏览的过程中,内容不会改变。 动态文档是指文档的内容是在浏览器访问万维网服务器时才由应用程序动态创建。 动态文档和静态文档之间的主要差别体现在服务器一端。
万维网服务器功能的扩充 :(1) 应增加另一个应用程序,用来处理浏览器发来的数据,并创建动态文档。(2) 应增加一个机制,用来使万维网服务器把浏览器发来的数据传送给这个应用程序,然后万维网服务器能够解释这个应用程序的输出,并向浏览器返回 HTML 文档。
CGI 是一种标准,它定义了动态文档应如何创建,输入数据应如何提供给应用程序,以及输出结果应如何使用。 万维网服务器与 CG I 的通信遵循 CGI 标准。
7.2 C/S 交互模型
7.2.1 C/S 概述
C/S 又称 Client/Server 或客户/服务器模式。C/S 型数据库应用程序由两部分组成:服务器和客户机。服务器指数据库管理系统(Database Manage System,简称 DBMS),用于描述、管理和维护数据库的程序系统,是数据库系统核心组成部分,对数据库进行统一的管理和控制。客户机则将用户的需求 送交到服务器,再从服务器返回数据给用户。
C/S 型数据库非常适合于网络应用,可以同时被多个用户所访问,并赋予不同的用户以不同的安全权限。C/S 型数据库支持的数据量一般比文件型数据库大得多,还支持分布式的数据库(即同一数据库位于多台服务器上)。同时,C/S 型数据库一般都能完善地支持 SQL 语言(所以也被称做 SQL 数据库)。这些特性决定了 C/S 型数据库适合于高端应用。
常见的 C/S 型数据库有著名的 Oracle,Sybase,Informix,微软的 Microsoft SQL server,IEM 的 DB2,以及 Delphi 自带的 InterBase 等。
C/S 的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器, 对应的优点就是客户端响应速度快。缺点主要有以下几个:
· 只适用于局域网。而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这就需要系 统具有扩展性。
· 客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出现问题(如病毒、硬件损坏),都需要进行安装或维护。另外,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。
对客户端的操作系统一般也会有限制。可能适应于 Win98,但不能用于 Win2000 或 Windows XP。或者不适用于微软新的操作系统等,更不用说 Linux、UNIX 了。
7.2.2 C/S 模型
应用程序之间为了能顺利地进行通信,一方通常需要处于守候状态,等待另一方请求的到来。 在分布式计算中,一个应用程序被动地等待,而另一个应用程序通过请求启动通信的模式就是客户/服务器模式。
客户(Client)和服务器(Server)分别是指两个应用程序。客户向服务器发出服务请求,服 务器对客户的请求作出响应。如下图所示为一个通过互联网进行交互的客户/服务器模型。在图9.1 中,服务器处于守候状态,并监视客户端的请求。客户端发出请求,并请求经互联网传输给服务器。一旦服务器接收到这个请求,就可以执行请求所指定的任务,并将执行的结果经互联网回送 给客户。
7.2.3 C/S 特性
一台主机上通常可以运行多个服务器程序,每个服务器程序需要并发地处理多个客户的请求, 并将处理的结果返回给客户。在下图中,运行服务器程序的主机同时提供 Web 服务、FTP 服务和文件服务。由于客户 1、客户 2 和客户 3 分别运行访问文件服务和 Web 服务的客户端程序,因此,通过互联网,客户 1 可以访问运行文件服务主机上的文件系统,而 Web 服务器程序根据客户 2 和客户
3 的请求,同时为他们提供服务。
在互连网络中,客户发起请求完全是随机的,可能出现多个请求同时到达服务器的情况。因此,服务器 必须具备处理多个并发请求的能力,服务器有两种实现方案。
(1)重复服务器(Iterative Server)方案
服务器程序中包含一个请求队列,客户请求到达后,首先进入队列中等待,服务器按照先进先出的 原则顺序作出响应。
(2)并发服务器(Concurrent Server)方案
并发服务器是一个守护进程,在没有请求到达时它处于等待状态。一旦客户请求到达,服务器立即 再为之创建一个子进程,然后回到等待状态,由子进程响应请求。当下一个子进程到达时,服务器 再为之创建一个子进程。其中,并发服务器叫做主服务器,子进程叫做从服务器。
7.3 常用网络命令
Linux 作为一个基于网络的操作系统,它提供了很多网络调试程序,这些程序由 net-tools 包或单独的安装包中提供。
常用网络命令:
· ping 一 发送一个ICMP ECHO_REQUEST到目的主机,通常用来测试网络联通状况
· traceroute 一 搜寻一个主机到另一个手机之间经历的路由器
· ifconfig 一 查看和修改网络接口配置信息
· route 一 查看和修改路由表
· netstat 一 查看网络连接信息
· host,dig,nslookup — dns查询命令
· whois — whois目录服务客户端
· iptables 一 配置主机包过滤器和Nat透明代理
· arp 一 查看和修改系统arp缓存
· arping 一 发送arp广播,并显示回应信息
· ssh 一 安全远程login客户端,使用ssl通讯
· sftp 一 安全文件传输,使用ssl
· ftp 一 文件传输程序
· tftp 一简单的文件传输程序,使用udp协议
· telnet 一远程login客户端
下面将介绍上面列出的部分网络命令的使用方法: ifconfig
ifconfig 程序用来配置网络接口,它可以用来设置网络接口的 lP 地址,子网掩码,广播地址,以太网地址等等。同时它也能列表网络接口的配置信息,如使用-a 参数。
ifconfig 有着复杂的参数列表,这里并不详细叙述每个参数的使用方法,下面仅给出一些使用
ifconfig 命令的的实例:
· ifconfig eth0 down 关闭eth0网络接口
· ifconfig eth0 up 启用eth0网络接口
· ifconfig eth0 arp 启用eth0接口的arp能力
· ifconfig eth0 -arp 关闭eth0接口的arp能力
· ifconfig eth0 netmask 255.255.255.0 设置eth0接口的子网掩码为255.255.255.0
· ifconfig eth0 192.168.2.12 设置eth0接口IP地址为l92.168.2.12
· ifconfig eth0.broadcast l92.168.2.255 将第一块网卡的广播地址设置为
· 192.168.2.255,
· ifconfig 列出接口信息这些参数可以组合使用如:
· ifconfig eth0 192.168.2.12 netmask 255.255.255.0
route
route 命令是用来查看和设置系统的路由信息,以实现与其他网络或主机的通讯。
· route 罗列出当前路由表所有条目
· route add default gw l92.168.0.254 设置默认路由为192.168.0.254
· route del l92.168.3.19 删除路由表中到指定主机或网路的条目
ping
ping 是一个最常用的检测是否能够与远端机器建立网络通讯连接的命令。它是通过 Internet 控制报文协议 ICMP 的回射请求命令实现的。同样的,在此不罗列 ping 命令的所有可选参数,举例说明 ping 的常见用法:
· ping 192.168.2.1 检测本机到192.168.2.1的连通性。
· ping www.google.cn检测本机到www.google.cn的连通性
· ping -c 4 192.168.2.1 在Linux下,如果你不指定-c参数,ping命令将一直不断地向远 方机器发送ICMP信息。可以通过-c参数来指定发送ICMP的数量。
· ping -I eth0 l92.168.0.1 有时,我们需要检测系统的某个接口能否连接到远程系统, 需要在执行ping命令时用-I参数指出接口名
traceroute
当不能成功连接至远程主机时,traceroute 可以帮助找到在哪里出了问题,或者你想知道你的信息到远方机器都经过了哪些路由器,可以使用 traceroute 命令。
Traceroute www.google.cn 查询主机到 www.google.cn 中途经历了哪几个路由器。
netstat
在Linux 系统中,netstat 是一个功能十分强大的查看网络状态的工具。同样,我们只是列出netstat的常见用法:
· netstat -i 这个命令将输出所有网络接口信息的统计表,其中包括:
· lface:网络接口名
· MTU:最大传输单元
· RX-OK:共成功接收多少个包
· RX-ERR:接收的包中共有多少个错误包
· RX-DRP:接收时共丢失多少个包
· RX-OVR:共接收了多少个冲突包
· TX-OK:共成功发送多少个包
· TX-ERR:发送的包中共有多少个错误包
· TX-DRP:共丢失多少个包
· TX-OVR:共接收了多少个冲突的包
· netstat -s 显示网络的统计信息,使用这个命令,将会以摘要的形式统计出 IP、ICMP、TCP、UDP、
TCPEXT 形式的通信信息。
· netstat_-an 显示本机的所有连接信息。
· netstat -r 显示路由衷,输出与 route 命令的格式相同。
arp
在 IP 协议中 arp 协议用来查询子网中某个 IP 地址其对应的以太网地址,它通过发送以太网广播的方式发送查询信息,并获取对方的应答,除了查询方式,还有一种获取 arp 信息的手段,通常一台主机修改了本地接口的 I P 地址会主动以以太网广播的形式发送 arp 联编信息,以更新其他主机的 arp 条目。
arp 命令是用来查看和修改本地缓存的 arp 路由信息,下-面列举几个常见的 arp 命令用法:
· arp -a 显示本地 arp 条目
· arp -s l92.168.2.12 2a:4d:00:25:e0:3f 手动添加一条静态的 arp 条目,所谓静态,就是该信息不会被收到的动态地址联编信息所改变,该对应关系将一直保持到系统重启。
· arp -d l92.168.2.12 手动删除一个 arp 条目。
本文暂时没有评论,来添加一个吧(●'◡'●)