应用层(DNS域名系统、FTP文件传送协议、远程终端协议TELNET、超文本协议HTTP)

应用层

  • 运输层为了应用进程提供了端到端的通信服务。但不同的网络应用的应用进程之间,还需要有不同的通信规则。因此在运输层协议之上,还需要应用层协议。
  • 每个应用层协议都要解决某一类的问题,必须通过位于不同主机中的多个应用程序之间的通信和协同工作来完成。
  • 应用层协议应该定义:
    1. 应用进程交换的报文类型,请求报文和响应报文
    2. 各种报文类型的语法,如报文中各个字段及其详细描述
    3. 字段的语义,即包括在字段中的信息的含义
    4. 进程何时、如何发送报文,以及对报文进行响应的规则

域名解析系统DNS—从域名中解析出IP地址

  • 是因为IP地址太难记了,所以需要解析。
  • 互联网的域名解析系统DNS被设计成为一个联机分布式数据库系统,并采用客户服务器方式。DNS使大多数名字都在本地解析,仅仅少量解析需要互联网那个上通信,因此DNS系统的效率很高。由于DNS是分布式系统,即使单个计算机出现了故障,也不会妨碍整个DNS系统的正常运行。
  • 域名到IP地址的解析是由分布在互联网上的许多域名服务器程序(域名服务器)完成的。域名服务器程序在专设的结点上运行,而把运行域名服务器程序称为域名服务器。
  • **域名到IP地址的解析过程如下:当某一个应用程序需要把主机名解析成IP地址时,该应用程序就调用解析程序,并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发送给本地域名服务器(使用UDP是为了减少开销),本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用进程获得目的主机的IP地址后即可进行通信。
DNS的一些规定
  • 域被分为顶级域名、二级域名、三级域名。他们之间用 点(.)分割。级别最低的域名写在最左边,而级别最高的域名写在最右边。
  • 域名中标号是由英文字母和数字组成,每一个标号不超过63个字符,也不区分大小字母。标号中除连字符(-)以外不能使用其他的标点符号。
  • 顶级域名包括:
    1. 国家顶级域名:cn表示中国、us表示美国 、uk表示英国
    2. 通用顶级域名:com(公司企业)、net(网络服务结构)、org(非营利性组织)、int(国际组织)、edu(美国专用教育机构)、mil(美国军事部门)
      了解一些常用的即可,我不过多的往深里展开

文件传送协议(FTP)

  • FTP提供交互式的访问,允许客户指明文件的类型和格式(比如指明是否使用ASCII码)、并允许问文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)。FTP屏蔽了计算机系统的细节,因而适用于在异构网络中任意计算机之间传送文件。
  • 第一类:基于TCP的FTP和基于UDP的简单问阿金传送协议TFTP。他们都是文件共享的一大类,即复制整个文件。特点是:若要存取一个文件,就必须先获得一个本地的文件副本。如果要修改文件,只能对文件的副本进行修改,然后在将修改后的文件副本传回到原节点。
  • 另一大类:联机访问,意味着允许多个程序同时对一个文件进行存取。
    同样的,我们只要了解一下就好,有兴趣的可以再看书

远程终端协议TELNET

  • 用户用TELNET就可在其所在地通过TCP连接注册(即登录)到远地的另一台主机上(使用主机名和IP地址)。
  • TELNET也使用客户服务器方式。在本地系统运行TELNET客户进程,而在远地主机则运行TELNET服务器进程。服务器中的主进程等待新的请求,并产生从属进程来处理每一个连接。

超文本协议HTTP

  • 先来看看万维网的基本概念:
  • 万维网WWW是一个分布式的超媒体系统,他是超文本系统的扩充。超文本是指包含指向其他文档的链接的文本。超媒体文档还包含其他表示方式的信息,如图形、图像、声音、动画以及视频图像。
  • 在非分布式系统中,各种信息都驻留在单个计算机的磁盘中。各种文档都是从本地获得,因此这些文档之间的链接可进行一致性检查。所以一个非分布式超媒体系统能够保证所有的链接都是有效的和一致的。
  • 万维网把大量的信息分布在整个网络上。每台主机上的文档都独立进行管理。对这些文档的增加、修改、删除或重新命名都不需要通知到互联网上成千上万的节点。这样,万维网文档之间的链接都经常会不一致。
  • 那么客户程序向服务器发出请求,服务器程序向客户程序向客户程序送回客户所要的万维网文档。在一个客户程序主窗口上显示出的万维网文档称为页面
  • 那么需要解决一下几个问题:
    1. 怎样标志分布在整个互联网上的万维网文档?
    2. 用什么样的协议来实现万维网上的各种链接?
    3. 怎样使不同作者创作的不同风格的万维网文档,都能在互联网上的各种主机上显示出来,同时使用户清楚地知道在什么地方存在着链接?
    4. 怎样使用户能够很方便地找到所需的信息?
  • 第一个问题:万维网使用统一资源定位符URL来标志万维网上的各种文档,并是每一个文档在整个互联网的范围内具有唯一的标识符URL。
  • 第二个问题:使用超文本传送协议HTTP,它使用TCP连接进行可靠传输。
  • 第三个问题:万维网使用超文本标记语言HTML,使得万维网页的设计者可以很方便的用链接从本页面的某处链接到互联网上的任何一个万维网网页,并且能够在自己的主机屏幕上将这些页面显示出来。
  • 第四个问题:用户可以使用搜索工具在万维网上方便的查找所需的信息。

统一资源定位符URL

  • 统一资源定位符URL是用来表示从互联网上得到的资源位置和访问这个资源的方法。这里所说的资源是指在互联网上可以被访问的任何对象,包括文件目录、文件、文档、图像、声音等,以及与互联网相连的任何形式的数据。
  • URL的一般形式由以下四个部分组成:<协议>: // <主机> : <端口> / <路径>
  • 协议指的是用什么协议来获取该万维网文档,现在常用的是http、ftp。
  • 主机指的是万维网上是在那一台主机上,这里的主机是指该主机在网络上的域名。
  • http的端口默认是80,若省略路径项,则URL就指向互联网上的某个主页。
  • 协议和主机部分,字母不区别大小写。但路径有时要区分大小写。

超文本传送协议HTTP

  • HTTP协议定义了浏览器(即万维网客户进程)怎样想万维网服务器请求万维网文档。以及服务器怎样吧文档传送给浏览器。还有就是HTTP是面向事务的应用层协议,这个事务是指一系列的信息交换,而这一系列的信息交换是一个整体,也就是说,要么所有的信息交换都完成,要么就一次也不进行。
  • 每一个万维网网点都有一个服务器进程,它不断地监听TCP的端口80,以便发现是否有浏览器向它发出请求。一旦监听到连接建立请求并建立了TCP连接之后,浏览器就向万维网服务器发出浏览某个页面的请求,服务器接着就返回所请求的页面作为响应。
  • HTTP使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输。HTTP不必考虑数据在传输过程中被丢弃后又怎样被重传。但是HTTP本身是无连接的。也就是说,虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接。
  • HTTP是无状态的,也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同,因为服务器不记得曾经访问过这个客户。
  • HTTP/1.0的主要缺点就是每请求一次文档就要有两倍RTT的开销。因为请求一个万维网文档所需的时间是该文档的传输时间(与文档大小成正比)加上两倍往返时间RTT(一个RTT用于连接TCP连接,另一个RTT用于请求和接收万维网文档)。另一种开销就是万维网客户和服务器每建立一次连接都要分配缓存和变量。所以这种非持续的连接会使万维网服务器的负担很重。
  • HTTP/1.1使用了持续连接。所谓的持续连接就是万维网服务器在发送响应后任然在一段时间内保持这条连接,使同一个客户和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。
    1. HTTP/1.1协议的持续连接有两种方式,即非流水线方式流水线方式。非流水线方式:客户在收到前一个响应之后才能发出下一个请求。导致服务器在发送完一个对象后,其TCP实空闲状态,浪费了服务器的资源。
    2. 流水线方式:客户在收到HTTP的响应报文之前就能够接着发送新的请求报文。

认识一下代理服务器的概念:是一种网络实体,它又被称为告诉缓存。代理服务器把最近的一些请求和响应暂存在本地磁盘中。当新请求达到后,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再去互联网访问该资源。代理服务器可以在客户端或服务端工作,也可在中间系统上工作。

HTTP的报文结构

  • 对于HTTP报文结构,我不多说了。HTTP报文分为请求报文和响应报文。
  • 请求报文的第一行有三个内容:方法、请求资源的URL、版本
  • 所谓的方法就是对所请求对象进行操作。
方法 意义
OPTION 请求一些选项的信息
GET 请求读取由URL所标志的信息
HEAD 请求读取由URL所标志的首部
POST 给服务器添加信息
PUT 在指明的URL下存储一个文档
DELETE 删除指明的URL所标志的资源
TRACE 用来进行环回测试的请求报文
CONNECT 用于代理服务器
  • 响应报文的第一行就是状态行:包括三项内容,即HTTP版本、状态码、以及解释状态码的简单短语。
  • 状态码:
    1. 1开头:表示通知消息,如请求收到了或正在进行处理
    2. 2开头:表示成功,如接受或知道了。
    3. 3开头: 表示重定向,如要完成请求还必须采取进一步的行动
    4. 4开头:表示客户的差错,如请求中有错误的语法或不能完成
    5. 5开头:表示服务器的差错,如服务器失效无法完成请求
  • Cookie 是在服务器上存放用户的信息。以便于用户下次访问时能够保存上次的访问信息。

猜你喜欢

转载自blog.csdn.net/qq_40421919/article/details/87886176