HTTP从请求到响应

    用户通过浏览器提交请求后,首先浏览器会先解析URL,通过URL获取到相关的信息后,如目资源文件以及目标服务器,生成对应的HTTP请求消息。由于浏览器不具备发送数据包的功能,所以浏览器只能通过操作系统来实现。因此在委托服务器发送数据包之前,还需要知道服务器的IP地址。于是整个过程进入了域名解析阶段。

    在域名解析阶段中,因为浏览器已获取域名,于是委托操作系统对域名进行解析,操作系统发送UDP请求对域名进行解析,最后将域名解析成IP。到此为止,域名解析过程结束,整个过程进入数据收发环节。

tcpip连接到断开

    在数据收发的整个环节里,浏览器委托操作系统的协议栈对数据进行收发。首先是连接阶段,也就是三次握手,首先客户端向服务器端发送连接请求,服务器端发送一个确认包,客户端收到服务器的确认包后,发送一个确认包到服务器,在这个过程中,客户端和服务器端进行了端口、ip、窗口等信息的交换。至此,连接阶段就已经结束了,整个过程进入数据收发阶段。

tcpip连接到断开

    在数据收发阶段,并不是协议栈收到数据就马上发送出去的,而是数据被发送到缓冲区等待应用层的下一段数据。协议栈会考虑到多方面的因素来进行收发操作(长度优先或者时间优先)。对于较大的数据,会先把数据拆分出来,放进单独的数据包中。收发数据时,一般采用滑动窗口方式,由于在连接阶段已经知道对方的窗口大小,发送方会根据窗口大小发送数据,接收方会根据恰当的时间发送确认包,这个过程持续到数据收发完成,最终数据收发阶段结束,进入连接断开阶段。

tcpip数据收发和断开

    在连接断开阶段,发送一个断开请求的数据包,客户端发送一个确认断开数据包,然后客户端接受完数据后也发送一个断开请求的数据包,服务器发送一个确认断开数据包,然后断开连接,到此整个通讯的过程就结束了。

推荐文章