Web系统构成与工作原理

1.1 Web系统的发展历程


C/S结构:客户机和服务器结构
如QQ、迅雷、魔兽争霸等需要下载安装客户端软件的系统
B/S架构:不需要安装客户端软件,它运行在客户端的浏览器之上,系统升级或维护时只需更新服务器端软件即可
混合型架构:QQ收藏

  • 1989年,欧洲粒子物理实验室(CERN)的Tim Berners-Lee构思了Web(万维网)。他提出了HTTP协议和HTML语言,编写了世界上第一个Web服务器HTTPD和第一个浏览器,并全部放在互联网上免费传播
  • 1994年,欧洲粒子物理实验室(CERN)和麻省理工学院(MIT)签订协议成立World Wide Web Consortium (即W3C,网址是www.w3.org),由Tim Berners-Lee任主席。

1.2 Web系统构成与工作原理

Web系统的构成:

  • Web服务器
  • Web浏览器
  • 超文本传输协议HTTP (HyperText Transfer Protocol)
  • 超文本标记语言HTML(HyperText Markup Language)

使用统一资源定位符 URL (Uniform Resource Locator)来标志万维网上的各种文档。使每一个文档在整个因特网的范围内具有唯一的标识符 URL。

<协议>://<主机>:<端口>/<路径>

建立连接的过程:
(1) 浏览器分析超链指向页面的 URL。
(2) 浏览器向 DNS 请求解析IP 地址。
(3) 域名系统 DNS 解析目的服务器的 IP 地址。
(4) 浏览器与服务器建立 TCP 连接
(5) 浏览器发出取文件命令: GET index.html。
(6) 服务器给出响应,把文件 index.html 发给浏览器。
(7) TCP 连接释放。
(8) 浏览器显示“目的”文件 index.html 中的所有文本。

Web浏览器核心功能
渲染引擎(layout engineer或者Rendering Engine),对语法进行解析,并渲染网页
JS引擎,对JavaScript进行解释、编译和执行

1.3HTTP协议

HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。
HTTP 有两类报文:
请求报文——从客户向服务器发送请求报文。
响应报文——从服务器到客户的回答。
HTTP 是面向正文的(text-oriented),在报文中的每一个字段都是一些 ASCII 码串,因而每个字段的长度都是不确定的。Web程序引入了Session和Cookie机制来维护状态,确定同一个客户端的这次请求和上次请求来自同一个客户端。无状态不代表HTTP不能保持TCP连接
打开一个网页一般需要浏览器发送很多次Request

请求报文:

1、请求方法:指出客户请求服务器执行的一般操作。
HTTP/1.1中定义了八种请求方法,其中GET、POST、HEAD是常用请求方法。

  • GET :请求获取Request-URI所标识的资源,“获取/查操作”
  • POST: 在Request-URI所标识的资源后附加新的数据 ,“改操作”
  • HEAD: 请求获取由Request-URI所标识的资源的响应消息报头
  • PUT:请求服务器存储一个资源,并用Request-URI作为其标识, “增操作”
  • DELETE:请求服务器删除Request-URI所标识的资源 “删操作”
  • TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
  • CONNECT: 保留将来使用
  • OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求

2、URI:统一资源标识,简单地讲被请求资源所处的地址,如:/

3、HTTP版本:HTTP/1.1,高版本的服务器接受低版本客户的请求,并向客户发送同样版本的应答;高版本的客户接受低版本服务器的应答。

响应报文:
HTTP响应消息结构:状态行(status line)、报头和实体主体三部分组成。
状态行由协议版本、状态码、原因短语3个元素组成
状态代码有三位数字组成,第一个数字定义了响应的类别

  • 1xx:指示信息–表示请求已接收,继续处理
  • 2xx:成功–表示请求已被成功接收、理解、接受
  • 3xx:重定向–要完成请求必须进行更进一步的操作
  • 4xx:客户端错误–请求有语法错误或请求无法实现
  • 5xx:服务器端错误–服务器未能实现合法的请求

常见状态代码、状态描述、说明:

  • 200 OK //客户端请求成功
  • 400 Bad Request //客户端请求有语法错误,不能被服务器所理解
  • 401Unauthorized //请求未经授权
  • 403 Forbidden //服务器收到请求,但是拒绝提供服务
  • 404 Not Found/请求资源不存在, eg:输入了错误的URL
  • 500 Internal Server Error //服务器发生不可预期的错误
  • 503 Server Unavailable //服务器当前不能处理客户端的请求

HTTP消息报头
HTTP消息报头包括普通报头、请求报头、响应报头、实体报头。每一个报头域都是由名字+“: ”+空格+值 组成,消息报头域的名字是大小写无关的

HTTP/2的新特性
二进制协议:使用二进制替代明文,更容易解析,但可读性却不如HTTP/1.x。
多路传输:一旦建立了 TCP 连接,相同连接内的所有流都可以同过这个 TCP 连接异步发送,而不用另外打开连接。
HPACK 请求头部压缩:当我们在同一客户端上不断地访问服务器时,许多冗余数据在头部中被反复发送,为了解决这个问题,HTTP/2引入了头信息压缩。
服务器推送:对于服务器来说,当它知道客户端需要一定的资源后,它可以把数据推送到客户端,即使客户端没有请求它。
请求优先级:客户端可以在 HEADERS帧中包含优先级信息来为流指定优先级。
安全性:HTTP/2定义了TLS的轮廓,包括版本、密码套件和用到的扩展。

网络编程技术——Web系统构成与工作原理相关推荐

  1. 物联网网络编程和web编程

    本文是基于嵌入式物联网研发project师的视觉对网络编程和web编程进行阐述. 对于专注J2EE后端服务开发的同学来说,这篇文章可能略微简单.可是网络编程和web编程对于绝大部分嵌入式物联网proj ...

  2. 网络技术概念与Java网络编程技术——最通俗的理解(转载)

    网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...

  3. 高等学校计算机科学与技术教材:tcp/ip网络编程技术基础,TCP/IP网络编程技术基础...

    TCP/IP网络编程技术基础 语音 编辑 锁定 讨论 上传视频 <TCP/IP网络编程技术基础>是2012年北京交通大学出版社出版的图书,作者是王雷. 书    名 TCP/IP网络编程技 ...

  4. Java编程那些事儿102——网络编程技术1

    Java编程那些事儿102--网络编程技术1 陈跃峰 出自:http://blog.csdn.net/mailbomb 13.2 网络编程技术 前面介绍了网络编程的相关基础知识,初步建立了网络编程的概 ...

  5. java运用网络编程技术代码_Java 网络编程

    java网络编程 1.什么叫计算机网络? 由不同地理位置的不同计算机主机,连接起来组成的网络. 2.什么叫网络编程? 在网络的基础上,使用网络进行编程,对应用层进行设计的活动. 3.网络编程三要素:I ...

  6. Java编程那些事儿103——网络编程技术2

    Java编程那些事儿103--网络编程技术2 陈跃峰 出自:http://blog.csdn.net/mailbomb 13.2.3 TCP编程 按照前面的介绍,网络通讯的方式有TCP和UDP两种,其 ...

  7. Java编程那些事儿104——网络编程技术3

    Java编程那些事儿104--网络编程技术3 陈跃峰 出自:http://blog.csdn.net/mailbomb 为了一步一步的掌握网络编程,下面再研究网络编程中的两个基本问题,通过解决这两个问 ...

  8. Web技术的主要组成和工作原理

    一个web应用是受到多个步骤组成的, 1.本地计算机和远程服务器 本地计算机:用户自己浏览站点的本地机器 远程服务器:为客户端(用户)计算机提供各种服务的高性能计算机,主要功能是接受客户浏览器发送的请 ...

  9. Socket网络编程--简单Web服务器(6)

    本来是想实现ssl连接的,但是弄了好久都不成功,就索性不做了,等以后有能力再做了.所以这一小节就是本次的最后一节了.就简单的说几个注意点. 1.加个配置文件 使用单例模式,使用一个类,该类保存一些信息 ...

最新文章

  1. java进入编程界面_java – 编程到界面是什么意思?
  2. Spark任务提交后是如何完成提交过程的?源码解析!
  3. scn exercise view.setModel will trigger binding creation in Fiori
  4. 高考成绩接近满分,却被清华北大拒绝,被称“中国最帅科学家”
  5. C语言爬虫程序,simspider
  6. 序列化和反序列化(json和pickle)day18
  7. 【图像隐写】基于matlab GUI DCT数字水印嵌入与提取【含Matlab源码 1323期】
  8. 使用wsdl2java编写webservice客户端
  9. Kali最新2020.1版本之U盘启动加密与持久化存储制作流程
  10. 数理统计常用统计函数
  11. eclipse 虚拟机启动失败解决方案
  12. 电信机顶盒中心服务器连接异常,电信电视盒子连不上网的解决方法
  13. 商务网站建设与维护【9】
  14. 如何 接收消息服务器url,(读书笔记)网络是怎样连接的——浏览器生成消息...
  15. e3是合法浮点数吗_下面四个选项中,均是合法浮点数的是()
  16. Tp5设置参数全局过滤方法
  17. 舒亦梵:4.24非农周大数据即将来临,黄金行情将是怎样
  18. vscode无法跳转到函数定义
  19. 系统集成项目管理工程师+android,系统集成项目管理工程师证书样本
  20. 经典教程翻译系列: Mach-II新手指南(上)

热门文章

  1. ArcBlock ⑤ 月报 | Forge SDK + ABT Wallet 发布
  2. Zemax光学设计(二)——GEO半径与RMS半径
  3. java解析odt_java - 使用Java从odt文件读取XForm - 堆栈内存溢出
  4. topik怎么读_韩语TOPIK考试阅读怎么做
  5. REXROTH力士乐电磁阀4WE6HA-6X/EG24N9K4
  6. Intel CPU 开发平台迭代
  7. JAVA面向对象----封装
  8. 软件专业最顶尖的期刊杂志_52杂志中最糟糕的Photoshop错误
  9. ACADOS学习(1)
  10. 职教云助手手机版_职教云查答案助手,职教云查答案,职教云提前获取答案