1.OSI(开放式系统互联)参考模型由七个层次组成,这七个层次分别是:
物理层(Physical Layer):负责在物理媒介上传输比特流(即数据)。
数据链路层(Data Link Layer):负责将比特流组装成帧(即数据包)。
网络层(Network Layer):负责将数据包从源主机传输到目标主机。
传输层(Transport Layer):负责在源主机和目标主机之间建立可靠的数据传输连接。
会话层(Session Layer):负责在源主机和目标主机之间建立会话并进行管理。
表示层(Presentation Layer):负责对数据进行编码、解码和加密等处理,以确保数据能够正确地传输和解释。
应用层(Application Layer):负责应用程序与网络之间的接口,为用户提供各种服务和应用程序。
2. TCP/IP模型有四层组成,它们分别是:
- 网络接口层(Network Interface Layer):该层负责将网络层的数据包封装成物理层可以传输的比特流,并将收到的比特流解封装成数据包,以便传递给网络层。
- 网络层(Internet Layer):该层负责将数据包从源主机传输到目标主机,通过IP协议进行寻址和路由,以确保数据包能够到达正确的目标主机。
- 传输层(Transport Layer):该层负责在源主机和目标主机之间建立可靠的数据传输连接。TCP和UDP是该层的两个常用协议。
- 应用层(Application Layer):该层负责应用程序与网络之间的接口,为用户提供各种服务和应用程序。常见的应用层协议包括HTTP、FTP、SMTP等。
3.BIO:同步阻塞I/O,使用BIO读取数据时会阻塞线程,且需要线程主动去查询是否有数据可读。
NIO:同步非阻塞I/O,使用NIO读取数据时不会阻塞线程,但需要线程主动去查询是否有IO事件。
AIO:异步非阻塞I/O,使用AIO读取数据时不会阻塞线程,不需要主动去查询是否有IO事件。
4.HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于在Web浏览器和Web服务器之间传输数据的应用层协议。
HTTP协议采用客户端-服务器模式进行通信,客户端向服务器发送HTTP请求,服务器则返回HTTP响应。HTTP使用TCP作为其传输协议,在传输数据之前需要先建立TCP连接。一旦建立连接,客户端可以向服务器发送请求。 HTTP协议的请求/响应结构由请求行、请求头、请求体、响应行、响应头和响应体等组成。其中请求行包含请求方法、URI和协议版本等信息,响应行包含状态码、状态消息和协议版本等信息。请求头和响应头则包含各种元数据信息,如日期、内容类型、长度、Cookie等。
请求方法: GET,POST,PUT,Delete,Head,Trace,Options。
状态码: 200:成功 300: 400: 403: 404: 500:
5.ARP与RARP?
ARP的主要功能是将IP地址解析为物理MAC地址,工作在数据链路层; RARP的主要功能是将MAC地址解析为IP地址。
6.浏览器发出一个请求到收到响应经历了哪些步骤?
-
用户输入URL:
- 用户在浏览器地址栏中输入URL(统一资源定位符)。
- URL包含协议类型(如HTTP、HTTPS)、域名(或IP地址)和路径等信息。
-
DNS解析:
- 浏览器提取URL中的域名,将其发送给DNS服务器进行域名解析。
- DNS服务器返回域名对应的IP地址。
-
建立TCP连接:
- 浏览器使用HTTP协议的默认端口(80或443)与服务器建立TCP连接。
- 这个过程包括三次握手,即客户端发送SYN报文,服务器返回SYN-ACK报文,客户端再发送ACK报文。
-
发送HTTP请求:
- 浏览器构建HTTP请求报文,包括请求行(请求方法、URL等)、请求头(如User-Agent、Cookie等)和请求体(对于POST请求)。
- 请求报文被划分为数据包,通过TCP连接发送给服务器。
-
服务器处理请求:
- 服务器接收到请求后,根据请求的URL和参数进行处理。
- 服务器可能会进行一系列的处理操作,如读取数据库、执行业务逻辑等。
-
服务器返回HTTP响应:
- 服务器生成HTTP响应报文,包括响应行(状态码、状态消息)、响应头(如Content-Type、Content-Length等)和响应体(返回的数据)。
- 响应报文被分为多个数据包,通过TCP连接依次发送给浏览器。
-
浏览器接收响应:
- 浏览器接收到服务器发送的响应数据包。
- 浏览器对数据包进行解析和处理,获取响应的内容。
-
渲染页面:
- 浏览器根据响应的内容(如HTML、CSS、JavaScript等)进行页面渲染。
- 解析HTML结构,构建DOM树;解析CSS样式,构建渲染树;执行JavaScript脚本,处理页面逻辑。
-
关闭TCP连接:
- 在数据传输完毕后,浏览器和服务器断开TCP连接。
- 这个过程包括四次握手,即服务器发送FIN报文,浏览器返回ACK报文,浏览器发送FIN报文,服务器返回ACK报文。
7.HTTPS是如何保证安全传输的? 非对称加密和对称加密,数字证书