浏览器中输入URL(网址)后,执行的全部过程:
域名解析:客户端浏览器通过DNS服务器将网址解析成IP地址;
浏览器搜索自身的DNS缓存,若没有找到则依次去下一个中进行搜索,搜索顺序为:浏览器的DNS缓存;系统的DNS缓存;hosts文件;域名服务器;
客户端和服务端建立TCP连接:通过IP地址和端口号(客户端随机选择一个端口,服务端采用80端口(HTTP端口)监听客户端的请求),客户端和服务端建立TCP连接;
三次握手:https://www.cnblogs.com/yongjin-hou/p/14357751.html
客户端发送HTTP请求:通过TCP套接字,客户端向服务端发起HTTP请求(请求报文—由请求行、请求头、空行和请求数据组成);
请求行:客户端的请求方式(GET/HEAD/POST),请求的资源名称URL和使用的HTTP协议的版本号;
请求头:客户端请求哪台主机,以及客户端的一些信息;
请求数据:当使用POST, PUT等方法时,通常需要客户端向服务器传递数据。
服务端发送HTTP响应:通过TCP套接字将HTTP响应发送给客户端(响应报文—由响应行、响应头、空行和响应数据组成);
响应行:状态码,服务器对HTTP请求的处理结果;
响应头:服务器的基本信息,以及客户端如何处理数据;
响应数据:服务器返回给客户端的数据。
释放TCP连接:若Connection字段为close,服务端主动关闭TCP连接,客户端被动关闭TCP连接;若connection模式为keepalive,则连接会保持一段时间,该时间段内服务端还可以继续接收HTTP请求;
四次挥手:https://www.cnblogs.com/yongjin-hou/p/14358587.html
客户端解析HTML文件:客户端浏览器解析响应报文的状态行,查看请求是否成功的状态代码;解析响应头部,得到HTML文档的字节数和字符集;读取响应数据HTML代码,并请求HTML代码中的资源,浏览器对页面进行渲染后呈现给用户。
相关链接
HTTP协议常见状态码和字段 https://www.cnblogs.com/yongjin-hou/p/14513713.html
HTTPs和HTTP的区别&HTTPs如何建立连接 https://www.cnblogs.com/yongjin-hou/p/14513965.html