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 ...
随机推荐
- Redis使用指南
原文链接 能坚持别人不能坚持的,才能拥有别人未曾拥有的.关注编程大道公众号,让我们一同坚持心中所想,一起成长!! 设置过期时间.释放资源 使用Redis做K-V存储,一定要注意过期时间的把控,任何K- ...
- Redis06——Redis到底能用在什么地方(上)
之前我们介绍了一些列关于Redis的数据结构.持久化.过期&淘汰策略.集群化等知识点,感兴趣的小伙伴可以在文章的末尾查看往期内容.今天将为大家带来Redis的应用.由于本篇文章较长,所以将拆分 ...
- django中CBV源码分析
前言:Django的视图处理方式有两种: FBV(function base views) 是在视图里基于函数形式处理请求. CBV(class base views)是在视图里基于类的形式处理请求. ...
- MySQL 【优化宝典】
概述 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计数据库 ...
- .Net Framework 工具Mpgo.exe与Ngen.exe
首先放出官方MSDN的文档地址 Mpgo.exe 主要用于分析程序集启动时需要哪些东西,然后将信息反馈给NGen.exe 来更好的优化本机映像,使得应用程序启动更快,工作集缩小.准备发布时,用MPGO ...
- Asp.Net Core 中IdentityServer4 实战之 Claim详解
一.前言 由于疫情原因,让我开始了以博客的方式来学习和分享技术(持续分享的过程也是自己学习成长的过程),同时也让更多的初学者学习到相关知识,如果我的文章中有分析不到位的地方,还请大家多多指教:以后我会 ...
- Nvue/Weex
Nvue/Weex 使用Uniapp做了一个App,感觉性能不是很好,了解过Uniapp的Nvue,就想做一个纯Nvue项目,其实基本就是做一个Weex项目,不得不说坑是真的多,但是渲染性能真的是没得 ...
- shell编程之if语句
shell编程之if判断 目录 shell编程之if判断 1.整数比较 2.字符串比较 3.举例 1.数字比较 2.字符串比较 4.Other 1.整数比较 -eq 等于,如:if [ "$ ...
- python报错:ERROR: No matching distribution found for dns.resolver
可能有的小伙伴在安装dns.resolver的时候会遇到这个问题: 我百度的时候别人是: pip install dns-python 但是我这样安装也还是错误.有些时候是这个包改名了所以你没有搜索到 ...
- Python编写“求一元二次方程的解”
#求一元二次方程的解 import math def equation(a,b,c): h=b*b-4*a*c #一元二次方程的解,百度来的 if h>=0: x1=(-b+math.sqrt( ...