以下内容仅作为自己的理解
三次握手为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误;本质上就是双方要连接,要等待对端同意并返回确认,一端请求后收到确认包就意味着,网络可达并且对端同意建立连接。最后的模型则是
A向B发送连接请求
B确认接受A的连接请求
B向A发送确认连接请求
A确认B的请求
中间两次可以一起返回,所以是三次;
因为建立连接双方都需要确认对方收到了自己的序列号,如果是两次话的,A->B请求,然后B->A确认并且发送请求确认A是否收到请求;此时两次握手完毕,但是由于B向A发送请求后,A没有回复,所以B认为A接收能力是有问题的,无法建立安全的请求。因为三次握手就可以满足请求需求,可以提高连接的速度与效率,如果是多次握手,就会造成资源浪费
同理,四次挥手为了确保数据能够完成传输。
A向B发出释放连接请求
B在收到A的连接释放请求后,随即向A发送确认报文
当B已经没有要发送的数据时,B就会给A发送一个释放连接报文
当A收到B的释放连接请求时,必须对此发出确认,B在收到A的确认之后,进入到CLOSED(关闭)状态
补充:一次TCP连接支持多少次HTTP请求
http 1.0:默认一次tcp连接进行一次http请求之后就会断开(由于资源浪费,有些服务器支持通过配置支持多次)
http 1.1:请求头配置:Connection:keep-alive = true,只要tcp连接不断开(默认2小时),一直可以进行http请求,但是一个tcp连接同一时间只支持一个http请求;如果设置Connection:keep-alive = false,只能发一次http请求
http 2.0:多路复用技术Multiplexing,一个tcp可以并发多个http请求(理论无上限,但是一般浏览器会有tcp并发数的限制)
网友评论