TCP与 HTTPS协议网络相关

2022-09-05  本文已影响0人  码农朱同学

1. TCP协议内容

2. 三次握手与四次挥手

过程图:
TCP的6种标志位的分别代表: SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急) Sequence number(顺序号码) Acknowledge number(确认号码)
客户端TCP状态迁移: CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED 服务器TCP状态迁移: CLOSED->LISTEN->SYN收到->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED
各个状态的意义如下: LISTEN - 侦听来自远方TCP端口的连接请求; SYN-SENT -在发送连接请求后等待匹配的连接请求; SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认; ESTABLISHED- 代表一个打开的连接,数据可以传送给用户; FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认; FIN-WAIT-2 - 从远程TCP等待连接中断请求; CLOSE-WAIT - 等待从本地用户发来的连接中断请求; CLOSING -等待远程TCP对连接中断的确认; LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认; TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认; CLOSED - 没有任何连接状态;
第一次握手: 客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。 第二次握手: 服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1。 第三次握手. 客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。CP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。 (1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。 (2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。 (3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。

3. HTTPS是怎么实现的?HTTPS的组成是什么?

Https是Http的安全版,它的核心是SSL/TLS(Https后面的's'就是指SSL)。 Https的原理就是:在传输层和应用层之间加了一层SSL/TLS。如下图所示
SSL/TLS是什么? SSL/TLS是一种介于传输层和应用层的协议,它是Https的精髓所在。

3.1 SSL(Secure Socket Layer,安全套接字层)

SSL协议是 NetScape 公司于 1994 年提出的一个关注互联网信息安全的信息加密传输协议,其目的是为客户端(浏览器) 到服务器端之间的信息传输构建一个加密通道,此协议是与操作系统和 Web 服务器无关。
SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等(它的作用!)。

3.2 TLS (Transport Layer Security,传输层安全协议)

用于两个应用程序之间提供保密性和数据完整性。 TLS 1.0是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本,可以理解为SSL 3.1,它是写入了 RFC 的。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面。

3.3 SSL/TLS的关系

SSL是由网景公司发明的,后来由于应用广发,IETF就把SSL进行标准化,并把标准化后的SSL改名为TLS。所以,TLS可以说是SSL的加强版,两者是同一个东西的不同阶段。
总的来说没有加入SSL/TLS的请求,相当于你跟服务器在两个房间内彼此大喊,此时,全世界都知道了。 而加入了SSL/TLS的请求,相当于你跟服务器在用火星语交流,就算有人路过听到了,也不知道是什么意思

3.4 Https涉及概念

公钥和私钥

公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。

对称加密算法和非对称加密算法

对称密钥加密(英语:Symmetric-key algorithm)又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。

对称加密其实就是说: 比如我用'a'作为密钥对内容加了密,你必须也得用'a'作为密钥对加密后的内容进行解密。

非对称加密(asymmetric cryptography),一种密码学算法类型,在这种密码学方法中,需要一对密钥,一个是私人密钥,另一个则是公开密钥。这两个密钥是数学相关,用某用户密钥加密后所得的信息,只能用该用户的解密密钥才能解密。

比如说: 我有一对密钥,一个是公钥(假设是'a'),一个是私钥(假设是'b'),现在我用'a'对一个内容加了密,那么,此时,,你只有用私钥'b'对它进行解密才能看到正确内容。同理,如果我用私钥'b'加了密,你只有用公钥'a'解密才能看到内容。
3.5 Https 的实现原理

这里的Https的实现原理指的是单向的,Https还有双向的。区别在于:单向是就是只检验服务端的身份,至于客户端是谁访问,不重要。双向就是客户端和服务端都有指定,这种一般用于金融,也就是说,不是服务器认同的客户端,服务端不会进行发送数据。

上一篇 下一篇

猜你喜欢

热点阅读