http之抽丝剥茧,深度剖析http的那些事儿
最近,小编一心扎跟学技术,毫不顾及头发的掉落速度,都快成地中海了,不过也无大碍,谁让咱是一个爱钻技术的男人呢。最近两周老是看到http,那么这个http,有哪些猫腻呢,很多同学都有这种理解,就是对于http,只能意会不能言传,或者只能说出其中一两点,这很一个it从业者甚是很烦啊,所以,小编不才,接下来为大家深度剖析。
一、http是什么?用来干嘛的?
http,全称:超文本传输协议,官方定义:http是一个简单的请求-响应协议,也是应用最为广泛的一种网络传输协议。
作用:用来传输数据的,再详细点讲,是基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)
二、http消息结构是怎样的?
HTTP是基于客户端/服务端(C/S)的架构模型,客户端请求消息---------------------》服务器响应消息
客户端和服务端怎么理解呢?这里给大家讲解通俗一点,好比咱们进百度网站,打开任何一个web浏览器,直接输入http://www.baidu.com ,咱们把这个发送过去,拿咱们的这个浏览器就好比是客户端。服务端呢,你可以这样理解,就是百度的后台,我们发送请求过去,它那边会有响应,不管响应成不成功都会给咱们返回一个信号,让我们知道是不是请求成功了。
客户端一般包括以下格式: 请求行 、请求头 、空行、 请求数据 一共四部分,图来说明一切
服务端也有四部分:状态行、 消息报头 、空行 、响应正文,下面直接上样例:
记住,各位同学,千万别搞混淆了,客户端和服务端是有区别的,不是一样的,千万别以为这两者的消息结果一样(要不是写这个帖子,我以前还真没发现,各位请您多担待!)
三、http靠什么请求,有哪些请求方法?
在以前,一般都是http1.0版本,但是现在大部分都是http1.1版本(最新标准)
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法
至于这九种方法,我就不一一介绍了,小编我的水平也是一般般,顶多算个it爱好者,喜欢掰碎一些东西仅此而已,请各位看官谅解,找了资料,直接上一张图
既然说到这,那我就不得不提一句,很多面试官都会问的一个问题:get与post的区别,这里顺便为大家解释一番
四、http状态码
当我们访问一个网站时,我们使用的浏览器会向访问的网站发出请求,然后,该网站所在的服务器会返回一个http状态码的信息头,用来表示响应咱们发过去的请求
所以,我们要记住常见的http状态码,说不定在我们的工作中偶尔会用的到
1开头: 信息状态码
2开头:成功状态码
3开头:重定向状态码
4开头:客户端错误状态码
5开头:服务端错误状态码
以下仅仅列举出常见的,至于最全的状态码,给大家发链接去查找:https://www.runoob.com/http/http-status-codes.html
100: 继续 初始的请求已经接受,请客户端继续发送剩余部分
200: 成功 请求成功,服务器已成功处理了请求
301: 永久移动 请求的页面已永久跳转到新的url
400: 错误请求 服务器不理解请求的语法
403: 禁止 服务器拒绝请求
404: 未找到 服务器找不到请求的页面
500: 服务器错误 服务器内部错误,无法完成请求
502: 错误网关 服务器作为网关或代理出现错误
504: 网关超时 网关或代理服务器,未及时获取请求
五、http与https有什么区别呢?
http:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端的请求与应答的标准(TCP),使浏览器更加高效、使网络传输减少
https:是以安全为目标的http通道,简单来讲就是http的安全版,即HTTP下加入SSL层,HTTPS的安全基础是 SSL,因此加密的详细内容就需要SSL
数据加密传输,是HTTP和HTTPS之间的本质性区别
转载须注明出处,毕竟本着资源共享的心态,谢谢合作!!!
http之抽丝剥茧,深度剖析http的那些事儿的更多相关文章
- 《AngularJS深度剖析与最佳实践》简介
由于年末将至,前阵子一直忙于工作的事务,不得已暂停了微信订阅号的更新,我将会在后续的时间里尽快的继续为大家推送更多的博文.毕竟一个人的力量微薄,精力有限,希望大家能理解,仍然能一如既往的关注和支持sh ...
- ASP.NET Core管道深度剖析(2):创建一个“迷你版”的管道来模拟真实管道请求处理流程
从<ASP.NET Core管道深度剖析(1):采用管道处理HTTP请求>我们知道ASP.NET Core请求处理管道由一个服务器和一组有序的中间件组成,所以从总体设计来讲是非常简单的,但 ...
- Objective-C类成员变量深度剖析
目录 Non Fragile ivars 为什么Non Fragile ivars很关键 如何寻址类成员变量 真正的“如何寻址类成员变量” Non Fragile ivars布局调整 为什么Objec ...
- 大众点评开源分布式监控平台 CAT 深度剖析
一.CAT介绍 CAT系统原型和理念来源于eBay的CAL的系统,CAT系统第一代设计者吴其敏在eBay工作长达十几年,对CAL系统有深刻的理解.CAT不仅增强了CAL系统核心模型,还添加了更丰富的报 ...
- 深度剖析WordPress主题结构(转)
利用强大的技术,可以把基于wordpress的网站做成各种各样的形式,这除了要求wordpress主题开发人员精通html,PHP,JS,CSS等技术,还需要开发者掌握WordPress主题的框架. ...
- LCD深度剖析
LCD 深度剖析 来源:http://blog.csdn.net/hardy_2009/article/details/6922900 http://blog.csdn.net/jaylondon/a ...
- WCF技术剖析之十九:深度剖析消息编码(Encoding)实现(下篇)
原文:WCF技术剖析之十九:深度剖析消息编码(Encoding)实现(下篇) [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经>为此录制的节目视频(苏州话 ...
- 大兴雷克萨斯深度剖析2013款LS460L_深圳大兴雷克萨斯_太平洋汽车网
大兴雷克萨斯深度剖析2013款LS460L_深圳大兴雷克萨斯_太平洋汽车网 大兴雷克萨斯深度剖析2013款LS460L
- Java反射机制剖析(四)-深度剖析动态代理原理及总结
动态代理类原理(示例代码参见java反射机制剖析(三)) a) 理解上面的动态代理示例流程 a) 理解上面的动态代理示例流程 b) 代理接口实现类源代码剖析 咱们一起来剖析一下代理实现类($Pr ...
随机推荐
- [日志分析]Graylog2采集Nginx日志 被动方式
graylog可以通过两种方式采集nginx日志,一种是通过Graylog Collector Sidecar进行采集(主动方式),另外是通过修改nginx配置文件的方式进行收集(被动方式). 这次说 ...
- 利用java编写物品的品牌、尺寸、价格、库存(新手)
//定义一个类 public class NV{ //公共静态的主方法 public static void main(String[] args){ //打印 “京东三九女神节” 标题 System ...
- mysql锁机制和事务隔离
mysql事务 1.InnoDB事务原理 事务(Transaction)是数据库区别于文件系统的重要特性之一,事务会把数据库从一种一致性状态转换为另一种一致性状态. 在数据库提交时,可以确保要么所有修 ...
- Who Gets the Most Candies? POJ - 2886(线段树单点更新+区间查询+反素数)
预备知识:反素数解析 思路:有了反素数的解法之后就是线段树的事了. 我们可以用线段树来维护哪些人被淘汰,哪些人没被淘汰,被淘汰的人的位置,没被淘汰的人的位置. 我们可以把所有人表示为一个[1,n]的区 ...
- 【简说Python WEB】Web应用部署
目录 [简说Python WEB]Web应用部署 应用层 缓存层 数据层 Gunicorn 的应用 1.安装Gunicorn 2.Gunicorn的启动 Nginx 的应用 1.docker方式部署安 ...
- [字典树,trie树] 树之呼吸-肆之型-前缀统计
D.树之呼吸-肆之型-前缀统计 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 59 (8 users) Total Accepted: ...
- mysql数据库中的mybatis中xml解决in不起作用的问题
在sql语句中,某个字段进行in条件的时候,不起作用, 但是执行语句查询为null数据,但是根据表中数据来看是不可能有null数据的可能性的,所以不知道什么原因导致数据出不来 我因此想到以下解决办法来 ...
- OpenCV-Python 交互式前景提取使用GrabCut算法 | 三十五
目标 在本章中, 我们将看到GrabCut算法来提取图像中的前景 我们将为此创建一个交互式应用程序. 理论 GrabCut算法由英国微软研究院的Carsten Rother,Vladimir Kolm ...
- 10行Python代码计算汽车数量
当你还是个孩子坐车旅行的时候,你玩过数经过的汽车的数目的游戏吗? 在这篇文章中,我将教你如何使用10行Python代码构建自己的汽车计数程序. 以下是环境及相应的版本库: Python版本 3.6.9 ...
- coding++:win10家庭版升级专业版方案
win10家庭版升级专业版密钥: VK7JG-NPHTM-C97JM-9MPGT-3V66T 4N7JM-CV98F-WY9XX-9D8CF-369TT FMPND-XFTD4-67FJC-HDR8C ...