您的位置:首页 > 其它

熟悉基本通信协议(5)应用层(高层)

2013-08-19 16:55 260 查看
第五、应用层知识框架.

在本阶段应该掌握下边内容:(只是总结了精华部分)

一、应用层协议的特点。

  (1)每个应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。应用层的具体内容就是规定应用进程在通信时所遵循的协议。

  (2)应用层的许多协议都是基于客户服务器方式。客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。客户服务器方式所描述的是进程之间服务和被服务的关系。客户是服务请求方,服务器是服务提供方。

二、域名系统DNS

(一)域名系统概述

  (1)许多应用层软件经常直接使用域名系统 DNS (Domain Name System),但计算机的用户只是间接而不是直接使用域名系统。

  (2)因特网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS。

  (3)名字到域名的解析是由若干个域名服务器程序完成的。域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。

(二)因特网的域名结构

  (1)因特网采用了层次树状结构的命名方法。

  (2)任何一个连接在因特网上的主机或路由器,都有一个惟一的层次结构的名字,即域名。

  (3)域名的结构由若干个分量组成,各分量之间用点隔开:

… .三级域名.二级域名.顶级域名

  (4)各分量分别代表不同级别的域名.

(三)顶极域名TLD(Top Level Domain)

  (1) 国家顶级域名 nTLD:如: .cn 表示中国,.us 表示美国,.uk 表示英国,等等。

  (2) 国际顶级域名 iTLD:采用.int。国际性的组织可在 .int 下注册。

  (3) 通用顶级域名 gTLD:最早的顶级域名是:

  .com表示公司企业

  .net表示网络服务机构

  .org表示非赢利性组织

  .edu表示教育机构(美国专用)

  .gov表示政府部门(美国专用)

  .mil表示军事部门(美国专用)

(四)新增加了七个通用顶级域名

  (1).aero 用于航空运输企业

  (2).biz 用于公司和企业

  (3).coop 用于合作团体

  (4).info适用于各种情况

  (5).museum用于博物馆

  (6).name用于个人

  (7).pro用于会计、律师和医师等自由职业者

三、FTP的基本工作原理(非常重要,在很多公司都要求你具备这一基本的操作能力)

(一)

  (1)网络环境中的一项基本应用就是将文件从一台计算机中复制到另一台可能相距很远的计算机中。

  (2)初看起来,在两个主机之间传送文件是很简单的事情。

  (3)其实这往往非常困难。原因是众多的计算机厂商研制出的文件系统多达数百种,且差别很大。

(二)网络环境下复制文件的复杂性

  (1) 计算机存储数据的格式不同。

  (2)文件的目录结构和文件命名的规定不同。

  (3) 对于相同的文件存取功能,操作系统使用的命令不同。

  (4) 访问控制方法不同。

(三)FTP特点

  (1)文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务。

  (2)FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。

  (3)FTP使用客户服务器方式。一个 FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。

(四)主进程的工作步骤如下

  (1)打开熟知端口(端口号为21),使客户进程能够连接上。

  (2)等待客户进程发出连接请求。

  (3)启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。

  (4)回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发地进行

(五)FTP使用的两个TCP连接

  (1)控制连接在整个会话期间一直保持打开,FTP 客户发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接不用来传送文件。

  (2)实际用于传输文件的是“数据连接”。服务器端的控制进程在接收到 FTP 客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。

  (3)数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。

(六)两个不同的端口号

  (1)当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口(21),同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。

  (2)接着,服务器进程用自己传送数据的熟知端口(20)与客户进程所提供的端口号码建立数据传送连接。

  (3)由于FTP使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。(备注:使用两个独立的连接的主要好处是使协议更加简单和更容易实现。在传输文件时还可以利用控制连接(例如,客户发送请求终止传输)。)

(七)FTP的屏幕信息举例(详细资料读者可以下载相关的教程或应用软件)推荐网站:――――

[01] ftp nic.ddn.mil

[02] connected to nic.ddn.mil

[03] 220 nic FTP server (Sunos 4.1)ready.

[04] Name: anonymous

[05] 331 Guest login ok, send ident as password.

[06] Password: abc@xyz.math.yale.edu

[07] 230 Guest login ok, access restrictions apply.

[08] ftp> cd rfc

[09] 250 CWD command successful.

[10] ftp> get rfc1261.txt nicinfo

[11] 200 PORT command successful.

[12] 150 ASCII data connection for rfc1261.txt

(128.36.12.27,1401) (4318 bytes).

[13] 226 ASCII Transfer complete.

local: nicinfo remote: rfc1261.txt

4488 bytes received in 15 seconds (0.3 Kbytes/s).

[14] ftp> quit

[15] 221 Goodbye.

详细解释:

[01] ftp nic.ddn.mil

[01] 用户要用 FTP 和远地主机(网络信息中心

NIC 上的主机)建立连接。

[02] connected to nic.ddn.mil

[02]本地 FTP 发出的连接成功信息。

[03] 220 nic FTP server (Sunos 4.1)ready.

[03] 从远地服务器返回的信息,220 表示“服务就绪”

[04] Name: anonymous

[04] 本地 FTP 提示用户键入名字。用户键入的名字

  表示“匿名”。用户只需键入 anonymous 即可。

[05] 331 Guest login ok, send ident as password.

[05] 数字 331 表示“用户名正确”,需要口令。

[06] Password: abc@xyz.math.yale.edu

[06] 本地 FTP 提示用户键入口令。用户这时可键入

  guest 作为匿名的口令,也可以键入自己的电子邮件

  地址,即耶鲁大学数学系名为 xyz 的主机上的 abc。

[07] 230 Guest login ok, access restrictions apply.

[07] 数字 230 表示用户已经注册完毕。

[08] ftp> cd rfc

[08] “ftp>”是 FTP 的提示信息。用户键入的是将

  目录改变为包含 RFC 文件的目录。

[09] 250 CWD command successful.

[09] 字符 CWD 是 FTP 的标准命令,

  代表 ChangeWorking Directory。

[10] ftp> get rfc1261.txt nicinfo

[10] 用户要求将名为 rfc1261.txt 的文件复制到

  本地主机上,并改名为 nicinfo。

[11] 200 PORT command successful.

[11] 字符 PORT 是 FTP 的标准命令,表示要

  建立数据连接。200 表示“命令正确”。

[12] 150 ASCII data connection for rfc1261.txt

(128.36.12.27,1401) (4318 bytes).

[12] 数字 150 表示“文件状态正确,

即将建立数据连接”。

[13] 226 ASCII Transfer complete.

local: nicinfo remote: rfc1261.txt

4488 bytes received in 15 seconds (0.3 Kbytes/s).

[13] 数字 226 是“释放数据连接”。

  现在一个新的本地文件已产生。

[14] ftp> quit

[14] 用户键入退出命令

[15] 221 Goodbye.

[15] 表明 FTP 工作结束。

(八)NFS采用另一种思路

  NFS(网络文件系统,Network File System)是由美国SUN微系统公司开发的一个协议,它能使计算机系统通过网络访问其它计算机系统的目录和文件,就好象这些文件被存储在本地硬盘上一样。


  (1)NFS允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据。

  (2)NFS可使用户只复制一个大文件中的一个很小的片段,而不需要复制整个大文件。

  (3)对于上述例子,计算机 A 的 NFS 客户软件,把要添加的数据和在文件后面写数据的请求一起发送到远地的计算机 B 的 NFS 服务器。NFS 服务器更新文件后返回应答信息。

  (4)在网络上传送的只是少量的修改数据。

四、简单文件传送协议TFTP(Trivial File Transfer Protocol)

(一)


  (1)是一个很小且易于实现的文件传送协议。

  (2)TFTP使用客户服务器方式和使用 UDP 数据报,因此 TFTP 需要有自己的差错改正措施。(在这里我要罗嗦几句:您可能会疑问停止等待协议里边有确认和重传,而TFTP所使用的是UDP数据报方式,都很清楚UDP数据报呢是非面向连接的即没有重传和确认,那么怎么它的工作方式还和停止等待协议相类似呢?问题关键在于这里的确认重传也好、差错纠错也好,都是由上层应用软件来实现的,而不是我们想象的在数据链路层实现。)  

  (3)TFTP只支持文件传输而不支持交互。

  (4)TFTP没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。

(二)TFTP的主要特点是什么?

  (1) 每次传送的数据 PDU 中有 512 字节的数据,但最后一次可不足 512 字节。

  (2) 数据 PDU 也称为文件块(block),每个块按序编号,从 1 开始。

  (3) 支持 ASCII 码或二进制传送。

  (4) 可对文件进行读或写。

  (5) 使用很简单的首部。

(三)TFTP 的工作很像停止等待协议

  (1)发送完一个文件块后就等待对方的确认,确认时应指明所确认的块编号。

  (2)发完数据后在规定时间内收不到确认就要重发数据 PDU。

  (3)发送确认 PDU 的一方若在规定时间内收不到下一个文件块,也要重发确认 PDU。这样就可保证文件的传送不致因某一个数据报的丢失而告失败。

  (4)在一开始工作时。TFTP 客户进程发送一个读请求 PDU 或写请求 PDU 给 TFTP 服务器进程,其熟知端口号码为 69。

  (5)TFTP 服务器进程要选择一个新的端口和 TFTP 客户进程进行通信。

  (6)若文件长度恰好为 512 字节的整数倍,则在文件传送完毕后,还必须在最后发送一个只含首部而无数据的数据 PDU。

  (7)若文件长度不是 512 字节的整数倍,则最后传送数据 PDU 的数据字段一定不满512字节,这正好可作为文件结束的标志。

五、按远程终端协议 TELNET

(一)TELNET用TCP进行连接时使用网络虚拟终端 NVT 格式

  (1)TELNET是一个简单的远程终端协议,也是因特网的正式标准。

  (2)用户用 TELNET 就可在其所在地通过 TCP 连接注册(即登录)到远地的另一个主机上(使用主机名或IP地址)。

  (3)TELNET能将用户的击键传到远地主机,同时也能将远地主机的输出通过 TCP 连接返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上。

(二)客户服务器方式

  (1)现在由于 PC 机的功能越来越强,用户已较少使用 TELNET 了。

  (2)TELNET也使用客户服务器方式。在本地系统运行 TELNET 客户进程,而在远地主机则运行 TELNET 服务器进程。

  (3)和 FTP的情况相似,服务器中的主进程等待新的请求,并产生从属进程来处理每一个连接。

六、电子邮件

(一)概述

  (1)电子邮件(e-mail)是因特网上使用得最多的和最受用户欢迎的一种应用。

  (2)电子邮件把邮件发送到 ISP 的邮件服务器,并放在其中的收信人邮箱中,收信人可随时上网到 ISP 的邮件服务器进行读取。

  (3)电子邮件不仅使用方便,而且还具有传递迅速和费用低廉的优点。

  (4)现在电子邮件不仅可传送文字信息,而且还可附上声音和图像。

(二)电子邮件的一些标准

  (1)在 1982年制定出简单邮件传送协议 SMTP (Simple Mail Transfer Protocol) 和因特网文本报文格式,它们都已成为因特网的正式标准。

  (2)1993年提出了通用因特网邮件扩充 MIME (Multipurpose Internet Mail Extensions)。

  (3)MIME在其邮件首部中说明了邮件的数据类型(如文本、声音、图像、视像等)。在 MIME 邮件中可同时传送多种类型的数据。

(三)用户代理UA (User Agent) (其实就是邮件服务器,第三方机器)

  (1)用户代理 UA 就是用户与电子邮件系统的接口。

  (2)用户代理的功能是:撰写、显示和处理。

  (3)邮件服务器的功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。

  (4)邮件服务器按照客户服务器方式工作。邮件服务器需要使用两个不同的协议。

  (备注:一个邮件服务器既可以作为客户,也可以作为服务器。例如,当邮件服务器 A 向另一个邮件服务器 B 发送邮件时,邮件服务器 A 就作为 SMTP 客户,而 B 是 SMTP 服务器。当邮件服务器 A 从另一个邮件服务器 B 接收邮件时,邮件服务器 A 就作为 SMTP 服务器,而 B是 SMTP 客户。)

  a)SMTP协议用于发送邮件。

  b)邮局协议 POP (Post Office Protocol) 用于接收邮件。

(四)电子邮件的发送和接收过程

  (1) 发信人调用用户代理来编辑要发送的邮件。

用户代理用 SMTP 把邮件传送给发送端邮件服务器。

  (2) 发送端邮件服务器将邮件放入邮件缓存队列中,等待发送。

  (3) 运行在发送端邮件服务器的 SMTP 客户进程,发现在邮件缓存中有待发送的邮件,就向运行在接收端邮件服务器的 SMTP 服务器进程发起 TCP 连接的建立。

  (4)TCP 连接建立后,SMTP 客户进程开始向远程的 SMTP 服务器进程发送邮件。当所有的待发送邮件发完了,SMTP 就关闭所建立的 TCP 连接。

  (5)运行在接收端邮件服务器中的 SMTP 服务器进程收到邮件后,将邮件放入收信人的用户邮箱中,等待收信人在方便时进行读取

  (6)收信人在打算收信时,调用用户代理,使用 POP3(或 IMAP)协议将自己的邮件从接收端邮件服务器的用户邮箱中的取回(如果邮箱中有来信的话)。 (备注:这里具体说SMTP服务器我认为是不够准确的,应该为SMTP服务进程。这个进程在两端的软件上都有,在代理服务器上也会运行这个进程。)

(五)电子邮件的组成

  (1)电子邮件由信封(envelope)和内容(content)两部分组成。

  (2)电子邮件的传输程序根据邮件信封上的信息来传送邮件。用户在从自己的邮箱中读取邮件时才能见到邮件的内容。

  (3)在邮件的信封上,最重要的就是收信人的地址。

(六)电子邮件的地址格式(这个就很简单了,大家每天都在用)

  (1)TCP/IP 体系的电子邮件系统规定电子邮件地址的格式如下:

  a)收信人邮箱名@邮箱所在主机的域名

  (2)符号“@”读作“at”,表示“在”的意思。

  (3)例如,电子邮件地址 xiexiren@tsinghua.org.cn

  前面的:这个用户名在该域名的范围内是惟一的。

  后面的:邮箱所在的主机的域名在全世界必须是惟一的

(七)简单邮件传送协议SMTP

  (1)SMTP 所规定的就是在两个相互通信的 SMTP 进程之间应如何交换信息。

  (2)由于 SMTP使用客户服务器方式,因此负责发送邮件的 SMTP 进程就是 SMTP 客户,而负责接收邮件的 SMTP 进程就是 SMTP 服务器。

  (3)SMTP 规定了 14 条命令和 21 种应答信息。每条命令用 4 个字母组成,而每一种应答信息一般只有一行信息,由一个 3 位数字的代码开始,后面附上(也可不附上)很简单的文字说明。

(八)SMTP的通信的三个阶段

  (1)连接建立:连接是在发送主机的 SMTP 客户和接收主机的 SMTP 服务器之间建立的。SMTP不使用中间的邮件服务器。

  (2)邮件传送

  (3)连接释放:邮件发送完毕后,SMTP 应释放 TCP 连接。

(九)邮件读取协议POP3 和 IMAP

  (1)邮局协议 POP 是一个非常简单、但功能有限的邮件读取协议,现在使用的是它的第三个版本 POP3。

  (2)POP也使用客户服务器的工作方式。

  (3)在接收邮件的用户 PC 机中必须运行 POP 客户程序,而在用户所连接的 ISP 的邮件服务器中则运行 POP 服务器程序。

七、万维网 WWW

(一)概述(万维网提供分布式服务)

  (1)万维网 WWW (World Wide Web)并非某种特殊的计算机网络。

  (2)万维网是一个大规模的、联机式的信息储藏所。

  (3)万维网用链接的方法能非常方便地从因特网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。

  (4)这种访问方式称为“链接”。

(二)超媒体与超文本

  (1)万维网是分布式超媒体(hypermedia)系统,它是超文本(hypertext)系统的扩充。

  (2)一个超文本由多个信息源链接成。利用一个链接可使用户找到另一个文档。这些文档可以位于世界上任何一个接在因特网上的超文本系统中。超文本是万维网的基础。

  (3)超媒体与超文本的区别是文档内容不同。超文本文档仅包含文本信息,而超媒体文档还包含其他表示方式的信息,如图形、图像、声音、动画,甚至活动视频图像。

(三)万维网的工作方式

  (1)万维网以客户服务器方式工作。

  (2)浏览器就是在用户计算机上的万维网客户程序。万维网文档所驻留的计算机则运行服务器程序,因此这个计算机也称为万维网服务器。

  (3)客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。

  (4)在一个客户程序主窗口上显示出的万维网文档称为页面(page)。

(四)超文本传输协议HTTP

(1)HTTP的操作过程:


  a)为了使超文本的链接能够高效率地完成,需要用 HTTP 协议来传送一切必须的信息。

  b)从层次的角度看,HTTP 是面向事务的(transaction-oriented)应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

(2)用户点击鼠标后所发生的事件

a)浏览器分析超链指向页面的 URL。

b)浏览器向 DNS 请求解析 www.tsinghua.edu.cn 的 IP 地址。

c)域名系统 DNS 解析出清华大学服务器的 IP 地址。

d)浏览器与服务器建立 TCP 连接

e)浏览器发出取文件命令:

  1.GET /chn/yxsz/index.htm。

f)服务器 给出响应,把文件 index.htm 发给浏览器。

g)TCP 连接释放。

h)浏览器显示“清华大学院系设置”文件 index.htm 中的所有文本。

(3)HTTP 的主要特点

  a)HTTP是面向事务的客户服务器协议。

  b)HTTP1.0 协议是无状态的(stateless)。

  c)HTTP协议本身也是无连接的,虽然它使用了面向连接的 TCP 向上提供的服务。

  d)万维网浏览器就是一个 HTTP 客户,而在万维网服务器等待 HTTP 请求的进程常称为 HTTP daemon,有的文献将它缩写为 HTTPD。

  e)HTTPdaemon 在收到 HTTP 客户的请求后,把所需的文件返回给 HTTP 客户。

(4)HTTP 的报文结构

  HTTP 有两类报文:

  a)请求报文——从客户向服务器发送请求报文。(请求行包括方法、URL版本、回车换行CRLF;详细说明:版本是http的版本)

  b)响应报文——从服务器到客户的回答。

  c)由于HTTP 是面向正文的(text-oriented),因此在报文中的每一个字段都是一些 ASCII 码串,因而每个字段的长度都是不确定的。

  (备注A:报文由三个部分组成,即开始行其实就是状态行类型的、首部行和实体主体。状态行包括三项内容:即http版本、状态码、以及解释状态码的简单词语。在请求报文中,开始行就是请求行。“方法”是面向对象技术中使用的专门名词。所谓“方法”就是对所请求的对象进行的操作,因此这些方法实际上也就是一些命令。因此,请求报文的类型是由它所采用的方法决定的。)

  (备注B:状态码都是三位数字

  A.1xx表示通知信息的,如请求收到了或正在进行处理。

  B.2xx表示成功,如接受或知道了。

  C.3xx表示重定向,表示要完成请求还必须采取进一步的行动。

  D.4xx表示客户的差错,如请求中有错误的语法或不能完成。

  E.5xx表示服务器的差错,如服务器失效无法完成请求。)

(5)HTTP 请求报文的一些方法 (说到这里呢,学过java开发和JSP开发的人应该对这些方法有些眼熟或者很熟,尤其是get和post方法)

方法(操作) 意义

a) OPTION 请求一些选项的信息

b) GET 请求读取由URL所标志的信息

c) HEAD 请求读取由URL所标志的信息的首部

d) POST 给服务器添加信息(例如,注释)

e) PUT 在指明的URL下存储一个文档

f) DELETE 删除指明的URL所标志的资源

g) TRACE 用来进行环回测试的请求报文

h) CONNECT 用于代理服务器




熟悉基本通信协议(续5)应用层(高层)



2006-12-02 23:00:31


续上

八、引导程序协议 BOOTP 与动态主机配置协议 DHCP(有印象的话我在前面章节里提到过这两个协议前者是静态的分配IP地址,后者是动态的,并且能够完成前者所有的功能和前者不能完成的一些功能。)

(一)引导程序协议BOOTP

  (1)为了将软件协议做成通用的和便于移植,协议软件的编写者把协议软件参数化。这就使得在很多台计算机上使用同一个经过编译的二进制代码成为可能。

  (2)一台计算机和另一台计算机的区别,都可通过一些不同的参数来体现。

  (3)在软件协议运行之前,必须给每一个参数赋值。

(二)协议配置

  (1)在协议软件中给这些参数赋值的动作叫做协议配置。

  (2)一个软件协议在使用之前必须是已正确配置的。

  (3)具体的配置信息有哪些则取决于协议栈

  (备注:这里提到一个用户配置文件的概念:就是在用户登录时定义系统加载所需环境的设置和文件的集合。它包括所有用户专用的配置设置,如程序项目、屏幕颜色、网络连接、打印机连接、鼠标设置及窗口的大小和位置。

当你第一次登录到一台基于Microsoft Windows XP、Windows 2000或Windows NT? Workstation的计算机上时,系统就会为你创建一个专用的配置文件。 )

(三)连接到因特网的计算机的协议软件需要配置的项目

  (1) IP地址

  (2) 子网掩码

  (3) 默认路由器的IP地址

  (4) 域名服务器的IP地址

  a)这些信息通常存储在一个配置文件中,计算机在引导过程中可以对这个文件进行存取。

(三)引导程序协议 BOOTP (BOOTstrap Protocol)

  (1)也称为自举协议 。

  (2)BOOTP使用客户服务器工作方式。

  (3)协议软件广播 BOOTP 请求报文,此报文作为 UDP 用户数据报的数据,UDP 用户数据报再作为 IP 数据报的数据。

  (4)收到请求报文的 BOOTP 服务器查找发出请求的计算机的各项配置信息,把配置信息放入 BOOTP 回答报文中,并把回答报文返回给提出请求的计算机。

(四)BOOTP 报文的传送

  (1)由于计算机发送 BOOTP 请求报文时自己还没有 IP 地址,因此它使用全 1 广播地址(只在本网络上广播)作为目的地址,而用全 0 地址作为源地址。

  (2)BOOTP服务器可使用广播方式将回答报文返回给该计算机,或使用收到广播帧上的硬件地址进行单播。

  (3)只需发送一个 BOOTP 广播报文就可获取所需的全部配置信息。

(五)动态主机配置协议 DHCP(Dynamic Host Configuration Protocol)

  (1)动态主机配置协议 DHCP 提供了即插即用连网(plug-and-play networking)的机制。

  (2)这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与。

  (3)DHCP 是扩展了的BOOTP。

  (4)DHCP 与 BOOTP 是向后兼容的,并且它们所使用的报文格式都很相似。

(六)DHCP使用客户服务器方式

  (1)需要 IP地址的主机在启动时就向 DHCP 服务器广播发送发现报文(DHCPDISCOVER),这时该主机就成为 DHCP 客户。

  (2)本地网络上所有主机都能收到此广播报文,但只有 DHCP 服务器才回答此广播报文。

  (3)DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的 IP 地址池(address pool)中取一个地址分配给该计算机。DHCP 服务器的回答报文叫做提供报文(DHCPOFFER)。

(七)DHCP 中继代理(relay agent)

  (1)并不是每个网络上都有 DHCP 服务器,这样会使 DHCP 服务器的数量太多。现在是每一个网络至少有一个 DHCP 中继代理,它配置了 DHCP 服务器的 IP 地址信息。

  (2)当 DHCP中继代理收到主机发送的发现报文后,就以单播方式向 DHCP 服务器转发此报文,并等待其回答。收到 DHCP 服务器回答的提供报文后,DHCP 中继代理再将此提供报文发回给主机。(备注:注意:DHCP 报文只是 UDP 用户数据报中的数据。)

(八)租用期(lease period)

  (1)DHCP服务器分配给 DHCP 客户的 IP 地址的临时的,因此 DHCP 客户只能在一段有限的时间内使用这个分配到的 IP 地址。DHCP 协议称这段时间为租用期。

  (2)租用期的数值应由 DHCP 服务器自己决定。

  (3)DHCP客户也可在自己发送的报文中(例如,发现报文)提出对租用期的要求。

(九)DHCP协议的工作过程

  ①:DHCP 服务器被动打开 UDP 端口 67, 等待客户端发来的报文。

  ②:DHCP 客户从 UDP 端口 68 发送 DHCP 发现报文。

  ③:凡收到 DHCP 发现报文的 DHCP 服务器都发出 DHCP 提供报文,因此 DHCP 客户 可能收到多个 DHCP 提供报文。

  ④:DHCP客户从几个 DHCP 服务器中选择其中的一个,并向所选择的 DHCP 服务器发送 DHCP 请求报文。

  ⑤:被选择的 DHCP 服务器发送确认报文 DHCPACK,进入已绑定状态,并可开始使用得到的临时 IP 地址了。DHCP 客户现在要根据服务器提供的租用期 T 设置两个计时器 T1 和 T2,它们的超时时间分别是 0.5T 和 0.875T。当超时时间到就要请求更新租用期。

  ⑥:租用期过了一半(T1 时间到),DHCP 发送请求报文 DHCPREQUEST 要求更新租用期。

  ⑦:DHCP服务器若同意,则发回确认报文 DHCPACK。DHCP 客户得到了新的租 用期,重新设置计时器。

  ⑧:DHCP服务器若不同意,则发回否认报文DHCPNACK。这时 DHCP 客户必须立即停止使用原来的 IP 地址,而必须重新申请 IP 地址(回到步骤②)。若DHCP服务器不响应步骤⑥的请求报文DHCPREQUEST,则在租用期过了 87.5% 时,DHCP 客户必须重新发送请求报文 DHCPREQUEST(重复步骤⑥),然后又继续后面的步骤。

  ⑨:DHCP客户可随时提前终止服务器所提供的租用期,这时只需向 DHCP 服务器发送释放报文 DHCPRELEASE 即可。

九、应用进程跨越网络的通信系统调用和应用编程接口

(一)

  (1)大多数操作系统使用系统调用(system call)的机制在应用程序和操作系统之间传递控制权。

  (2)对程序员来说,每一个系统调用和一般程序设计中的函数调用非常相似,只是系统调用是将控制权传递给了操作系统。

(二)应用编程接口 API(Application Programming Interface)

  (1)当某个应用进程启动系统调用时,控制权就从应用进程传递给了系统调用接口。

  (2)此接口再将控制权传递给计算机的操作系统。操作系统将此调用转给某个内部过程,并执行所请求的操作。

  (3)内部过程一旦执行完毕,控制权就又通过系统调用接口返回给应用进程。

  (4)系统调用接口实际上就是应用进程的控制权和操作系统的控制权进行转换的一个接口,即应用编程接口 API。

  (多个应用进程使用系统调用的机制 :用户地址空间中的应用程序、系统调用接口就是由应用程序调用的系统函数、系统地址空间中的协议软件就是包括TCP/IP协议软件的操作系统内核)

(三)几种应用编程接口 API

  (1)BerkeleyUNIX 操作系统定义了一种 API,它又称为插口接口(socket interface)。

  (2)微软公司在其操作系统中采用了插口接口 API,形成了一个稍有不同的 API,并称之为 Windows Socket。

  (3)AT&T为其 UNIX 系统 V 定义了一种 API,简写为 TLI (Transport Layer Interface)。 (备注:应用进程通过插口接入到网络 )

(四)插口的作用

  (1)当应用进程需要使用网络进行通信时就发出系统调用,请求操作系统为其创建“插口”,以便把网络通信所需要的系统资源分配给该应用进程。

  (2)操作系统为这些资源的总和用一个号码来表示,并把此号码返回给应用进程。应用进程所进行的网络操作都必须使用这个号码。

  (3)通信完毕后,应用进程通过一个关闭插口的系统调用通知操作系统回收与该“号码”相关的所有资源。

(五)插口和 API 不同

  (1)插口是应用进程和网络之间的接口,因为插口既包含有运输层与应用层之间的端口号,又包含有机器的 IP 地址。

  (2)插口和应用编程接口 API 是性质不同的接口。

  (3)API 是从程序设计的角度定义了许多标准的系统调用函数。应用进程只要使用标准的系统调用函数就可得到操作系统的服务。

  (4)在这个意义上讲,API 是应用程序和操作系统之间的接口。

(六)应该牢记在心的东东

  (1)在插口以上的进程是受应用程序控制的,而在插口以下的 TCP 协议软件以及 TCP 使用的缓存和一些必要的变量等,则是受计算机操作系统的控制。

  (2)只要应用程序使用 TCP/IP 协议进行通信,它就必须通过插口与操作系统交互并请求其服务。

  (3)应用程序的开发者对插口以上的应用进程具有完全的控制,但对插口以下的运输层却只有少量的控制。

六、大家最关心的问题也是在实际中能真正派上用场的东西是子网号、广播地址等等的算法。下面我就总结一下这些方法。(说明:鉴于对于算法这一块网络上的朋友们众说纷纭,没有一个统一的算法,当然确实有很多种方法来解决同一个问题,但是也没有必要绕着弯子或者用显得很高深的东西来套读者,解决问题的方法不是越复杂越好,也不是越简单越好,而是要合适,让读者自己能够看明白你的算法,重要的不是你从什么参考资料上拷贝到你的博客,不能往那里一摆就算完了,就不负责任了,你还得保证它的正确性,废话少说,我来说正事儿!)

(一)先来介绍几个基本概念:

  (1)子网掩码
是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。就是两台计算机各自的IP地址与子网掩码进行与操作运算后,如果得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。

  (2)子网号:创建子网需要从IP地址中的主机号部分借出一定的位,用它定义子网地址就是子网号。我就简单一说,因为这些概念比较简单。

  (3)广播地址:所谓广播地址指同时向网上所有的主机发送报文,也就是说,不管物理网络特性如何,internet网支持广播传输。如136.78.255.255就是B类地址中的一个广播地址,你将信息送到此地址,就是将信息送给网络号为136.78的所有主机。主机号全1的就是广播地址,如我在楼下大吼一声,整栋楼都能听到。而相对的单播地址就是,我上门去找你聊天,其他人听不到。这个比喻够了吧,相当于咱村的大喇叭,有什么事儿,村长一说,都知道了。

(二)具体例子:

  题目:
地址172.16.10.33 子网掩码255.255.255.224的子网号和广播地址是什么?

  注意:有的地方会把这两个地址写成172.16.10.33/27(说明:前面是IP地址,斜杠后边的数字是表示子网掩码中1的个数,这个你可以把十进制255.255.255.244化成二进制,1的个数一目了然。)

  开始动手:

(1)
先判断IP地址是属于哪类(是A、B、C哪个?)很显然,从172得知是B类。就可知道默认的子网掩码是255.255.0.0,就可以知道从主机号借了11位

(2)把172.16.10.33和255.255.255.224化成二进制形式如下:

  IP地址: 10101100,00010000,00001010,00100001

  子网掩码:11111111,11111111,11111111,11100000

(3)二者相与得到:

        10101100,00010000,00001010,00100000

   将其转化为十进制为:

  172.16.10.32(这就是传说中的子网号)

(4)将IP地址的主机号全置为1即:

        10101100,00010000,00001010,00111111

  将其转化为十进制为:

  172.16.10.63(这就是传说中的广播地址)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: