Http相关

HTTP/1.0、 HTTP/1.1、HTTP/2.0之间的区别

HTTP/1.0:

连接处理: HTTP/1.0 使用简单的短连接来处理每个请求,每次请求都需要建立一个新的 TCP 连接到服务器,请求完成后立即关闭连接。

性能: HTTP/1.0 性能较差,主要因为每个请求都需要重新建立连接,这增加了延迟。

头部压缩: HTTP/1.0 不支持头部数据的压缩,这导致了较大的网络开销。

HTTP/1.1:

保持连接: HTTP/1.1 引入了持久连接(Keep-Alive),使得在单个连接上可以传输多个文件,减少了建立连接的次数,提高了性能。

请求管道化: HTTP/1.1 支持请求管道化,允许多个请求在一个连接上同时发送,避免了先前版本中存在的一个请求需要等待前一个请求响应完成的问题。

头部压缩: 支持头部压缩,减小了请求和响应的大小。

HTTP/2.0:

多路复用: HTTP/2.0 支持多路复用,允许在单个连接上并行交换多个请求和响应,提高了并发性能。

头部压缩: HTTP/2.0 进一步改进了头部压缩,减少了重复数据的传输,降低了网络开销。

服务器推送: HTTP/2.0 支持服务器推送,服务器可以在客户端请求之前主动向客户端推送资源,加快了页面加载速度。

总的来说,HTTP/1.1 在 HTTP/1.0 的基础上引入了持久连接和请求管道化,提升了性能。而 HTTP/2.0 在 HTTP/1.1 的基础上进一步改进了性能,引入了多路复用和服务器推送等技术,使得网络通信更加高效和快速。

多路复用细说:

多路复用是 HTTP/2.0 协议中的一个重要概念,它极大地改善了网络性能,特别是对于提升网页加载速度和优化资源利用方面有重要意义。我来详细解释下多路复用的概念和作用:

1. 单一连接上的并发请求

在传统的 HTTP/1.x 中,每个资源(比如页面中的图片、样式表、脚本等)都需要通过独立的连接来获取,这可能导致连接的建立和资源传输所带来的延迟,尤其是在高延迟的网络环境下,会影响页面的加载速度。而在 HTTP/2.0 中,所有的请求都可以通过同一个 TCP 连接并行传输,这就是多路复用的核心概念。

2. 提升并发性能

多路复用允许客户端发送多个并发请求,服务器也可以以任意顺序对这些请求进行响应,这样可以最大化地利用网络连接,提高了并发性能,尤其是对于那些需要同时获取大量资源的网页来说,效果更加显著。

3. 避免线头阻塞

在 HTTP/1.x 中,由于队头阻塞(Head-of-line blocking)的问题,一个资源的加载会影响到其它资源的获取,从而导致性能瓶颈。而多路复用能够避免这种情况的发生,加快了整体页面加载速度。

4. 优化网络利用

多路复用减少了建立连接的开销和头部数据的发送,减少了网络资源的浪费,有效地优化了网络利用。

总的来说,多路复用通过允许多个请求/响应同时在一个连接上进行处理,提高了网络通信的效率,降低了延迟,改善了性能,是 HTTP/2.0 协议带来的重要优势之一。

证书检验过程

HTTPS 证书的校验是确保客户端与服务器之间通信安全的重要步骤。当客户端访问一个使用 HTTPS 协议的网站时,服务器会向客户端展示一个数字证书,客户端需要验证该证书的有效性。下面我将详细介绍 HTTPS 证书校验的过程:

1. 证书请求

客户端向服务器发起连接请求时,服务器会把自己的数字证书一并返回给客户端。该证书中包含了公钥、证书持有者的信息以及数字签名等内容。

2. 根证书验证

客户端会检查服务器提供的数字证书是否由可信的机构颁发,这些机构的公钥通常被内置在操作系统或浏览器中,我们称之为根证书。如果服务器的证书是由一个受信任的证书颁发机构签发的,那么该证书链 (Certificate Chain) 中的每个颁发者证书都必须能被客户端顶层信任的根证书机构所验证。

3. 证书有效性检查

客户端会验证服务器证书是在当前时间内有效且是否包含与要连接的服务器域名一致的信息。同时,客户端还会检查证书是否被吊销 (Revocation),以确保证书的有效性。

4. 公钥加密

如果证书验证通过,客户端会使用证书中的公钥来加密对称密钥(用于后续的对称加密通信)。这个对称密钥是临时生成的,用于加密整个通信过程。

5. 数据传输

一旦客户端收到并加密了对称密钥,双方就可以使用该对称密钥进行加密通信,从而实现安全的数据交换。

上述过程确保了客户端与服务器进行通信时的安全性和数据完整性。通过对证书的校验,客户端可以确保连接的服务器是合法可信的,避免了中间人攻击等安全问题。

Android避免被抓包的方法:

使用 HTTPS 加密通信:通过使用 HTTPS 协议,应用程序的通信将会被加密,这样即使被抓包,也难以直接窃取敏感信息。

证书锁定:在应用中集成服务器的证书,以避免中间人攻击。这样做可以确保应用只会信任特定的证书,而不是接受从其他证书颁发机构颁发的证书。

避免传输敏感信息:尽量避免在网络传输中发送敏感信息,特别是避免在URL参数中发送敏感数据。

加密本地存储数据:对于应用内需要存储的敏感信息,特别是用户凭据等,应该采用适当的加密机制进行存储。

使用安全的网络库:使用知名的网络库如OkHttp,并确保它们已经正确地配置和使用了安全的传输机制。

支持网络安全配置:从 Android 9(Pie)开始,Android 提供了网络安全配置,可以用于配置应用的网络安全策略,确保安全的通信。

防止逆向工程:应用程序的代码可以被逆向工程并进行分析。通过使用代码混淆、加固、二进制保护等技术可以降低应用程序被逆向工程的风险,进而保护其中的网络通信部分。

以上这些方法可以帮助你加强你的 Android 应用程序的安全性,使其在通信过程中更难被他人抓包。

想一想如果没有证书校验直接发公钥给客户端会是什么情况?被中间人攻击

TCP三次握手四次挥手:

建立连接

详情

tcp粘包拆包的过程:

粘包/拆包的原因

发生TCP粘包或拆包有很多原因,现列出常见的几点:

要发送的数据大于TCP发送缓冲区剩余空间大小,将会发生拆包。

待发送数据大于MSS(最大报文长度),TCP在传输前将进行拆包。

要发送的数据小于TCP发送缓冲区的大小,TCP将多次写入缓冲区的数据一次发送出去,将会发生粘包。

接收数据端的应用层没有及时读取接收缓冲区中的数据,将发生粘包。

粘包、拆包解决办法

TCP本身是面向流的,作为网络服务器,如何从这源源不断涌来的数据流中拆分出或者合并出有意义的信息呢?通常会有以下一些常用的方法:

发送端给每个数据包添加包首部,首部中应该至少包含数据包的长度,这样接收端在接收到数据后,通过读取包首部的长度字段,便知道每一个数据包的实际长度了。

发送端将每个数据包封装为固定长度(不够的可以通过补0填充),这样接收端每次从接收缓冲区中读取固定长度的数据就自然而然的把每个数据包拆分开来。

可以在数据包之间设置边界,如添加特殊符号,这样,接收端通过这个边界就可以将不同的数据包拆分开。

详情

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • 目录 http2.0 Http与Https的基本概念和他们的区别 HTTPS工作原理 常用的HTTP方法 GET方...
    Grandperhaps阅读 557评论 0 3
  • HTTP1.0 规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请...
    我的技术学习小站阅读 166评论 0 0
  • HTTP 是一种超文本传输协议(Hypertext Transfer Protocol),HTTP 是一个在计算机...
    没糖_cristalle阅读 420评论 0 0
  • 一. 什么是HTTP HTTP协议工作在应用层,端口号是80。HTTP协议被用于网络中两台计算机间的通信,相比于T...
    cunfate阅读 363评论 0 0
  • 首先列出七层协议(恶补了大学所逃的计算机网络😅)计算机七层协议:物理层 数据链路层 网络层 传输层 会话层 表示层...
    野蛮生长_ed2e阅读 544评论 0 1