其实我也感觉挺好奇的为什么自己会给自己接下来要写的超级长篇取一个这个中二的名字。嘛,虽然自己现在年龄也不小了,但是在有些时候我还是希望自己能够保持一颗童心,尝试去抛开利益的层面,去询问自己到底想要追寻些什么,还是希望自己能够保持那颗好奇心,尽管很多时候他不能转换成白花花的银子。

还是打算慢慢来,从科普性质的书籍看起吧,毕竟我始终感觉科普性质的读物往往对于架构本身的掌控,对于这个力道能拿捏地非常不错。在这里我所选择的科普性读物是《网络是怎样连接的》,我感觉这本书的写作风格和我非常相似,虽然说里面讲的大多数内容我都很清楚了,但是我还是想基于这本书查漏补缺吧。

其实多层协议本身就是一个绝佳复用的例子,所谓分层就是将基本上所有的请求进行分割,虽然会增加适当的冗余性,但是与之同时,会大大增加每一层的可复用程度。在计算机的架构过程中,无时无刻不存在着取舍和均衡,像B站就有一个梗,“小孩子才做选择,我全都要”,我感觉成熟的标志之一就是能做出合理的抉择了。本来我打算直接进入主题,但是很无奈的是,我感觉在不理解一些基础的思想的前提下,讲任何东西其实都仅仅是海市蜃楼罢了。

多层的架构的上层架构的实现都是基于其下层的架构的实现上舔砖加瓦得以实现的,就好比,HTTP需要三次握手了,client总不可能和server进行虚空握手吧,总需要基于一些载体,这个载体就是位于其下层的TCP协议。不知道你是否听过这么一句话,”哪有什么岁月静好,只是有人代你负重前行罢了“。所以其实表面上,在协议的高层,看似仅仅进行了一个非常简单的操作,但是实际上,位于低层的协议层可以说是忙的要死。毕竟高层的任何一个操作,说到底,到最后都是被翻译成低层的一些数据,然后被传输到目的地

首先我们需要确认计算机的浏览器是一个应用程序,我们不能因为这个应用程序往往伴随着操作系统就存在,而且能直接基于网址转换成丰富多彩的界面就过度神话它。理论还是需要基于实践进行讲解,现在的浏览器会设置很多默认的选项,就是为了让浏览器的使用能使用各种年龄段,各种智商段的。就比如说,在以前,协议名称输错,或者说少输入了一个/,都是不行的,现在直接就不用填写,都有默认值,足以应付大多数人日常的生活需求了。

让我们来看一下一个完整的所有浏览器都能够识别的URL是怎么样的吧。

http://user:password@www.glass.com:80/dir/file1.html

稀里糊涂写了一大串对不对啊,http是协议名称,所谓协议,最简单的理解就是人为制定的一套规矩,就好比日本人通过吃面条喜欢吃的很大声来表示礼貌和美味,但是这一套在自认为非常文明的昂撒国家就会被认为很粗鲁,这样容易造成歧义和误解。所以我们大家坐下来制定一套规矩,也就是协议,规定以后我们吃面条想表现得有礼貌就吃大声一些。

说完了协议名称,接下来就是用户名和密码了user:password,这两个是可选项,需要有些时候访问ftp或者svn的时候,猛然给你弹出一个窗口让你输入账号密码,其实就是需要验证你是否有执行相应操作的权限。

接着是www.glass.com:80也就是服务器域名和端口号,也就是能够提供给你服务的对应协议服务器的地址。最后是/dir/file1.html,即我们这次请求具体所需要访问的文件路径,Linux的核心思想之一,一切皆为文件。

Ciruy英雄谭 Chapter 2 Web浏览器如何将数据委托出去(一)相关推荐

  1. Ciruy英雄谭 Chapter 3 杂谈

    我始终坚持自己的想法,这和授人以鱼不如授人以渔的想法类似,又要提及自己的往事了.我记得,最初学网络协议的时候,接收到的总是干瘪的文字,就好比TCP协议是运输层,负责将需要传输的数据进行分割和排序.背完 ...

  2. Ciruy英雄谭 Chapter 1 序章

    好好考虑考虑自己的应该做些什么吧,少看一些那些散播充满浮躁和焦虑的文章. 说真的,我常常感觉自己非常的无知,就比如说虽然我知道计算机之间是通过高电平为1,低电平为0的方式进行数据传输的,但是具体到底是 ...

  3. Chapter 30 Web Technology and DBMSs

    Chapter 30 Web and Technology and DBMSs chapter objectives /*本章目标*/ In this chapter you will learn: ...

  4. [C# 网络编程系列]专题四:自定义Web浏览器

    前言: 前一个专题介绍了自定义的Web服务器,然而向Web服务器发出请求的正是本专题要介绍的Web浏览器,本专题通过简单自定义一个Web浏览器来简单介绍浏览器的工作原理,以及帮助一些初学者揭开浏览器这 ...

  5. Beaker:一个基于Electron的点对点Web浏览器

    Beaker是一个基于Electron.Chromium和Node.js的实验性.点对点Web浏览器.Beaker包含新的基于Dat的API,用于构建无主机应用程序,同时又保持与传统Web的兼容性. ...

  6. 大多数Web浏览器中都可以使用PUT,DELETE,HEAD等方法吗?

    我在这里看到了几个问题,例如如何调试RESTful服务 ,其中提到: 不幸的是,同一浏览器不允许我测试HTTP PUT,DELETE,并且在某种程度上甚至无法测试HTTP POST. 我还听说其他一些 ...

  7. 第十一章:WEB浏览器中的javascript

    客户端javascript涵盖在本系列的第二部分第10章,主要讲解javascript是如何在web浏览器中实现的,这些章节介绍了大量的脚本宿主对象,这些对象可以表示浏览器窗口.文档树的内容.这些章节 ...

  8. 禁用Cookie在web浏览器中读取/写入c#应用程序

    我希望网站无法读取cookie或在webbrowser c#控制应用程序中写入新的cookie.当webbrowser c#应用程序运行时,我宁愿禁用所有网站的所有读/写cookie操作,如果不是,那 ...

  9. 服务器应用程序不可用您试图在此 Web 服务器上访问的 Web 应用程序当前不可用。请点击 Web 浏览器中的“刷...

    错误提示: 服务器应用程序不可用您试图在此 Web 服务器上访问的 Web 应用程序当前不可用.请点击 Web 浏览器中的"刷新"按钮重试您的请求. 管理员注意事项:详述此特定请求 ...

最新文章

  1. 从责任界定和问题预警角度 解读全栈溯源对DevOps的价值
  2. 计算机网络犯罪和一般犯罪的不同,论计算机网络犯罪题稿.doc
  3. iOS简单动画实现方案
  4. 到了姥姥家我在小点点c++
  5. element-ui多选框模糊搜索输入文字闪动问题
  6. 获取Django中model字段名 字段的verbose_name
  7. php 去零取整,php取整的几种方法
  8. 自动伽马校正(Auto Gamma Correction)算法
  9. 为什么电脑屏幕会横过来_电脑屏幕倒过来了怎么办?电脑屏幕横过来了怎么办?...
  10. matlab设计计算器,MATLAB-计算器的设计.doc
  11. 【C语言】C文件编译时间,日期,行号,文件名获取方式
  12. Mac音频录制软件哪个好 怎么录制屏幕声音
  13. 双级矩阵变换器matlab,双空间矢量调制下双级矩阵变换器的谐波分析
  14. 密码疑云 (3)——详解RSA的加密与解密
  15. Anaconda 修改默认虚拟环境安装位置
  16. linux中的find查找文件或者目录、locate快速定位文件路径
  17. HALCON数组的删除 三
  18. 双十一大促客服必备话术
  19. 【多媒体课件制作软件】Focusky教程 | 如何为Focusky每个镜头(帧或路径)加入配音(录音)和字幕?
  20. 安装中文版 portainer-ce

热门文章

  1. php如何给进入网页加入密码,怎么给一个PHP密码访问页面加超链接
  2. linux tty core code,linux tty core 源码分析(5)
  3. java定时器返回future_java 定时器线程池(ScheduledThreadPoolExecutor)的实现
  4. Java 添加音频到ppt_Java 添加文本框到PPT幻灯片过程解析
  5. 装鸡蛋的鞋子java代码_Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)...
  6. jsp 修改的员工select怎么_SpringBoot+Mybatis+Jsp 员工管理系统
  7. plsql objects 过一段时间就会未连接oracle_记一次生产数据库故障排查--连接管理等待事件...
  8. python装饰器的案例_Python之装饰器的实例
  9. oracle 监听主机,Oracle 监听
  10. 每天一个linux命令(12):more命令