text: (window.webpackJsonp=window.webpackJsonp||[]).push([[94],{589:function(s,a,t){"use strict";t.r(a);var r=t(3),n=Object(r.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"计算机网络"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#计算机网络"}},[s._v("#")]),s._v(" 计算机网络")]),s._v(" "),t("div",{staticClass:"language-js line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-js"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 什么是计算机网络")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 计算机网络主要由一些通用的、可编程的硬件互连而成\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 通过这些硬件，可以传送不同类型的数据，并且可以支持广泛和日益增长的应用\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 计算机网络不是软件概念，还包含硬件设备\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 计算机网络不仅仅是信息通信，还可以支持广泛的应用\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 计算机网络的分类")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 网络的作用范围\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 广域网："),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("WAN")]),s._v(" 范围在几十到几千公里，区域跨省、跨国\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 城域网："),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MAN")]),s._v(" 范围在 "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5")]),s._v("KM"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("50")]),s._v("KM，区域在城市间\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 局域网："),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("LAN")]),s._v(" 范围在 "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("KM以内，区域在地区内\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 网络的使用者\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 公用网络\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 专用网络\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 计算机网络的发展简史")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 互联网的发展历史\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 单个网络 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("ARPANET")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 交换机\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 三级结构互联网\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 主干网\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 地区网\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 校园网\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 多层次 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("ISP")]),s._v(" 互联网\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("ISP")]),s._v(" 即 Internet Service Provider 网络服务提供商如中国电信、中国移动、中国联通等\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 主干 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("ISP")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 连接全球")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 地区 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("ISP")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 连接地区")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 公司、校园、家庭等\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 中国互联网的发展简史\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1980")]),s._v("年开始互联网实验\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1989")]),s._v("年第一个公共网络建立运行\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1994")]),s._v("年接入国际互联网\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 五大公共网络\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 中国电信互联网 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("CHINANET")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 中国联通互联网 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("UNINET")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 中国移动互联网 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("CMNET")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 中国教育与科研计算机网 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("CERNET")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" 中国科学技术网 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("CSTNET")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 计算机网络的层次结构")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 层次结构设计的基本原则\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 各层之间是相互独立的\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 每一层要有足够的灵活性\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 各层之间完全解耦\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("OSI")]),s._v(" 七层模型\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 应用层：为计算机用户提供接口和服务\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 表示层：数据处理（编码解码、加密解密等）\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 会话层：管理（建立、维护、重连）通信会话\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 传输层：管理端到端的通信连接\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" 网络层：数据路由（决定数据在网络的路径）\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6.")]),s._v(" 数据链路层：管理相邻节点之间的数据通信\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("7.")]),s._v(" 物理层：数据通信的光电物理特性\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("OSI")]),s._v(" 最终并没有成为广为使用的标准模型\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("OSI")]),s._v(" 欲成为全球计算机都遵循的标准\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("OSI")]),s._v(" 在市场化过程中困难重重，"),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("TCP")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 在全球范围成功运行\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("OSI")]),s._v(" 的专家缺乏实际经验\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("OSI")]),s._v(" 标准制定周期过长，按 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("OSI")]),s._v(" 标准生产的设备无法及时进入市场\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("OSI")]),s._v(" 模型设计的并不合理，一些功能在多层中重复出现\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("TCP")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 四层模型\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 应用层 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// HTTP、FTP")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("OSI")]),s._v(" 的应用层\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("OSI")]),s._v(" 的表示层\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("OSI")]),s._v(" 的会话层\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 传输层 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// TCP、UDP")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("OSI")]),s._v(" 的传输层\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 网络层 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// IP、ICMP")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("OSI")]),s._v(" 的网络层\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 网络接口层 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// Ethernet、ARP、RARP")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("OSI")]),s._v(" 的数据链路层\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("OSI")]),s._v(" 的物理层\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 网络接口层之现代互联网的网络拓扑")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 边缘部分\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 家庭：多终端机器——"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("路由器——"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("网关——"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("地区 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("ISP")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 企业：多终端机器——"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("多路由器——"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("多网关——"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("地区 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("ISP")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 核心部分\n  主干 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("ISP")]),s._v(" 通过海底电缆连接\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 用户连接模式\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 客户——服务器（"),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("C")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("S")]),s._v("）模式\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 对等连接（"),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("P2P")]),s._v("）模式\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 网络接口层之计算机网络的性能指标")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 速率：bps "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" bit"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("s\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 时延\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 发送时延 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" 数据长度（bit）"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v(" 发送速率（bit"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("s） "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 受限于计算机网卡")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 传播时延 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" 传输路径距离 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v(" 传播速率（bit"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("s） "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 受限于传输介质 ")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 排队时延：数据包在网络设备中等待被处理的时间\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 处理时延：数据包到达设备或目的机器被处理所需要的时间\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" 总时延 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" 发送时延 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("+")]),s._v(" 传播时延 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("+")]),s._v(" 排队时延 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("+")]),s._v(" 处理时延\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 往返时间（"),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("RTT")]),s._v("）\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("RTT")]),s._v("（Route"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Trip Time）是评估网络质量的一项重要指标\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("RTT")]),s._v(" 表示的是数据报文在端到端通信中的来回一次的时间\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 通常使用 ping 命令查看 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("RTT")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 网络接口层之物理层概述")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 物理层的作用\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 连接不同的物理设备\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 传输比特流\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 传输介质\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 双绞线\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 同轴电缆\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 光纤\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 红外线\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" 无线\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6.")]),s._v(" 激光\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 信道的基本概念\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 信道是往一个方向传送信息的媒体\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 一条通信电路包含一个接收信道和一个发送信道\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 单工通信信道\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 只能往一个方法通信，没有反方向反馈的信道\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 有线电视、无限电收音机等\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 半双工通信信道\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 双方都可以发送和接收信息\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 不能双方同时发送，也不能同时接收\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" 全双工通信信道\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 双方都可以同时发送和接收信息\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 分用"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("复用技术\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 传送和接收都走同一个入口和出口，而不是都有各自的信道\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 网络接口层之数据链路层概述")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 封装成帧\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 帧 是数据链路层数据的基本单位\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 发送端在网络层的一段数据前后添加特定标记形成 帧\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 接收端根据前后特定标记识别出 帧\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 物理层不管 帧\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" 帧 首部和尾部是特定的控制字符（特定比特流）\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("SOH")]),s._v("："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("00000001")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("7.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("EOT")]),s._v("："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("00000100")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8.")]),s._v(" 如果数据中有 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("SOH")]),s._v(" 和 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("EOT")]),s._v(" 会在前面加上 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("ESC")]),s._v(" 作为转义\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 透明传输\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 透明在计算机领域是非常重要的一个术语\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 一种实际存在的事物却又看起来不存在一样\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 即是控制字符在帧数据中，但是要当做不存在的去处理\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 差错监测\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 物理层只管传输比特流，无法控制是否出错\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 数据链路层负责起 差错监测 功能\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 奇偶校验码\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 循环冗余校验码 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("CRC")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 网络接口层之最大传输单元 MTU")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MTU")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 最大传输单元 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MTU")]),s._v(" （Maximum Transmission Unit）\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 数据链路层的数据帧也不是无限大的\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 数据帧过大或过小都会影响传输的效率\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 以太网 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MTU")]),s._v(" 一般为 "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1500")]),s._v(" 字节\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 路径 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MTU")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 路径 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MTU")]),s._v(" 由链路中 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MTU")]),s._v(" 的最小值决定\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 网络接口层之以太网协议详解")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MAC")]),s._v(" 地址\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MAC")]),s._v(" 地址（物理地址、硬件地址）\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 每一个设备都拥有唯一的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MAC")]),s._v(" 地址\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MAC")]),s._v(" 地址共"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("48")]),s._v("位，使用十六进制表示\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" cmd ——"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" piconfig"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("all "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 查看 MAC 地址")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 以太网协议\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 以太网（Ethernet）是一种使用广泛的局域网技术\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 以太网是一种应用于数据链路层的协议\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 使用以太网可以完成相邻设备的数据帧传输\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 路由器拥有一张 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MAC")]),s._v(" 地址表，用于识别发送的目的机器\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 数据发送流程\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("A")]),s._v(" 通过网卡发出数据帧\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 数据帧到达路由器，路由器取出前"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6")]),s._v("字节即目的机器的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MAC")]),s._v(" 地址\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 路由器匹配 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MAC")]),s._v(" 地址表，找到对应的网络接口\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 路由器往该网络接口发送数据帧\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" 如果匹配不到 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MAC")]),s._v(" 地址表，则会广播发送给所有在表中的机器，收到回应后，会记录下未知匹配不到的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MAC")]),s._v(" 地址表\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 网络层之IP 协议详解")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 虚拟互连网络\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 实际的计算机网络是错综复杂的\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 物理设备通过使用 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 协议，屏蔽了物理网络之间的差异\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 当网络中的主机使用 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 协议连接时，则无需关注网络细节\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 协议使得复杂的实际网络变为一个虚拟互连的网络\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 协议使得网络层可以屏蔽底层细节而专注网络层的数据转发\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 协议解决了再虚拟网络中数据报传输路径的问题\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 协议 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 一共有 2^32 = 4294961296 个 IP")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 地址长度为"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("32")]),s._v("位，常分成"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4")]),s._v("个"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8")]),s._v("位的二进制数\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 地址常使用点分十进制来表示 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 0~255.0~255.0~255.0~255")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 网络层之 IP 协议的转发流程")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 路由表简介\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 计算机或者路由器都拥有路由表\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 路由表包含了目的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 地址和下一跳的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 地址\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 协议的转发流程\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 数据帧每一跳的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MAC")]),s._v(" 地址都在变化\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 数据报每一跳的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 地址始终不变\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 网络层的转发流程\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("A")]),s._v(" 发出目的地为 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("C")]),s._v(" 的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 数据报，查询路由表发现下一跳为 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("E")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("A")]),s._v(" 将数据报发送给 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("E")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("E")]),s._v(" 查询路由表发现下一跳为 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("F")]),s._v("，将数据报发送给 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("F")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("F")]),s._v(" 查询路由表发现目的地 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("C")]),s._v(" 直接连接，将数据报发送给 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("C")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 数据链路层 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("+")]),s._v(" 网络层的转发流程\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("A")]),s._v(" 发出目的地为 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("C")]),s._v(" 的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 数据报，查询路由表发现下一跳为 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("E")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("A")]),s._v(" 将 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 数据报交给数据链路层，并告知目的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MAC")]),s._v(" 地址是 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("E")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 查询 ARP 缓存表")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 数据链路层填充源 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MAC")]),s._v(" 地址 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("A")]),s._v(" 和目的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MAC")]),s._v(" 地址 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("E")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 数据链路层通过物理层将数据发送给 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("E")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("E")]),s._v(" 的数据链路层接收到数据帧，把帧数据交给网络层\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("E")]),s._v(" 查询路由表，发现下一跳为 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("F")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("7.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("E")]),s._v(" 把数据报交给数据链路层，并告知目的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MAC")]),s._v(" 地址为 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("F")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 查询 ARP 缓存表")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("E")]),s._v(" 的数据链路层封装数据帧并发送\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("9.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("F")]),s._v(" 的数据链路层接收到数据帧，把帧数据交给网络层\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("10.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("F")]),s._v(" 查询路由表，发现下一跳为 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("C")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("11.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("F")]),s._v(" 把数据报交给数据链路层，并告知目的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MAC")]),s._v(" 地址为 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("C")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 查询 ARP 缓存表")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("12.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("F")]),s._v(" 的数据链路层封装数据帧并发送\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 网络层之 ARP 协议与 RARP 协议")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("ARP")]),s._v(" （Address Resolution Protocol）地址解析协议 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// cmd arp -a")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 用于将网络层 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("32")]),s._v("位地址转换成数据链路层 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MAC")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("48")]),s._v("位地址\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("ARP")]),s._v(" 缓存表就是 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 地址和 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MAC")]),s._v(" 地址的映射\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("ARP")]),s._v(" 缓存表是 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("ARP")]),s._v(" 协议和 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("RARP")]),s._v(" 协议运行的关键\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("ARP")]),s._v(" 缓存表缓存了 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 地址到硬件地址之间的映射关系\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("ARP")]),s._v(" 缓存表中的记录并不是永久有效的，有一定的期限\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("RARP")]),s._v(" （Reverse Address Resolution Protocol）逆地址解析协议\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 用于将数据链路层 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MAC")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("48")]),s._v("位地址转换成网络层 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("32")]),s._v("位地址\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 网络层之 IP 地址的子网划分")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 分类的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 地址\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 分为网络号和主机号\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("A")]),s._v("类地址：网络号有"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8")]),s._v("位且以"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v("开头，主机号有"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("24")]),s._v("位\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 最小网络号："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 最大网络号："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("127")]),s._v("（"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("01111111")]),s._v("）\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 子网数量："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("^")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("7")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 最小主机号："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.0")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".1")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" 最大主机号："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("255.255")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".254")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6.")]),s._v(" 主机数量："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("^")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("24")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("B")]),s._v("类地址：网络号有"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("16")]),s._v("位且以"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("10")]),s._v("开头，主机号有"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("16")]),s._v("位\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 最小网络号："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("128.1")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 最大网络号："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("191.255")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 子网数量："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("^")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("14")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 最小主机号："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.1")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" 最大主机号："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("255.254")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6.")]),s._v(" 主机数量："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("^")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("16")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("C")]),s._v("类地址：网络号有"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("24")]),s._v("位且以"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("110")]),s._v("开头，主机号有"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8")]),s._v("位\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 最小网络号："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("192.0")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".1")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 最大网络号："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("223.255")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".255")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 子网数量："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("^")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("21")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 最小主机号："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" 最大主机号："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("254")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6.")]),s._v(" 主机数量："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("^")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("D")]),s._v("类地址：以"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1110")]),s._v("开头\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("E")]),s._v("类地址：以"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1111")]),s._v("开头\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("7.")]),s._v(" 特殊的主机号\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 主机号全"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v("表示当前网络段，不可分配给特定主机 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 1.2.3.4")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 主机号为全"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("表示广播地址，向当前网络段所有主机 发消息 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 1.255.255.255")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8.")]),s._v(" 特殊的网络号\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("A")]),s._v("类地址网络段全（"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("000000000")]),s._v("）表示特殊网络\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("A")]),s._v("类地址网络段后"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("7")]),s._v("位全"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("（"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("01111111")]),s._v("即"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("127")]),s._v("）表示回环地址\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("B")]),s._v("类地址网络段（"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("10000000.00000000")]),s._v("即"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("128.0")]),s._v("）是不可使用的\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("C")]),s._v("类地址网络段（"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("192.0")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".0")]),s._v("）是不可使用的\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("9.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("127.0")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".0")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".1")]),s._v(" 通常称为本地回环地址（Loopback Address）\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 不属于任何一个有类别地址类，它代表设备的本地虚拟接口，所以默认被看做是永远不会宕掉的接口\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 在 windows 操作系统中也有相似的定义，所以通常在安装网卡前就可以 ping 通这个本地回环地址\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 一般都会用来检查本地网络协议、基本数据接口等是否正常\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 划分子网\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 地址划分为网络号、子网号、主机号\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("193.10")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".10")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".0")]),s._v(" 可以划分为 "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("193.10")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".10")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".0")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("~")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("193.10")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".10")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".127")]),s._v(" 和 "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("193.10")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".10")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".128")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("~")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("193.10")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".10")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".255")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 子网掩码 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 用于判断 ip 是属于哪个网络号")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 子网掩码和 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 地址一样，都是 "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("32")]),s._v(" 位\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 子网掩码由连续的 "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" 和连续的 "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v(" 组成\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 某一个子网的子网掩码具备网络号位数个连续的 "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("A")]),s._v(" 类地址的子网掩码："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("255.0")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".0")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".0")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("B")]),s._v(" 类地址的子网掩码："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("255.255")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".0")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".0")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("C")]),s._v(" 类地址的子网掩码："),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("255.255")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".255")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".0")]),s._v("\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("7.")]),s._v(" 子网掩码如何换算成子网号\n      "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 把子网掩码和 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 地址都先换算成二进制\n      "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 再把两个二进制进行与运算，就是两个都是"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("就是"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("，不同就是"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v("\n      "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 再把与运算的结果换算成十进制即可得到网络号\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 无分类编址 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("CIDR")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("CIDR")]),s._v(" 中没有 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("A")]),s._v("、"),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("B")]),s._v("、"),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("C")]),s._v(" 类网络号和子网划分的概念\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("CIDR")]),s._v(" 将网络前缀相同的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 地址称为一个 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("CIDR")]),s._v(" 地址块\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 在 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("CIDR")]),s._v(" 中的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 地址分为网络前缀和主机号\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 网络前缀是任意位数的\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" 相比原来子网划分更加灵活\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 网络层之网络地址转换 NAT 技术")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" IPv4 最多只有 "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("40")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("+")]),s._v(" 亿个 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 地址\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 早期 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 地址的不合理规划导致 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 号浪费\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 内网地址和外网地址的区别\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 内网\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 内部机构使用\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 避免与外网地址重复\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 外网\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 全球范围使用\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 全球公网唯一\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 三类内网地址\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("10.0")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".0")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".0")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("~")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("10.255")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".255")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".255")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 支持千万数量级设备")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("172.16")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".0")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".0")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("~")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("172.31")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".255")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".255")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 支持百万数量级设备")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("192.168")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".0")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".0")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("~")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("192.168")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".255")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v(".255")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 支持万数量级设备")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" 网络地址转换 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("NAT")]),s._v(" （Network Address Translation）\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 用于多个主机通过一个公有 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 访问互联网的私有网络中\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 在路由器中实现把内网的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("+")]),s._v(" 端口转换成外部的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("+")]),s._v(" 端口 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 相当于转发")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 网络层之 ICMP 协议详解")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 网际控制报文协议（Internet Control Message Protocol）\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("ICMP")]),s._v(" 协议可以报告错误信息或异常情况 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// IP 传输过程中的错误异常")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 帧数据——"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 数据报——"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 首部"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("+")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 数据报的数据——"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("ICMP")]),s._v(" 报文首部 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("+")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("ICMP")]),s._v(" 报文数据\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" Traceroute 应用\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" Traceroute 可以探测 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 数据报在网络中走过的路径\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" cmd tracert 网址 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 可以看到网络访问经过的路径")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 网络层之网络层的路由概述")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 一个自治系统（"),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("AS")]),s._v("）是处于一个管理机构下的网络设备群\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("AS")]),s._v(" 内部网络自行管理，"),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("AS")]),s._v(" 对外提供一个或者多个出入口\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 自治系统内部路由的协议称为：内部网关协议（"),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("RIP")]),s._v("、"),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("OSPF")]),s._v("）\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 自治系统外部路由的协议称为：外部网关协议（"),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("BGP")]),s._v("）\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 传输层之 UDP 协议详解")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("UDP")]),s._v("（User Datagram Protocol）用户数据报协议\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("UDP")]),s._v(" 是一个非常简单的协议\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("UDP")]),s._v(" 是无连接协议\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("UDP")]),s._v(" 不能保证可靠的交付数据\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("UDP")]),s._v(" 是面向报文传输的\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("UDP")]),s._v(" 没有拥塞控制\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("7.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("UDP")]),s._v(" 的首部开销很小\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8.")]),s._v(" 应用于多媒体信息分发\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 视频\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 语音\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 实时信息\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 传输层之 TCP 协议详解")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("TCP")]),s._v("（Transmission Control Protocol）传输控制协议\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("TCP")]),s._v(" 协议是计算机网络中非常复杂的一个协议\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("TCP")]),s._v(" 是面向连接的协议\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("TCP")]),s._v(" 的一个连接有两端 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 点对点通信")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("TCP")]),s._v(" 提供可靠的传输服务\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("TCP")]),s._v(" 协议提供全双工的通信\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("7.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("TCP")]),s._v(" 是面向字节流的协议\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8.")]),s._v(" 应用于可靠消息传输\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 金融交易\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 可靠通讯\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MQ")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 传输层之 TCP 连接的建立即三次握手")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 为什么发送方要发出第三个确认报文？\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 已经失效的连接请求报文传送到对方，引起错误\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 应用层")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 传输层以及以下的层提供完整的通信服务\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 应用层是面向用户的一层\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 定义应用间通信的规则\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 应用进程的报文类型（请求报文、应答报文）\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 报文的语法、格式\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 应用进程发送数据的时机、规则\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 应用层之 DNS 详解")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("DNS")]),s._v(" （Domain Name System）域名系统\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 通过 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("DNS")]),s._v(" 解析域名得到 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 域名\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 域名由点、字母和数字组成\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 点分割不同的域\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 域名可以分为顶级域、二级域、三级域\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" wwww"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("baidu"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("com "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 顶级域：com，二级域：baidu，三级域：www")]),s._v("\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 顶级域\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 国家\n      "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" cn\n      "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" us\n      "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" uk\n      "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" ca\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 通用\n      "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" com\n      "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" net\n      "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" gov\n      "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" org\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" 二级域\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" aliyun\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" qq\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" baidu\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 应用层之 DHCP 协议详解")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("DHCP")]),s._v("（Dynamic Host Configuration Protocol）动态主机设置协议\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("DHCP")]),s._v(" 是一个局域网协议\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("DHCP")]),s._v(" 是应用 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("UDP")]),s._v(" 协议的应用层协议\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 在电脑网络设置中 自动获得 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("IP")]),s._v(" 地址 就是启用 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("DHCP")]),s._v(" 协议\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("DHCP")]),s._v(" 服务器监听默认端口 "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("67")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 应用层之 HTTP 协议详解")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("HTTP")]),s._v("（HyperText Transfer Protocol）超文本传输协议\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 格式："),t("span",{pre:!0,attrs:{class:"token string"}},[s._v("'http(s)://<主机>:<端口>/<路径>'")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("HTTP")]),s._v(" 协议是可靠的数据传输协议\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" web 服务器\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 硬件部分即物理设备\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 软件部分即 nginx、apache\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 接受客户端连接——"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("接收请求报文——"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("处理请求——"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("访问 web 资源——"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("构造应答——"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("发送应答\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" 状态码：\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("200")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("~")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("299")]),s._v(" 成功状态码\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("300")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("~")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("399")]),s._v(" 重定向状态码\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("400")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("~")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("499")]),s._v(" 客户端错误状态码\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("500")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("~")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("599")]),s._v(" 服务端错误状态码\n"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("--")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 应用层之 HTTPS 协议详解")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("HTTPS")]),s._v("（Secure）是安全的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("HTTP")]),s._v(" 协议\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 格式："),t("span",{pre:!0,attrs:{class:"token string"}},[s._v("'http(s)://<主机>:<端口>/<路径>'")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 对称加密即加密和解密的钥匙都是一样的\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 非对称加密即加密和解密的钥匙是不一样的\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" 公钥：公钥给大家使用，对外公开\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6.")]),s._v(" 私钥：私钥自己使用，不对外公开\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("7.")]),s._v(" 数字证书是可信任组织颁发给特定对象的认证\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 证书序列号\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 签名算法\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 有效期\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 对象名称\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("5.")]),s._v(" 对象公开密钥\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("SSL")]),s._v("（Secure Sockets Layer）安全套阶层\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 位于应用层和传输层之间\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 保证数据安全和数据完整\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 对传输层数据进行加密后传输\n"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("9.")]),s._v(" 流程\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("443")]),s._v(" 端口的 "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("TCP")]),s._v(" 连接\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[s._v("SSL")]),s._v(" 安全参数握手\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.")]),s._v(" 客户端发送 随机数"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("、协议版本、加密算法 给服务器\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2.")]),s._v(" 服务器返回 确定加密算法、数字证书、随机数"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v(" 给客户端\n    "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 客户端确认证书是否有效并生成随机数"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3")]),s._v("，使用服务器的公钥加密随机数"),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3")]),s._v("发送给服务器\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3.")]),s._v(" 客户端发送数据\n  "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4.")]),s._v(" 服务端发送数据\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br"),t("span",{staticClass:"line-number"},[s._v("42")]),t("br"),t("span",{staticClass:"line-number"},[s._v("43")]),t("br"),t("span",{staticClass:"line-number"},[s._v("44")]),t("br"),t("span",{staticClass:"line-number"},[s._v("45")]),t("br"),t("span",{staticClass:"line-number"},[s._v("46")]),t("br"),t("span",{staticClass:"line-number"},[s._v("47")]),t("br"),t("span",{staticClass:"line-number"},[s._v("48")]),t("br"),t("span",{staticClass:"line-number"},[s._v("49")]),t("br"),t("span",{staticClass:"line-number"},[s._v("50")]),t("br"),t("span",{staticClass:"line-number"},[s._v("51")]),t("br"),t("span",{staticClass:"line-number"},[s._v("52")]),t("br"),t("span",{staticClass:"line-number"},[s._v("53")]),t("br"),t("span",{staticClass:"line-number"},[s._v("54")]),t("br"),t("span",{staticClass:"line-number"},[s._v("55")]),t("br"),t("span",{staticClass:"line-number"},[s._v("56")]),t("br"),t("span",{staticClass:"line-number"},[s._v("57")]),t("br"),t("span",{staticClass:"line-number"},[s._v("58")]),t("br"),t("span",{staticClass:"line-number"},[s._v("59")]),t("br"),t("span",{staticClass:"line-number"},[s._v("60")]),t("br"),t("span",{staticClass:"line-number"},[s._v("61")]),t("br"),t("span",{staticClass:"line-number"},[s._v("62")]),t("br"),t("span",{staticClass:"line-number"},[s._v("63")]),t("br"),t("span",{staticClass:"line-number"},[s._v("64")]),t("br"),t("span",{staticClass:"line-number"},[s._v("65")]),t("br"),t("span",{staticClass:"line-number"},[s._v("66")]),t("br"),t("span",{staticClass:"line-number"},[s._v("67")]),t("br"),t("span",{staticClass:"line-number"},[s._v("68")]),t("br"),t("span",{staticClass:"line-number"},[s._v("69")]),t("br"),t("span",{staticClass:"line-number"},[s._v("70")]),t("br"),t("span",{staticClass:"line-number"},[s._v("71")]),t("br"),t("span",{staticClass:"line-number"},[s._v("72")]),t("br"),t("span",{staticClass:"line-number"},[s._v("73")]),t("br"),t("span",{staticClass:"line-number"},[s._v("74")]),t("br"),t("span",{staticClass:"line-number"},[s._v("75")]),t("br"),t("span",{staticClass:"line-number"},[s._v("76")]),t("br"),t("span",{staticClass:"line-number"},[s._v("77")]),t("br"),t("span",{staticClass:"line-number"},[s._v("78")]),t("br"),t("span",{staticClass:"line-number"},[s._v("79")]),t("br"),t("span",{staticClass:"line-number"},[s._v("80")]),t("br"),t("span",{staticClass:"line-number"},[s._v("81")]),t("br"),t("span",{staticClass:"line-number"},[s._v("82")]),t("br"),t("span",{staticClass:"line-number"},[s._v("83")]),t("br"),t("span",{staticClass:"line-number"},[s._v("84")]),t("br"),t("span",{staticClass:"line-number"},[s._v("85")]),t("br"),t("span",{staticClass:"line-number"},[s._v("86")]),t("br"),t("span",{staticClass:"line-number"},[s._v("87")]),t("br"),t("span",{staticClass:"line-number"},[s._v("88")]),t("br"),t("span",{staticClass:"line-number"},[s._v("89")]),t("br"),t("span",{staticClass:"line-number"},[s._v("90")]),t("br"),t("span",{staticClass:"line-number"},[s._v("91")]),t("br"),t("span",{staticClass:"line-number"},[s._v("92")]),t("br"),t("span",{staticClass:"line-number"},[s._v("93")]),t("br"),t("span",{staticClass:"line-number"},[s._v("94")]),t("br"),t("span",{staticClass:"line-number"},[s._v("95")]),t("br"),t("span",{staticClass:"line-number"},[s._v("96")]),t("br"),t("span",{staticClass:"line-number"},[s._v("97")]),t("br"),t("span",{staticClass:"line-number"},[s._v("98")]),t("br"),t("span",{staticClass:"line-number"},[s._v("99")]),t("br"),t("span",{staticClass:"line-number"},[s._v("100")]),t("br"),t("span",{staticClass:"line-number"},[s._v("101")]),t("br"),t("span",{staticClass:"line-number"},[s._v("102")]),t("br"),t("span",{staticClass:"line-number"},[s._v("103")]),t("br"),t("span",{staticClass:"line-number"},[s._v("104")]),t("br"),t("span",{staticClass:"line-number"},[s._v("105")]),t("br"),t("span",{staticClass:"line-number"},[s._v("106")]),t("br"),t("span",{staticClass:"line-number"},[s._v("107")]),t("br"),t("span",{staticClass:"line-number"},[s._v("108")]),t("br"),t("span",{staticClass:"line-number"},[s._v("109")]),t("br"),t("span",{staticClass:"line-number"},[s._v("110")]),t("br"),t("span",{staticClass:"line-number"},[s._v("111")]),t("br"),t("span",{staticClass:"line-number"},[s._v("112")]),t("br"),t("span",{staticClass:"line-number"},[s._v("113")]),t("br"),t("span",{staticClass:"line-number"},[s._v("114")]),t("br"),t("span",{staticClass:"line-number"},[s._v("115")]),t("br"),t("span",{staticClass:"line-number"},[s._v("116")]),t("br"),t("span",{staticClass:"line-number"},[s._v("117")]),t("br"),t("span",{staticClass:"line-number"},[s._v("118")]),t("br"),t("span",{staticClass:"line-number"},[s._v("119")]),t("br"),t("span",{staticClass:"line-number"},[s._v("120")]),t("br"),t("span",{staticClass:"line-number"},[s._v("121")]),t("br"),t("span",{staticClass:"line-number"},[s._v("122")]),t("br"),t("span",{staticClass:"line-number"},[s._v("123")]),t("br"),t("span",{staticClass:"line-number"},[s._v("124")]),t("br"),t("span",{staticClass:"line-number"},[s._v("125")]),t("br"),t("span",{staticClass:"line-number"},[s._v("126")]),t("br"),t("span",{staticClass:"line-number"},[s._v("127")]),t("br"),t("span",{staticClass:"line-number"},[s._v("128")]),t("br"),t("span",{staticClass:"line-number"},[s._v("129")]),t("br"),t("span",{staticClass:"line-number"},[s._v("130")]),t("br"),t("span",{staticClass:"line-number"},[s._v("131")]),t("br"),t("span",{staticClass:"line-number"},[s._v("132")]),t("br"),t("span",{staticClass:"line-number"},[s._v("133")]),t("br"),t("span",{staticClass:"line-number"},[s._v("134")]),t("br"),t("span",{staticClass:"line-number"},[s._v("135")]),t("br"),t("span",{staticClass:"line-number"},[s._v("136")]),t("br"),t("span",{staticClass:"line-number"},[s._v("137")]),t("br"),t("span",{staticClass:"line-number"},[s._v("138")]),t("br"),t("span",{staticClass:"line-number"},[s._v("139")]),t("br"),t("span",{staticClass:"line-number"},[s._v("140")]),t("br"),t("span",{staticClass:"line-number"},[s._v("141")]),t("br"),t("span",{staticClass:"line-number"},[s._v("142")]),t("br"),t("span",{staticClass:"line-number"},[s._v("143")]),t("br"),t("span",{staticClass:"line-number"},[s._v("144")]),t("br"),t("span",{staticClass:"line-number"},[s._v("145")]),t("br"),t("span",{staticClass:"line-number"},[s._v("146")]),t("br"),t("span",{staticClass:"line-number"},[s._v("147")]),t("br"),t("span",{staticClass:"line-number"},[s._v("148")]),t("br"),t("span",{staticClass:"line-number"},[s._v("149")]),t("br"),t("span",{staticClass:"line-number"},[s._v("150")]),t("br"),t("span",{staticClass:"line-number"},[s._v("151")]),t("br"),t("span",{staticClass:"line-number"},[s._v("152")]),t("br"),t("span",{staticClass:"line-number"},[s._v("153")]),t("br"),t("span",{staticClass:"line-number"},[s._v("154")]),t("br"),t("span",{staticClass:"line-number"},[s._v("155")]),t("br"),t("span",{staticClass:"line-number"},[s._v("156")]),t("br"),t("span",{staticClass:"line-number"},[s._v("157")]),t("br"),t("span",{staticClass:"line-number"},[s._v("158")]),t("br"),t("span",{staticClass:"line-number"},[s._v("159")]),t("br"),t("span",{staticClass:"line-number"},[s._v("160")]),t("br"),t("span",{staticClass:"line-number"},[s._v("161")]),t("br"),t("span",{staticClass:"line-number"},[s._v("162")]),t("br"),t("span",{staticClass:"line-number"},[s._v("163")]),t("br"),t("span",{staticClass:"line-number"},[s._v("164")]),t("br"),t("span",{staticClass:"line-number"},[s._v("165")]),t("br"),t("span",{staticClass:"line-number"},[s._v("166")]),t("br"),t("span",{staticClass:"line-number"},[s._v("167")]),t("br"),t("span",{staticClass:"line-number"},[s._v("168")]),t("br"),t("span",{staticClass:"line-number"},[s._v("169")]),t("br"),t("span",{staticClass:"line-number"},[s._v("170")]),t("br"),t("span",{staticClass:"line-number"},[s._v("171")]),t("br"),t("span",{staticClass:"line-number"},[s._v("172")]),t("br"),t("span",{staticClass:"line-number"},[s._v("173")]),t("br"),t("span",{staticClass:"line-number"},[s._v("174")]),t("br"),t("span",{staticClass:"line-number"},[s._v("175")]),t("br"),t("span",{staticClass:"line-number"},[s._v("176")]),t("br"),t("span",{staticClass:"line-number"},[s._v("177")]),t("br"),t("span",{staticClass:"line-number"},[s._v("178")]),t("br"),t("span",{staticClass:"line-number"},[s._v("179")]),t("br"),t("span",{staticClass:"line-number"},[s._v("180")]),t("br"),t("span",{staticClass:"line-number"},[s._v("181")]),t("br"),t("span",{staticClass:"line-number"},[s._v("182")]),t("br"),t("span",{staticClass:"line-number"},[s._v("183")]),t("br"),t("span",{staticClass:"line-number"},[s._v("184")]),t("br"),t("span",{staticClass:"line-number"},[s._v("185")]),t("br"),t("span",{staticClass:"line-number"},[s._v("186")]),t("br"),t("span",{staticClass:"line-number"},[s._v("187")]),t("br"),t("span",{staticClass:"line-number"},[s._v("188")]),t("br"),t("span",{staticClass:"line-number"},[s._v("189")]),t("br"),t("span",{staticClass:"line-number"},[s._v("190")]),t("br"),t("span",{staticClass:"line-number"},[s._v("191")]),t("br"),t("span",{staticClass:"line-number"},[s._v("192")]),t("br"),t("span",{staticClass:"line-number"},[s._v("193")]),t("br"),t("span",{staticClass:"line-number"},[s._v("194")]),t("br"),t("span",{staticClass:"line-number"},[s._v("195")]),t("br"),t("span",{staticClass:"line-number"},[s._v("196")]),t("br"),t("span",{staticClass:"line-number"},[s._v("197")]),t("br"),t("span",{staticClass:"line-number"},[s._v("198")]),t("br"),t("span",{staticClass:"line-number"},[s._v("199")]),t("br"),t("span",{staticClass:"line-number"},[s._v("200")]),t("br"),t("span",{staticClass:"line-number"},[s._v("201")]),t("br"),t("span",{staticClass:"line-number"},[s._v("202")]),t("br"),t("span",{staticClass:"line-number"},[s._v("203")]),t("br"),t("span",{staticClass:"line-number"},[s._v("204")]),t("br"),t("span",{staticClass:"line-number"},[s._v("205")]),t("br"),t("span",{staticClass:"line-number"},[s._v("206")]),t("br"),t("span",{staticClass:"line-number"},[s._v("207")]),t("br"),t("span",{staticClass:"line-number"},[s._v("208")]),t("br"),t("span",{staticClass:"line-number"},[s._v("209")]),t("br"),t("span",{staticClass:"line-number"},[s._v("210")]),t("br"),t("span",{staticClass:"line-number"},[s._v("211")]),t("br"),t("span",{staticClass:"line-number"},[s._v("212")]),t("br"),t("span",{staticClass:"line-number"},[s._v("213")]),t("br"),t("span",{staticClass:"line-number"},[s._v("214")]),t("br"),t("span",{staticClass:"line-number"},[s._v("215")]),t("br"),t("span",{staticClass:"line-number"},[s._v("216")]),t("br"),t("span",{staticClass:"line-number"},[s._v("217")]),t("br"),t("span",{staticClass:"line-number"},[s._v("218")]),t("br"),t("span",{staticClass:"line-number"},[s._v("219")]),t("br"),t("span",{staticClass:"line-number"},[s._v("220")]),t("br"),t("span",{staticClass:"line-number"},[s._v("221")]),t("br"),t("span",{staticClass:"line-number"},[s._v("222")]),t("br"),t("span",{staticClass:"line-number"},[s._v("223")]),t("br"),t("span",{staticClass:"line-number"},[s._v("224")]),t("br"),t("span",{staticClass:"line-number"},[s._v("225")]),t("br"),t("span",{staticClass:"line-number"},[s._v("226")]),t("br"),t("span",{staticClass:"line-number"},[s._v("227")]),t("br"),t("span",{staticClass:"line-number"},[s._v("228")]),t("br"),t("span",{staticClass:"line-number"},[s._v("229")]),t("br"),t("span",{staticClass:"line-number"},[s._v("230")]),t("br"),t("span",{staticClass:"line-number"},[s._v("231")]),t("br"),t("span",{staticClass:"line-number"},[s._v("232")]),t("br"),t("span",{staticClass:"line-number"},[s._v("233")]),t("br"),t("span",{staticClass:"line-number"},[s._v("234")]),t("br"),t("span",{staticClass:"line-number"},[s._v("235")]),t("br"),t("span",{staticClass:"line-number"},[s._v("236")]),t("br"),t("span",{staticClass:"line-number"},[s._v("237")]),t("br"),t("span",{staticClass:"line-number"},[s._v("238")]),t("br"),t("span",{staticClass:"line-number"},[s._v("239")]),t("br"),t("span",{staticClass:"line-number"},[s._v("240")]),t("br"),t("span",{staticClass:"line-number"},[s._v("241")]),t("br"),t("span",{staticClass:"line-number"},[s._v("242")]),t("br"),t("span",{staticClass:"line-number"},[s._v("243")]),t("br"),t("span",{staticClass:"line-number"},[s._v("244")]),t("br"),t("span",{staticClass:"line-number"},[s._v("245")]),t("br"),t("span",{staticClass:"line-number"},[s._v("246")]),t("br"),t("span",{staticClass:"line-number"},[s._v("247")]),t("br"),t("span",{staticClass:"line-number"},[s._v("248")]),t("br"),t("span",{staticClass:"line-number"},[s._v("249")]),t("br"),t("span",{staticClass:"line-number"},[s._v("250")]),t("br"),t("span",{staticClass:"line-number"},[s._v("251")]),t("br"),t("span",{staticClass:"line-number"},[s._v("252")]),t("br"),t("span",{staticClass:"line-number"},[s._v("253")]),t("br"),t("span",{staticClass:"line-number"},[s._v("254")]),t("br"),t("span",{staticClass:"line-number"},[s._v("255")]),t("br"),t("span",{staticClass:"line-number"},[s._v("256")]),t("br"),t("span",{staticClass:"line-number"},[s._v("257")]),t("br"),t("span",{staticClass:"line-number"},[s._v("258")]),t("br"),t("span",{staticClass:"line-number"},[s._v("259")]),t("br"),t("span",{staticClass:"line-number"},[s._v("260")]),t("br"),t("span",{staticClass:"line-number"},[s._v("261")]),t("br"),t("span",{staticClass:"line-number"},[s._v("262")]),t("br"),t("span",{staticClass:"line-number"},[s._v("263")]),t("br"),t("span",{staticClass:"line-number"},[s._v("264")]),t("br"),t("span",{staticClass:"line-number"},[s._v("265")]),t("br"),t("span",{staticClass:"line-number"},[s._v("266")]),t("br"),t("span",{staticClass:"line-number"},[s._v("267")]),t("br"),t("span",{staticClass:"line-number"},[s._v("268")]),t("br"),t("span",{staticClass:"line-number"},[s._v("269")]),t("br"),t("span",{staticClass:"line-number"},[s._v("270")]),t("br"),t("span",{staticClass:"line-number"},[s._v("271")]),t("br"),t("span",{staticClass:"line-number"},[s._v("272")]),t("br"),t("span",{staticClass:"line-number"},[s._v("273")]),t("br"),t("span",{staticClass:"line-number"},[s._v("274")]),t("br"),t("span",{staticClass:"line-number"},[s._v("275")]),t("br"),t("span",{staticClass:"line-number"},[s._v("276")]),t("br"),t("span",{staticClass:"line-number"},[s._v("277")]),t("br"),t("span",{staticClass:"line-number"},[s._v("278")]),t("br"),t("span",{staticClass:"line-number"},[s._v("279")]),t("br"),t("span",{staticClass:"line-number"},[s._v("280")]),t("br"),t("span",{staticClass:"line-number"},[s._v("281")]),t("br"),t("span",{staticClass:"line-number"},[s._v("282")]),t("br"),t("span",{staticClass:"line-number"},[s._v("283")]),t("br"),t("span",{staticClass:"line-number"},[s._v("284")]),t("br"),t("span",{staticClass:"line-number"},[s._v("285")]),t("br"),t("span",{staticClass:"line-number"},[s._v("286")]),t("br"),t("span",{staticClass:"line-number"},[s._v("287")]),t("br"),t("span",{staticClass:"line-number"},[s._v("288")]),t("br"),t("span",{staticClass:"line-number"},[s._v("289")]),t("br"),t("span",{staticClass:"line-number"},[s._v("290")]),t("br"),t("span",{staticClass:"line-number"},[s._v("291")]),t("br"),t("span",{staticClass:"line-number"},[s._v("292")]),t("br"),t("span",{staticClass:"line-number"},[s._v("293")]),t("br"),t("span",{staticClass:"line-number"},[s._v("294")]),t("br"),t("span",{staticClass:"line-number"},[s._v("295")]),t("br"),t("span",{staticClass:"line-number"},[s._v("296")]),t("br"),t("span",{staticClass:"line-number"},[s._v("297")]),t("br"),t("span",{staticClass:"line-number"},[s._v("298")]),t("br"),t("span",{staticClass:"line-number"},[s._v("299")]),t("br"),t("span",{staticClass:"line-number"},[s._v("300")]),t("br"),t("span",{staticClass:"line-number"},[s._v("301")]),t("br"),t("span",{staticClass:"line-number"},[s._v("302")]),t("br"),t("span",{staticClass:"line-number"},[s._v("303")]),t("br"),t("span",{staticClass:"line-number"},[s._v("304")]),t("br"),t("span",{staticClass:"line-number"},[s._v("305")]),t("br"),t("span",{staticClass:"line-number"},[s._v("306")]),t("br"),t("span",{staticClass:"line-number"},[s._v("307")]),t("br"),t("span",{staticClass:"line-number"},[s._v("308")]),t("br"),t("span",{staticClass:"line-number"},[s._v("309")]),t("br"),t("span",{staticClass:"line-number"},[s._v("310")]),t("br"),t("span",{staticClass:"line-number"},[s._v("311")]),t("br"),t("span",{staticClass:"line-number"},[s._v("312")]),t("br"),t("span",{staticClass:"line-number"},[s._v("313")]),t("br"),t("span",{staticClass:"line-number"},[s._v("314")]),t("br"),t("span",{staticClass:"line-number"},[s._v("315")]),t("br"),t("span",{staticClass:"line-number"},[s._v("316")]),t("br"),t("span",{staticClass:"line-number"},[s._v("317")]),t("br"),t("span",{staticClass:"line-number"},[s._v("318")]),t("br"),t("span",{staticClass:"line-number"},[s._v("319")]),t("br"),t("span",{staticClass:"line-number"},[s._v("320")]),t("br"),t("span",{staticClass:"line-number"},[s._v("321")]),t("br"),t("span",{staticClass:"line-number"},[s._v("322")]),t("br"),t("span",{staticClass:"line-number"},[s._v("323")]),t("br"),t("span",{staticClass:"line-number"},[s._v("324")]),t("br"),t("span",{staticClass:"line-number"},[s._v("325")]),t("br"),t("span",{staticClass:"line-number"},[s._v("326")]),t("br"),t("span",{staticClass:"line-number"},[s._v("327")]),t("br"),t("span",{staticClass:"line-number"},[s._v("328")]),t("br"),t("span",{staticClass:"line-number"},[s._v("329")]),t("br"),t("span",{staticClass:"line-number"},[s._v("330")]),t("br"),t("span",{staticClass:"line-number"},[s._v("331")]),t("br"),t("span",{staticClass:"line-number"},[s._v("332")]),t("br"),t("span",{staticClass:"line-number"},[s._v("333")]),t("br"),t("span",{staticClass:"line-number"},[s._v("334")]),t("br"),t("span",{staticClass:"line-number"},[s._v("335")]),t("br"),t("span",{staticClass:"line-number"},[s._v("336")]),t("br"),t("span",{staticClass:"line-number"},[s._v("337")]),t("br"),t("span",{staticClass:"line-number"},[s._v("338")]),t("br"),t("span",{staticClass:"line-number"},[s._v("339")]),t("br"),t("span",{staticClass:"line-number"},[s._v("340")]),t("br"),t("span",{staticClass:"line-number"},[s._v("341")]),t("br"),t("span",{staticClass:"line-number"},[s._v("342")]),t("br"),t("span",{staticClass:"line-number"},[s._v("343")]),t("br"),t("span",{staticClass:"line-number"},[s._v("344")]),t("br"),t("span",{staticClass:"line-number"},[s._v("345")]),t("br"),t("span",{staticClass:"line-number"},[s._v("346")]),t("br"),t("span",{staticClass:"line-number"},[s._v("347")]),t("br"),t("span",{staticClass:"line-number"},[s._v("348")]),t("br"),t("span",{staticClass:"line-number"},[s._v("349")]),t("br"),t("span",{staticClass:"line-number"},[s._v("350")]),t("br"),t("span",{staticClass:"line-number"},[s._v("351")]),t("br"),t("span",{staticClass:"line-number"},[s._v("352")]),t("br"),t("span",{staticClass:"line-number"},[s._v("353")]),t("br"),t("span",{staticClass:"line-number"},[s._v("354")]),t("br"),t("span",{staticClass:"line-number"},[s._v("355")]),t("br"),t("span",{staticClass:"line-number"},[s._v("356")]),t("br"),t("span",{staticClass:"line-number"},[s._v("357")]),t("br"),t("span",{staticClass:"line-number"},[s._v("358")]),t("br"),t("span",{staticClass:"line-number"},[s._v("359")]),t("br"),t("span",{staticClass:"line-number"},[s._v("360")]),t("br"),t("span",{staticClass:"line-number"},[s._v("361")]),t("br"),t("span",{staticClass:"line-number"},[s._v("362")]),t("br"),t("span",{staticClass:"line-number"},[s._v("363")]),t("br"),t("span",{staticClass:"line-number"},[s._v("364")]),t("br"),t("span",{staticClass:"line-number"},[s._v("365")]),t("br"),t("span",{staticClass:"line-number"},[s._v("366")]),t("br"),t("span",{staticClass:"line-number"},[s._v("367")]),t("br"),t("span",{staticClass:"line-number"},[s._v("368")]),t("br"),t("span",{staticClass:"line-number"},[s._v("369")]),t("br"),t("span",{staticClass:"line-number"},[s._v("370")]),t("br"),t("span",{staticClass:"line-number"},[s._v("371")]),t("br"),t("span",{staticClass:"line-number"},[s._v("372")]),t("br"),t("span",{staticClass:"line-number"},[s._v("373")]),t("br"),t("span",{staticClass:"line-number"},[s._v("374")]),t("br"),t("span",{staticClass:"line-number"},[s._v("375")]),t("br"),t("span",{staticClass:"line-number"},[s._v("376")]),t("br"),t("span",{staticClass:"line-number"},[s._v("377")]),t("br"),t("span",{staticClass:"line-number"},[s._v("378")]),t("br"),t("span",{staticClass:"line-number"},[s._v("379")]),t("br"),t("span",{staticClass:"line-number"},[s._v("380")]),t("br"),t("span",{staticClass:"line-number"},[s._v("381")]),t("br"),t("span",{staticClass:"line-number"},[s._v("382")]),t("br"),t("span",{staticClass:"line-number"},[s._v("383")]),t("br"),t("span",{staticClass:"line-number"},[s._v("384")]),t("br"),t("span",{staticClass:"line-number"},[s._v("385")]),t("br"),t("span",{staticClass:"line-number"},[s._v("386")]),t("br"),t("span",{staticClass:"line-number"},[s._v("387")]),t("br"),t("span",{staticClass:"line-number"},[s._v("388")]),t("br"),t("span",{staticClass:"line-number"},[s._v("389")]),t("br"),t("span",{staticClass:"line-number"},[s._v("390")]),t("br"),t("span",{staticClass:"line-number"},[s._v("391")]),t("br"),t("span",{staticClass:"line-number"},[s._v("392")]),t("br"),t("span",{staticClass:"line-number"},[s._v("393")]),t("br"),t("span",{staticClass:"line-number"},[s._v("394")]),t("br"),t("span",{staticClass:"line-number"},[s._v("395")]),t("br"),t("span",{staticClass:"line-number"},[s._v("396")]),t("br"),t("span",{staticClass:"line-number"},[s._v("397")]),t("br"),t("span",{staticClass:"line-number"},[s._v("398")]),t("br"),t("span",{staticClass:"line-number"},[s._v("399")]),t("br"),t("span",{staticClass:"line-number"},[s._v("400")]),t("br"),t("span",{staticClass:"line-number"},[s._v("401")]),t("br"),t("span",{staticClass:"line-number"},[s._v("402")]),t("br"),t("span",{staticClass:"line-number"},[s._v("403")]),t("br"),t("span",{staticClass:"line-number"},[s._v("404")]),t("br"),t("span",{staticClass:"line-number"},[s._v("405")]),t("br"),t("span",{staticClass:"line-number"},[s._v("406")]),t("br"),t("span",{staticClass:"line-number"},[s._v("407")]),t("br"),t("span",{staticClass:"line-number"},[s._v("408")]),t("br"),t("span",{staticClass:"line-number"},[s._v("409")]),t("br"),t("span",{staticClass:"line-number"},[s._v("410")]),t("br"),t("span",{staticClass:"line-number"},[s._v("411")]),t("br"),t("span",{staticClass:"line-number"},[s._v("412")]),t("br"),t("span",{staticClass:"line-number"},[s._v("413")]),t("br")])])])}),[],!1,null,null,null);a.default=n.exports}}]);