Http协议基础及发展历史
一、网络分层协议
经典五层模型

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协议基础及发展历史的更多相关文章
- HTTP 协议基础及发展历史
一. 5层网络模型介绍 低三层 物理层:主要作用是定义物理设备如何传输数据. 数据链路层:在通信的实体间建立数据链路连接. 网路层:为数据在结点之间传输创建逻辑链路. 传输层: 想用户提供可靠的端到端 ...
- HTTP从入门到入土(2)——HTTP协议发展历史
HTTP协议的发展历史 HTTP/0.9 0.9版本是第一个定稿的HTTP版本,相对较为简陋.它有以下特点: 只有一个命令GET 没有header等描述数据的信息 服务器发送完毕,就关闭TCP连接 注 ...
- Web开发技术发展历史
Web开发技术发展历史 来自:天码营 原文:http://www.tianmaying.com/tutorial/web-history Web的诞生 提到Web,不得不提一个词就是"互 ...
- TCP/IP协议基础(转)
转自 http://www.chinaunix.net 作者:Bernardus160 发表于:2003-12-03 17:33:15 TCP/IP协议基础 -------------------- ...
- JavaScript 、ECMAScript、commonJS 发展历史 与标准化发展
本文介绍下JavaScript和 ECMAScript的诞生及发展历史,以及标准化过程. 一.JavaScript诞生 1994年,网景公司(Netscape)发布了Navigator浏览器0.9版. ...
- Linux发展历史
一.硬件与软件发展历史 计算机由硬件和软件组成结构 硬件 1946年诞生于宾夕法尼亚州,占地170平米,重量达到30吨,名字叫做ENIAC(electronic numerical integrato ...
- 【转载】Web开发技术发展历史-版本1
原文在这里. Web开发技术发展历史 Web的诞生 提到Web,不得不提一个词就是“互联网”.Web是World Wide Web的简称,中文译为万维网.“万维网”和我们经常说的“互联网”是两个联系极 ...
- Greenplum 的发展历史
一.Greenplum的发展历史 Greenplum的发展可以分为下面6个阶段: 图 1 Greenplum时间线 Postgres关系型数据库.Postgres是UC Berkeley开发的关系 ...
- .net版本发展历史
最近装上了VS2013,发现好多新特性.新功能,公司办公还在使用VS2005.VS2008,不过用着也很顺手,在最新版Visual Studio中,微软加入了git源码管理工具,和之前的TFS大体上类 ...
随机推荐
- pytest文档13-allure2生成html报告(史上最详细)
前言 allure是一个report框架,支持java的Junit/testng等框架,当然也可以支持python的pytest框架,也可以集成到Jenkins上展示高大上的报告界面. 环境准备 1. ...
- JxBrowser之二:常用函数addLoadListener
1.常用函数addLoadListener,包含对页面加载状态的多种监控回调. browser.addLoadListener(new LoadAdapter() { @Override public ...
- linux的基本操作概览
目录 文件路径相关的命令 最重要的一个通配符:* zip相关命令 重定向 三种权限 一些网络操作 安装软件的三种方式 最近开始学习linux的一些基础操作,安装了ubantu 16版本的Linux操作 ...
- html5画心
- express+mockjs实现模拟后台数据发送
前言: 大多数时候,前端会和后端同时进行开发,即在我们开发完页面的时候,很可能还不能立马进入联调阶段,这个时候,为了保证我们接口的有效性和代码的功能完整,我们可能需要模拟数据. 模拟数据方法 1.通过 ...
- 2019清明期间qbxt培训qwq
4.4上午:数学基础 (qwq整成word和cpp了,它居然不能直接把文档附上来) part 1:高精度运算 高精加和高精减就不说了,之前写过博客了qwq,讲一讲高精乘和高精除吧. 1.高精度乘法(不 ...
- python----常用模块(random,string,time&datetime,os,sys,xpinyin(拼音))
一.模块.包 1.1 什么是模块 在python中,一个.py文件就构成一个模块,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称. 1.2 什么是包 ...
- linux c使用socket进行http 通信,并接收任意大小的http响应(三)
使用socket进行http通信的时候,浏览器返回的响应经常不是固定长度的,有时候很大,有些时候又非常小,十分讨厌.如果仅仅只是为了接收一小段信息,设置一个十分大的缓存,这样又会十分浪费.而且经常更改 ...
- python3入门教程(一)之 hello world
概述 python 这门语言这几年非常的火,很多技术都用的到,像爬虫,大数据,人工智能等,包括很多的小孩都首选python作为入门学习语言,那python 究竟是怎样一门语言呢? Python 是一个 ...
- Angular4.0.0正式发布,附新特性及升级指南
本文首发地址:Angular4.0.0正式发布,附新特性及升级指南 作者|孙薇 编辑|尾尾 经历了6个RC版本之后,Angular项目组终于发布了新版,即正式版 Angular 4.0.0.新版的 A ...