应用层

这里所说的应用层指的是TCP/IP模型中的应用层,也就是对应到OSI模型中第5~7层三层。用OSI模型来看,这里有三层:

  • The Session Layer 会话层
  • The Presentation Layer 表示层
  • The Application Layer 应用层

简介

会话层

可进行的动作有:开始会话,结束会话,同步。

主机之间先建立会话连接,然后开始传输数据,在传输的过程中会加入主同步点和次同步点,主同步点处会做确认,这样可以实现断点续传。

具体的会话形式和不同的协议还有关联。

表示层

由于不同底层的操作系统可能采用不同的编码,所以表示层负责数据语法(编码方式)的协商和转换。

协商的内容主要有:

  • 数据格式的一致化。例如使用ASCII和EBCDIC的两台主机之间通讯。另外,音频编码和视频编码等也需要一定协商。
  • 数据压缩方式。现在不大关键了。
  • 数据加密方式。

应用层

直接为用户提供服务的最高层。

应用层服务和协议

HTTP

超文本传输协议。

网上很多资源以HTML文档的形式储存。访问这些文档需要知道文档的位置,也就是统一资源定位符(url)。url的格式是:<url访问方式>://<主机>:<端口>/<路径>

传输HTML的内容使用的协议就是HTTP协议。HTTP是面向事务的客户服务器协议,一般是无状态的,也就是说每一次的请求没有上下文,都是相互独立的。HTTP本身是无连接的,虽然使用了面向连接的TCP传输层服务。客户端通常是浏览器。

HTTP请求报文结构:

请求报文中一般没有实体主体,应答报文中一般会有,就是html的内容。

方法有:GET, POST, OPTION, HEAD, PUT, DELETE… 但是常用的就前面俩。

html的标记仅仅表示排版。

FTP/TFTP

FTP即File transfer protocol 文件传输协议。

FTP建立文件传输的步骤大概是:

  1. 服务器打开21端口(所谓的控制端口)等待连接
  2. 客户端发送连接请求
  3. 服务器应答,并启用20端口(所谓的数据端口)和客户端的指定端口连接。
  4. 传输数据

相比于HTTP,FTP是面向连接的,有上下文,需要显式地断开连接。

TFTP则是使用UDP协议的文件传输协议,更小更轻量化,由于是无连接的,所以可靠性低一些。

Telnet

通过TCP远程登录到主机的协议,实际上相当于把本地主机作为远端的超级终端使用。

问题在于不同的操作系统上字符集有差异,所以发送数据之前要翻译成标准的格式,收到时再翻译回来。

SMTP/POP3

这两个是和邮件有关的协议。其中,SMTP在发件人发送邮件到邮件服务器,以及邮件服务器发送到另一台邮件服务器的时候使用,而POP3则在收件人收取邮件的时候使用。

SMTP/POP3

POP3是一种邮局协议,也就是说主要有以下几个步骤:

  1. 邮件服务器收到邮件后,告知客户端有邮件了,但是不会发送具体邮件内容。
  2. 客户端请求服务器邮件内容。
  3. 服务器发给客户端邮件内容。

另外还有一个问题在于SMTP协议只能支持传输ASCII码格式的数据,因此还需要MIME(Multipurpose Internet Mail Extensions即多用途互联网邮件扩展)来帮助其拓展字符集。如下图:

MIME

HTTP也在用MIME帮助转码。

SNMP

简单网络管理协议(SNMP,Simple Network Management Protocol)

可以实现一台主机对其他多台主机进行管理。

SNMP

DNS

Domain Name System 域名系统

访问网络中的其他主机时,为了避免要记一大串数字组成的IP地址,就使用域名来代指一个主机或者主机群。但是访问的时候还是需要知道IP地址,因此需要域名服务器记录域名和IP的对应关系来供他人查询。

windows仍然可以使用HOST文件进行本地域名记录,但是大多数域名还是要在域名服务器中查询得到。

域名结构

如图,域名由.来分隔,后面的等级高而前面的等级低。

TLP

Top Level Domain 顶级域名。即域名中最高等级的域名段。

常用的顶级域名有:

  • 国家顶级域名,如.cn .en .uk .jp等
  • 通用顶级域名,如.com表示公司,.net表示网络服务提供方,.org表示非盈利组织等
  • arpa,用于DNS反向查询,即提供把IP解析成域名的服务。

通常来说,顶级域名下还有二级域名,例如.cn下还有.com.cn和.edu.cn等,.com和.edu就是.cn下的二级域名。二级域名只受到对应顶级域名的管辖,不同顶级域名下代表相同含义的顶级域名也可能表示不一样。

DNS查询

域名查询是分层次的。对于windows系统的主机而言,会先查找host文件,如果找不到就请求本地DNS服务器,在找不到就由本地DNS服务器请求上级DNS服务器,以此类推。找到之后,本地DNS服务器通常也会把这条记录加载到自己的缓存中。

例如以下的查询方法,就是由本地的域名服务器进行由高级到低级的域名迭代查询。

DNS查询