HTTP 协议基础及发展历史

一、 5层网络模型介绍

低三层

物理层:主要作用是定义物理设备如何传输数据。

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

网路层:为数据在结点之间传输创建逻辑链路。

传输层:

想用户提供可靠的端到端(End-to-End)服务。

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

应用层:

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

构建于TCP协议之上

屏蔽网络传输相关细节

二、HTTP协议的发展历史

HTTP/0.9

只有一个命令 GET

没有 HEADER 等描述数据的信息

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

HTTP/1.0

增加了很多命令

增加了 staatus code 和 header

多字符集支持、 多部分发送、权限、 缓存

HTTP/1.1

持久连接

pipeline

增加 host 和其他一些命令

HTTP2

所有数据以二进制传输

同一个连接里面发送多个请求不再需要按照顺序来

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

服务端可以主动发送一些请求

三、HTTP 的三次握手

http 是请求和响应 所以要 通过 TCP来创建连接通道

一个 TCP 通道 可以通过多个 http请求

通过三次握手 来确认这个连接过程  规避因为网络原因从而产生的资源消耗 从而创建 TCP 连接

三次握手:

第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

与建立连接的“三次握手”类似,断开一个TCP连接则需要“四次握手”。

第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可 以接受数据。

第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。

四、 URI、 URL、 URN

URI : 包含 URL 和 URN ,Uniform Resource Identifier 统一资源标志符,用来唯一标识互联网上的信息资源

URL:

Uniform Resource Locator 统一资源定位器,

格式:   http://user:[email protected]:80/path?query=string#hash

URN:永久统一资源定位器

五、 HTTP报文格式

HTTP 方法:

用来定义对于资源的操作。

常用GET、POST等

从定义上讲有各自的语义。

HTTP CODE:

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

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

好的 HTTP 服务可以通过 CODE 判断结果

六、 创建一个最简单的web服务

下载nodejs git

原文地址:https://www.cnblogs.com/zhangtaotqy/p/9408834.html

时间: 2024-07-29 12:21:43

HTTP 协议基础及发展历史的相关文章

Http协议基础及发展历史

一.网络分层协议 经典五层模型 1.物理层:(电脑的硬件,网卡端口,网线,网线连出去的光缆) 定义物理设备如何传输数据 2.数据链路层 在通信的实体间建立数据链路连接. 两台机器物理上是可以连接在一起的,那同时要有配套的软件,通过物理的设备创建一个链路的连接. 3.网络层 为数据在节点之间传输创建逻辑链路 如何我的电脑上访问百度服务器,我们如何去寻找百度这台服务器所在的地址.它就是一个逻辑关系,这个关系是在网络层创建的. 4.传输层 主要有两个协议 TCP/IP,UDP协议.TCP/IP是一个更

Web开发技术发展历史

Web开发技术发展历史 来自:天码营 原文:http://www.tianmaying.com/tutorial/web-history Web的诞生 提到Web,不得不提一个词就是"互联网".Web是World Wide Web的简称,中文译为万维网."万维网"和我们经常说的"互联网"是两个联系极其紧密但却不尽相同的概念.今天"互联网"三个字已经承载了太多的内涵,提到互联网,我们通常想到的一种战略思维,或者是一种颠覆传统的商

【TCP/IP协议基础】

TCP/IP协议基础 -------------------------------------------------------------------------------- 1.TCP/IP协议栈 四层模型 TCP/IP这个协议遵守一个四层的模型概念:应用层.传输层.互联层和网络接口层. 网络接口层 模型的基层是网络接口层.负责数据帧的发送和接收,帧是独立的网络信息传输单元.网络接口层将帧放在网上,或从网上把帧取下来. 互联层 互联协议将数据包封装成internet数据报,并运行必要的

一张图读懂虚拟化的发展历史,看VMware Horizon如何紧跟Citrix的步伐

经常碰到有朋友问我Citrix和VMware公司区别,为了还原一个真相,博主特意整理了两家公司的异同,特别是公司的起家史.由于Citrix是桌面虚拟化和应用虚拟化的业内翘楚,我们着重分析的是这两家公司在桌面虚拟化和应用虚拟化的发展历史,如有错误还请大家指正. 公司大事记 我们先看看两家公司里程碑的几个时间点吧. 公司成立时间:Citrix在1989年,VMware在1998年: 公司上市时间(IPO):Citrix在1995年,VMware在2007年: 共享桌面虚拟化(应用虚拟化的一种)发布时

Linux的渊源与发展历史

Linux的渊源与发展历史 1 Unix的起源及发展 Unix是较早被广泛使用的计算机操作系统之一,它的第一版于1969年由Ken Thompson在AT&T贝尔实验室实现,1973年Ken Thompson与Dennis Ritchie用C语言重写了Unix的第三版内核. 1969年,Unix系统的第一个版本(由Ken Thompson在AT&T贝尔实验室实现) 20世纪70年代末:AT&T成立Unix系统实验室 20世纪70年代末:CSRG(加州大学伯克利分校计算机系统研究小组

python 学习之电脑的发展历史

电脑的发展历史 电脑的学名叫计算机,电脑是用来做计算的.在古时候,人们最早使用的计算工具可能是手指,英文单词“digit”既有“数字”的意思,又有“手指“的意思.古人用石头打猎,所以还有可能是石头来辅助计算.  缺点:手指和石头太低效了 后来出现了”结绳 “记事.   缺点:结绳慢,绳子还有长度限制. 又不知过了多久,许多国家的人开始使用”筹码“来计数,最有名的就要数咱们中国商周时期出现的算筹了.古代的算筹实际上是一根根同样长短和粗细的小棍子,大约二百七十几枚为一束; 多用竹子制成,也有用木头.

选一种你比较熟悉的软件,并点评它的优缺点,并描述此类软件的发展历史

windows操作系统, 优点:图形化界面能够更加便捷的对文件进行处理 缺点:容易被黑客破解从而导致信息的丢失 发展历史: 1.Windows是由微软在1983年11月宣布,并在两年后(1985年11月)发行的. 2.Windows版本2.0是在1987.11正式在市场上推出的.该版本对使用者界面做了一些改进.2.0版本还增强了键盘和鼠标界面,特别是加入了功能表和对话框. 3.Windows3.0是在1990年5月22日发布的,它将Win/286和Win/386结合到同一种产品中.Windows

计算机芯片的发展历史——软件工程第一章第11题 范世良

软件的发展历史有有关的纪录片汇总: 纪录片名称 链接 Tetris: From Russia With Love Tetris: From Russia with Love ProJect Code Rush Project Code Rush The Pixar Story The Pixar Story id Software – All Your History id Software – All Your History Startup.com Startup.com The Histo

小白日记27:kali渗透测试之Web渗透-Http协议基础,WEB

Http协议基础 Web技术发展[http://www.cnblogs.com/ProgrammerGE/articles/1824657.html] 静态WEB[网页] 动态WEB 属于一种应用程序 基于数据库 每个人看到的内容不同 根据用户输入,返回不同结果 WEB攻击类型有数百种 WEB攻击面 1.Network 2.OS 3.WEB Server 4.APP Server 5.Web Application 6.Database 7.Browser HTTP协议基础[http://www