IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络(八):从输入网址到网页显示发生了什么? -> 正文阅读

[网络协议]计算机网络(八):从输入网址到网页显示发生了什么?

1. URL 解析

首先浏览器做的第一步操作就是对URL进行解析。

以 https://blog.csdn.net/weixin_48922154 为例:

  • 先通过该URL检查是否是合法的URL。通过URL检测使用的协议,请求的服务器以及请求的文件。
  • 再检查缓存,如果有该内容的浏览器缓存,那么就不需要请求服务器而直接显示页面。
  • 否则,就通过解析这些信息之后,使用这些信息生成HTTP请求消息,包括:
    • 请求行:请求的方法,请求URL和HTTP版本号。
    • 首部:
      • 请求首部:例如 ① Accept:用户代理可处理的媒体类型;② User-Agent:客户端程序信息等。
      • 通用首部:例如 ① Cache-Control:控制缓存的行为;Date:创建报文的日期时间等。
      • 实体首部:例如 ① Content-Encoding:实体主体适用的编码方式;② Content-Length:实体主体的大小((单位:字节)。
    • 之后是一个空行,再之后就是请求的具体请求体数据。

2. DNS 解析

通过浏览器解析URL并生成HTTP报文之后,需要通过委托操作系统将消息发送给相应Web服务器。

DNS解析就是将服务器的域名转化为IP地址的过程,因为所有节点都通过IP进行唯一标识,而IP记忆困难所以使用域名进行转化。

DNS在应用层中已经详细阐述了,具体内容在:

DNS解析过程

为什么DNS使用UDP?:

  • 因为TCP握手挥手耗费大量性能,例如查询冷门的网站,则从查询根域名系统到顶级域名系统,再到权威域名系统,每次都要进行一次握手和挥手操作。
  • 但是当DNS查询数据包很大的时候,会使用TCP传输。

3. TCP 连接

  • 在传输层中,如果HTTP消息也就是TCP的数据字段大于MSS报文最大长度,则会将数据切分成MSS长度的若干段。再给每一段封装上TCP首部。形成一个传输层报文段。

在这里插入图片描述

  • 通过三次握手和目标进程建立连接之后,将报文段交给网络层进行传输。详细步骤在另一篇博客。

TCP 协议具体内容

4. 发送HTTPS请求

如果选择的协议类型是HTTPS而不是HTTP,那么在建立连接之后会自动跳转到HTTPS网站。

HTTPS是将HTTP和TCP层中间加上了一层TLS安全传输层,每次HTTP报文的发送和接受,会经过安全传输层的加密和解密,以此来达到安全的目的。

因为HTTP和HTTPS的端口不同,所以服务端和客户端之间会建立新的TCP连接,连接建立好之后进行安全传输的TLS四次握手。握手成功之后就可以进行安全的传输。详细内容在下面这两篇博客。

HTTPS
网络安全

5. IP 首部和 MAC 首部

首先需要将传输层传递来的报文段再封装为数据报,加上IP首部字段,

  • 如IP版本,首部长度,协议类型是TCP;
  • TCP协议已经将报文段切分成MSS大小,所以不需要进行IP分片,所以不需要填入标识符、标志字段和片偏移字段;
  • 之后添加上源IP地址和目标IP地址。
    • 如果本机有多个网卡,那应该选用哪个?

这时候可以使用路由表来查询:使用route -n命令得到路由表

在这里插入图片描述
通过目的地址(Destination)子网掩码(Genmask) 进行与操作得到地址和目标地址匹配,如果能匹配的上,则使用该IP,如果不能匹配则使用0.0.0.0的默认路由。

  • 如此操作就生成了IP数据报并传递给链路层。

链路层将IP数据报封装为链路层帧,加上MAC首部:

  • MAC首部主要包括发送方MAC地址,以及接收方MAC地址和协议字段。
  • 在TCP/IP通信中,协议类型只有:
    • IP协议:0800
    • ARP协议:0806
  • 发送方MAC地址是网卡生产的时候写入到ROM里面的,直接读出填入MAC源地址字段即可。
  • 对于接收方MAC地址则是通过以下方式获取:
    • 先向高速缓存中查询是否有目标IP地址对应的MAC地址,如果没有。
    • 向同一链路广播一个ARP请求包,内容包括本机的IP地址以及目标主机的IP地址。
    • 如果某个路由器有去往该IP的路由规则,或者某台主机IP地址就是目标IP地址,就会发回一个ARP响应包,内容是需要发送的MAC地址。
    • 源主机收到响应包会将MAC地址写入接受方MAC地址字段,并将该MAC地址存入高速缓存。

在这里插入图片描述

由次MAC首部也添加完毕,形成一个链路层帧。可以通过物理层设备进行发送。

6. 网卡

真正执行发送任务的还是通过硬件网卡,而操作网卡的是网卡控制器,操作网卡控制器的又是网卡驱动程序(IO设备层次)。

网卡驱动获取到链路层帧之后,将其复制到网卡内的缓冲区,并在开头加上报文头和起始帧分隔符,尾部加上FCS帧校验序列。

都完成之后,再将数据包转换成电信号,通过网线传输出去。

7. 交换机

电信号到达网线接口,由交换机进行接收,并且把其中的电信号转换成数字信号。再通过校验检测是否出错,如果没错,则放入缓冲区。

另外由于交换机自学习的特性,它会将传送来的接口以及MAC地址做一个记录在MAC地址表中。

再通过查询MAC地址表,将收到的分组传递到应该去的接口上。

详细可以看

交换机详细内容

8. 路由器

网络包经过交换机到达路由器,并在此被转发到下一个路由器或者目标设备。路由器是基于IP进行转发器的,是第三层网络交换设备。

路由器检查校验和以及接受方MAC地址和自己是否相同,匹配之后,会将MAC首部去除,从IP首部中提取目标IP地址,通过路由表查询下一条输出链路端口,并把网络包从该端口转发。通过RIP,OSPF以及BGP协议,数据报被路由器一步步转发到目标地址。

9. 目标服务器

当数据报达到目标=服务器之后,服务器就会对数据包进行一层一层的扒皮:

  • 检查MAC首部中目的MAC地址和自己的MAC地址是否匹配。然后去除MAC首部。
  • 检查IP地址是否匹配然后去除IP首部。
  • 检查TCP首部序号是否对应等,再通过TCP首部的端口号,分发到对应进程。
  • HTTP进程收到请求之后,将需要返回的数据封装在响应报文中,并返回,返回的过程就是上述过程的逆向,一层一层封装首部,从网卡发出,交到交换机手上并发给路由器,由路由器转发对目标地址对应的交换机,再由交换机转发到客户端。
  • 客户端收到响应报文后,浏览器渲染页面。
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:33:55  更:2021-08-09 10:34:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:31:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码