服务器请求url相干过程

过程:客户端获取URL - > DNS解析 - > TCP连接- >发送HTTP请求 - >服务器处理请求 - >返回报文 - >浏览器解析渲染页面 - > TCP断开连接

 

 

 1.DNS解析: 当用户输入一个网址并按下回车键的时候,浏览器得到了一个域名。而在实际通信过程中,我们需要的是一个IP地址。因此我们需要先把域名转换成相应的IP地址,这个过程称作DNS解析

详细:

  1. 浏览器首先搜索浏览器自身缓存的DNS记录。
  1. 如果浏览器缓存中没有找到需要的记录或记录已经过期,则搜索hosts文件和操作系统缓存。

    3.  如果在hosts文件和操作系统缓存中没有找到需要的记录或记录已经过期,则向域名解析服务器发送解析请求。

    4. 如果域名解析服务器也没有该域名的记录,则开始递归+迭代解析。

  解析过程: 域名解析服务器会向根域服务器(全球只有13台)发出请求,然后根据后缀一级一级往下找,如图:

 

 

 2.TCP链接

详细:浏览器会选择一个大于1024的本机端口向目标IP地址的80端口发起TCP连接请求。经过标准的TCP握手流程,建立TCP连接。

 

 

 3.发起http请求

详细:发送HTTP请求的过程就是构建HTTP请求报文并通过TCP协议中发送到服务器指定端口(HTTP协议80/8080, HTTPS协议443)。HTTP请求报文是由三部分组成: 请求行, 请求报头和请求正文。

常用方法: GET, POST, PUT, DELETE, OPTIONS, HEAD。

请求报头:请求报头允许客户端向服务器传递请求的附加信息和客户端自身的信息。

请求正文:当使用POST, PUT等方法时,通常需要客户端向服务器传递数据。这些数据就储存在请求正文中。在请求包头中有一些与请求正文相关的信息,例如: 现在的Web应用通常采用Rest架构,请求的数据格式一般为json。

4.服务器处理请求返回http报文

HTTP响应报文也是由三部分组成: 状态码, 响应报头和响应报文。

状态码是由3位数组成,第一个数字定义了响应的类别,且有五种可能取值:

  • 1xx 【消息】服务器收到请求,需要请求者继续执行操作
  • 2xx 【成功】请求已成功被服务器接收、理解、并接受。
  • 3xx 【重定向】客户端需要采取进一步的操作以完成请求
  • 4xx 【客户端请求错误】客户端错误,请求包含语法错误或无法完成请求
  • 5xx 【服务器错误】服务器在处理请求的过程中发生了错误

平时遇到比较常见的状态码有:200, 204, 301, 302, 304, 400, 401, 403, 404, 422, 500等:

  • 200 OK //客户端请求成功
  • 304 Not Modified // 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源
  • 400 Bad Request //客户端请求有语法错误,不能被服务器所理解
  • 401 Unauthorized // 当前请求要求用户的身份认证
  • 403 Forbidden // 服务器理解请求客户端的请求,但是拒绝执行此请求
  • 404 Not Found //请求资源不存在,输入了错误的URL
  • 500 Internal Server Error //服务器发生不可预期的错误
  • 503 Server Unavailable // 由于超载或系统维护,服务器暂时的无法处理客户端的请求。一段时间后可能恢复正常


原文链接:https://blog.csdn.net/g291976422/article/details/88984859

posted @ 2021-07-15 17:36  ZeeH  阅读(148)  评论(0)    收藏  举报