阴差阳错,我成为了一名go开发工程师。虽说放弃之前的JAVA积累稍显可惜,不过转念一想,反正我JAVA也那么菜,倒不如换个赛道重新起跑哈哈哈。那么今后go语言就将成为我主修的语言了,不能再像大学期间那样得过且过,必须认真钻研
今天的我们,已经习惯了在一个又一个纷繁复杂的网页之间快速点击,从中获取自己想要的信息。但这背后的逻辑到底是怎样的呢?那些文字、图片、视频是怎样传输到我们的电脑屏幕前的呢?想知道这些,就有必要了解一下构建出整个网页系统的web的工作方式了。
平时浏览网页的时候,我们会网页上方的输入框输入一个网址,比如:www.baidu.com,网址输入完成后,一个回车,网页就跳转到了百度的首页。在黑盒视角的用户看来,这是再简单不过的操作,但以一个web开发者看来,这么一个步骤实际上经过了诸多过程:
- DNS服务器将域名(便于记忆)转换成服务器所在的ip地址
- 浏览器与服务器之间建立TCP连接
- 浏览器向服务器发送HTTP Request
- 服务器对请求进行处理,返回HTTP Response
- 断开连接,浏览器将Response中的body取出,解析成网页界面
这就是一次网页请求中发生的事情,需要注意的是,客户端和服务器之间的通信是非持久连接的,当服务器发送了应答后,就断开连接,等待下一次的请求。(扩展学习:三次握手/四次挥手/DNS解析url的过程)
通过域名,我们一般可以进入到网站的首页,但是一个网站系统当然不止有一个页面,那么网站之间的浏览又是怎么样的呢?答案是url
何谓url?就拿当前我正在编辑的这个网站来举例吧
https://www.jianshu.com/writer#/notebooks/22427209/notes/80422877/preview
https : 传输所用的协议,有http、https、ftp等
www.jianshu.com:域名
80 :端口号,默认不写就是80
write ...preview:发送给服务器的数据
DNS的工作模式:
- 操作系统检查本地的host文件是否已经存在映射(所以本地host文件的配置可以禁用掉一些网站)
- 如果host中没有映射,就去本地DNS查找缓存(如果之前DNS查找过会保留缓存)
- 如果缓存中也没有,那就本地DNS服务器查找
- 如果本地服务器也没有,那么就去根服务器查询
HTTP Request请求
- 请求行
- 请求头
请求体
网友评论