Subgrade

互联网,启动!

互联网

ping levin.ink

正在 Ping levin.ink [112.74.107.49] 具有 32 字节的数据:
来自 112.74.107.49 的回复: 字节=32 时间=46ms TTL=49
来自 112.74.107.49 的回复: 字节=32 时间=65ms TTL=49
来自 112.74.107.49 的回复: 字节=32 时间=65ms TTL=49
来自 112.74.107.49 的回复: 字节=32 时间=64ms TTL=49

112.74.107.49 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 46ms,最长 = 65ms,平均 = 60ms

bytes表示发送数据包的大小,默认为32字节;
time表示从发出数据包到接受到返回数据包所用的时间;
TTL表示生存时间值,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。

故障现象 可能原因
全部可达,但时间较长 中间网络状况不佳。<br>网关设备做了QoS,限制了转发速度。
全部不可达 网络中断(含设备与线缆)。<br>中间经过的防火墙设备不允许进行ping探测,丢弃了ICMP报文。<br>网络产生环路,TTL减到1后被丢弃。<br>网络拥塞导致报文响应慢。
部分可达 网络状况不佳,部分报文被丢弃。<br>中间网络配置有负载分担,且其中部分分担网络故障。<br>遭到“泛洪”攻击。

tracert levin.ink(Windows)/traceroute levin.ink(Linux)

通过最多 30 个跃点跟踪
到 levin.ink [112.74.107.49] 的路由:

  1     3 ms    40 ms     *     10.132.27.254
  2     *       17 ms     *     202.115.39.33
  3     3 ms     3 ms     2 ms  202.115.39.197
  4    20 ms     *       21 ms  202.115.39.222
  5     *        *        *     请求超时。
  6    20 ms     4 ms     6 ms  101.207.4.229
  7    26 ms     6 ms     8 ms  119.6.197.157
  8     *        *        *     请求超时。
  9     *        *        *     请求超时。
 10    63 ms    48 ms    46 ms  120.80.98.186
 11    50 ms    53 ms    46 ms  112.95.237.194
 12     *        *        *     请求超时。
 13     *        *        *     请求超时。
 14     *        *        *     请求超时。
 15     *        *        *     请求超时。
 16    64 ms    47 ms    47 ms  112.74.107.49

跟踪完成。

执行过程

  1. 首先发送一个TTL(IPv6为hop limit)为1的UDP报文。
  2. 到达第一跳时TTL超时,第一跳设备发回一个ICMP错误消息,指明此数据包不能被发送。
  3. 发送主机将TTL加1,重新发送此数据包。
  4. 第二跳设备返回TTL超时报文。

第一列包含跟踪的网络节点的序号;
第二三四列指示3次报文的响应时间;
第五列指示路由跟踪过程中接收到每个节点的 IP 地址。
中间部分显示为“* * *”,说明该节点设备配置不允许ping和tracert。

使用ping命令只能知道接收端出现超时错误,而tracert命令能够很容易发现路由环路等潜在问题。在tracert某地址时,多次出现相同的地址,即可认为出现了路由环路。

浏览器,启动!

浏览器

历史

1991-now
Pasted image 20240323131353.png

浏览器结构

用户界面(User Interface):除开网页主界面以外的元素,包括地址栏,前进后退按钮,书签菜单等都属于用户界面。
浏览器引擎(Browser engine):在用户界面和渲染引擎之间传送指令。
渲染引擎(Rendering engine)(也称为内核):负责显示请求的内容。解析网页的内容并将其显示到网页主界面
网络(Networking):用于网络调用,http请求。其接口与平台无关,为所有平台提供底层实现。
用户界面后端(UI Backend):绘制基本的窗口小部件,比如组合框和窗口。
JavaScript解释器(JavaScript Interpreter):解析并执行JavaScript代码。
数据存储(Data Persistence):数据持久层。浏览器需要保存数据,比如Cookie。

Pasted image 20240323132622.png
Pasted image 20240323134755.png
早期浏览器是单进程结构,其下运行多个线程,比如JS线程...这样如果一个线程卡死会导致进程无法进行;线程之间可以相互访问数据,不安全;以及运行效率问题。
如今分为多个进程:
浏览器进程:负责用户界面,与其他进程协调工作。
网络进程:网络请求。
GPU进程:整个浏览器界面的渲染。
插件进程:负责插件,比如flash,注意不是市场里面安装的扩展。
渲染器进程:每个标签页的内容(每个标签页单独一个进程),Chrome有四种进程分配模式。
Pasted image 20240323135447.png

输入网站后,发生了什么

在地址栏输入网址后,浏览器进程的UI线程捕捉你的输入内容。如果输入的是一个网站(1.如何判断的?)网络线程请求DNS进行域名解析,获取到服务器IP,然后连接服务器获取数据;如果输入的不是网站,而是内容,则用默认配置的搜索引擎来查询(2.细节?)。
网络线程获取到数据后,使用SafeBrowsing(3.介绍)检测站点是否是恶意站点。对用户进行警告。检测完毕后,UI线程创建渲染器进程来渲染界面。浏览器进程通过IPC(4.介绍)管道将数据传给渲染器进程。
渲染进程将html,css,js等数据渲染成用户可交互的web页面。主线程(js也在主线程中)将HTML进行解析,构造DOM(5.快学!) 数据结构。经过一系列看不懂的东西,得到Layer Tree和绘制顺序,主线程将这些信息传递给合成器线程。
合成器将每个图块发送给栅格化线程栅格每个图块,存储在GPU内存中,然后合成器线程收集Draw Quads(记录图块在内存中的位置,以及图块在页面中的位置)信息,生成合成器帧,通过IPC传送给浏览器进程,再传送到GPU,最后渲染到屏幕上。
每次滚动页面等操作就会合成新的合成器帧...渲染到屏幕

重排:改变元素大小等
重绘:改变颜色等

3.谷歌内部的一套站点安全系统,通过站点数据来检测,比如IP是否在黑名单内。

啊哈,这里是小尾巴~
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇