一个完整的HTTP请求过程
域名解析 —> 与服务器建立连接(TCP协议的三次握手和四次挥手) —> 发起HTTP请求 —> 服务器响应HTTP请求,浏览器得到html代码 —> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片) —> 浏览器对页面进行渲染呈现给用户
TCP连接的建立与释放(三次握手、四次挥手)三报文握手
三次握手
为什么客户机要再发一次确认?
是因为建立TCP请求连接报文可能会在发送途中失效(由于网络中的某种原因导致这条报文发生了阻塞,滞留就停留在了网络中),但是TCP连接整个过程中有一个超时重传的机制,建立连接。当滞阻塞、滞留的报文没有到达服务器B端,此时,客户机就收不到服务器的确认报文,客户机就会知道这条报文没有发送出去,就会再次发送同样的一个建立TCP连接的请求,然后建立连接,用完连接,再销毁连接。这时,之前滞留的连接突然生效了,到达服务器,服务器发送确认报文,但是此时这条连接不需要建立,客户机就不会处理,不会在发一次确认,就不会建立连接了,
四次挥手
为什么要等待2MSL(最长报文段寿命)时间?
客户机最后发送的确认服务器可能没有收到,此时,服务器就会认为自己发送的关闭数据报是没有发出去,所以客户端才没有收到发送一个确认过来,这时,服务器端就会再次发送一个关闭数据报,所以需要等待。