从浏览器地址栏输入URL到显示网页的过程了解吗?
从在浏览器地址栏输入 URL 到显示网页的完整过程,并不是一个单一的数据包从头到尾、一次性地完成七层封装再七层解析的过程。
而是涉及到多次、针对不同目的、与不同服务器进行的、独立的网络通信交互,每一次独立的交互都会经历类似的网络分层(无论是 OSI 七层还是 TCP/IP 四层)的封装与解析过程。
- DNS解析,浏览器会向DNS服务器发送解析请求,服务器返回解析后的IP地址。(DNS)
- TCP连接请求:浏览器通过解析得到的IP地址向服务器发送TCP连接请求,经过三次握手。(TCP、IP、OPSF)
- 发送HTTP请求:浏览器构建HTTP请求,包括请求行,请求头和请求体,然后发送到服务器。(HTTP、ARP)
- 服务器处理HTTP请求:服务器根据接收到的HTTP请求,根据请求的资源路径,经过后端处理,返回响应,包括状态行,响应头,响应体。
- 客户端解析HTTP响应:根据收到的HTTP响应内容,解析出HTML,CSS和JavaScript,并最终渲染页面
- 关闭连接:经过TCP四次挥手关闭连接
各个过程使用了哪些协议?
DNS的解析过程
Domain Name System,将域名映射到IP地址
客户端向本地DNS服务器发起的是一个递归请求,本地DNS服务器会代替客户端发起依次向根服务器,顶级域名服务器,权威域名服务器(域名所有者)发起DNS请求,最后本地DNS服务器缓存结果,递归结束返回给客户端。
WebSocket和Socket的区别?
Socket套接字是一个底层的网络编程接口,IP + 端口 + 协议WebSocket是为了解决H5不能持久化连接的问题而推出的应用层通信协议。
说一下你了解的端口和对应服务?
平常有抓包吗?
我平常使用最多的就是 chrome 浏览器自带的 network 面板了,可以看到请求的时间、请求的信息,以及响应信息。
更专业的还有 fidder、wireshark 等工具。