HTTP基础及telnet基本用法
? 20世纪90年代初期,一个主要的新兴应用即万维网(World Wide Web)登上了舞台。Web是一个引起公众注意的因特网应用。Web的应用层协议是超文本传输协议(HTTP),它是Web的核心。HTTP由两个程序实现:一个客户程序和一个服务器程序。客户程序和服务器程序运行在不同的端系统中,通过交换HTTP报文进行会话。HTTP会话定义了这些报文的结构以及客户和服务器进行报文交换的方式。
? Web页面(也叫文档)是由对象组成的。一个对象只是一个文件,诸如一个HTML文件、一个JPEG图形、一个Java小程序或一个视频片段这样的文件,且他们可通过一个URL地址寻址。多数Web页面含有一个HTML基本文件以及几个引用对象。例如,如果一个Web页面包含HTML基本文件和5个JPEG图形,那么这个Web页面6个对象:一个HTML基本文件加5个图形。HTML基本文件通过对象的URL地址引用页面中的其他对象。每个URL地址由两部分组成:存放对象的服务器主机名和对象的路径名。Web浏览器实现了HTTP的客户端,Web服务器实现了HTTP的服务器端,它用于存储Web对象,每个对象由URL寻址。
? HTTP定义了Web客户向Web服务器请求Web页面的方式,以及服务器向客户传送Web页面的方式,其基本思想就是当用户请求一个Web页面(如点击一个超链接)时,浏览器向服务器发出对该页面中所包含对象的HTTP请求报文,服务器接收到请求并用包含这些对象的HTTP响应报文进行响应。
? HTTP使用TCP作为它的支撑运输协议(而不是在UDP上运行)。HTTP客户首先发起一个与服务器的TCP连接。一旦连接建立,该浏览器和服务器进程就可以通过套接字接口访问TCP。客户向它的套接字接口发送HTTP请求报文并从它的套接字接口接收HTTP响应报文。类似的,服务器从它的套接字接口接收HTTP请求报文和向它的套接字接口发送HTTP响应报文。一旦客户向他的套接字接口发送了一个请求报文,该报文就脱离了客户控制并进入TCP的控制。TCP为HTTP提供可靠数据传输服务。这意味着,一个客户进程发出的每个HTTP请求报文最终能完整地到达服务器;类似的,服务器进程发出的每个HTTP响应报文最终能完整地到达客户。
? 注意到下列现象很重要:服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息。假如某个特定的客户在短短的几秒钟内两次请求同一个对象,服务器并不会因为刚刚为该客户提供了该对象就不再做出反应,而是重新发送该对象,就像服务器已经完全忘记不久之前所做过的事一样。因为HTTP服务器并不保存关于客户的任何信息,所以我们说HTTP是一个无状态协议。
非持续连接和持续连接? 在许多因特网应用程序中,客户和服务器在一个相当长的时间范围内通信,其中客户发出一系列请求并且服务器对每个请求进行响应。依据应用程序以及该应用程序的使用方式,这一系列请求可以以规则的间隔周期性的或者间断性的一个接一个发出。当这种客户-服务器的交互是经TCP进行的,应用程序的研制者就要做一个重要决定,,即每个请求/响应对是经一个单独的TCP连接发送,还是所有的请求及其相应经相同的TCP连接发送呢?采用前一种方法,该应用程序被称为使用非持续连接;采用后一种方法,该应用程序被称为使用持续连接。如HTTP既能够使用非持续连接,也能够使用持续连接。尽管HTTP在默认方式下使用持续连接,HTTP客户和服务器也能配置成非持续连接。
采用非持续连接的HTTP? 我们看看在非持续连接情况下,从服务器向客户传送一个Web页面的步骤。假设该页面含有一个HTML基本文件和10个JPEG图形,并且这11个对象位于同一台服务器上。该HTML文件的URL为:。
? 我们看看发生了什么情况:
HTTP客户进程在端口号80发起一个到服务器的TCP连接,该端口号是HTTP的默认端口。在客户和服务器上分别有一个套接字与该连接相关联。
HTTP客户经它的套接字向该服务器发送一个HTTP请求报文。请求报文中包含了路径名/someDepartment/home.index。
HTTP服务器进程经它的套接字接收该请求报文,从其存储器(RAM或磁盘)中检索出对象,在一个HTTP响应报文中封装对象,并通过其套接字向客户发送响应报文。
HTTP服务器进程通知TCP断开该TCP连接。(但是直到TCP确认客户已经完整的收到响应报文为止,它才会实际中断连接。
HTTP客户接收响应报文,TCP连接关闭。该报文指出封装的对象是一个HTML文件,客户从响应报文中提取出该文件,检查该HTML文件,得到对10个JPEG图形的引用。
对每个引用的JPEG图形对象重复前4个步骤。
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/42571.html
- 上一篇:fpm的内存占用情况
- 下一篇:第三章 云部署,打包上传