| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> Web and HTTP -> 正文阅读 |
|
[网络协议]Web and HTTP |
Web是一种应用,HTTP是支持Web应用的协议。 Web 与 HTTP 一些术语
【协议名】Prot://【用户:口令】user:psw@【主机名】www.someSchool.edu/【路径名】someDept/【文件名:端口】pic.gif:port 【如果不是特殊情况,不需要提供端口号,不提供时使用的是默认端口号】 HTTP概况 HTTP:超文本传输协议
?
使用TCP:
HTTP是无状态的
维护状态的协议很复杂!
HTTP连接 非持久HTTP
【TCP建立连接的时间+http请求报文时间(报文相对于对象小很多,所以一般可以忽略不计)+http响应对象传输时间+TCP连接关闭时间】 持久HTTP
【持久HTTP,在TCP连接建立后进行HTTP报文连接请求,对象回来,传输完之后,TCP连接不关,在这个连接上如果还有其他http报文的连接请求,对象回来,可以继续进行】 【Web浏览器和Web服务器在建立连接的时候,需要下层的协议实体进行一次交互才能完成】 非持久HTTP 非持久HTTP的响应时间 往返时间RTT(round-trip time):一个小的分组从客户端到服务器,在回到客户端的时间(传输时间忽略)【因为是小的分组,字节数很少,所以忽略不计,传输不许时间,传播需要时间】 响应时间:
共:2RTT+传输时间【是响应时间,所以没算TCP关闭的时间】 持久HTTP 非持久HTTP的缺点:
持久HTTP
????????非流水方式的持久HTTP:
????????流水方式的持久HTTP:
HTTP请求报文
【GET:客户端从服务器请求东西;(头和body都要) POST:上载 HEAD:请求头部(搜索引擎拿到头建索引)】 【Host:代表主机名;User-agent:用户代理的程序,浏览器的第几个版本;Connection:连接是否关闭;】 【POST的话,body就要包括需要上载的那些东西(表单)】 提交表单输入 POST方式:
URL方式:
HTTP方法 HTTP/1.0
HTTP/1.1
HTTP响应报文 【Last-Modified:请求对象上一次的修改时间;Content-Length:内容的长度,首部行回车之后我要读多少个字节是HTTP响应的内容;】 【HTTP运行在TCP之上,TCP向上层提供的是字节流的服务,不维护上面报文交下来的的边界,所以需要应用层自己去区分哪里是应用报文的头,哪里是应用报文的结束,采用TCP协议,得自己维护报文和报文的界限】 HTTP响应状态码 位于服务器 ?? 客户端的响应报文中的首行 一些状态码的例子: ????????200 OK
????????301 Moved Permanently
????????400 Bad Request
????????404 Not Found
????????505 HTTP Version Not Supported【服务器版本号不支持】 【HTTP是个无状态的协议,服务器不维护客户端的状态,每次客户端发送了请求后,服务器就封装对象发回去,不记录之前或者不管之后的请求,服务器不维护客户端的状态】——好处:简单,同样的服务器资源可以支持的客户端更多一点 用户-服务器状态:cookies 大多数主要的门户网络使用cookies 4个组成部分:
例子:
【第一次访问的时候,请求上没有cookie,服务端会生成一个cookie,返回给客户端,之后请求的时候,报文就会带上cookie,以此关联出用户的访问行为】 【cookie把HTTP无状态的协议变成一个维护状态的协议,记录客户端的状态】 Cookies:维护状态 Cookies能带来什么:
如果维持状态:
Cookies与隐私:
Web缓存(代理服务器)[Web cache] 目标:不访问原始服务器,就满足客户的请求 代理服务器:代表原始服务器满足HTTP请求的网络实体,保存最近请求过的对象的拷贝。
为什么要使用Web缓存?
缓存例子:安装本地缓存 【本地缓存下来的对象,服务器那边可能变了】 条件GET 代理服务器如何发现缓存的对象是不是新的?
? |
|
网络协议 最新文章 |
使用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:38:37- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |