RainyX 2019-06-28
这个也是在前端面试中问得比较多的一个问题了,文章篇幅有限尽可能关注一些前端开发中不太会遇到的知识点,如果想扩展的话请点击引用文章吧,也欢迎评论,后续会继续补充。
看图的话更容易记一些,
下面将会基于这几个过程进行描述。
首先需要搞明白的是,域名和ip地址是不同的,域名是为了更方便记忆ip所产生的,ip才是服务器在网络上的真实地址。
IP地址是用来唯一标识互联网上计算机的逻辑地址,让电脑之间可以相互通信,每台连网计算机都依靠IP地址来互相区分,相互联系。IP地址通常指的是网络中的主机,而域名则通常表示一个网站,一个域名可以绑定到多个ip上,多个域名也可以绑定到一个ip上。
为了让域名和地址能够相互转换,就需要对其进行映射,有两种方式:
DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。DNS协议运行在UDP协议之上,使用端口号53。DNS可供所有网络上的节点使用。
DNS服务器会从根域名服务器开始递归搜索,从.com顶级域名服务器,到baidu的域名服务器。
TCP/IP协议 / 四层模型 / 三次握手
在 TCP/IP协议组 中包含一系列用于处理数据通信的协议:
如图所示
TCP / IP 协议组
- TCP/IP 意味着 TCP 和 IP 在一起协同工作。
- TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。
- IP 负责计算机之间的通信。
- TCP 负责将数据分割并装入 IP 包,然后在它们到达的时候重新组合它们。
- IP 负责将包发送至接受者。
在这其中需要着重了解一下的就是数据是如何进行处理的、TCP、IP以及TCP和UDP的区别。
浏览器利用IP直接与网站主机通信。浏览器发出TCP(SYN标志位为1)连接请求,主机返回TCP(SYN,ACK标志位均为1)应答报文,浏览器收到应答报文发现ACK标志位为1,表示连接请求确认。浏览器返回TCP()确认报文,主机收到确认报文,三次握手,TCP连接建立完成。
在TCP连接建立完成后,浏览器向主机发起一个HTTP-GET方法报文请求。请求中包含访问的URL,也就是http://www.baidu.com/ ,还有User-Agent用户浏览器操作系统信息,编码等。
重定向是为了负载均衡或者导入流量,提高SEO排名。利用一个前端服务器接受请求,然后负载到不同的主机上,可以大大提高站点的业务并发处理能力;重定向也可将多个域名的访问,集中到一个站点;由于baidu.com,www.baidu.com会被搜索引擎认为是两个网站,照成每个的链接数都会减少从而降低排名,永久重定向会将两个地址关联起来,搜索引擎会认为是同一个网站,从而提高排名。
浏览器拿到响应的页面代码,将其解析呈现在用户面前。
中间会涉及到浏览器的渲染步骤、JS引擎、渲染引擎、事件响应等知识点。
后续会继续补充,欢迎收藏和点赞。
参考文章
W3School - TCP/IP 简介
一篇文章带你熟悉 TCP/IP 协议(网络协议篇二)