计算机网络通信(不同设备上的进程间通信)
介绍一下TCP/IP模型和OSI模型的区别
OSI模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,把计算机网络通信分为七个层级。七个层级提供不同的服务功能,每个层级都构建在下方的层级之上,下方层级为上方层级提供相应的服务。从下往上,分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
虽然OSI模型在理论上更全面,但在实际网络通信中,TCP/IP模型更为实用。 TCP/IP模型分为四个层级,每个层级负责特定的网络功能。
- 应用层(对应会话层、表示层、应用层)。应用层提供与用户应用程序交互的接口。它为网络上的各种应用程序提供服务,比如电子邮件(SMTP)、网页浏览(HTTP)、文件传输(FTP)等。
- 传输层(对应传输层)。它负责端到端的数据传输,传输层提供数据传输服务。主要的传输层协议有TCP和UDP。TCP提供可靠的数据传输服务,确保数据的正确性和完整性。而UDP则是无连接的,适用于不要求可靠性的传输,如实时的音频流、视频流。
- 网络层(对应网络层)。主要协议是IP,它负责数据包的路由与转发,选择最佳路径,把数据从源主机发送到目标主机。IP协议使用IP地址来标识主机和网络,并用逻辑地址寻址。
- 网络接口层(对应数据链路层和物理层)。它负责物理传输媒介的传输,例如以太网、Wi-Fi等,并提供错误检测和纠正的功能。此外,网络接口层还包含硬件地址(MAC地址)的管理。
从输入 URL 到页面展示到底发生了什么?
- 输入网址,解析URL信息,准备发送HTTP请求。
- 检查浏览器缓存里是否有缓存该资源,如果有直接返回,如果没有进入下一步网络请求。
- DNS域名解析:网络请求前,先进行域名解析,以获取域名对应的ip地址。如果是HTTPS请求,还要进行TLS连接。域名解析按本地浏览器缓存->本地HOST文件->路由器缓存->DNS服务器->根DNS服务器的顺序查询域名对应IP,直到找到为止。
- TCP三次握手建立连接:浏览器与服务器IP建立TCP连接。
- 客户端发送HTTP请求:连接建立后,浏览器会构建请求行,请求头等信息,并且把和该域名相关的Cookie等数据附加到请求头中,向服务器提交请求信息。如果是HTTPS的话,还涉及到HTTPS的加解密流程。
- 服务器处理请求并返回HTTP资源:服务器接收到请求信息,根据请求生成响应数据。
- TCP四次挥手断开连接:浏览器与服务器IP断开TCP连接。
- 浏览器解析响应并渲染页面:
- 浏览器解析响应头。若响应头状态码为301、302,会重定向到新地址;若响应数据类型是字节流类型,一般会将请求提交给下载管理器;若是HTML类型,会进入下一部渲染流程。
- 浏览器解析HTML文件,创建DOM树,解析CSS进行样式计算,然后将CSS和DOM合并,构建渲染树;最后布局和绘制渲染树,完成页面展示。