一:了解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的更多相关文章

  1. C# Web应用调试开启外部访问

    在用C#开发Web应用时有个痛点,就是本机用VS开启Web应用调试时外部机器无法访问此Web应用.这里将会介绍如何通过设置允许局域网和外网机器访问本机的Web应用. 目录 1. 设置内网访问 2. 设 ...

  2. 网页提交中文到WEB容器的经历了些什么过程....

    先准备一个网页 <html><meta http-equiv="Content-Type" content="text/html; charset=gb ...

  3. 闲来无聊,研究一下Web服务器 的源程序

    web服务器是如何工作的 1989年的夏天,蒂姆.博纳斯-李开发了世界上第一个web服务器和web客户机.这个浏览器程序是一个简单的电话号码查询软件.最初的web服务器程序就是一个利用浏览器和web服 ...

  4. java: web应用中不经意的内存泄露

    前面有一篇讲解如何在spring mvc web应用中一启动就执行某些逻辑,今天无意发现如果使用不当,很容易引起内存泄露,测试代码如下: 1.定义一个类App package com.cnblogs. ...

  5. 对抗密码破解 —— Web 前端慢 Hash

    (更新:https://www.cnblogs.com/index-html/p/frontend_kdf.html ) 0x00 前言 天下武功,唯快不破.但在密码学中则不同.算法越快,越容易破. ...

  6. 使用 Nodejs 搭建简单的Web服务器

    使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块.文件系统.url解析模块. ...

  7. 一步步开发自己的博客 .NET版(11、Web.config文件的读取和修改)

    Web.config的读取 对于Web.config的读取大家都很属性了.平时我们用得比较多的就是appSettings节点下配置.如: 我们对应的代码是: = ConfigurationManage ...

  8. Web性能优化:What? Why? How?

    为什么要提升web性能? Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上. web性能对于用户体验有及其重要的影响,根据 ...

  9. Web性能优化:图片优化

    程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到 ...

  10. 使用ServiceStack构建Web服务

    提到构建WebService服务,大家肯定第一个想到的是使用WCF,因为简单快捷嘛.首先要说明的是,本人对WCF不太了解,但是想快速建立一个WebService,于是看到了MSDN上的这一篇文章 Bu ...

随机推荐

  1. 自定义使用S缓存方法

    <?php $info=S("name","lizhaoyao"); $name=S("name"); var_dump($name) ...

  2. mysql中group_concat函数用法

    该函数返回带有来自一个组的连接的非NULL值的字符串结果.该函数是一个增强的Sybase SQL Anywhere支持的基本LIST()函数. 语法结构: GROUP_CONCAT([DISTINCT ...

  3. 洛谷 P1005 矩阵取数游戏

    题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. ...

  4. vs2012关闭IDE硬件加速设置

    对于我这样的老古董电脑是很有必要的设置! 如图所示:

  5. VS2010+Opencv-2.4.9的配置攻略

    1.下载软件 vs2010入门书籍,免积分下载   http://download.csdn.net/detail/u014112584/7325617 opencv2.4.0版本号和一些样例,免积分 ...

  6. Lucene.Net+盘古分词

    前言 各位朋友,谢谢大家的支持,由于文件过大,有考虑到版权的问题,故没有提供下载,本人已建立一个搜索技术交流群:77570783,源代码已上传至群共享,需要的朋友,请自行下载! 首先自问自答几个问题, ...

  7. iOS View的Frame和bounds之区别,setbounds使用(深入探究)

    前言: 在ios开发中经常遇到两个词Frame和bounds,本文主要阐述Frame和bound的区别,尤其是bound很绕,较难理解. 一.首先,看一下公认的资料: 先看到下面的代码你肯定就明白了一 ...

  8. 关于css中伪类及伪元素的总结

    css中的伪类和伪元素总是混淆,今天参考了很多资料,也查看了部分文档,现将伪类及伪元素总结如下: 一.由来: 伪类和伪元素的引入都是因为在文档树里有些信息无法被充分描述,比如CSS没有"段落 ...

  9. CSS3伪类nth-child结合transiton动画实现文字若影若现

    css3伪类nth-child结合transiton动画实现文字若影若现收先创建一个div盒子,然后包裹在div中的有10个span标签每个span标签填上内容一次为A,B,C,D,E,F,G,H,I ...

  10. 前台之boostrap

    这个网址有些东西不错