TCP、UDP、HTTP、HTTPS

Posted by 余腾 on 2019-04-18
Estimated Reading Time 4 Minutes
Words 1.1k In Total
Viewed Times

TCP:三次握手,四次挥手

三次握手

第一次握手:建立连接时,客户端发送 SYN包 到服务器,并进入 SYN_SENT状态,等待服务器确认;(SYN=1,seq=x)
SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次握手:服务器收到SYN包,必须确认客户的SYN,同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态;ACK:(Acknowledgement)即是确认字符(ACK=Seq+1)。(SYN=1,ACK=1,seq=y,ack=x+1)

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。(ACK=1,seq=x+1,ack=y+1)

  • 请求—应答—再次确认
  • 三次握手主要是为了防止已失效的连接请求报文突然又传送到了服务器,产生错误。

四次挥手

在数据传输结束后,通信双方都可以发出释放连接的请求。在释放过程中要释放为该连接分配的所有资源。

1、客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。

2、服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。

3、客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。

4、服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。

5、客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。

6、服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。



HTTP HTTPS

HTTP:超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)
HTTPS:超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS)

HTTP是不安全的,而 HTTPS 是安全的:http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
http的连接很简单,是无状态的;每次请求需要通过TCP三次握手四次挥手
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,HTTP 是80,HTTPS 是443。


HTTP1.1版本新特性

  • 默认持久连接节省通信量,只要客户端服务端任意一端没有明确提出断开TCP连接,就一直保持连接,可以发送多次HTTP请求。
  • 管线化,客户端可以同时发出多个HTTP请求,而不用一个个等待响应。
  • 断点续传
    • 实际上就是利用HTTP消息头使用分块传输编码,将实体主体分块传输。

感谢阅读


If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !