HTTP的请求过程

一、简单描述一次Http的请求过程

域名解析 –> 发起TCP的3次握手 –> 建立TCP连接后发起http请求 –> 服务器响应http请求,浏览器得到html代码 –> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) –> 浏览器对页面进行渲染呈现给用户

二、从域名的解析开始

这一步的目标是为了获取到服务器的IP地址,如同打电话,要让通信信号定位到对方联系人,让消息传达至对方。

①浏览器会先解析我们输入的url地址,浏览器会先搜索自身的DNS缓存,看自身的缓存中是否有对应的条目,而且没有过期,如果有且没有过期则解析到此结束。
②如果浏览器自身的缓存里面没有找到对应的条目,那么Chrome会搜索操作系统自身的DNS缓存,如果找到且没有过期则停止搜索解析到此结束。
③如果在Windows系统的DNS缓存也没有找到,那么尝试读取hosts文件(位于C:\Windows\System32\drivers\etc),看看这里面有没有该域名对应的IP地址,如果有则解析成功。
④如果在hosts文件中也没有找到对应的条目,浏览器就会发起一个DNS的系统调用,就会向本地配置的首选DNS服务器发起域名解析请求直到获取至服务器的IP地址。

注:一般情况下是不会进行以下步骤的

如果经过以上的4个步骤,还没有解析成功,那么会进行如下步骤(以下是针对Windows操作系统):

⑤操作系统就会查找NetBIOS name Cache(NetBIOS名称缓存,就存在客户端电脑中的),那这个缓存有什么东西呢?凡是最近一段时间内和我成功通讯的计算机的计算机名和Ip地址,就都会存在这个缓存里面。什么情况下该步能解析成功呢?就是该名称正好是几分钟前和我成功通信过,那么这一步就可以成功解析。
⑥如果第5步也没有成功,那会查询WINS 服务器(是NETBIOS名称和IP地址对应的服务器)。
⑦如果第6步也没有查询成功,那么客户端就要进行广播查找。
⑧如果第7步也没有成功,那么客户端就读取LMHOSTS文件(和HOSTS文件同一个目录下,写法也一样)

如果第8步还没有解析成功,那么就宣告这次解析失败,那就无法跟目标计算机进行通信。只要这8步中有一步可以解析成功,那就可以成功和目标计算机进行通信。

三、TCP的三次握手

拿到域名对应的IP地址之后,User-Agent(一般是指浏览器)会以一个随机端口(1024 < 端口 < 65535)向服

  • 15
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTTP请求的完整过程可以分为以下几个步骤: 1. 建立连接:客户端使用TCP协议与服务器建立连接。首先需要解析URL,获取服务器的主机地址和端口号。然后客户端会发送一个SYN包给服务器,服务器收到后返回一个SYN-ACK包给客户端,最后客户端发送一个ACK包确认连接建立。 2. 发送请求头:连接建立后,客户端会发送一个HTTP请求给服务器。请求包含请求行、请求头和请求体。请求行包括请求方法(GET、POST等)、请求的URI(Uniform Resource Identifier)和HTTP协议版本。请求头包含一些附加的信息,如用户代理、Accept-Language、Cookie等。 3. 服务器响应:服务器接收到请求后,会进行处理并生成相应的HTTP响应。响应包括响应行、响应头和响应体。响应行包括HTTP协议版本、状态码和状态消息。响应头包含服务器信息、内容类型、内容长度等相关信息。响应体包含实际的响应数据。 4. 接收响应:客户端接收到服务器的响应后,会进行解析和处理。根据状态码判断请求是否成功,并根据响应头中的信息进行相应的处理,如获取内容长度、内容类型等。 5. 处理响应:根据响应头中的内容类型,客户端可以选择不同的方式来处理响应数据。常见的内容类型包括HTML、JSON、XML等。客户端可以将响应数据展示给用户,或者进行进一步的处理,如解析JSON数据、解析XML数据等。 6. 关闭连接:处理完响应后,客户端和服务器会关闭连接。客户端发送一个FIN包给服务器,服务器收到后返回一个ACK包给客户端,最后服务器发送一个FIN包给客户端,客户端收到后返回一个ACK包给服务器,双方完成连接的关闭。 以上就是HTTP请求的全过程。其中,客户端和服务器之间的通信是通过TCP协议进行的。PHP是一种服务器端脚本语言,可以用来处理HTTP请求和生成HTTP响应。在PHP中,可以使用内置的函数和扩展来处理HTTP请求和响应,如$_GET、$_POST、header()函数等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值