go web笔记(一):网页实现原理

阴差阳错,我成为了一名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请求

  • 请求行
  • 请求头
    请求体
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容