一:了解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. DB2 insert into 三种写法

    db2的insert into 支持三种格式,即:一次插入一行,一次插入多行和从SELECT语句中插入. 以表为例: create table “user" ( "name&quo ...

  2. 一些技术blog和安全blog

    1.安全blog: http://zenxds.com/blog/ http://navisec.it/ http://huaidan.org/ http://leapar.lofter.com/ h ...

  3. lib_mysqludf_sys的安装过程

    看了太多资料,累坏了,先杂乱的放在这里吧,回头有时间再排版 一.window系统 1.从sqlmap中找到32为的 lib_mysqludf_sys.dll (64位的我没有测试成功) 选择数据库 U ...

  4. POJ1330Nearest Common Ancestors——近期公共祖先(离线Tarjan)

    http://poj.org/problem? id=1330 给一个有根树,一个查询节点(u,v)的近期公共祖先 836K 16MS #include<iostream> #includ ...

  5. jquery+正則表達式验证邮箱格式的样例

    js: $("#email").blur(function(){ //获取id相应的元素的值,去掉其左右的空格 var email = $.trim($('#email').val ...

  6. [AngularJS] Sane, scalable Angular apps are tricky, but not impossible.

    Read fromhttps://medium.com/@bluepnume/sane-scalable-angular-apps-are-tricky-but-not-impossible-less ...

  7. android 48 广播

    系统开始重启会发送开机重启广播,电量低的时候会发送电量低的广播,广播注册有2种:系统说明文件xml注册和Java代码注册,前者是静态注册(全局注册)后者是动态注册(依赖于当时组建,组件销毁就收不到广播 ...

  8. DECIMAL Data Type

    In MySQL, DECIMAL(M,D) and NUMERIC(M,D) are the same, and both have a precision of exactly M digits. ...

  9. UITableView学习总结

    一.UITableView概述 UITableView继承自UIScrollView,可以表现为Plain和Grouped两种风格. UITableView有两个Delegate分别为:dataSou ...

  10. GUI编程笔记(java)11:使用Netbeans工具进行GUI编程

    Netbeans工具:是基于java语言进行GUI界面设计的工具 Visual Studio工具:是基于C#语言进行GUI界面设计的工具