5. 应用层协议
5.1 DNS(Domain Name System)
cache污染(IP欺骗、数据拦截或错误的master主机地址)。cache污染是指cache中内容可能将您的域名重定向到了一个错误的服务器。通常的应对方法是域名系统安全扩展(DNSSEC, Domain Name System Security Extensions),它为DNS客户端(解析器)提供DNS数据来源、数据完整性验证,但不提供或机密性和认证的拒绝存在扩展集。
递归查询
迭代查询
反向查询
DNS中有一个特殊的域名IN-ADDR.ARPA来专门作反向查询定义。
【问题】DNS使用什么协议?
答:TCP和UDP协议,具体是:DNS服务器间进行域传输的时候使用 TCP 53;客户端查询DNS服务器时使用 UDP 53,但当DNS查询超过512字节,TC标志出现时,使用TCP发送。
这是因为以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的。这个数据帧长度被称为链路层的MTU(最大传输单元)—— 实际Internet上的标准MTU值为576字节,也就是说链路层的数据区(不包括链路层的头部和尾部)被限制在576字节,所以这也就是网络层IP数据报的长度限制。
因为IP数据报的首部为20字节,所以IP数据报的数据区长度最大为556字节。而这个556字节就是用来放TCP报文段或UDP数据报的。我们知道UDP数据报的首部8字节,所以UDP数据报的数据区最大长度为548字节。—— 如果UDP数据报的数据区大于这个长度,那么总的IP数据包就会大于MTU,这个时候发送方IP层就需要分片(fragmentation),把数据报分成若干片,使每一片都小于MTU,而接收方IP层则需要进行数据报的重组。由于UDP的特性,当某一片数据传送中丢失时,接收方将无法重组数据报,从而导致丢弃整个UDP数据报。所以通常UDP的最大报文长度就限制为512字节或更小。
5.2 SMTP(Simple Mail Transfer Protocol)
TCP 25,在发送或中转信件时找到下一个目的地。
SMTP使用的是对称加密的方式,SMTPS在应用层使用的依然是SMTP协议,也是用来发送邮件的一种协议,它在SMTP基础上增加了SSL安全协议的验证,保证了SMTP的安全性和发送的痕迹(不会因为单方向删除而销毁发送过某个邮件的证据)。
SMTP的连接和发送过程
(a)建立TCP连接
(b)客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令;
服务器端正希望以OK作为响应,表明准备接收
(c)客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行;
服务器端则表示是否愿意为收件人接收邮件
(d)协商结束,发送邮件,用命令DATA发送
(e)以.表示结束输入内容一起发送出去
(f)结束此次发送,用QUIT命令退出
5.3 POP3(Post Office Protocol)
它被用户代理用来邮件服务器取得邮件。
通信过程
1) 用户运行用户代理(如Foxmail, Outlook Express)。
2) 用户代理(以下简称客户端)与邮件服务器(以下简称服务器端)的110端口建立TCP连接。
3) 客户端向服务器端发出各种命令,来请求各种服务(如查询邮箱信息,下载某封邮件等)。
4) 服务端解析用户的命令,做出相应动作并返回给客户端一个响应。
5) 3)和4)交替进行,直到接收完所有邮件转到步骤6),或两者的连接被意外中断而直接退出。
6) 用户代理解析从服务器端获得的邮件,以适当地形式(如可读)的形式呈现给用户。
电子邮件的发送和接收过程
5.4 Telnet
使用Telnet协议进行远程登录时需要满足以下条件:在本地计算机上必须装有包含Telnet协议的客户程序;必须知道远程主机的Ip地址或域名;必须知道登录标识与口令。
Telnet远程登录服务分为以下4个过程:
1)本地与远程主机建立连接。该过程实际上是建立一个TCP连接,用户必须知道远程主机的Ip地址或域名;
2)将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT(Net Virtual Terminal)格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP数据包;
3)将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;
4)最后,本地终端对远程主机进行撤消连接。该过程是撤销一个TCP连接。
5.5 FTP(File Transfer Protocol)
有基于TCP的FTP和基于UDP的简单文件传输协议TFTP,它们都是文件共享协议中的一大类,即复制整个文件,其特点是:若要存取一个文件,就必须先获得一个本地的文件副本。如果要修改文件,只能对文件的副本进行修改,然后再将修改后的文件传回到原节点。
工作原理
- 打开21端口,使客户进程能够连接上
- 等待客户进程发送连接请求
- 启动从属进程处理客户进程发送的连接请求,从属进程处理完请求后结束,从属进程在运行期间可能根据需要可创建其他一些子进程
- 回到等待状态,继续接受其他客户进程发起的请求,主进程与从属进程的处理是并发进行的
FTP控制连接在整个会话期间都保持打开,只用来发送连接/传送请求。当客户进程向服务器发送连接请求时,寻找连接服务器进程的21端口,同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。接着,服务器进程用自己传送数据的20端口与客户进程所提供的端口号码建立数据传送连接,FTP使用了2个不同的端口号,所以数据连接和控制连接不会混乱。
【问题1】如何知道FTP传送一个文件结束?
服务器总是执行数据连接的主动打开。通常服务器也执行数据连接的主动关闭,除非当客户向服务器发送流形式的文件时,需要客户来关闭连接(它给服务器一个文件结束的通知)。
传输方式是流方式,并且文件的结尾是以关闭数据连接为标志,这意味着对每一个文件传输或目录列表来说都要建立一个全新的数据连接。
假设客户用于控制连接的临时端口是 11 7 3,客户用于数据连接的临时端口是 11 7 4。客户发出的命令是PORT命令,其参数是6个ASCII中的十进制数字,它们之间由逗点隔开。前面 4个数字指明客户上的 I P地址,服务器将向它发出主动打开(本例中是 140.252.13.34),而后两位指明16 bit端口地址。由于16 bit端口地址是从这两个数字中得来,所以其值在本例中就是 4×256+150=1174。
参考:http://www.cnblogs.com/cobbliu/archive/2013/03/24/2979521.html
http://www.cnblogs.com/xdp-gacl/p/4209586.html
http://blog.csdn.net/kerry0071/article/details/28604267
http://blog.csdn.net/bripengandre/article/details/2192111
http://www.cnblogs.com/luoxn28/p/5585458.html