| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 计算机网络学习笔记(二)---HTTP协议 -> 正文阅读 |
|
[网络协议]计算机网络学习笔记(二)---HTTP协议 |
HTTP 是超文本传输协议,也就是HyperText?Transfer?Protocol。超文本就是超越了普通文本的文本,它是文字、图片、视频等的混合体。关键是超链接,能从一个超文本跳转到另外一个超文本。HTTP 是一个在计算机网络里两点之间传输文字、图片、音频、视频等「超文本」数据的约定和规范。HTTP使用TCP协议,是一种无状态协议。TCP 为HTTP 提供可靠数据传输服务 。服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息 。 一、HTTP报文格式客户端发送一个请求报文给服务器,服务器根据请求报文中的信息进行处理,并将处理结果放入响应报文中返回给客户端。每一行数据通过"\r\n"分割。 请求报文结构
示例:
响应报文结构响应报文是服务器对请求资源的响应,同样也是以"\r\n"来分割。
示例:
二、HTTP方法HTTP支持几种不同的请求命令,这些命令被称为HTTP方法。每条HTTP请求报文都包含一个方法。这个方法会告诉服务器要执行什么动作(获取一个Web页面、运行一个网关程序、删除一个文件等)。下表列出了常见的HTTP方法。
三、HTTP 首部有 4 种类型的首部字段:通用首部字段、请求首部字段、响应首部字段和实体首部字段。 四、HTTP 状态码服务器返回的?响应报文?中第一行为状态行,包含了状态码以及原因短语,用来告知客户端请求的结果。
五、Cookie与SessionHTTP作为无状态协议,必然需要在某种方式保持连接状态。 Cookie是客户端保持状态的方法。 Cookie简单的理解就是存储由服务器发至客户端并由客户端保存的一段字符串。为了保持会话,服务器可以在响应客户端请求时将Cookie字符串放在Set-Cookie下,客户机收到Cookie之后保存这段字符串,之后再请求时候带上Cookie就可以被识别。 Cookie在客户端的保存形式可以有两种,一种是会话Cookie一种是持久Cookie,会话Cookie就是将服务器返回的Cookie字符串保持在内存中,关闭浏览器之后自动销毁,持久Cookie则是存储在客户端磁盘上,其有效时间在服务器响应头中被指定,在有效期内,客户端再次请求服务器时都可以直接从本地取出。存储在磁盘中的Cookie是可以被多个浏览器代理所共享的。 Session是服务器保持状态的方法。 Session保存在服务器上,可以保存在数据库、文件或内存中,每个用户有独立的Session用户在客户端上记录用户的操作。可以理解为每个用户有一个独一无二的Session ID作为Session文件的Hash键,通过这个值可以锁定具体的Session结构的数据,这个Session结构中存储了用户操作行为。 大多数的应用都是用Cookie来实现Session跟踪的,第一次创建Session的时候,服务端会在HTTP协议中告诉客户端,需要在Cookie里面记录一个Session ID,以后每次请求把这个会话ID发送到服务器,我就知道你是谁了。如果客户端的浏览器禁用了Cookie,会使用一种叫做URL重写的技术来进行会话跟踪,即每次HTTP交互,URL后面都会被附加上一个诸如sid=xxxxx这样的参数,服务端据此来识别用户,这样就可以帮用户完成诸如用户名等信息自动填入的操作了。
HTTP
协议是无状态的,主要是为了让
HTTP
协议尽可能简单,使得它能够处理大量事务。H
TTP/1.1 引 入 Cookie 来保存状态信息。 在浏览器之后向同一服务器再次发 起请求时被携带上,用于告知服务端两个请求是否来自同一浏览器。由于之后每次请求都会需要携带 Cookie
数据,因此会带来额外的性能开销。
创建过程
服务器发送的响应报文包含
Set-Cookie
首部字段,客户端得到响应报文后把
Cookie 内容保存到浏览器中。
客户端之后对同一个服务器发送请求时,会从浏览器中取出
Cookie
信息并通过
Cookie 请求首部字段发送给服务器。
六、URL与URIHTTP 使用 URL(?Uniform?Resource?Locator,统一资源定位符)来定位资源,它是 URI(Uniform?Resource?Identifier,统一资源标识符)的子集,URL 在 URI 的基础上增加了定位能力。URI 除了包含 URL,还包含 URN(Uniform Resource Name,统一资源名称),它只是用来定义一个资源的名称,并不具备定位该资源的能力。例如 urn:isbn:0451450523 用来定义一个书籍名称,但是却没有表示怎么找到这本书。 ?七、Web缓存Web 缓存器 ( Web cache )也叫?代理服务器 ( proxy server),是能够代表初始 Web 服务器来满足 HTTP 请求的网络实体 。 Web 缓存器有自己的磁盘存储空间,并在存储空间中保存最近请求过的对象的副本 。Web 缓存器可以大大减少对客户请求的响应时间,特别是当客户与初始服务器之间的瓶颈带宽远低于客户与 Web 缓存器之间的瓶颈带宽时更是如此。如果在客户与 Web 缓存器之间有一个高速连接(情况常常如此),并且如果用户 请求的对象在 Web 缓存器上,则 Web 缓存器可以迅速将该对象交付给用户。Web 缓存器能够大大减少一个机构的接入链路到因特网的通信量 。 通过减少通信量,该机构(如一家公司或者一所大学)就不必急于增加带宽,因此降低了费用 。 此外Web 缓存器能从整体上大大减低因特网上的 Web流量,从而改善了所有应用的性能。 ?客户通过 Web 援存器请求对象的过程:
HTTP 比较严重的缺点就是不安全,可以用 HTTPS 的方式解决,也就是通过引入 SSL/TLS 层,提高了安全性。 八、HTTP1.0与HTTP1.1HTTP1.0是第一个得到广泛使用的HTTP版本。HTTP1.0最早在网页中使用是在1996年,而HTTP1.1则在1999年才开始广泛应用于现在的各大浏览器网络请求中,同时HTTP1.1也是当前使用最为广泛的HTTP协议。 主要区别主要体现在:
|
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 1:21:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |