服务器ie打不开http协议,在浏览器输入地址后,这个世界发生了什么(http协议浅谈)...

引言

这篇文章是我各处收集有关于http的知识,不成体系,爱看不看?,看完点赞。

我们输入网址之后发生的事情

输入网址并回车(URL 包括 协议名称 域名或者IP 端口号 请求资源具体地址 参数)

解析域名 DNS解析

浏览器发送HTTP请求

服务器处理请求

服务器返回HTML响应

浏览器处理HTML页面

继续请求其他资源

首先客户机与服务器需要建立连接,只要点击某个超级连接,HTTP的工作开始。

建立连接后,客户端发送一个请求给服务器,请求方式的格式为,统一资源标识符(URL),协议版本号,后面是MIME信息包括服务器信息、实体信息和可能的内容。

服务器收到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或者错误的代码、后面是MIME信息包括服务器信息、实体信息和可能的内容。

客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

如果以上过程任意一步出现错误,那么产生的错误信息将返回到客户端,有显示器输出。

TCP/IP协议栈

http是超文本传输协议,从www浏览器传输到本地浏览器的一种传输协议,网站是基于HTPP协议的,例如网站的图片、css、js都是基于HTTP协议进行传输的

HTTP协议是由从客户机到服务器的请求(request)和从服务器到客户机的响应(response)进行约束和规范

应用层为用户提供所需要的各种服务,例如HTTP、FTP、DNS、SMTP等。

传输层为应用层实体提供端到端的通信功能,保证数据包的顺序传递及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据协议(UDP)

网络层解决主机到主机的通信问题。IP协议是国际互联层最重要的协议

网络接口层负责数据在主机和网络之间的交换

bVN0Vd?w=718&h=531

请求和响应

HTTP请求组成:请求⾏、消息报头、请求正⽂。

HTTP响应组成:状态⾏、消息报头、响应正⽂。

请求⾏组成:以⼀个⽅法符号开头,后⾯跟着请求的URI和协议的版本。

状态⾏组成:服务器HTTP协议的版本,服务器发回的响应状态代码和状态代码的⽂本描述。

accept-Encoding 编码:数据的一种组织格式

Accept-Language: 接受的语言

Cache-Control: 缓存

Connection

Cookie

Host:主机名称

HTTP请求的几种方法

OPTIONS:这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。

HEAD:与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。

GET:向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web

Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问。

POST:向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。

PUT:向指定资源位置上传其最新内容。

DELETE:请求服务器删除Request-URI所标识的资源。

TRACE:回显服务器收到的请求,主要用于测试或诊断。

HTTP状态码

1xx消息,表示请求已经接收,继续处理

2xx成功

3xx重定向

4xx客户端错误

5xx服务器错误

cookies与session

Cookies是保留在客户端的一小段文本,随客户端每一个请求发送该URL下的所有cookies到服务端

Session则保存在服务器端,通过唯一的值sessionID来区分每一个用户。sessionID随每个请求发送到服务器,服务器根据sessionID来识别客户端,再通过session的key 获取 session的值。

cookie使用

1、cookie将服务器设置的cookie返回到服务器

2、set-cookie 服务器向客户端设置cookie

服务端在响应消息中用Set-Cookie头将Cookie的内容回送给客户端,客户端在新的请求中将相同的内容携带在Cookie头中发送给服务端。从而实现会话的保持。

HTTP的链路安全

1、加密重要数据(密码md5)

2、对非重要数据签名 (对付爬虫)

3、使用安全连接HTTPS协议

HTTP2的优点

使用二进制格式传输,更高效、更紧筹

对报头压缩、降低成本

多路复用,一个网络连接实现并行请求

服务器主动推送,减少请求延时

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505471.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

个性化显示服务器,Linux系统个性化登录提示信息的方法

字符界面操作久了,就没有太多的新鲜感,所以加点登录时的个性化显示,让心情变的更愉快!如果采用root账号登录编辑/etc/bashrc内容,那所有其他帐号登录都会提示相同的内容,如果想每个用户进行配置&#xff0c…

微软2022服务器,​微软公开地分享了即将发布的WindowsServer 2022的特性

微软测试其自去年以来的下一个版本的WindowsServer在内部测试程序中。尽管发布了常规的服务器测试构建,但Microsoft官员很少提供有关这些服务器测试构建中的特性和更新的任何公开信息。但是,在3月2日,官员们更公开地分享了即将发布的WindowsS…

leetcode 18 --- 4sum

1 题目 给出一个有n个元素的数组S,S中是否有元素a,b,c和d满足abcd目标值?找出数组S中所有满足条件的四元组。 注意: 四元组(a、b、c、d)中的元素必须按非降序排列。(即a≤b≤c≤d)解集中不能…

leetcode 111 --- 二叉树最小深度

1 题目 求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。 2 解法 2.1 递归方法 要找到最小深度,首先要确定有根到叶的第一个叶节点,也就是一层一层确定.所以有: /*** struct TreeNode {* int val;* struct TreeNode *left;* struct…

leetcode 145 --- 二叉树后序遍历

1 题目 用递归的方法对给定的二叉树进行后序遍历。 例如: 给定的二叉树为{1,#,2,3}, 返回[3,2,1]. 示例1 输入 {1,#,2,3} 输出 [3,2,1] 2 解法 2.1 递归解法 /*** struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/c…

leetcode 144 --- 二叉树前序遍历

1 题目 求给定的二叉树的前序遍历。 2 解法 2.1 递归解法 2.2 非递归解法 前序遍历,先遍历根节点,然后遍历左节点,最后是右节点,所以用栈的方式,先是根节点入栈,然后出栈遍历,如果该节点有左右节点,那么左右节点入栈(应为右节点先入栈,然后是左节点,因为左节点先遍历,所以…

leetcode 116 --- 填充每个节点指向最右节点的next指针

1 题目 填充每个节点指向最右节点的next指针, 填充所有节点的next指针,指向最接近它的同一层右边节点。如果没有同一层没有右边的节点,则应该将next指针设置为NULL。 初始时,所有的next指针都为NULL 注意: 你只能使用常量级…

leetcode 110 --- 判断给定的二叉树是否是平衡二叉树

1 题目 判断给定的二叉树是否是平衡二叉树 平衡二叉树的性质为: 要么是一棵空树,要么任何一个节点的左右子树高度差的绝对值不超过 1。 一颗树的高度指的是树的根节点到所有节点的距离中的最大值。 2 解法 2.1 多次递归 最初的想法肯定是先求出每个节点的左右…

leetcode 107 --- 二叉树程序遍历 ii

1 题目 给定一个二叉树,返回该二叉树由底层到顶层的层序遍历,(从左向右,从叶子节点到根节点,一层一层的遍历) 2 解法 2.1 我的最初解法 按照正常的层序遍历应该是从上到下的,只要用一个栈先临时存一下每…

leetcode 148 --- 链表排序

1 题目 链表排序 2 解法 2.1 冒泡排序 /*** struct ListNode {* int val;* struct ListNode *next;* };*/class Solution { public:/*** * param head ListNode类 * return ListNode类*/ListNode* sortList(ListNode* head) {// write code hereif (head) {ListNode* endNo…

leetcode 1 --- 两数之和

1 题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 2 解法 struct haveOrigionIndexNu…

leetcode 2 --- 两数相加

1 题目 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设…

leetcode 9 --- 回文数

1 题目 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 2 解法 2.1 初版 2.1.1 思路 由于题目不允许把数直接转化为字符串, 所以想到了把数的每一位转换为双向数组, 然后对头尾一点…

C++中类和对象的一些注意事项 ---继承

1 继承中的访问权限问题 所有继承方式, 子类都无法访问父类的private成员. 那么用如下测试代码尝试一下: #include <iostream> using namespace std;class father { public:int m_father_public_value; protected:int m_father_protected_value; private:int m_father_…

C++中类和对象的一些注意事项 --- 多态

1. 一些继承中的问题 1.1 多继承中父类含有重名成员问题 如下: #include <iostream> #include <string> using namespace std;class father1 { public:father1() {class_name "father1";}string class_name; };class father2 { public:father2() {cl…

电脑按f8无法进入安全模式_自已有电脑的人,都会遇到系统死机问题,教大家实用一招自已解决...

其实我们电脑死机蓝屏重启并不可怕&#xff0c;如果只要懂得最基本的一些查找方法就可以解决这些问题&#xff0c;因为电脑是一个完整的系统&#xff0c;既然是系统工程必须由硬件与软件共同合作才能完成出色的任务&#xff0c;如果电脑出现死机蓝屏等问题可以参考以下方式进行…

台式电脑键盘字母乱了_键盘侠的育儿经利用键盘引导学龄前儿童正确使用电脑、学习英文字母和拼音...

点击上方“总想做自己”关注我可以订阅哦一点资讯邀约作者&#xff1a;方游专注探讨个人成长与正向激励的话题&#xff0c;有干货&#xff0c;不再错过&#xff0c;快来点击关注吧&#xff01;微信公众号&#xff1a;apple_seeworld难得机会与孩子在家里有长达半月的相处&#…

C++模板的注意事项

函数模板 template <typename T> //把typename换成class也可以 函数模板调用方法 使用过程中, 有两种方法调用, 如下: 自动类型推导:#include <iostream>template <class T> void swap(T &first, T &second) {T temp;temp first;first se…

excel教程自学网_Excel自学教程:万能查找函数Lookup的神应用和技巧

提起查找函数&#xff0c;大家第一时间想到的肯定是Vlookup&#xff0c;其实大多数人不知道&#xff0c;Lookup才是查找函数之王&#xff0c;它几乎能高效地实现Vlookup函数的所有功能&#xff0c;部分功能是Vlookup函数无法比拟的。一、语法结构和基本使用方法。应用场景&…

C++ STL 容器的一些总结

1 C STL类型及实现原理 1.1 顺序容器 容器中的元素为有序排列,可以指定元素插入位置. 1.1.1 vector 顺序存储, 初始化过程会分配一定量空间, 在尾部插入会很快, 但是在中间插入元素, 会把之后所有元素向后平移, 所以较慢(中间删除元素同理). 如果元素个数超过当前限制, 会重…