当前位置: 首页 > news >正文

打开一个页面,整个过程会使用哪些协议?

打开一个页面,整个过程会使用哪些协议?

网络通信模型可以用下图来简单表示,根据下面这个顺序,我们来说明,打开一个页面,整个过程会使用哪些协议?

在这里插入图片描述
首先,我们可以梳理一个简单的完整流程:

1.在浏览器中输入指定网页的URL地址;

2.浏览器通过DNS协议解析域名,获取对应的IP地址;

3.浏览器根据IP地址和端口号,与目标服务器建立TCP连接;

4.浏览器在TCP连接上发送HTTP请求报文,请求获取网页的内容;

5.服务器接收到HTTP请求后,处理请求并返回HTTP响应报文给浏览器;

6.浏览器收到HTTP响应报文后,解析响应体中的HTML代码,渲染网页的结构和样式,同时根据HTML中的其他资源的URL(如图片、CSS、JS等),再次发起HTTP请求,获取这些资源的内容,直到网页完全加载显示;

7.当浏览器不再需要与服务器通信时,它可以主动关闭TCP连接,或者等待服务器发起关闭连接的请求。

1.应用层

1.在浏览器中输入指定网页的URL地址;

URL((Uniform Resource Locator,统一资源定位符)。互联网上的每一个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

URL基本格式
在这里插入图片描述
URL具体格式

https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_9118781422654834654%22%7D&n_type=-1&p_from=-1
可以看到在这个URL中有些信息被省略了。

1.协议: **https: ** 表示协议方案。URL 的前缀通常表示了该网址采用了何种应用层协议,常见有两种——HTTP 和 HTTPS。也有其他类型(比如文件传输时用到的 ftp: ,访问mysql时用的jdbc:mysql);

2.登录信息: 现在的网站进行身份认证一般不会通过URL进行,一般会省略;

3.域名: **mbd.baidu.com: **服务器地址,此处是一个域名,域名便是访问网址的通用名(也有可能是IP地址),域名会通过DNS系统解析成一个具体的IP地址(可以通过ping命令看到地址);

4.端口: 在上面的URL中端口号被省略了,当端口号省略的时候, 浏览器会根据协议类型自动决定使用哪个端口. 例如 http 协议默认使用 80 端口,https 协议默认使用 443 端口;

5.资源路径: /newspage/data/landingsuper: 带层次的文件路径,早先的设计是该文件通常物理存储于服务器主机上,但现在随着网络技术的进步,该文件不一定会物理存储在服务器主机上,有可能存放在云上,而文件路径也有可能是虚拟的(遵循某种规则)。

6.参数: context=%7B%22nid%22%3A%22news_9118781422654834654%22%7D&n_type=-1&p_from=-1,查询字符串(query string),本质上是一个键值对的形式 key=value,键值对之间使用&分隔,键和值之间使用=分隔。

7.片段标识: 这里的URL忽略了片段标识,片段标识主要用于页面内跳转。(例如 Vue 官方文档:
https://cn.vuejs.org/v2/guide/#%E8%B5%B7%E6%AD%A5, 通过不同的片段标识跳转到文档的不同章节)

2.浏览器通过DNS协议解析域名,获取对应的IP地址;

DNS

输入URL之后,里面的域名会通过DNS系统解析成一个具体的IP地址。

DNS,全称为域名系统(Domain Name System),是一种负责将域名解析为IP地址的系统。它由解析器和域名服务器组成,是互联网中至关重要且广泛应用的一个服务。

链接:DNS(域名解析系统)

4.浏览器在TCP连接上发送HTTP请求报文,请求获取网页的内容;

5.服务器接收到HTTP请求后,处理请求并返回HTTP响应报文给浏览器;

6.浏览器收到HTTP响应报文后,解析响应体中的HTML代码,渲染网页的结构和样式,同时根据HTML中的其他资源的URL(如图片、CSS、JS等),再次发起HTTP请求,获取这些资源的内容,直到网页完全加载显示;

HTTP/HTTPS

使用DNS,拿到目标主机的IP地址之后,浏览器可以通过目标IP地址发送请求。

链接:HTTP
链接:HTTPS

2.传输层

3.浏览器根据IP地址和端口号,与目标服务器建立TCP连接;

7.当浏览器不再需要与服务器通信时,它可以主动关闭TCP连接,或者等待服务器发起关闭连接的请求。

HTTP协议是基于TCP协议的,在应用层数据封装好后,交给传输层,经过TCP协议继续封装。

TCP协议一: TCP协议之特点和首部格式
TCP协议二: TCP协议之可靠传输
TCP协议三: TCP的三次握手和四次挥手
TCP协议四: TCP协议中的几个机制

3.网络层

2.浏览器通过DNS协议解析域名,获取对应的IP地址;

3.浏览器根据IP地址和端口号,与目标服务器建立TCP连接;

网络层的的核心功能——转发与路由:

转发:将分组从路由器的输入端口转移到合适的输出端口;
路由:确定分组从源到目的经过的路径。

IP协议
我们需要了解IP是什么和IP协议。
链接:IP协议

以上就是打开一个页面,整个过程会使用哪些协议的总结

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • UE基础 —— 介绍与安装
  • Python爬虫入门实战(详细步骤)
  • 【mDNS协议】通过UDP广播在局域网内实现设备自动发现和连接的协议
  • Android 应用兼容性变更调试
  • 【C语言知识-输出空格】C语言中输出空格的方法
  • C# ?的使用
  • 目标检测——X光安检数据集
  • 快速上手的企业视频会议系统需要具备哪些能力
  • 魔众文库系统v7.0.0版本推荐店铺功能,管理菜单逻辑优化
  • 【leetcode刷题之路】面试经典hot100(1)——哈希+双指针+滑动窗口+子串
  • HTMLCSS
  • 面试官:怎样设计一个分布式任务调度平台?
  • 【开源分享】PHP在线提交工单源码|工单管理系统源码 (附源码搭建教程)
  • STM32——外部中断(EXTI)
  • 【云原生】Job一次性任务详解
  • 【EOS】Cleos基础
  • eclipse(luna)创建web工程
  • jdbc就是这么简单
  • React 快速上手 - 07 前端路由 react-router
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 分享几个不错的工具
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 后端_ThinkPHP5
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 基于webpack 的 vue 多页架构
  • 聊聊directory traversal attack
  • 前端代码风格自动化系列(二)之Commitlint
  • 前言-如何学习区块链
  • 通过git安装npm私有模块
  • 微信公众号开发小记——5.python微信红包
  • 协程
  • ​批处理文件中的errorlevel用法
  • ###C语言程序设计-----C语言学习(3)#
  • #DBA杂记1
  • #LLM入门|Prompt#3.3_存储_Memory
  • #pragma once
  • $(selector).each()和$.each()的区别
  • (1)SpringCloud 整合Python
  • (libusb) usb口自动刷新
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (十八)Flink CEP 详解
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (四)进入MySQL 【事务】
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转)用.Net的File控件上传文件的解决方案
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • [ 蓝桥杯Web真题 ]-布局切换
  • [23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians
  • [autojs]autojs开关按钮的简单使用
  • [BZOJ 4129]Haruna’s Breakfast(树上带修改莫队)
  • [C++基础]-入门知识