网络-八股
文章目录介绍一下TCP/IP模型和OSI模型的区别背景是什么为什么从输入 URL 到页面展示到底发生了什么DNS查询过程CDN是什么有什么作用Cookie和Session是什么有什么区别单机上TCP和UDP服务为什么可以占用同一个端口端口号是什么?为什么能共用?介绍一下TCP/IP模型和OSI模型的区别背景是在物联网起初, 不同厂商有自己不同的标准, 他们无法互通.随着互联网的发展, 我们需要一个统一的, 标准化的模型, 让两个计算机能通信是什么TCP/IP模型是当今世界上最主流的网络模型(OSI模型是只存在于教科书上的模型, 并没有被实际采用)TCP/IP模型从用户到硬件可以分为以下五层应用层传输层网络层数据链路层物理层物理层是规定硬件(比如网线)要怎么设计, 要遵守什么规范传输层, 网络层, 数据链路层共同完成数据的转发过程传输层只关注路径的起始和终点, 数据是从源主机的哪个进程程序发出的要送到目标主机的哪个进程, 常见的协议是TCP/UDP网络层负责路径规划的地址管理, 从源IP主机到目标源IP主机, 主要的协议是IP数据链路层将上面规划好的路径进行具体的实施, MAC地址完成相邻设备之间的实际传输这三层是硬件设备/操作系统设定好的, 是程序员无法干预的应用层是程序员可以干预的就是拿到数据怎么用, 定义数据格式/交互规则, 主要的协议有HTTP协议每一层都只与相邻层交互发送方从上往下封装接收方从下往上解封装OSI模型和TCP/IP模型基本一样, 就是把表示层, 会话层, 应用层合并为一个应用层为什么最后是为什么。之所以采用分层设计核心原因有两点第一分治思想降低复杂度。网络通信涉及的问题太多分层后每层只关注自己的职责应用层管数据格式传输层, 网络层, 数据链路层复杂完成数据的转发物理层负责物理传输。各层解耦方便维护第二标准化带来互操作性。分层定义了清晰的接口规范只要遵循协议不同厂商的设备就能互联互通这为互联网的规模化发展奠定了基础。从输入 URL 到页面展示到底发生了什么URL解析和处理: 确定了 Web 服务器和文件名, 如果浏览器内有缓存, 则直接返回DNS查询: 将域名转化为IP地址建立网络连接 TCP 三次握手, 如果是HTTPS, 还要TLS握手发送HTTP请求与接收响应 构建HTTP报文, 向服务器发起请求并接受响应浏览器渲染 解析响应并渲染页面其中应该还涉及到IP 路由、MAC 寻址、交换机的步骤这些由操作系统和网络设备自动完成程序员基本没办法干预, 所以我没有深入理解所以在这个问题上我回答的步骤是我更关注和理解并的那部分DNS查询过程DNS用来把域名转化为IP地址整个过程可以概括为三级缓存查询三级迭代查询三级缓存: 浏览器缓存-系统缓存-本地DNS服务器缓存三级迭代: 根服务器-顶级域名服务器-权威域名服务器如果缓存中没有查到, 就会从本地DNS服务器逐级向上找假设用户第一次访问www.baidu.com浏览器检查自身缓存, 没有记录操作系统查询hosts文件和系统DNS缓存, 也没有查询本地DNS服务器缓存, 也没有记录本地DNS服务器开始迭代查询.根域名服务器-返回.com顶级域名服务器.com顶级域名服务器-返回baidu.com的权威域名服务器地址baidu.com的权威服务器-返回www.baidu.com的IP地址, 比如…最后, 这个IP沿原路返回, 本地三层都会缓存这个结果, 浏览器拿到IP后就可以建立TCP连接了CDN是什么有什么作用CDN是一种分布式网络服务, 它的核心是将内容缓存到离用户更近的地方, 通过就近访问来加速内容传输就近访问: CDN在全球范围内部署了多个服务器节点, 用户的请求会被路由到最近的 CDN 节点, 提供快速的内容访问内容缓存:CDN会缓存静态资源, 如图片, 样式表, 脚本等. 当用户请求访问这些资源时, CDN会首先检查是否已经缓存了这些资源.如果有缓存, CDN节点会直接返回缓存的资源,如果没有缓存所需资源, 它会从源服务器回源请求, 并将资源缓存到节点中, 以便后续请求通过缓存内容, 减少对原始服务器的请求, 减轻了源站的负载即使某些节点出现问题, 会自动调度到健康节点Cookie和Session是什么有什么区别┌─────────────────────────────────────────────────────────────────┐ │ Cookie和Session关联流程 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ 1.登录请求 ┌─────────────┐ │ │ │ ├───────────────────────│ │ │ │ │ 浏览器 │ │ 服务器 │ │ │ │ │───────────────────────┤ │ │ │ └──────┬──────┘ 2.创建Session └──────┬──────┘ │ │ │ │ │ │ │ 3.服务器返回 │ │ │ │ - Session ID: abc123 │ │ │ │ 自动设置Cookie: │ │ │ │ Set-Cookie: JSESSIONIDabc123 │ │ │ │ │ │ │ │ 4.浏览器保存Cookie │ │ │ │ ┌───────────────────────┐ │ │ │ │ │ 浏览器Cookie存储 │ │ │ │ │ │ JSESSIONID abc123 │ │ │ │ │ │ user admin │ │ │ │ │ └───────────────────────┘ │ │ │ │ │ │ │ │ 5.后续请求自动携带Cookie │ │ │ │ GET /api/session/data │ │ │ │ Cookie: JSESSIONIDabc123 │ │ │ │ │ │ │ │ 6.服务器查找Session │ │ │ │ ┌───────────────────────┐ │ │ │ │ │ 服务器Session存储 │ │ │ │ │ │ abc123 → { │ │ │ │ │ │ username: admin, │ │ │ │ │ │ loginTime: 123456, │ │ │ │ │ │ ... │ │ │ │ │ │ } │ │ │ │ │ └───────────────────────┘ │ │ │ │ │ │ │ │ 7.返回Session数据 │ │ │ │ │ │ └──────────┴──────────────────────────────────────┴────────────────┘cookie和session本质上都是键值对, Cookie 在客户端存 Session IDSession 在服务端存用户数据通过 ID 关联举个例子浏览器发起登陆请求服务器创建session{username:admin,loginTime:123456,...}服务器返回session id: “abc123”自动设置cookie浏览器cookie存储session idabc123后续请求自动携带cookie服务器查找sessionabc123-…返回session数据Cookie和Session的区别存储位置Cookie数据存储在用户的浏览器中而Session数据存储在服务器上。数据容量Cookie存储容量较小一般为几 KB。Session存储容量较大通常没有固定限制取决于服务器的配置和资源。安全性由于Cookie存储在用户浏览器中因此可以被用户读取和篡改。相比之下Session 数据存储在服务器上更难被用户访问和修改。生命周期Cookie可以设置过期时间Session依赖于会话的持续时间或用户活动。传输方式Cookie在每次HTTP请求中都会被自动发送到服务器而Session只传Session ID单机上TCP和UDP服务为什么可以占用同一个端口端口号是什么?端口号是传输层协议TCP/UDP用来区分同一台机器上不同应用程序的数字标识范围 0~65535为什么能共用?端口号是传输层用来标识不同进程的地址它依附于具体的传输层协议。TCP 和 UDP 各自维护一套独立的端口空间所以同一个数字可以分别绑定不同的服务互不冲突
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2519058.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!