第十五讲 TCP/IP应用(4)
主要内容 6.1 域名系统(DNS) 6.2 DHCP服务 6.3 超文本传输协议(HTTP)和万维网(WWW) 6.3 超文本传输协议(HTTP)和万维网(WWW) 6.4 文件传输协议(FTP ) 6.5 远程登录(Telnet) 6.6 简单邮件传输协议(SMTP) 6.7 网络相关的工具软件
TCP/IP协议栈 物 理 层 数据链路层 传 输 层 网 络 层 应 用 层 FTP DNS HTTP SMTP TCP UDP IP 物 理 层 数据链路层 传 输 层 网 络 层 应 用 层 FTP DNS HTTP SMTP TCP UDP IP ARP RARP ICMP
6.6 简单邮件传输协议(SMTP) 6.6.1 SMTP的功能 6.6.2 邮件地址 6.6.3 SMTP邮件传送进程 6.6.2 邮件地址 6.6.3 SMTP邮件传送进程 6.6.4 邮件扩展协议MIME 6.6.5 邮局协议POP3 6.6.6 因特网信息访问协议IMAP
简单邮件传送协议 SMTP SMTP 所规定的就是在两个相互通信的 SMTP 进程之间应如何交换信息。 由于 SMTP 使用客户服务器方式,因此负责发送邮件的 SMTP 进程就是 SMTP 客户,而负责接收邮件的 SMTP 进程就是 SMTP 服务器。 SMTP 规定了 14 条命令和 21 种应答信息。每条命令用 4 个字母组成,而每一种应答信息一般只有一行信息,由一个 3 位数字的代码开始,后面附上(也可不附上)很简单的文字说明。
SMTP 通信的三个阶段 1. 连接建立:连接是在发送主机的 SMTP 客户和接收主机的 SMTP 服务器之间建立的。SMTP不使用中间的邮件服务器。 2. 邮件传送 3. 连接释放:邮件发送完毕后,SMTP 应释放 TCP 连接。
电子邮件地址的格式 TCP/IP 体系的电子邮件系统规定电子邮件地址的格式如下: 收信人邮箱名@邮箱所在主机的域名 符号“@”读作“at”,表示“在”的意思。 例如,电子邮件地址 xiexiren@tsinghua.org.cn 这个用户名在该域名 的范围内是唯一的。 邮箱所在的主机的域名 在全世界必须是唯一的
电子邮件的最主要的组成构件 (发送邮件) (发送邮件) (读取邮件) 用 户 代 理 用 户 代 理 SMTP 邮件 服务器 邮件 服务器 POP3 SMTP (TCP 连接) (TCP 连接) (TCP 连接) (发送邮件) 用户邮箱 SMTP (读取邮件) 接收方 发送方 (发送邮件) POP3 SMTP 因特网 用户代理 用户代理 邮件缓存 发送端 邮件服务器 接收端 邮件服务器
用户代理 UA (User Agent) 用户代理 UA 就是用户与电子邮件系统的接口。 用户代理的功能是:撰写、显示和处理。 邮件服务器的功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。 邮件服务器按照客户服务器方式工作。邮件服务器需要使用两个不同的协议。 SMTP 协议用于发送邮件。 邮局协议 POP (Post Office Protocol) 用于接收邮件。
应当注意 一个邮件服务器既可以作为客户,也可以作为服务器。 例如,当邮件服务器 A 向另一个邮件服务器 B 发送邮件时,邮件服务器 A 就作为 SMTP 客户,而 B 是 SMTP 服务器。 当邮件服务器 A 从另一个邮件服务器 B 接收邮件时,邮件服务器 A 就作为 SMTP 服务器,而 B是 SMTP 客户。
电子邮件的发送和接收过程 (1) 发信人调用用户代理来编辑要发送的邮件。 用户代理用 SMTP 把邮件传送给发送端邮件服务器。 (发送邮件) (TCP 连接) 用 户 代 理 用 户 代 理 邮件 服务器 邮件 服务器 接收方 发送方 因特网 用户代理 用户代理 邮件缓存 发送端 邮件服务器 接收端 邮件服务器 (1) 发信人调用用户代理来编辑要发送的邮件。 用户代理用 SMTP 把邮件传送给发送端邮件服务器。
电子邮件的发送和接收过程 (2) 发送端邮件服务器将邮件放入 邮件缓存队列中,等待发送。 (发送邮件) 用 户 代 理 用 户 代 理 SMTP 邮件 服务器 邮件 服务器 (TCP 连接) 接收方 发送方 (发送邮件) SMTP 因特网 邮件缓存 用户代理 用户代理 发送端 邮件服务器 接收端 邮件服务器 (2) 发送端邮件服务器将邮件放入 邮件缓存队列中,等待发送。
电子邮件的发送和接收过程 (3) 运行在发送端邮件服务器的 SMTP 客户进程,发现 在邮件缓存中有待发送的邮件,就向运行在接收端邮件 (发送邮件) SMTP (发送邮件) (发送邮件) (TCP 连接) 用 户 代 理 用 户 代 理 SMTP 邮件 服务器 邮件 服务器 (TCP 连接) 接收方 发送方 (发送邮件) SMTP 因特网 用户代理 用户代理 邮件缓存 发送端 邮件服务器 接收端 邮件服务器 (3) 运行在发送端邮件服务器的 SMTP 客户进程,发现 在邮件缓存中有待发送的邮件,就向运行在接收端邮件 服务器的 SMTP 服务器进程发起 TCP 连接的建立。
电子邮件的发送和接收过程 (发送邮件) SMTP (发送邮件) (发送邮件) (TCP 连接) 用 户 代 理 用 户 代 理 SMTP 邮件 服务器 邮件 服务器 (TCP 连接) 用户邮箱 接收方 发送方 (发送邮件) SMTP 因特网 用户代理 用户代理 邮件缓存 发送端 邮件服务器 接收端 邮件服务器 (4) TCP 连接建立后,SMTP 客户进程开始向远程的 SMTP 服务器进程发送邮件。当所有的待发送邮件发完了,SMTP 就关闭所建立的 TCP 连接。
电子邮件的发送和接收过程 (发送邮件) SMTP (发送邮件) (发送邮件) (TCP 连接) 用 户 代 理 用 户 代 理 SMTP 邮件 服务器 邮件 服务器 (TCP 连接) 用户邮箱 接收方 发送方 (发送邮件) SMTP 因特网 用户代理 用户代理 邮件缓存 发送端 邮件服务器 接收端 邮件服务器 (5) 运行在接收端邮件服务器中的 SMTP 服务器进程收到邮件后,将邮件放入收信人的用户邮箱中,等待收信人在方便时进行读取。
电子邮件的发送和接收过程 (发送邮件) SMTP (发送邮件) (发送邮件) (TCP 连接) POP3 (读取邮件) (TCP 连接) 用 户 代 理 用 户 代 理 SMTP 邮件 服务器 邮件 服务器 (TCP 连接) 用户邮箱 接收方 发送方 (发送邮件) SMTP 因特网 用户代理 用户代理 邮件缓存 发送端 邮件服务器 接收端 邮件服务器 (6) 收信人在打算收信时,调用用户代理,使用 POP3(或 IMAP)协议将自己的邮件从接收端邮件服务器的用户邮箱中的取回(如果邮箱中有来信的话)。
邮件读取协议POP3 邮局协议 POP 是一个非常简单、但功能有限的邮件读取协议,现在使用的是它的第三个版本 POP3。 在接收邮件的用户 PC 机中必须运行 POP 客户程序,而在用户所连接的 ISP 的邮件服务器中则运行 POP 服务器程序。
通用因特网邮件扩充 MIME SMTP 有以下缺点: SMTP 不能传送可执行文件或其他的二进制对象。 SMTP 限于传送 7 位的 ASCII 码。许多其他非英语国家的文字(如中文、俄文,甚至带重音符号的法文或德文)就无法传送。 SMTP 服务器会拒绝超过一定长度的邮件。 某些 SMTP 的实现并没有完全按照[RFC 821]的 SMTP 标准。
MIME 的特点 MIME 并没有改动 SMTP 或取代它。 MIME 的意图是继续使用目前的[RFC 822]格式,但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。
MIME 和 SMTP 的关系 用户 用户 非 ASCII 码 非 ASCII 码 MIME MIME 7 位 ASCII 码
MIME 主要包括三个部分 5 个新的邮件首部字段,它们可包含在[RFC 822]首部中。这些字段提供了有关邮件主体的信息。 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
6.7 网络相关的工具软件 6.7.1 ping命令 6.7.2 ipconfig命令 6.7.3 netstat命令 6.7.4 tracert命令 6.7.5 net命令
6.7.1 ping命令 1. 作用 Ping命令用于确定本地主机是否能与其他主机交换数据报。根据返回的信息,来判断TCP/IP参数是否设置正确以及运行是否正常。或者说,Ping是一个测试程序,如果Ping运行正确,大体上就可以排除网络访问层、网卡、MODEM的输入输出线路、电缆和路由器等存在的故障,从而减小了问题的范围。 若测试成功,将显示:Reply from …… 若测试失败,将显示:Request timed out 2.格式 ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-w timeout] [destination-list]
6.7.1 ping命令(续) 3.参数 [-t]:不停地向目标主机发送数据,直到按Ctrl+C强制中断为止。 [-a]:以IP地址格式来显示目标主机的网络地址。 [-n count]:指定Ping次数,默认值为4。 [-l length]:指定发送到目标主机的数据包的大小,默认为32字节,最大值为65527字节。 [-f]:在数据包中发送“不要分段”标志。默认情况下,发送的数据包都会被路由器分段后再发送给对方,加上此参数后路由器就不再对数据包进行分段处理。 [-i ttl]:将“生存时间”字段设置为ttl指定的值。 [-w timeout]:指定超时间隔,单位为毫秒。 [destination -list]:指定要ping的远程计算机 。
6.7.1 ping命令(续) 4.说明 按照缺省设置,Windows上运行的Ping命令发送4个ICMP(网间控制报文协议)回送请求,每个32字节数据,如果正常,应能得到4个回送应答。Ping能够以毫秒为单位显示发送回送请求到返回回送应答之间的时间量。如果应答时间短,表示数据报经过的路由器个数少或网络连接速度快。Ping还能显示TTL(Time To Live存在时间)值,可以通过TTL值推算出数据报经过的路由器个数,个数=源地点TTL起始值(比返回TTL大的最小2的乘方数)-返回时TTL值。如返回TTL值为119,那么比返回TTL大的最小2的乘方数应为128,则经过的路由器个数为9(128-119)。
6.7.1 ping命令(续) 5.测试(测试本机是否连通)
6.7.2 ipconfig命令 1.作用 2.格式 3.参数 4.说明 用于显示当前的TCP/IP配置的设置值。 ipconfig [/all|/renew [adapter]| /release[adapter]] 3.参数 [/all]:产生完整显示。 [/release或/renew [adapter]]:这两个参数只能在向DHCP服务器租用其IP地址的计算机上起作用。 4.说明 当IPConfig不带任何参数选项,则显示每个已经配置了的接口的IP地址、子网掩码和缺省网关值;当使用all选项,则显示更详细信息,包括本地网卡的物理地址(MAC)。如果IP地址是从DHCP服务器租用的,iPConfig将显示DHCP服务器的IP地址和租用地址预计失效的日期等。
6.7.2 ipconfig命令(续) 5.举例(显示接口配置情况)
6.7.3 netstat命令 1.作用 显示活动的TCP连接、计算机侦听的端口、以太网统计信息、IP路由表、IPv4统计信息(包括IP、ICMP、TCP 和UDP协议)以及IPv6统计信息(包括IPv6、ICMPv6、TCP v6和UDPv6协议)。如果不带参数,netstat显示活动的TCP连接。 2.格式 netstat [-a] [-e] [-n] [-s] [-p protocol] [-r] [interval]
6.7.3 netstat命令(续) 3. 参数 [-a]:显示所有活动的TCP连接的端口号,以及计算机侦听到的TCP和UDP端口号。 [-e]:显示以太网统计信息,如发送和接收的字节数、数据包数。该参数可以与-s结合使用。 [-n]:以数字表格形式显示地址和端口。 [-o]:显示活动的TCP连接并包括每个连接的进程ID(PID)。 [-p Protocol]:显示Protocol所指定的协议的连接。 [-s]:显示每个协议的使用状态。默认情况显示TCP、UDP、ICMP和IP协议的统计信息。如果安装了IPv6协议,则还会显示TCPv6、UDPv6、ICMPv6和IPv6协议的统计信息。 [-r]:显示本机的IP路由表内容,该参数与route print命令等价。 [Interval]:每隔Interval秒重新显示一次选定的信息,按CTRL+C停止重新显示统计信息。
6.7.3 netstat命令(续) 4. 说明 ⑴Netstat提供下列统计信息: Proto—协议的名称(TCP或UDP)。 Local Address—本地计算机的IP地址和正在使用的端口号。 Foreign Address—连接该插槽的远程计算机的IP地址和端口号码。 State—表明TCP连接的状态。 ⑵只有当网际协议(TCP/IP)协议在网络连接中安装为网络适配器属性的组件时,该命令才可用。
6.7.3 netstat命令(续) 5.举例(显示以太网统计信息)
6.7.4 tracert命令 此命令可以判断数据包到达目的主机所经过的路径,显示数据包经过的中继节点清单和到达时间。 Tracert[-d ][-h maximum_hops][-j host-list][-w timeout] target_name (2)主要参数如下: -d :不解析主机名。 -h maximum_hops :指定搜索到目的地址的最大跳数。 - j host-list :沿着主机列表释放源路由。 -w timeout :指定超时时间间隔(单位为毫秒)。 target_name :目标主机。 可以用“Tracert 某台远程主机的名称”来跟踪到这台主机的路由。
6.7.5 net命令 Net命令用于实用和核查计算机之间的NetBIOS连接 (1) net view UNC:用此命令查看目标服务器上的共享点名字。任何局域网里的人都可以发出此命令,而且不需要提供用户ID或口令。UNC名字总是以\\开头,后面跟随目标计算机的名字。例如,net view \\lx就是查看主机名为lx的计算机的共享点。 (2) net use 本地盘符 目标计算机共享点:本命令用于建立或取消到达特定共享点的映像驱动器的连接(如果需要,你必须提供用户ID或口令)。