应用层
0x00 DNS
-
递归查询(较为少用)
一定要注意在递归查询的过程中,最开始连接的服务器返回给客户端地址
在递归查询的方式中,用户主机和每一个域名服务器都仅发送了一条DNS查询请求,用户主机查不到就往上查本地域名服务器,本地域名服务器查不到,则此时本地域名服务器作为DNS客户端继续往上查。
-
递归与迭代相结合(又称迭代查询)
在域名解析的过程中,系统上的域名解析软件必须知道一个本地DNS的IP
0x01 FTP
FTP工作时使用2个并行的TCP连接,相对应也会使用2个端口,一个是使用21端口的控制连接,另一个是使用20端口的数据连接。因为控制信息的传送与数据传送是分离的,此过程又称为控制信息的带外传送。
注意:这里21端口的控制连接和20端口的数据连接都是在服务端的!
服务器监听在21端口等待客户连接,连接上之后此端口在整个会话期间一直保持打开的状态,用于连接的控制(例如中途停止传输)。
数据连接用来进行数据的传输,传送完成之后即刻关闭,控制连接在数据连接被释放后释放。
FTP提供交互式的访问,允许客户指明文件的类型与格式,允许文件具有存取权限,提供以用户权限管理的方式对远程FTP服务器上的文件进行管理,匿名FTP使用的用户名为anonymous。
0x02 电子邮件
邮件发送协议SMTP,邮件读取协议POP3,用户代理UA指的是电子邮件的用户接口(比如outlook)。SMTP只能传送7比特的ASCII码内容,所以就有了MIME,MIME定义了对非ASCII码数据的编码规则。
SMTP不使用中间邮件服务器,TCP连接在发送方和接收方的2个邮件服务器之间直接建立,不管其相隔有多远,当接收方的邮件服务器故障时,发送方只能等待。
还有一种邮件接收协议是IMAP。在基于浏览器的电子邮件中,比如网页版的Gmail中,其传输邮件使用的是HTTP协议。
POP3协议在传输层使用明文来传输密码,同样POP3也是基于ASCII码的,不能直接发送二进制数据,需要使用MIME进行转换。
0x03 HTTP
HTTP是面向事务的应用层协议,服务端不断监听TCP的80端口,HTTP协议是无状态的,而且本身是无连接的,其虽然使用了TCP连接,但是在交换HTTP报文时是不需要提前建立连接的,HTTP既可以使用持久连接也可以使用非持久连接:
-
非持久连接:又名非持续连接,每一个网页元素的传输都需要单独建立一个HTTP连接,也就是请求一个文档所需的时间为文档的传输时间加上2倍的往返时间(RTT),一个RTT用于TCP连接,另一个RTT用于请求和接收文档,非持久连接对每一次响应或请求都需要建立一次TCP连接,就比如说一个网页中有3个图片,那么使用非持久连接就需要建立4次TCP连接,传输网页HTML一次,以及3张图片各一次。
-
持久连接:又名持续连接,发送响应后仍然保持这条连接,使同一个客户端和服务器可以继续在这条连接上传送数据
- 流水线方式:每遇到一个对象引用就立即发出一个请求
- 非流水线方式:客户在收到前一个响应之后才能发出下一个请求
HTTP/1.0默认采用非持久连接
HTTP/1.1默认采用的为流水线方式的持久连接
在HTTP请求头中,Connection字段用来指明连接方式,其中值为close代表非持久连接,值为keep-alive代表持久连接
HTTP有2种报文:
- 请求报文
- 响应报文
0x04 协议比较
协议 | DNS | FTP | SMTP | POP3 | HTTP |
---|---|---|---|---|---|
传输层 | UDP | TCP | TCP | TCP | TCP |
端口号 | 53 | 20和21 | 25 | 110 | 80 |
模式 | C/S | C/S | C/S | C/S | - |