应用层是为了解决某一类应用问题,而问题的解决又是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。这些服务通常使用对应的协议,常见的几种服务协议有(HTTP,FTP/TFTP, TELENT)无论是哪种服务,都需要域名服务器(DNS)来解析ip地址才能通信以提供服务。
域名系统
DNS是域名系统(DomainNameSystem)的缩写,万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串,可以简单地理解为将URL转换为IP地址。
- 域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的IP地址,在Internet上域名与IP地址之间是一一对应的
- DNS就是进行域名解析的服务器。
DNS命名用于Internet等TCP/IP网络中,通过用户友好的名称查找计算机和服务。
域名结构
任何一个连接在因特网上的主机或者路由器,都是有一个唯一的层次结构的名字,即域名(domain name)。域可以分为顶级域、二级域、三级域等等。DNS规定:
- 域名中的标号都是有英文字母和数字组成,每一个标号不超过63个字符(为了方便记忆最好不要超过12个字符)
- 不区分大小写字母
- 标号中除连字符(-)外不能使用其他的标点符号。
- 级别最低的域名写在最左边,而级别最高的顶级域名则写在最右边。由多个标号组成的完整域总共不超过255个字符。
各级域名的层级关系如下:
其中顶级域名服务器分为三大类:
- 国家顶级域名nTLD。如cn,us,uk….
- 通用顶级域名gTLD。如com,net,org……
- 基础结构域名(infrastructure domain):这种域名只有一个,即arpa,用于反向域名解析,因此又称为反向域名。
域名只是个逻辑概念,并不代表计算机所在的物理地点。变长的域名和使用有助记忆的字符串,是为了便于人使用
域名服务器
一个域名服务器所负责管辖的(或有权限的)范围叫做区(zone)。各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器(authoritative name server),用来保存该区中的所有主机的域名到IP地址的映射,以进行域名(domain name)和与之相对应的IP地址 (IP address)转换,解析域名
互联网上的DNS域名服务器也是按照层次安排的。每一个域名服务器都只对域名体系中的一部分进行管辖
域名解析过程
主机向本地域名服务器的查询采用递归,特点就是,询问者和答复者一层一层构成递归。本地域名服务器向根域名服务器的查询通常采用迭代,特点就是询问者不停的询问可能的答复者
当DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息:包括:指定的DNS域名,指定的查询类型,DNS域名的指定类别。基于UDP服务,端口53. 该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到IP地址的转换。
WWW万维网
万维网并不等同计算机网络,万维网只是计算机网络所能提供的服务其中之一,是靠着计算机网络运行的一项应用。万维网以客户服务器方式工作。
- 浏览器就是在用户主机上的万维网客户程序。
- 万维网文档所驻留的主机则运行服务器程序,因此这台主机也称为万维网服务器。
- 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档
为了实现以上功能
- 万维网使用统一资源定位符URL(uniform resource locator)来标志万维网上的各种文档,并使每一个文档在整个互联网的范围内具有唯一的标识符URL
- 万维网客户程序与万维网服务器程序之间的交互遵守严格的协议,这就是超文本传送协议HTTP (HyperText Transfer Protocol)。HTTP是一个应用层协议,它使用TCP连接进行可靠的传送
- 万维网使用超文本标记语言HTML (HyperText Markup Language),使得万维网页面的设计者可以很方便地用链接从本页面的某处链接到互联网上的任何一个万维网页面,并且能够在自己的主机屏幕上将这些页面显示出来
所以我们可以通俗的理解为万维网就是一个CS的模式,只不过客户端是浏览器而已。而其它客户端程序也有自己的协议和通信方式,只不过不用http而已。
统一资源定位符URL
URL 相当于一个文件名在网络范围的扩展,URL是与互联网相连的机器上的任何可访问对象的一个指针。由于访问不同对象所使用的协议不同,所以URL还指出读取某个对象时所使用的协议,URL的统一格式为:<协议>://<主机>:<端口>/<路径>
:
- <协议>就是指出使用什么协议来获取该万维网文档。现在最常用的协议就是http(超文本传送协议HTTP )以及https(简单讲是HTTP的安全版),其次是ftp(文件传送协议FTP)
- 在<协议>后面的://是规定的格式,: 也是固定格式。它的右边是第二部分<主机>,它指出这个万维网文档是在哪一台主机上。这里的<主机>就是指该主机在互联网上的域名。
- 再后面是第三和第四部分**<端口>和<路径>**,有时可省略
对应例如:http://localhost:8080/AIR/index.jsp端口和路径有时可以省略。HTTP的默认端口号是80,通常可省略。若再省略文件的<路径>项,则URL就指到互联网上的某个主页(home page)
超文本传送协议HTTP
HTTP 协议定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。从层次的角度看,HTTP是面向事务的无状态的(transaction-oriented)应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。请注意,HTTP不仅传送完成超文本跳转所必需的信息,而且也传送任何可从互联网上得到的信息,如文本、超文本、声音和图像等
这是一个逻辑上的通信过程,实际通信还依赖下三层(物理层,数据链路层,网络层):
- HTTP使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输。HTTP不必考虑数据在传输过程中被丢弃后又怎样被重传。但是,HTTP协议本身是无连接的。这就是说,虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接
- HTTP协议是无状态的(stateless)。也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同(假定现在服务器还没有把该页面更新),因为服务器并不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次。HTTP的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求
HTTP的无状态可以理解为幂等的。
代理服务器
代理服务器(proxy server)是一种网络实体,它又称为万维网高速缓存(Web cache)。代理服务器把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去互联网访问该资源。代理服务器可在客户端或服务器端工作,也可在中间系统上工作。
我们有时候需要清空浏览器缓存来刷新网络请求,也是因为我们现在用的浏览器也具有这个功能。如果服务器页面已更新,但是客户端请求到的页面没有改变,可能就需要清空一下缓存了
HTTP报文
由于HTTP 是面向文本的((text-oriented),因此在报文中的每一个字段都是一些ASCII码串,因而各个字段的长度都是不确定的:
HTTP请求报文和响应报文都是由三个部分组成的。可以看出,这两种报文格式的区别就是开始行不同。
- 开始行,用于区分是请求报文还是响应报文。在请求报文中的开始行叫做请求行(Request-Line),而在响应报文中的开始行叫做状态行(Status-Line)。在开始行的三个字段之间都以空格分隔开,最后的“CR”和“LF”分别代表“回车”和“换行”。
- 首部行,用来说明浏览器、服务器或报文主体的一些信息。首部可以有好几行,但也可以不使用。在每一个首部行中都有首部字段名和它的值,每一行在结束的地方都要有“回车”和“换行”。整个首部行结束时,还有一空行将首部行和后面的实体主体分开。
- 实体主体(entity body),在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段。
下面分别介绍HTTP请求报文和响应报文的一些主要特点。
HTTP请求报文
请求报文的主要特点:请求报文的第一行“请求行”只有三个内容,即方法,请求资源的URL,以及http的版本。
- 方法(method)是面向对象技术中使用的专门名词。所谓方法就是对所请求的对象进行的操作,这些方法实际上也就是一些命令
- 中间部分为URL地址
- 最后部分是http协议使用的版本,后续详细说明两个版本的区别
一个请求行的实例:GET http://www.xvz.edu.cn/dir/index.htm HTTP/1.1
应用层是为了解决某一类应用问题,而问题的解决又是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。这些服务通常使用对应的协议,常见的几种服务协议有(HTTP,FTP/TFTP, TELENT)无论是哪种服务,都需要域名服务器(DNS)来解析ip地址才能通信以提供服务。
域名系统
DNS是域名系统(DomainNameSystem)的缩写,万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串,可以简单地理解为将URL转换为IP地址。
- 域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的IP地址,在Internet上域名与IP地址之间是一一对应的
- DNS就是进行域名解析的服务器。
DNS命名用于Internet等TCP/IP网络中,通过用户友好的名称查找计算机和服务。
域名结构
任何一个连接在因特网上的主机或者路由器,都是有一个唯一的层次结构的名字,即域名(domain name)。域可以分为顶级域、二级域、三级域等等。DNS规定:
- 域名中的标号都是有英文字母和数字组成,每一个标号不超过63个字符(为了方便记忆最好不要超过12个字符)
- 不区分大小写字母
- 标号中除连字符(-)外不能使用其他的标点符号。
- 级别最低的域名写在最左边,而级别最高的顶级域名则写在最右边。由多个标号组成的完整域总共不超过255个字符。
各级域名的层级关系如下:
其中顶级域名服务器分为三大类:
- 国家顶级域名nTLD。如cn,us,uk….
- 通用顶级域名gTLD。如com,net,org……
- 基础结构域名(infrastructure domain):这种域名只有一个,即arpa,用于反向域名解析,因此又称为反向域名。
域名只是个逻辑概念,并不代表计算机所在的物理地点。变长的域名和使用有助记忆的字符串,是为了便于人使用
域名服务器
一个域名服务器所负责管辖的(或有权限的)范围叫做区(zone)。各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器(authoritative name server),用来保存该区中的所有主机的域名到IP地址的映射,以进行域名(domain name)和与之相对应的IP地址 (IP address)转换,解析域名
互联网上的DNS域名服务器也是按照层次安排的。每一个域名服务器都只对域名体系中的一部分进行管辖
域名解析过程
主机向本地域名服务器的查询采用递归,特点就是,询问者和答复者一层一层构成递归。本地域名服务器向根域名服务器的查询通常采用迭代,特点就是询问者不停的询问可能的答复者
当DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息:包括:指定的DNS域名,指定的查询类型,DNS域名的指定类别。基于UDP服务,端口53. 该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到IP地址的转换。
WWW万维网
万维网并不等同计算机网络,万维网只是计算机网络所能提供的服务其中之一,是靠着计算机网络运行的一项应用。万维网以客户服务器方式工作。
- 浏览器就是在用户主机上的万维网客户程序。
- 万维网文档所驻留的主机则运行服务器程序,因此这台主机也称为万维网服务器。
- 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档
为了实现以上功能
- 万维网使用统一资源定位符URL(uniform resource locator)来标志万维网上的各种文档,并使每一个文档在整个互联网的范围内具有唯一的标识符URL
- 万维网客户程序与万维网服务器程序之间的交互遵守严格的协议,这就是超文本传送协议HTTP (HyperText Transfer Protocol)。HTTP是一个应用层协议,它使用TCP连接进行可靠的传送
- 万维网使用超文本标记语言HTML (HyperText Markup Language),使得万维网页面的设计者可以很方便地用链接从本页面的某处链接到互联网上的任何一个万维网页面,并且能够在自己的主机屏幕上将这些页面显示出来
所以我们可以通俗的理解为万维网就是一个CS的模式,只不过客户端是浏览器而已。而其它客户端程序也有自己的协议和通信方式,只不过不用http而已。
统一资源定位符URL
URL 相当于一个文件名在网络范围的扩展,URL是与互联网相连的机器上的任何可访问对象的一个指针。由于访问不同对象所使用的协议不同,所以URL还指出读取某个对象时所使用的协议,URL的统一格式为:<协议>://<主机>:<端口>/<路径>
:
- <协议>就是指出使用什么协议来获取该万维网文档。现在最常用的协议就是http(超文本传送协议HTTP )以及https(简单讲是HTTP的安全版),其次是ftp(文件传送协议FTP)
- 在<协议>后面的://是规定的格式,: 也是固定格式。它的右边是第二部分<主机>,它指出这个万维网文档是在哪一台主机上。这里的<主机>就是指该主机在互联网上的域名。
- 再后面是第三和第四部分**<端口>和<路径>**,有时可省略
对应例如:http://localhost:8080/AIR/index.jsp端口和路径有时可以省略。HTTP的默认端口号是80,通常可省略。若再省略文件的<路径>项,则URL就指到互联网上的某个主页(home page)
超文本传送协议HTTP
HTTP 协议定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。从层次的角度看,HTTP是面向事务的无状态的(transaction-oriented)应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。请注意,HTTP不仅传送完成超文本跳转所必需的信息,而且也传送任何可从互联网上得到的信息,如文本、超文本、声音和图像等
这是一个逻辑上的通信过程,实际通信还依赖下三层(物理层,数据链路层,网络层):
- HTTP使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输。HTTP不必考虑数据在传输过程中被丢弃后又怎样被重传。但是,HTTP协议本身是无连接的。这就是说,虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接
- HTTP协议是无状态的(stateless)。也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同(假定现在服务器还没有把该页面更新),因为服务器并不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次。HTTP的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求
HTTP的无状态可以理解为幂等的。
代理服务器
代理服务器(proxy server)是一种网络实体,它又称为万维网高速缓存(Web cache)。代理服务器把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去互联网访问该资源。代理服务器可在客户端或服务器端工作,也可在中间系统上工作。
我们有时候需要清空浏览器缓存来刷新网络请求,也是因为我们现在用的浏览器也具有这个功能。如果服务器页面已更新,但是客户端请求到的页面没有改变,可能就需要清空一下缓存了
HTTP报文
由于HTTP 是面向文本的((text-oriented),因此在报文中的每一个字段都是一些ASCII码串,因而各个字段的长度都是不确定的:
HTTP请求报文和响应报文都是由三个部分组成的。可以看出,这两种报文格式的区别就是开始行不同。
- 开始行,用于区分是请求报文还是响应报文。在请求报文中的开始行叫做请求行(Request-Line),而在响应报文中的开始行叫做状态行(Status-Line)。在开始行的三个字段之间都以空格分隔开,最后的“CR”和“LF”分别代表“回车”和“换行”。
- 首部行,用来说明浏览器、服务器或报文主体的一些信息。首部可以有好几行,但也可以不使用。在每一个首部行中都有首部字段名和它的值,每一行在结束的地方都要有“回车”和“换行”。整个首部行结束时,还有一空行将首部行和后面的实体主体分开。
- 实体主体(entity body),在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段。
下面分别介绍HTTP请求报文和响应报文的一些主要特点。
HTTP请求报文
请求报文的主要特点:请求报文的第一行“请求行”只有三个内容,即方法,请求资源的URL,以及http的版本。
- 方法(method)是面向对象技术中使用的专门名词。所谓方法就是对所请求的对象进行的操作,这些方法实际上也就是一些命令
- 中间部分为URL地址
- 最后部分是http协议使用的版本,后续详细说明两个版本的区别
一个请求行的实例:GET http://www.xvz.edu.cn/dir/index.htm HTTP/1.1