一、TCP/IP模型和OSI模型分别是什么?它们之间有什么区别?
“TCP/IP 和 OSI 都是描述计算机网络架构的参考模型,它们都采用了分层的思想,将复杂的网络通信拆解为独立的层。
从结构上看,OSI 是一个 7 层模型,从下到上依次是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层;而 TCP/IP 是更精简的 4 层模型,包含网络接口层、网际层、传输层和应用层。两者可以对应来看:TCP/IP 的网络接口层对应 OSI 的底层(物理层+数据链路层),网际层对应网络层,传输层对应传输层,而 TCP/IP 的应用层则涵盖了 OSI 最上面的三层。
具体到各层的功能:
- 物理层负责底层比特流的传输。
- 数据链路层负责封装成帧和相邻节点间的 MAC 寻址及差错检测。
- 网络层负责逻辑寻址和路由选择,比如核心的 IP 协议。
- 传输层负责端到端的通信控制,比如提供可靠传输的 TCP 和不可靠传输的 UDP。
- 会话层和表示层处理通信会话管理和数据格式转换(如加密、压缩)。
- 应用层则直接为应用提供服务,比如 HTTP 协议。
它们最大的区别在于定位:OSI 是先有理论模型,后有协议,划分非常严谨,适合作为教学参考;而 TCP/IP 是先有实际的协议,后总结出的模型,它是现代互联网真实运行的基石。”
二、从输入 URL 到页面展示到底发生了什么?
主要可以分为两大阶段:网络通信和页面渲染
第一阶段:网络通信和服务器响应
首先浏览器会进行url解析,也就是把url中的各个参数作具体分析,而url不能直接找到对应的服务器地址,所以需要把url转换为具体的ip地址,浏览器就会先从缓存中查找是否存在该url对应的ip地址,如果没找到就会进行dns解析,在拿到了ip地址后客户端就会向服务端发送tcp请求来建立可靠连接,这一过程就是tcp的三次握手,如果是https协议,在建立了tcp连接后还会进行TLS/SSL 握手,以建立加密通道。连接建立后浏览器就会向服务器发送http请求报文,服务器收到后会进行处理并作出响应
第二阶段:浏览器解析与渲染
浏览器在收到服务器发送的数据后就会进行解析,通过解析返回的前端数据来构建整个页面的渲染,在进行一系列的前端处理操作后完成页面渲染,此时客户端和服务端就会通过四次挥手断开连接,释放资源
三、HTTP请求报文和响应报文是怎样的,有哪些常见字段?
基本结构
请求报文:
请求报文通常包含四部分:请求行,请求头,空行,请求体
请求行:包括了http方法,请求目标url,请求方法,如get,post等
请求头:零个或多个键值对,负责向服务器传递附件信息
空行:标志符号,用来表示头部信息的结束
请求体:主要是请求报文的数据主体信息,比如报表,json等数据
响应报文:
响应报文也包括了四部分:状态行,响应头,空行和响应体
状态行:包括了协议版本,响应码,状态描述
响应头:同样是零个或多个键值对,负责向客户端传递附件信息
空行:同样用于分隔头部信息和正文信息
响应体:服务端向客户端返回的正文信息,比如一些前端数据,json等
关键字段
HTTP头部字段是控制通信的核心,主要可以按功能分为以下几类:
连接主机:host,指定目标服务器的域名;connection,控制连接状态
内容描述:content-type,声明内容的具体格式;content-length,描述内容长度
客户端/缓存:user-agent标识发起请求的客户端类型,操作系统,浏览器版本;cache-control,核心缓存控制指令
身份与安全:authorization,携带鉴权凭证;cookie,客户端或服务端发送状态数据
四、HTTP有哪些请求方式?
主要是四大核心方法,分别对应数据库的增删改查操作
GET:请求指定资源
POST:向指定资源提交数据进行处理请求
PUT:更新指定资源
DELETE:删除指定资源
除此以外还有HEAD(获取报文首部),OPTIONS(查询服务器支持的请求方法),PATCH(对资源进行部分更新)三种方式
五、GET和POST的区别
主要可以从以下几个角度来区分
用途语义:GET用来获取,查询资源,POST用于提交,新增,处理资源
参数位置:GET通常追加在url末尾,POST通常放在请求体中
数据长度:为了性能和安全,GET受到浏览器的url限制,POST则无限制
缓存:GET支持,POST不支持
安全性:GET参数可见,POST参数在报文体内,相对隐蔽
幂等性:GET幂等,多次相同的请求,获取到的资源不会改变,POST非幂等,每次提交都可能改变资源状态