美文网首页
关于TCP和Https的简单理解

关于TCP和Https的简单理解

作者: 浩仔_Boy | 来源:发表于2020-12-04 16:04 被阅读0次

学习总结,仅供自己参考,如有不对欢迎指正

传输控制协议

一、关于TCP

1.TCP分层原因:

1.因为网络的不稳定,会有丢失数据包的情况,需要数据重传。
2.当数据很大的时候,会分包传输,失败的概率小,重传的数据也会变小。

应用层:建立程序之间的连接
提供网络上应用程序之间的接口,主要作用就是建立程序之间的连接

传输层:分块传输数据的一层,对数据分包、合包、下发
TCP传输控制协议 有数据重传机制
UTP用户数据报协议 没有数据重传机制

网络层 :只负责数据传输
负责发送传送层拆分下发的包,不关系数据顺序、关系,只负责发送。

数据链路层:以太网、Wi-Fi是传输标准
提供数据传输的物理支持(物理层:网线、路由器这些物理设备)

示例
例如这个链接,http://211.211.211.211:8080/login
211.211.211.211是IP是网络层的东西,
8080是端口是TCP的传输层的东西

2.什么是TCP连接

TCP连接是有状态的交互,不用每次发数据的时候都去说明发送方的信息,接收方已经掌握它的状态信息。
互相认识的过程,就是连接的创立,依靠端口模型来具体实现,比如Java中Socket就是端口的具象

3.如何建立连接

三次握手,一共说了三句话,又客户端发起
\color{#FF3030}{1)客户端对服务器说:}
我给你发消息了
\color{#FF3030}{2)服务器对客户端说:}
我知道了
\color{#FF3030}{2)客户端对服务器说:}
我知道你知道了

4.连接关闭

1)为什么要关闭
节省资源

2)怎么关闭
需要四次对话

\color{#FF3030}{1)客户端对服务器说:}
我没有消息给你发了
\color{#FF3030}{2)服务器对客户端说:}
我知道了
.
.
沉默(等待一小会)........
.
.
\color{#FF3030}{3)服务器对客户端说:}
我也没有消息给你发了
\color{#FF3030}{4)客户端对服务器说:}
我知道了

4.长连接

1)为什么要长连接
因为有内网的存在,内网无法直接连接互联网,需要网关去管理,当内容中的客户端与服务器失去联系后,就会被关闭,释放资源,最好的例子就是手机,手机的网络都是在与硬伤的内网里。

但是有时候我短时间失去联系,但我可能会时不时的和服务器通信,如果运营商把我关闭了,我就会丢失消息。所以就需要长连接了。

2)怎么建立长连接呢
1.心跳,就是通过tcp间隔发送超级短的消息,保持长连接

二、关于https

超文本传输协议,是基于应用层,简单的请求,响应协议
定义:
就是HTTP+TLS的组合,TLS是一个底层安全传输层协议,对数据进行加密

具体流程:
在发送消息的时候,http会先发给TLS加密,然后再发送给TCP进行接下来的一些列操作

怎么实现的:
这个加密是使用的非对称加密协商出来的对称密钥,发送信息加密,收到信息解密。
之所以不直接用非对称加密是出于性能考虑,不直接使用对称加密是出于安全的考虑

1.https如何建立的连接

大体分为五步:
1.客户端请求建立TLS连接
客户端会发送一个信息,主要包含三个内容
1)可选的TLS版本集合(因为客户端不知道服务器支持哪个版本的TLS)
2)可选的Cipher Suite加密套件(一般包括非对称加密RAS、对称加密AES、MD5哈希加密)
3)客户端随机数

服务器端接受到客户端的消息,会回执客户端包括三个内容
1)选择的TLS版本
2)具体的加密套件
3)服务端随机数

2.服务器发回证书(核心)
最重要的是服务器将公钥和公钥的签名发送给客户端
3.客户端验证服务器证书
验证证书是一个很复杂的过程,验证回分为三层,根证书是我们设备(手机或者电脑)默认无条件信任的证书
1)服务器的公钥和公钥的签名(是对服务器名称、地区、主机名、公钥的整体签名)
2)证书签发机构的公钥和签名(具体的签名内容同上)
3)根证书机构的公钥和签名

4.客户端信任服务器后,和服务器协商对称密钥
客户端发送Pre_master secret给服务器,客户端根据服务器,之前发送的客户端随机数+服务器随机数+Pre_master secret,生成一个Master Secret
然后根据Master Secret生成:
1)客户端密钥,
2)服务器密钥,
3)客户端MAC Secret
4)服务端MAC Secret

1)2)是完全一样的
完全一样为什么生成两个密钥,为了防止信息恶意拦截后扔回来
3)4)是带有密钥的哈希值,这个密钥用来获取是发送者是谁

5.使用对称密钥开始通信
客户端通知服务端:将要使用加密通信(具体通知内容是:之前发送的一系列信息,包括随机数、密钥、Master Secret 等等)

客户端追加:Finished
服务端通知客户端:将使用加密通信(具体通知内容是:之前发送的一系列信息,包括随机数、密钥、Master Secret 等等)
服务端追加:Finished

2.在android中的使用:

直接用就行,无须任何配置。
什么时候不可以直接用
使用自签名证书(比如只用于内网的https)
证书信息不全,缺乏证书机构信息
如何解决:
自己写证书验证过程,google官方有示例,不过太简单不安全而且实现很复杂,OkHttp已经做封装,实现起来很简单

相关文章

  • 关于TCP和Https的简单理解

    学习总结,仅供自己参考,如有不对欢迎指正 传输控制协议 一、关于TCP 1.TCP分层原因: 1.因为网络的不稳定...

  • http、TCP/IP、https理解与简单延伸

    HTTP 看到比较通俗又准确的描述应该是这个:HTTP是在计算机世界里专门为两点之间传输文字、图片、视频、音频等超...

  • 关于http与https的简单理解

    一,http和https简介 HTTP全称是HyperText Transfer Protocal,即:超文本传输...

  • 面试知识2

    一:HTTP和HTTPS理解 1:HTTP协议通常承载在TCP协议之上 ,在HTTP和TCP之间添加一个安全协议层...

  • 8.Sockit定义

    参考:简单理解Socket 1. TCP 和 UDP tcp和udp都是是传输层的协议。 UDP(用户数据报协议)...

  • 网络系列1 TCP/IP协议簇

    参考:关于TCP/IP https://www.jianshu.com/p/a3a1ff562468关于TCP/I...

  • HTTP、TCP和HTTPS

    1、HTTP HTTP协议【Hyper Text Transfer Protocal】超文本传输协议。 HTTP协...

  • HTTPS最简单理解

    1、数字证书认证机构(Certificate Authority,简称CA)生成一对公/私钥; 2、服务器将自己的...

  • 简单理解 HTTPS 原理

    转自:http://blog.csdn.net/sean_cd/article/details/6966130HT...

  • 理解 UDP

    更好阅读体验:《理解 TCP 和 UDP》— By Gitbook UDP 和 TCP 的不同 TCP 在传送数据...

网友评论

      本文标题:关于TCP和Https的简单理解

      本文链接:https://www.haomeiwen.com/subject/bekiwktx.html