关于HTTP、HTTPS、UDP、TCP详解

311 阅读3分钟

一、定义

关于网络传输、及相关协议,做为后端开发的我们经常会遇到一些相关问题;例如:连接超时,调用接口验证无法响应,数据丢失等。下面我们开始详细介绍相关内容:

  1. HTTP(超文本传输协议)被用于Web和服务器之间传递信息,但HTTP协议是以明文方式发送内容,不提供任何方式的数据加密,所以任何人拿到相关信息都能对其进行解读,因此,HTTP协议不适合传输敏感信息,例如:信用卡号、密码等。
  2. 与此相反的是安全套接字层超文本传输协议HTTPS,HTTPS其实是在HTTP的基础上加入了SSL/TLS协议,SSL/TLS通过证书验证服务器的身份并为浏览器和服务器之间的通信加密。

二、HTTPS和HTTP的主要区别:

  1. https协议需要到CA申请证书,一般证书是收费的。(免费证书也有获取方式,这里不做延伸)
  2. http是明文传输的超文本传输协议,https则是具有安全性的ssl/tls加密传输协议。
  3. 由于http和https使用的连接方式不同,用的端口也不一样,前者是80,后者是443。

三、UDP与TCP详解:

  1. UDP协议的特点是知道IP和端口号就可以发送信息,不需要建立连接。这种方式没有确认机制, 没有丢包重传机制。这会导致无论客户端是否接收数据成功,服务端都不做任何处理。 UDP收到的报文长度会原样发送(既不能多个字节循环接收,也不能合并接收多次报文,很不灵活)。
  2. UDP具有接收缓冲区,但这并不能保证收到的UDP报文的顺序和发送UDP报的顺序一致,如果缓冲区满了再到达的UDP数据报就会被丢弃。由于UDP没有不建立链接,因此不存在发送缓冲区。如果使用UDP进行数据传输,当数据超过64K时需要在应用层手动分包多次发送,并再接收端手动拼装。这种传输机制就是传输速度很快。

四、关于TCP的三次握手,四次挥手

  1. 建立链接:
  • 第一次握手:客户端向服务端发送连接请求报文段,客户端进入 SYN-SENT 状态
  • 第二次握手:服务端向客户端发送应答(同意连接),发送完成后服务端进入 SYN-RECEIVED 状态。
  • 第三次握手:当客户端收到连接同意的应答后,还要向服务端发送一个确认报文。客户端发完这个报文段后便进入 ESTABLISHED 状态,服务端收到这个应答后也进入 ESTABLISHED 状态,此时连接建立成功。
  1. 断开链接:
  • 第一次挥手:客户端向服务端发送连接释放请求
  • 第二次挥手:服务端收到连接释放请求后,会告诉应用层要释放 TCP 链接。然后会发送 ACK 包,并进入 CLOSE_WAIT 状态,此时表明连接已释放,不再接收客户端发的数据了。但是因为 TCP 连接是双向的,所以服务端仍旧可以发送数据给客户端。
  • 第三次挥手:服务端如果此时还有没发完的数据会继续发送,完毕后会向客户端发送连接释放请求,然后 服务端便进入 LAST-ACK 状态。
  • 第四次挥手:客户端收到释放请求后,向服务端发送确认应答,此时客户端进入 TIME-WAIT 状态。该状态会持续 2MSL(最大段生存期,指报文段在网络中生存的时间,超时会被抛弃) 时间,若该时间段内没有服务端的重发请求的话,就进入 CLOSED 状态。当服务端收到确认应答后,也便进入 CLOSED 状态。

依据以上机制,TCP可以实现大数据传输,数据包丢失重传。