应用层

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

-