一、网络分层协议

经典五层模型

1、物理层:(电脑的硬件,网卡端口,网线,网线连出去的光缆)

定义物理设备如何传输数据

2、数据链路层

在通信的实体间建立数据链路连接。

两台机器物理上是可以连接在一起的,那同时要有配套的软件,通过物理的设备创建一个链路的连接。

3、网络层

为数据在节点之间传输创建逻辑链路

如何我的电脑上访问百度服务器,我们如何去寻找百度这台服务器所在的地址。它就是一个逻辑关系,这个关系是在网络层创建的。

4、传输层

主要有两个协议 TCP/IP,UDP协议。TCP/IP是一个更可高的协议。

传输层向用户提供可靠的端到端(End-to-End)服务。

传输层向高处屏蔽了下层数据通信的细节。

5、应用层

为应用软件提供了很多服务

构建于TCP协议之上

屏蔽网络传输相关的细节。

二、Http协议的发展历史

1、Http/0.9

只有一个命令GET

没有HEADER等描述数据的信息

服务器发送完毕,就关闭TCP连接。

TCP连接对应多个HTTP请求。

2、Http/1.0

增加了获得命令,如POST,PUT

增加status code和header

多字符集支持,多部分发送,权限,缓存等。

3、Http/1.1

持久连接

pipeline(同一个连接发送多个请求,服务端是按顺序返回数据)

增加host(在一台物理服务器,同时跑多个web服务,如node js的web服务,java的web服务)和其他一些命令

4、Http/2

所有的数据以二进制传输。(Http/1.1大部分的数据传输是字符串的)

同一个连接里面发送多个请求不再需要按照顺序来。如同时返回第一个和第二个请求的数据。并行返回,提高了传输效率。

头信息压缩及推送等提高效率的功能。

推送:服务端主动发起数据传输,

推送解决的问题如,web页面有html文本,css,js等内容。先加载解析html文本,在请求css和js文件。有了推送,服务端可以把CSS和JS主动推送到客户端。这样Html和CSS,JS的顺序是并行的,提高传输效率和性能。

三、TCP三次握手

四、URI,URL,URN

1、URI:Uniform Resource Identifier 统一资源标志符。

用来唯一标识互联网上的信息资源

URI包含URL和URN

2、URL: Unifrom Resource Locator 统一资源定位器

如   http://user:pass@host.com:80/path?query=string#hash

ftp://xxxx/yyy

3、URN:永久统一资源定位符

在资源移动之后还能被找到

目前还没有非常成熟的使用方案

五、Http报文样式

1、Http方法

用来定义对于资源的操作

有GET,POST,PUT,DELETE

2、HTTP CODE

定义服务器对请求的处理结果

各个区间的CODE有各自的语义

HTTP 状态码的完整列表

六、创建Web服务

使用node创建

查看node版本

使用Visual Studio Code 创建server.js

const http = require('http');

http.createServer(function(request, response){
console.log('request com', request.url) response.end('123')
}).listen(8888); console.log('server listening on 8888')

  

运行server.js

然后通过浏览器访问

Http协议基础及发展历史的更多相关文章

  1. HTTP 协议基础及发展历史

    一. 5层网络模型介绍 低三层 物理层:主要作用是定义物理设备如何传输数据. 数据链路层:在通信的实体间建立数据链路连接. 网路层:为数据在结点之间传输创建逻辑链路. 传输层: 想用户提供可靠的端到端 ...

  2. HTTP从入门到入土(2)——HTTP协议发展历史

    HTTP协议的发展历史 HTTP/0.9 0.9版本是第一个定稿的HTTP版本,相对较为简陋.它有以下特点: 只有一个命令GET 没有header等描述数据的信息 服务器发送完毕,就关闭TCP连接 注 ...

  3. Web开发技术发展历史

    Web开发技术发展历史   来自:天码营 原文:http://www.tianmaying.com/tutorial/web-history Web的诞生 提到Web,不得不提一个词就是"互 ...

  4. TCP/IP协议基础(转)

    转自 http://www.chinaunix.net 作者:Bernardus160  发表于:2003-12-03 17:33:15 TCP/IP协议基础 -------------------- ...

  5. JavaScript 、ECMAScript、commonJS 发展历史 与标准化发展

    本文介绍下JavaScript和 ECMAScript的诞生及发展历史,以及标准化过程. 一.JavaScript诞生 1994年,网景公司(Netscape)发布了Navigator浏览器0.9版. ...

  6. Linux发展历史

    一.硬件与软件发展历史 计算机由硬件和软件组成结构 硬件 1946年诞生于宾夕法尼亚州,占地170平米,重量达到30吨,名字叫做ENIAC(electronic numerical integrato ...

  7. 【转载】Web开发技术发展历史-版本1

    原文在这里. Web开发技术发展历史 Web的诞生 提到Web,不得不提一个词就是“互联网”.Web是World Wide Web的简称,中文译为万维网.“万维网”和我们经常说的“互联网”是两个联系极 ...

  8. Greenplum 的发展历史

    一.Greenplum的发展历史 Greenplum的发展可以分为下面6个阶段:   图 1 Greenplum时间线 Postgres关系型数据库.Postgres是UC Berkeley开发的关系 ...

  9. .net版本发展历史

    最近装上了VS2013,发现好多新特性.新功能,公司办公还在使用VS2005.VS2008,不过用着也很顺手,在最新版Visual Studio中,微软加入了git源码管理工具,和之前的TFS大体上类 ...

随机推荐

  1. HRBUST 1186 青蛙过河 (思路错了)

    在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串 ...

  2. 微信H5页面嵌入百度地图---解决手机的webKit定位,ios系统对非https网站不提供支持问题

    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=yGQt ...

  3. openLDAP安装时无法操作根节点数据,提示的是This base cannot be created with PLA.

    1.无法操作根节点数据,提示的是This base cannot be created with PLA. 解决办法 1)添加一个base.ldif文件,里面的dc和配置文件里的保持一致即可 dn: ...

  4. YII实现restful,postman进行接口测试

    Yii2 restful API文档 一.配置模块: 1.Config/main.php: 2.创建模块目录: 3.Module.php: 二.路由配置: 三.控制器: 四.Models: 五.测试: ...

  5. 洛谷P1030求先序排列

    题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度≤8. 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列. 输 ...

  6. 【转】阿里云免费SSL证书申请与安装使用(IIS7)

    阅读目录 准备: 第一步:免费SSL证书申请 第二步:证书导入 第三步:分配服务器证书 最后一步:访问测试 回到顶部 准备: 阿里云已完成备案的域名一个 回到顶部 第一步:免费SSL证书申请 登陆阿里 ...

  7. WebSphere,WebLogic,Tomcat,IIS

    Weblogic.Tomcat 都基于java的基础架构 Weblogic是一个企业级的应用服务器,其中包括j2ee中的各类应用如jsp,servlet,ejb等, Tomcat是一个初级的应用服务器 ...

  8. TreeTagger

    大家都知道TreeTagger是一个用于词性标注和词型还原的工具,它的返回结果由三部分组成:目标词汇,词性,原形.那该工具是怎样判断目标词汇的词性的呢?又是怎样得到目标词汇的原形的呢?本文就是从这两个 ...

  9. 微服务-开发框架之springboot by 大雄daysn

    目录 一.关于springboot 二.springboot的实践 2.1发布一个rest的api 2.2端点 2.3健康检查 2.4远程监控 一.关于springboot 由来:spring1.0- ...

  10. day063 form 和modelform组件

    注册功能: (写一个简单的注册功能,要求用户名长度不得小于6位.) 普通方式写注册功能  views视图下: def register(request): error_msg=' ' if reque ...