【JAVA面试】浏览器发出一个请求到收到响应经历了哪些步骤

提示:文章先作为初版,等后续时间充足后,补充更深的内容


浏览器发出一个请求到收到响应经历了哪些步骤

一、计网层次

应用层(Application Layer):
用户在浏览器中输入URL,并按下回车键。
浏览器解析URL,提取出主机名(如www.example.com)和资源路径(如/index.html)。

传输层(Transport Layer):
浏览器使用HTTP协议或HTTPS协议与服务器建立连接
浏览器发送HTTP请求到服务器的指定端口(默认为80端口)。
在传输层,使用TCP协议进行可靠的数据传输

网络层(Network Layer):
浏览器将HTTP请求打包成数据包(Packet)。
数据包通过网络传输,经过路由器等设备,按照IP地址找到目标服务器
在网络层,使用IP协议进行数据传输。

数据链路层(Data Link Layer):
数据包**被封装成帧(Frame)**并通过网络传输介质(如以太网)进行传输。
在数据链路层,使用MAC地址进行数据传输

物理层(Physical Layer):
数据以二进制形式通过物理介质(如电缆、光纤)进行传输。
服务器接收与处理请求:

服务器接收到请求后,根据请求的资源路径和参数,确定要返回的内容
服务器根据请求的方法(如GET、POST)执行相应的操作(如读取文件、处理表单数据)。

服务器响应:
服务器生成HTTP响应,包括状态码、响应头和响应体
响应被分成数据包,并通过网络返回给客户端。

数据链路层、网络层、传输层传输:
服务器响应的数据包经过物理层、数据链路层、网络层和传输层依次传输回客户端。

客户端接收与处理响应:
浏览器接收到响应数据包后,按顺序解析数据包,获取响应头和响应体
浏览器根据响应头中的内容类型(Content-Type)决定如何处理响应体(如渲染页面、下载文件)。

浏览器渲染:
如果响应体是HTML页面,浏览器解析HTML、CSS和JavaScript,并将页面渲染到屏幕上。
如果响应体是其他类型的文件(如图像、音频、视频),浏览器根据类型进行相应的处理。

二、JAVAWEB层次

浏览器解析用户输入的URL,生成一个HTTP格式的请求

浏览器会先检查本地hosts文件中是否有对应域名的IP映射,如果有,则直接使用该IP地址。如果没有,则将域名发送给配置的DNS服务器进行域名解析,得到IP地址

浏览器通过操作系统将请求通过**四层网络协议(如TCP/IP)**发送出去。这包括将HTTP请求封装成数据包,并通过网络中的路由器、交换机等设备进行传输,最终到达服务器。

服务器收到请求后,根据请求所指定的端口,将请求传递给绑定了该端口的应用程序(如Tomcat、Nginx等)

服务器应用程序(如Tomcat)接收到请求数据后,按照HTTP协议的格式进行解析,解析得到要访问的资源(如Servlet、静态文件等)。

sevlet来处理这个请求,如果是SpringMVC中的DispatcherServlet,那么则会找到对应的Controller中的方法,并执行该方法得到结果Tomcat得到响应结果后封装成HTTP响应的格式,并再次通过网络发送给浏览器所在的服务器

服务器应用程序根据请求的资源进行相应的处理,可能涉及业务逻辑、数据库查询等操作。

服务器应用程序生成HTTP响应,封装成HTTP响应的格式,并再次通过网络发送给浏览器所在的客户端。

浏览器接收到响应后,根据响应头中的内容类型(Content-Type)决定如何处理响应体(如渲染页面、下载文件等)。

浏览器解析响应体,将其渲染到屏幕上,呈现给用户。

这个过程中涉及的协议有:
DNS(Domain Name System):用于将域名解析为IP地址。
TCP(Transmission Control Protocol):在传输层提供可靠的、面向连接的数据传输。
IP(Internet Protocol):在网络层提供数据包的传输和路由功能。
HTTP(Hypertext Transfer Protocol):在应用层提供客户端和服务器之间的通信协议。
HTTPS(Hypertext Transfer Protocol Secure):基于TLS/SSL加密的HTTP协议,提供安全的通信。

三、七层架构

七层架构,也称为OSI模型(Open Systems Interconnection Model),是计算机网络体系结构的一种标准化方式,将网络通信分为七个不同的层次。每一层都有特定的功能和协议,各层之间通过接口进行交互。以下是七层架构的每一层及其功能:

物理层(Physical Layer):负责传输比特流,处理物理连接、电压和传输介质等。它定义了数据的传输方式、电气特性和物理接口。

数据链路层(Data Link Layer):提供可靠的数据传输,将比特流划分为帧(Frame)进行传输,并通过物理地址(MAC地址)进行寻址。它还处理帧的错误检测、流量控制和链路管理。

网络层(Network Layer):负责实现不同网络之间的数据包传输,通过路由选择算法确定最佳路径。它提供了数据包的逻辑传输和寻址,例如IP地址。

传输层(Transport Layer):提供端到端的可靠数据传输,负责将数据分割成适当的大小,并确保数据的完整性和顺序。常见的协议包括TCP(传输控制协议)和UDP(用户数据报协议)。

会话层(Session Layer):建立、管理和终止应用程序之间的会话连接,提供数据交换的会话控制和同步。

表示层(Presentation Layer):处理数据的格式和表示方式,确保不同系统的数据可以正确解释和交换。它提供数据的加密、压缩和格式转换。

应用层(Application Layer):提供网络应用程序和用户之间的接口,实现特定的应用功能。常见的协议包括HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)等。

七层架构的主要目的是将网络通信分为不同的层次,使得网络设计和开发可以模块化,并且可以灵活地添加、修改或替换各层的协议,以满足不同的需求。每一层都有自己的功能和责任,通过协同工作,实现了可靠、高效的网络通信。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值