认识Web和HTTP
一:了解Web.
首先,Web应用的产生起源于1989年,当时CERN(欧洲核子研究组织)的蒂姆·伯纳斯-李(Time BernersLee)博士提出了一种能让远隔两地的研究者们共享知识的设想。借助多文档之间相互关联形成的超文本,连成可相互参阅的WWW(World Wide Web 万维网)。
大致上,Web应用包含了三项最根本的技术,使用HTML等标记语言构建Web资源;使用HTTP作为资源的远程传递协议;使用URI(同一资源标识符)作资源的地址。这三项技术共同构成了WWW。一个典型的Web应用场景就是在浏览器中输入要访问的资源的远程地址(URI),通过HTTP远程通信,最终得到要访问的资源(页面)。所谓"上网",就是与互联网上一系列的"资源"互动,调用它的URI。
二:了解HTTP.
在了解HTTP协议之前,必须明白客户端和服务器。HTTP就是用于客户端和服务器的通信协议。
请求访问资源的一端为客户端,而提供资源响应的一端则成为服务端。
一般,我们的浏览器就是一个客户端,服务器则是我们所要访问的远程资源的存放位置。就一条通信路线来说,服务器和客户端的角色是确定的,使用HTTP协议能够明确区分哪端是客户端,哪端是服务器端。
HTTP协议规定,请求(Request)必须从客户端发出,最后服务器端响应(Response)请求并返回。
三:认识Request和Response.
报文:用于HTTP协议交互的信息被称为HTTP报文。它包含了对要访问资源进行的操作的信息。请求端的HTTP报文叫做请求报文,响应端(服务器端)的叫做响应报文。HTTP报文本身是由多行数据构成的字符串文本。
我们可以将HTTP报文分为两部分,报文首部和报文主体.它们之间通过空行来划分.报文首部又是由起始行和可选的首部字段组成。
我们来看一个具体的HTTP通信。
下面是从客户端发给某个HTTP服务器端的请求报文中的内容。
GET /log-in.html HTTP/1.1
Host:hachr.jp
Connection:Keep-alive
Content-Type:application/x-www-form-urlencoded
name=chenyanlong&age=20
参照上面这个的HTTP请求报文,( 这是一个典型的表单提交请求 ),可以看到,请求报文的起始行由请求方法,请求URI,协议版本构成。
下面是服务器接收到请求后进行处理并返回的响应报文。
HTTP/1.1 200 OK
Date:Tue 19 Apr 2016 15:09:00 GMT+0800
Content-Length:362
Content-Type:text/html
<html>
......
响应报文的起始行不同于请求,开头的HTTP/1.1表示服务器对应的HTTP版本。紧挨着的200 OK表示请求的处理结果的状态码( status code ) 和 原因短语( reason-phrase )
总结
本篇文章主要介绍了Web的发展和认识了HTTP的大致组成.其实,了解HTTP最好的办法是在实践中学习,尤其是对于众多首部字段的学习。所以,随后会从具体的应用场景出发来重点介绍首部字段。
认识Web和HTTP的更多相关文章
- C# Web应用调试开启外部访问
在用C#开发Web应用时有个痛点,就是本机用VS开启Web应用调试时外部机器无法访问此Web应用.这里将会介绍如何通过设置允许局域网和外网机器访问本机的Web应用. 目录 1. 设置内网访问 2. 设 ...
- 网页提交中文到WEB容器的经历了些什么过程....
先准备一个网页 <html><meta http-equiv="Content-Type" content="text/html; charset=gb ...
- 闲来无聊,研究一下Web服务器 的源程序
web服务器是如何工作的 1989年的夏天,蒂姆.博纳斯-李开发了世界上第一个web服务器和web客户机.这个浏览器程序是一个简单的电话号码查询软件.最初的web服务器程序就是一个利用浏览器和web服 ...
- java: web应用中不经意的内存泄露
前面有一篇讲解如何在spring mvc web应用中一启动就执行某些逻辑,今天无意发现如果使用不当,很容易引起内存泄露,测试代码如下: 1.定义一个类App package com.cnblogs. ...
- 对抗密码破解 —— Web 前端慢 Hash
(更新:https://www.cnblogs.com/index-html/p/frontend_kdf.html ) 0x00 前言 天下武功,唯快不破.但在密码学中则不同.算法越快,越容易破. ...
- 使用 Nodejs 搭建简单的Web服务器
使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块.文件系统.url解析模块. ...
- 一步步开发自己的博客 .NET版(11、Web.config文件的读取和修改)
Web.config的读取 对于Web.config的读取大家都很属性了.平时我们用得比较多的就是appSettings节点下配置.如: 我们对应的代码是: = ConfigurationManage ...
- Web性能优化:What? Why? How?
为什么要提升web性能? Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上. web性能对于用户体验有及其重要的影响,根据 ...
- Web性能优化:图片优化
程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到 ...
- 使用ServiceStack构建Web服务
提到构建WebService服务,大家肯定第一个想到的是使用WCF,因为简单快捷嘛.首先要说明的是,本人对WCF不太了解,但是想快速建立一个WebService,于是看到了MSDN上的这一篇文章 Bu ...
随机推荐
- 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客
自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansible详细部署
- Google改变生活
前言 前天,在图书馆,无意之中,发现这本书,特写博客来与各位前来下榻本园的博友们,分享和学习! 本博文的主要内容有: 参考此书.感谢韩梅编者,出于此,我写本博文为了方便日后自己的查阅使用和来我园的共 ...
- Linux安装sonarQube
安装sonarQube之前,需要先安装JDK和mysql 服务器/home/azrlnx04/下创建三个文件夹,/java ./mysql. /sonar 一:安装JDK (1)打开http://ww ...
- J2EE ssm框架-服务启动项内存加载数据及读取。
1.首先在 Web工程 WEB-INF目录下web.xml中添加 listener: <listener> <listener-class>com.founder.frame. ...
- MapObject shape数据操作
利用MO 的GeoDataset .DataConnection Recordset 进行数据操作 在MO中.使用GeoDataset对象和DataConnection 对象来连接和读取地理数据. ...
- The Boost C++ Libraries
" ...one of the most highly regarded and expertly designed C++ library projects in the world.&q ...
- 安装在ubuntu12.04上安装gcc4.8
因为gcc4.8支持最新的c++11标准,所有开始c++11标准系列学习前,请按照gcc4.8,方便边学习边写代码练习. 安装编译好的gcc4.8 sudo add-apt-repository pp ...
- css背景图与html插入img的区别
一直以来都认为css背景图与直接插入img图片的效果是差不多的,直到最近拜读了一位大神的作品,发现大部分图片都是通过背景图形式显示的,于是通过搜索各相关资料,在此总结了下二者的区别: 1. css中的 ...
- java的List接口的实现类 ArrayList,LinkedList,Vector 的区别
Java的List接口有3个实现类,分别是ArrayList.LinkedList.Vector,他们用于存放多个元素,维护元素的次序,而且允许元素重复. 3个具体实现类的区别如下: 1. Array ...
- Linux试玩指令开机关机
Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的. Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和U ...