Web应用与HTTP协议

  网络应用随处可见。任何时候浏览web,发送E-mail或者弹出一个X window,就是在使用一个网络应用。


客户端-服务器编程模型

  每个网络应用都是基于客户端-服务器模型的。采用这个模型,一个服务器进程和一个或者多个客户端进程组成。服务器管理某种资源,并且通过操作这种来为它的客户端提供某种服务。

  认识到客户端和服务器是进程,而不是常常提到的机器或者主机,这是很重要的。一台主机可以同时运行许多不同的客户端和服务器,而且一个客户端和服务器的事务可以再同一台(X Window)或者不同的主机上运行。无论客户端和服务器是怎样映射到主机上的,客户端-服务器模型是相同的。

  客户端和服务器通过因特网这个全球网络来通信。从一个程序员的观点来看,我们可以把因特网看成一个全球范围内的主机集合,具有如下几个属性:1)每个因特网主机都有一个唯一的32位名字,称它为的IP地址。2)IP地址的集合被映射为一个因特网域名的集合。3)不同因特网主机上的进程能够通过连接互相通信。

  客户端和服务器通过使用套接字接口建立连接。一个套接字是连接的一个端点。每个套接字都有相应的套接字地址,是由一个因特网地址和一个16位的证书端口组成的,用“地址:端口”来表示。当客户端发起一个连接请求时,客户端套接字地址中的端口是由内核自动分配的,称为临时端口。然而,服务器套接字地址中的端口通常是某个知名的端口,是和这个服务相对应的。例如,Web服务器通常使用端口80,而电子邮件服务器使用端口25.

HTTP概况

  Web客户端和服务器之间的交互用的是一个基于文本的应用级协议,叫做HTTP(Hypertext Transfer Protocol,超文本传输协议)。HTTP协议由两部分程序实现:一个客户端程序和一个服务器程序,它们运行在不同的端系统当中,通过交换HTTP报文进行会话。HTTP定义了这些报文的格式以及客户端和服务器是如何进行报文交换的。Web服务和常规的文件检索服务(例如FTP)有什么区别?主要的区别是Web内容可以用一种叫做HTML(Hypertext Markup Language,超文本标记语言)的语言来编写。一个HTML程序(页)包含(标记),它们告诉浏览器如何显示这页中的各种文本和图形对象。

  Web页面(Web page,也叫文档)是由对象组成,对象简单来说就是文件,如HTML页面、JPEG图形文件、Java小程序或视频片段文件,这些文件可以通过一个URL地址寻址。多数Web页面含有一个基本HTML文件(base HTML file)以及几个引用对象。在基本HTML文件中通过对象的URL地址对对象进行引用。每个URL地址由两部分组成:存放对象的服务器主机名和对象的路径名。Web浏览器实现了HTTP的客户端。Web服务器用于存储Web对象,每个对象由URL寻址。Web实现了HTTP的服务器端,流行的Web服务器有Apache和Mircosoft Internet Information Sever。

  HTTP使用TCP(而不是UDP)作为它的支撑运输层协议,默认的端口号是80.

HTTP事务

  

                                                                 一个服务静态内容的HTTP事务

  因为HTTP是基于在因特网连接上传送的文本行,我们可以使用Unix的TELNET程序和因特网上的任何Web服务器执行事务。对于调试在连接上通过文本行来与客户端对话的服务器来说,TELNET十分便利。例如,上图是使用TELNET向AOL Web服务器请求主页。

  在第一行,我们从Unix外壳运行TELNET,要求它打开一个到AOL Web服务器的连接。TELNET向终端服务器打印三行输出,打开连接,然后等待我们输入文本行(第五行)。我们每次输入一个文本行,并键入回车键,TELNET会读取该行,在后面加上回车和换行符号,并将这一行发送到服务器。

HTTP请求

  一个HTTP请求的组成是这样的:一个请求行(request line)(第5行),后面跟零个或更多个首部行。请求行有3个字段:方法字段,URL字段和HTTP协议版本字段。方法字段可以取值GET、POST、HEAD、PUT和DELETE。绝大部分的HTTP请求报文使用GET方法。当浏览器请求一个对象时,使用GET方法,在URL底端填写该对象的URL地址。例子中使用的是 ‘/‘,它是最小的URL后缀,所有服务器将其扩展为某个默认的主页,例如,/index.html’

  HEAD方法类似于GET方法。当服务器收到使用HEAD方法的请求时,会有一个HTTP斑纹进行响应,但是不返回请求对象。应用程序开发者常用HEAD进行故障跟踪

  当用户点击超链接时,浏览器在浏览器和Web服务器之间发起一个TCP连接,这涉及一个“三次握手”过程,即客户机向服务器发送一个小TCP报文段,服务器用一个小TCP报文段做出确认和响应,最后,客户端向服务器返回确认。完成了三次握手的前两个部分后,客户端将三次握手第三个部分(客户端确认)和一个HTTP请求结合起来发送给该TCP链接。一旦该请求报文到达服务器,服务器向该TCP链接发送HTML文件。

HTTP响应

  HTTP响应和HTTP请求时相似的。一个HTTP响应的组成是这样的:一个响应行(response line)(第8行)后面跟着零个或更多的响应报头(response header)(第9~13行),再跟随一个终止报头的空行(第14行),再跟随一个响应主体(response body)(第15~17行)。一个响应航的格式是:

  <version> <status code> <status message>

对应是:

  HTTP/1.0 200 OK

  版本字段描述的响应所遵循的HTTP版本。状态码(status code)是一个三位的整数,指明对请求的处理。状态消息(status message)给出与错误代码等价的英文描述。主要的状态码如下所示:

200 成功 处理请求无误
301 永久移动 内容已移动到位置头中指明的主机上
400 错误请求 服务器不能理解请求
403 禁止 服务器无权访问所请求的文件
404  未发现
服务器不能找到所请求的文件

501 未发现 服务器不支持请求的方法
505 HTTP版本不支持 服务器不支持请求的版本
时间: 2024-09-29 02:13:14

Web应用与HTTP协议的相关文章

Linux之Web服务(1)HTTP协议

Linux之Web服务(1)HTTP协议 前言 在说到Web服务配置之前,先要了解一下Httpd服务所在的Tcp/Ip分层中的http协议. http协议为应用层协议,主要是负责处理超文本传输.http是一个客户端和服务端请求和应答的标准(TCP).客户端是终端客户,服务器端是网站.用户通过Web浏览器.网络爬虫或者其它的工具,客户端发起一个服务器上指定端口(默认为80)的HTTP请求.通过HTTP或者HTTPS协议请求资源由统一资源提示符(Uniform Resourcce Identifie

Java Web(1):HTTP协议

HTTP协议 HTTP(HyperText Transfer Protocol)协议是应用层协议,是一个基于请求(request)/响应(response)模式的.无状态的(stateless)协议 HHTP URL http://hostname[:port][abs_path] 浏览器与服务器连接的一般过程 ServerSocket serverSocket = new ServerSocket(80); serverSocket.accept(); /* www.baidu.com:80

REST 风格的Web 架构与HTTP协议区别

以前学习过RESTFUL 的一些内容,在实践中发现RESTFUL 的Web 架构和HTTP 协议很类似,有点傻傻都分不清楚的感觉.例如,凭什么说我自己的web服务 是 RESTFUL 架构呢,而不是一个普通的HTTP 产文本连接地址呢?于是在闲暇时间专门查询了一些东西,下面主要谈谈自己对二者的理解. RESTFUL是HTTP/1.1协议等Web规范的设计指导原则,HTTP/1.1协议正是为实现RESTFUL 的架构而设计的.所以我认为,符合HTTP/1.1(RESTFUL) 规范的连接地址就是R

WEB集群笔记(1)-Web服务和HTTP协议

01.Web服务和HTTP协议 01.01.Web服务的基础:DNS Web服务离不开基础网络和DNS服务. 用户访问网站基本流程,即DNS解析流程 1).浏览器输入网址www.baidu.com,查找本地DNS缓存及hosts文件信息,如果有直接获取IP地址: 2).若没有,发送解析请求给DNS服务器地址,如果LDNS服务器缓存有对应地址,则获取IP地址; 3).若没有,LDNS继续请求DNS根(.)服务器,一层层查找直到找到baidu.com域名对应的授权DNS服务器,该服务器返回IP解析记

Python学习教程:WEB开发——Python WSGI协议详解

Web应用程序开发 Web应用程序的本质是什么 简单描述Web应用程序的本质,就是我们通过浏览器访问互联网上指定的网页文件展示到浏览器上. 流程如下图: 从更深层次一点的技术角度来看,由以下几个步骤: 浏览器,将要请求的内容按照HTTP协议发送服务端 服务端,根据请求内容找到指定的HTML页面 浏览器,解析请求到的HTML内容展示出来 HTTP协议的全称是HyperText Transfer Protocol(超文本传输协议) HTTP协议是我们常用的五层协议中的应用层(5层从上到下是应用层,传

Web基础之http协议

第6章 Web基础之http协议 第6章 Web基础之http协议一.http协议介绍 1.1)什么是超文本 1.2)什么是URL 1.3)什么是超文本传输协议二.访问网站分析三.页面请求信息解析(仅做了解) 3.1)基本信息 3.2)请求头信息 3.3)响应头部信息 第6章 Web基础之http协议 一.http协议介绍 1.1)什么是超文本 包含有超链接(Link)和各种多媒体元素标记(Markup)的文本.这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page).这

Web基础与HTTP协议(LAMP部署基础知识)

Web基础与HTTP协议 一.前言 前端:(玩的是框架)HTML (超文本标记语言) CSS (层叠样式表) JavaScript js (动态语言交互) JSP(与Java有关,前端未必接触) JavaScriptPage VUE(前后端分离) ECHARTS bootstrap--简洁.直观.强悍的前端开发框架,让web开发更迅速.简单 二.域名概述 域名的概念IP地址不易记忆早期使用Hosts文件解析域名主机名称重复主机维护困难DNS (Domain Name System域名系统)分布式

Web服务及http协议

HTTP:HypeText Transfer Protocol:超文本传输协议 URI:Uniform Resource Indentifier:统一资源标识符 状态代码: 1xx    纯信息 2xx    成功类的信息(200) 3xx    重定向类的信息(301,302,304) 4xx    客户端错误类的信息(404) 5xx    服务器端错误类的信息 web服务器的主要操作 1.建立连接-接受或拒绝客服端连接请求 2.接受请求-通过网络读取HTTP请求报文 3.处理请求-解析请求

web服务以及http协议

在使用计算机的过程中,最容易让人想起的就是浏览网页的经历,只需要用户输入网址,搜索及可以获得想要的资源,那么这个过程计算机是如何完成的? web服务是C/S架构:用户使用的浏览器成为客户端代理,用户访问的资源其实是存储在服务器端.client通过网址(经过dns解析)能够定位自己想要访问的资源位于互联网的哪台服务器,server如何知道客户端请求的是什么内容,那就是http协议 URI:统一资源标识符,用于在全球范围唯一的标识某资源     URL:统一资源定位符,是URI的一个子集,用户唯一标

【黑马Android】(17)web开发/tomcat/HTTP协议

web开发概述 静态web资源:内容是静态的,不同的人在不同的时间来访问时都是相同的内容.HTML.CSS.JS 动态web资源:内容是由程序生成的,不同的人在不同的时间访问的内容很可能是不同的. 常见的动态web资源开发技术: ASP.PHP.JSP/Servlet C/S B/S之争 云.移动互联网.html5.物联网 tomcat的安装配置 下载地址:http://tomcat.apache.org/ 安装目录不能包含中文和空格 JAVA_HOME环境变量指定Tomcat运行时所要用的jd