Tcp 如何保证传输的可靠性,https 过程?公钥能用公钥解吗?

TCP是面向连接。可靠的字节流服务。

面向连接以为这有两个使用TCP的应用(通常是一个客户端个一个服务器)在彼此交换数据之前必须先建立以个TCP 连接。在一个TCP链接中,仅有两房进行彼此通信。广播和多播不能使用TCP。

TCP通过下列方式提供可靠性:
1)将应用数据分割为TCP认为最合适发送的数据块。
2)超时重传:党TCP发出一个报文段后,他启动一个定时器,等到目的端确认收到这个报文段。若不能及时收到一个确认,将重发这个报文段。
3)当TCP收到发自TCP链接另一端的数据是,他将发送一个确认(对于收到的请求,给出确认响应)。这个确认不是立即发送,通常将推迟几分之一秒(之所以推迟是要对包做完校验)。
4)若TCP收到包,校验出包有错,丢弃报文段,不给出响应,TCP发送端会超时重传。
5)对于失序数据进行重新排序,然后交给应用层(TCP报文段作为IP数据报进行传输。而IP数据报的到达会失序,因此TCP报文段的到达也可能失序。若必要,TCP将对收到的数据进行重新排列,以正确的顺序交给应用层)。
6)对于重复数据,直接丢弃。
7)TCP可以进行流量控制,防止较快主机致使较慢主机的缓冲区溢出。

字节流服务:两个应用程序通过TCP连接,TCP不在字节中插入记录标识符,我们将这种服务叫字节流服务。

TCP最字节流的北荣不做任何解释,TCP不知道传输的字节流数据是二进制数据还是其他类型数据,对字节流的解释由TCP连接双方的应用层。

HTTPS其实是由两部分组成:http+ssl/tls,也就是在http上又加了一层处理加密信息的模块,服务端和客户端的信息传输都会通过tls加密,传输的数据都是加密后的数据。加密的过程:
1)客户端发起https请求(就是用户在浏览器里输入一个https网址,然后连接到server的443接口)
2)服务端的配置(采用https协议的服务器必须要有一个数字证书,可以自己制作,也可以想组织申请,这套证书就是一对公钥和私钥)
3)传输证书(这个证书就是公钥,知识包含了很多信息)
4)客户端解析证书(由客户端tls完成,首先验证公钥师傅有效,若发现一车鞥,则弹出一个警示框,提示证书存在问题,若无问题,则生成一个随机值,然后用证书对随机值进行加密)
5)传输加密信息(这里传输的是加密后的随机值,目的是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密了)
6)服务端解密信息(服务端用私钥解密后得到了客户端传来的随机值,然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混在一起,这样除非知道私钥,Uranus无法获取内容,而正好客户端和服务端都知道这个私钥,所有只要加密算法够彪悍,私钥够复杂,数据就够安全)
7)传输加密的信息
8)客户端解密信息,用随机数来解。

在客户端抓包抓到的是没有加密的。

猜你喜欢

转载自blog.csdn.net/weixin_39940206/article/details/95193330
今日推荐