最近有在学习浏览器原理和计算机网络方面的知识,浅薄的学到了一点,就在这里记录一下
在浏览器地址栏输入网址 ?
浏览器解析网址域名
- 浏览器根据域名先从DNS服务器中获取目标域名的ip地址
- 再根据对应的ip地址发起请求
浏览器向对应ip地址发起HTTP请求
- 客户端发起的请求信息通过TCP/IP协议转化成电子信号发送给服务端
- 服务端接收到电子信号通过TCP/IP协议解析得到请求信息
- 服务端将对应请求信息的响应信息通过同样的方式返回给客户端
浏览器发起一个http请求做了什么
-
建立TCP的三次握手,如果使用的是https,则会多加一次TLS握手
-
服务器返回响应报文,浏览器解析报文,渲染页面
-
TCP四次挥手 (代表一个请求结束)
(三次握手主要是为了确认客户端需要和服务端建立新的连接,从而避免服务端一直等待,浪费资源)
什么是DNS服务 ?
- DNS是一个分布式数据库,能够提供域名和IP地址的解析服务,命名系统采用层次的逻辑结构,如同一颗倒置的树,这个树被称为域名空间,由于DNS划分了域名空间,所以各机构可以使用自己的域名空间创建自己的DNS服务。
- DNS服务器:运行DNS服务的计算机,储存DNS数据库信息,DNS服务器会尝试解析客户端发起的查询请求
- DNS缓存:DNS服务在解析客户端请求时,会现在本地查找是否有对应的DNS信息,如果没有,则会询问其他的DNS服务器,当其他服务器返回结果时,该DNS服务器会将其结果缓存在本地,当下一次客户端提交相同的请求时,DNS服务器能从本地读取缓存信息,从而快速解析出对应IP
什么是TCP/IP协议簇?
- 是指能够在多个不同网络之间相互通信的协议
如何实现相互通信?
TCP/IP共分为4层
- 应用层 (提供特定于应用程序的协议,如HTTP,FTP,IMAP)
- 传输控制层 (发送数据包到计算机上使用特定端口号的应用程序)
- 网络层 (使用IP地址将数据包发送到特定的计算机)
- 链路层 (将二进制数据包与网络信号相互转换)
为什么要分层
通过分层来明确每一层的职责,通过定义明确的接口来协同工作,每一层都可以使用下层的功能,而不必担心各层如何实现,同时各层之间互不影响
本文章为个人学习心得,如有问题,欢迎大家指出