【Python面试题】请从socket编程的角度谈谈网络请求的流程
发布时间:2022-08-23 11:03:00
发布人:wjy
网络请求是基于HTTP协议的,但http协议只是一个应用层协议,它底层是通过TCP进行传输数据的。因此,浏览器访问Web服务器的过程必须先有“连接建立”的发生。浏览器向Web服务器发出Http请求以及Web服务器给浏览器回复的过程如下:
1)浏览器创建Socket,按给定IP(域名)和端口(默认为80)连接服务器。
2)连接成功后,浏览器依据HTTP协议规范,向Web服务器发送请求数据,会使用类似Socket.Send()、Socket.BeginSend()等方法。
3)浏览器等待服务器处理并返回数据;
4)Web服务器端使用Socket.Accept()、Socket.BeginAccept()等方法侦听到浏览器的连接后,便开始接收浏览器发送的数据。接收到请求数据后,依据HTTP协议规范解析数据,然后处理,最终将处理结果(如html文档)发回给浏览器,这里可能用到类似Socket.Send()、Socket.BeginSend()等方法;
5)Web服务器发送完处理结果后,关闭Socket;
6)浏览器接收Web服务器发回的数据(如html),将其显示在浏览器UI界面。关闭socket;
7)一次“浏览器到Web服务器”的http请求结束;