http java编程_被问到到http的时候你就这么回答!

什么是互联网

互联网是指 凡是 能彼此通信的设备组成的网络就叫互联网,指利用TCP/IP通讯协定所创建的各种网络,是国际上最大的互联网,也称“国际互联网”。

其中TCP/IP是网络的基础通信架构,提供了点对点链接的机制。并且将软件通信过程抽象化为四个抽象层,下层服务上层,也就是我们熟悉的七层OSI模型。(也就是说TPC/IP是联网的基础,由他衍生出了OSI)

OSI模型是一个视图使各种计算机在世界范围能互连接为网络的标准框架,也就是说是网络互接的标准。(大白话就是规则。按照这个规则,我们就能联网)

用一张图表示OSI模型:

d448106f3f3ba6f1cb5af8cb36fa43b4.png

看看就好,我们要关注的是应用层的http和传输层的tcp,对了,两个模型的对应关系如下:

63b35d8c5656726e91e80b08fd9b6bf4.png

不过,正由于UDP的快,也有一些场景是非他莫属的,比如DNS啊、音视频啊、实时游戏啊、聊天工具啊巴拉巴拉…

可能有人会问,DNS这种使用UDP会不会有问题啊,比如UDP丢包了,那岂不是返回404了啊。

没错,但是浏览器响应时间大致分为以下三个:

DNS解析 + TCP链接 + HTTP请求/响应

除了DNS能用UDP,其他二位也没法用啊,不然网站丢内容了啊。而且还有备选方案,某种情况下失败了会利用TCP重新查询的,不只是有UDP一种。

可能还有人会问,那聊天工具这种用UDP这问题大了啊,我要是跟我女神表白,这莽夫只管发,结果各种丢包(发送失败),而且我还不知道,那我心态崩了啊。我以为她知道,结果她不知道,然后她还不回我,你让我咋想…

只能说,为啥不能给女神留下神秘感,让她来主动找你呢,哈哈哈

其实通讯工具一般会发送两次,UDP发送一个消息后,如果服务器收到了,会用UDP在返你一个消息,如果没返回,或者发送失败,你就会收到发送失败类似的消息啦,去表白吧,没事的,消息肯定发的出去,答不答应就看自己了。

总的来说,在某些对速度要求极高,但是准确性要求低的情况,UDP是很适合的。

TCP是什么

UDP莽夫不靠谱,TCP小伙来弥补。

关于TCP,我觉得可以用拟人化来代表,众所周知TCP是全双工的吗,其实就是两个独立的人在进行微信聊天。光一个人发是不行的,另一个人也得发,不然聊个j。

那TCP怎么就靠谱了呢/p>

没错,小伙看日历了!!!而且更厉害的是,他休假的时候也会看日历!!!

04b606b23253c3b8d27e500cd5b40937.png

看完图可能就豁然开朗了吧。不过,其实我还少说了一部分,这些内容的值是什么呢咱们看个建立链接的真实例子(访问百度的抓包)吧!

efd264ce8eb65d6a6fc4155076bad23a.png

四次挥手断开连接

四次挥手其实和上面差不多,不过SYN变成了FIN,用来’触发’断开连接操作。操作其实是一样的。

那为啥不能和创建连接一样,三次不就好了嘛,还效率。

举个可能不算恰当的例子:创建连接是往一个空的容器里加东西,加就完了,反正刚开始是空的。而断开连接在不加东西之后,还需要将容器里的东西清理掉,有始有终。

一图以蔽之:

68dbbe203e77bdd709dc5458feca879d.png

好了,传输层任务完成,应用层启动~

HTTP和HTTPS

能说的很多,但是感觉又没啥好说的,随便说说吧就。

首先我们知道https就是http,不过加了一层安全控制: SSL/TLS。

怎么就安全了捏/p>

我们知道http是明文传输的,也无法校验内容的完整性。并且由于是无状态链接,所以也不知道这东西是谁发的,会不会被人改过。

那https的s到底做了啥/p>

加密!

对称加密

就是我们门禁,对,就宾馆的那种。我们可以将要发送的内容保护起来,放到宾馆里,然后通过门禁(密钥)来访问内容。看起来很安全哈。但是如果这个门禁被人偷偷拿走复制了一份,那我们的内容就可以被其他人随意访问了。这是不靠谱的,我们没隐私了,赤裸裸~

非对称加密

我们换个方案吧,我们让宾馆提供两张门禁卡,一个公开的,所有人都可以知道,一个是私有的,只有负责人才知道,然后宾馆的房间改为两道门,外面的门可以用公开的门禁打开(公钥加密),里面的门可以用私钥打开(私钥解密),并且里面的门有一个通道,可以让有公钥的人将内容放到房间内。由于里面的门只能用私钥打开,所以只有负责人能够查看这个内容。

a82193ebbb8d65c358576aa8cfa6cbda.png

怎么证明公钥的正确性

这就要利用非对称加密的另一个功能,数字证书。因为私钥是唯一,所以我们可以用私钥进行加密(签名),这样只有正确的公钥才能开锁。保证了内容是安全的。

并且需要浏览器内置一些安全的公钥,用于解析这个证书,这就是证书中心(CA)的作用了。证书中心是一个绝对有保障的组织,他们会和操作系统、浏览器厂商协定,将证书中心(CA)的公钥提前种好。

上面是前提,接下来,服务器会提前找证书中心为公钥做认证,然后返回服务器数字证书。证书的内容是通过证书中心私钥加密过得服务器相关信息和服务器公钥,这样就保证了公钥无法被篡改,保障了安全。

bbc96ebdb549ec69abd935f8dfd42433.png

之后浏览器在请求的时候,就会获取到正确的公钥。之后服务器返回内容的时候也会进行一步处理,保障内容不会被篡改。

浏览器会返回两部分,一部分是明文的hash算法结果。一部分是用服务器私钥加密过得明文的hash算法结果,然后浏览器在获取后,会通过hash和服务器公钥进行解密,得到的两部分如果相等,那么这次传输的内容就没问题。可以愉快地进行通信啦~

看明白了是不是会问为啥要进行hash在加密啊,直接加密不就好了吗案很简单啊,因为效率。

优化

tcp三次握手可以利用’会话缓存’来节省一次握手时间,其实就是缓存,和咱们平常写代码没差,就是写法不一样。我们平常用到的很多技术很多也是一些基本的技术,举一反三就好。和上面差不多。tcp第二次握手的时候就可以发数据了,可以在这上面做手脚尽量减少rsa算法,实在是慢,这个想办法缓存或者算法优化吧,我也不太懂~证书优化,怎么便宜怎么来呗,薅!!!不过也得看企业/个人怎么取舍了等~ 不做深入了总结

本文内容是理解后经过处理展示出来的,不理解的也不会乱写,如果仍有问题欢迎指出,我会及时回复的。

了解这几点,对于http基础会有一个整体的理解,不管是工作中还是求职中都能说出个一二三来,或许还应该写一点常见问题,但是微乎其微,等用到了自然而然就知道了。

文章知识点与官方知识档案匹配,可进一步学习相关知识网络技能树首页概览22379 人正在系统学习中 相关资源:Veneer:文件屏蔽软件-开源-其它代码类资源-CSDN文库

来源:鹿llulu

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月17日
下一篇 2021年1月17日

相关推荐