wordpress全站静态页面,上市装修公司,北京制作网站公司排名,wordpress站点网站地图文章目录 局域网 LAN广域网 WAN网络中的重要概念IP 地址端口号 认识协议协议分层是什么OSI 七层网络模型TCP/IP 五层网络模型#xff08;或四层#xff09;物理层传输层网络层数据链表层应用层网络设备所在分层 封装和分用[站在发送方视角]#xff08;封装#xff09;[站在… 文章目录 局域网 LAN广域网 WAN网络中的重要概念IP 地址端口号 认识协议协议分层是什么OSI 七层网络模型TCP/IP 五层网络模型或四层物理层传输层网络层数据链表层应用层网络设备所在分层 封装和分用[站在发送方视角]封装[站在接收方视角]分用 发展过程 单机 — 局域网 — 广域网 — 移动互联网
局域网 LAN
局域⽹即 Local Area Network简称 LAN。Local 即标识了局域⽹是本地局部组建的⼀种私有⽹络。局域⽹内的主机之间能⽅便的进⾏⽹络通信⼜称为内⽹局域⽹和局域⽹之间在没有连接的情况下是⽆法通信的。局域⽹组建⽹络的⽅式有很多种 把几个电脑连接到一起就构成了局域网 但当电脑多了之后就不方便两两相连就创造了“路由器” 只要电脑都连在同一个路由器上面就可以构成局域网 [!quote] 调制解调器猫 不同种类的信号转换这个是宽带普及之前上网操作是通过“电话线”进行的猫的作用是将电话线中的模拟新欢转换成网络中的“数字信号”“光猫”就是把光信号和电信号之间进行相互转换一般带有路由功能 因为路由器上面接口有限当机器多了之后就插不下了此时就引入了“交换机”就解决了上述问题 交换机就相当与是对路由器的端口的扩展将计算机都插到交换机上面然后交换机再连接路由器就行了此时这些电脑就相当于都插到路由器上了这些电脑就都早一个局域网中了局域网是有路由器负责的本身与交换器没有关系 广域网 WAN
⼴域⽹即 Wide Area Network简称 WAN。通过路由器将多个局域⽹连接起来在物理上组成很⼤范围的⽹络就形成了⼴域⽹。⼴域⽹内部的局域⽹都属于其⼦⽹。现在见到的“万维网”就是把全世界的设备都连接在一起的巨大广域网“网游”就是电脑连接到了广域网上可以和全国甚至全世界的玩家一起进行对抗 网络中的重要概念
IP 地址
IP 地址就是描述了一台主机在互联网上所处的位置IP 地址是使用一个 32 位整数来表示的使用“点分十进制”这样的方式来表示“IP 地址” 将 32 位整数用三个点分成了四份每份取值范围 0~255一个字节使用点分十进制之后更方便人阅读
端口号
用来区分当前主机上的指定的应用程序进程一个主机上使用网络的程序有很多个可以通过端口号区分当前主机收到的数据是要交给哪个程序来处理使用端口号同样也是一个整数是一个两个字节的整数0~65535 虽然是 0 ~65535 这样的范围实际上 0~1023 这些端口都是有一些特定含义的咱们自己写代码使用的端口一般都是用剩下的 [!quote] IP 地址和端口号 类似发送快递时不光需要指定收货地址IP地址还需要指定收货⼈端⼝号 认识协议
网络中最核心的概念 协议是进行一切通信的基础协议至少得有两个主机让发送方发送数据接收方能理解 比如我虽然在重庆上学但我是湖北人如果周围有人说重庆话我有时候就听不到。这就属于无效的通信 所以双方需要按照同样的规则来构造/解析数据否则就是无效的通信协议就是在约束通信双方交互数据的“规则”协议确定了双方就在一个频道上了才能进行有意义的通信 所以如何进行网络通信的问题就转为了如何设计网络通信协议。
网络上传输的数据光信号光纤激光的光/电信号网线里的/电磁波WiFi、5G…
无论是哪种信号本质上都是传输 0101 这样的二进制 光信号可以用高低频光代表 0/1电信号可以用高低频电代表 0/1电磁波也是光也可以通过频率进行编码 所以在通信时就需要约定好传输的这一大串 101010 都是啥意思 这个就是网络通信协议“要完成的核心工作 由于网络通信是一件非常复杂的事情如果只使用一个协议去约定所有的网络通信细节就会导致这个协议非常庞大非常复杂
为了对抗这种复杂度我们就进行“拆分”。将一个大的协议拆分成多个小的协议让每个小的协议专注于解决一个/一类问题再让这些协议相互配合
协议分层
是什么
但是拆分之后拆出来了很多协议不方便组织所以将这些协议分层把功能类似的协议放到一层并且约定号协议之间不能随意进行交互只能是相邻的层之间才能进行交互 上层协议调用下层协议下层协议给上层协议提供服务 分层的好处
降低了使用的成本使用某个协议的时候不需要关注其他协议的实现细节 打电话这个事情不需要理解电话机的工作原理只需要会说话即可 降低整个体系的耦合性可以灵活的变更某个协议 可以经汉语协议变为英语协议不妨碍打电话可以经无线电协议变为电话协议也不妨碍打电话
当前互联网体系的现状就是“协议分层”的效果
OSI 七层网络模型
这种划分方式只是存在于教科书里并没有被真正的采用 TCP/IP 五层网络模型或四层
当前世界上最主流的网络协议模型 四层就是不散物理层物理层和硬件相关距离程序员非常遥远 物理层 物理层描述的是硬件设备网线这样的设备需要满足什么样的条件 物理层就相当与是“公路“、”铁路”、“航线”
传输层 传输层主要就是关注网络通信中的“起点和终点”并不关心通信的中间细节 比如你在网上买了个东西下单的时候需要填写“收件人信息”卖家给你发快递的时候也需要填写“发件人信息”最后卖家就把快递给快递小哥快递小哥最后将快递送到你手上在这个过程中传输层就只关注发货地和收货地并不关心快递是如何到你手上的、如何运输的… 网络层 网络层进行网络通信的路径规划和地址管理 网络是很负责的结构从 A 到 B 中间有很多不同的路线此时网络层协议就要进行“路径规划”称为“路由选择”网络上的这些设备他们的地址都是什么、怎么去描述、用什么样的一套规则也是网络层安排 比如快递小哥揽收你的包裹之后需要进行包裹运输就要规划选择一条合适的路径将包裹送到你手中合适的选择不是绝对的可能看路程、可能看速度、可能看成本…使用地图导航也是类似于网络层“路由选择”的过程 数据链表层 数据链路层针对好上述规划好的路径进行具体的实施 比如你的包裹要从上海运往西安选择的路径是上海 — 南京 — 西安上海 — 南京走水路坐船南京 — 上海走铁路火车西安 — 驿站走公路坐卡车驿站 — 收货地骑三轮在这每两个地点之间的交通选择都是数据链路层负责的 董事长传输层 — 制定一个公司的发展目标今年营业额要达到 xxx 小目标高管网络层 — 规划一下如何达到上述目标明确达到上述目标分成几个步骤先做什么再做什么。路径规划/路由选择的过程基层员工数据链路层 — 进行具体实施第一步到第二步第二步到第三步… 具体咋办办公用到的基础设施物理层 — 办公室、工位、电脑、打印机、网络… 这四层都是程序员干预不了的操作系统/硬件设施已经实现好了的
应用层 应用层程序员可以干预到的可以决定这个应用是用来干什么
网络设备所在分层
对于⼀台主机它的操作系统内核实现了从传输层到物理层的内容也即是 TCP/IP 五层模型的下四层对于⼀台路由器它实现了从⽹络层到物理层也即是 TCP/IP 五层模型的下三层对于⼀台交换机它实现了从数据链路层到物理层也即是 TCP/IP 五层模型的下两层对于集线器它只实现了物理层 这都是站在经典的模型上讨论的笔试中遇到了相关的选择/填空题可以照着答
真实情况下交换机也可能是工作在网络层甚至是传输层/应用层 路由器也可能是工作在数据链路层也可能是传输层也可能是应用层
封装和分用
通过 QQ发送一个 hello 给另一个人
[站在发送方视角]封装
用户输入框中输入“hello”字符串点击“发送”按钮 QQ 这样的程序就会把 hello 这个内容从输入框读取到构成一个“应用层数据包”“应用层数据包”是应用层的协议描述了这个数据包的构造此处的应用层协议往往是开发 QQ 的程序员自行定义的 [!quote] 序列化/反序列化 将结构化数据 — 二进制字符串序列化将二进制字符串 — 结构化数据反序列化进行网络传输数据通常就需要把一个“结构化”C 的结构体/Java 的类包含很多属性数据转成一个“字符串”二进制字符串不需要非得在码表上可以查到任何的 01 序列都可以接在一起 [!quote] 应用层数据包 主要是做了一个“序列化”的工作将传入的信息整合成一个“字符串”“应用层数据包”是应用层的协议描述了这个数据包的构造此处的应用层协议往往是开发 QQ 的程序员自行定义的如果是我来开发 QQ我可能会按照下列的方式定义这个应用层数据包的结构定义方式有很多种 数据包格式发送者的 QQ 号接收者的 QQ 号发送时间消息正文\n数据包样例1234567899876543212024-01-14 23:50:10hello\n 应用层数据包准备就绪后QQ 这样的应用程序就会调用操作系统提供的 API传输层给应用层提供的 API 操作系统就会提供一个类似于“发送数据”这样的 API然后应用程序就会把上述组织好的应用层数据包作为参数传进来于是应用层数据包就到了系统内核里就进入到传输层的代码部分了此时传输层这里就会把上述的应用层数据再进一步封装字符串拼接成一个传输层数据包由于传输层有多种协议其中最重要的是两个TCP 和 UDP这些协议给应用层提供的 API 是不同的看应用程序种使用哪组 API 就使用哪个协议 假设此处使用 UDP 协议则会在刚刚整合的“字符串”前面加一个“UDP 报头”这串“字符串”叫“UDP 正文/载荷payload”UDP报头中就包含了一些 UDP 相关的信息比如发送者的端口号和接受者的端口号拼上的这些信息都是给后续的转发打下基础的就类似于“贴标签”网络中有多层协议每一层协议都要贴标签每一层标签的侧重点不同贴上的标签中的信息也不一样 传输层构造好数据之后就会继续调用网络层提供给传输层的 API把数据进一步交给网络层 由于传输层和网络层都是系统内核里面实现好的上述调用的过程我们无需关心也感知不到网络层也有多种协议其中最重要的就是 IPv4 协议简称为 IP 协议 IP 协议就会把上述拿到的传输层数据包构造成网络层数据包IP 报头中也会包含很多信息主要信息为发送方的 IP 地址接收方的 IP 地址 网络层继续调用数据链路层的 API把数据交给数据链路层处理 数据链路层的常见协议是以太网平时插网线进行上网的方式在 IP 数据包的基础上进一步进行包装 [!quote] 网络传输数据的基本单位 数据包packet数据报Datagram数据段segment数据帧frame 这几个术语严格来说是有区别的但平时日常交流的时候不会刻意区分 上述得到的数据需要进一步交给物理层硬件设备 网卡就会针对上述的二进制数据进行真正的传输操作就需要把上述 0101 这样的序列转为光信号/电信号/电磁波… [站在接收方视角]分用 接收方物理层收到光电信号把这样的光电信号还原成 010101 这样的二进制字符串 物理层转换回来的数据交给数据链路层以太网拿到这个数据包就会对这个数据包进行解析 拿出这里的报头和载荷根据报头中的信息做一些处理这个数据包是要丢弃、还是转发、还是自己保留向上进行解析 由于是站在接收方的视角所以在这里这个数据包要交给上层协议再做进一步解析所以这个数据包就会从数据链路层交给网络层 网络层拿到了上述解析好的数据网络层的 IP 协议也要对这个数据包进行解析 取出 IP报头和载荷根据报头中的信息确认是丢弃、转发还是保留给上层协议由于是站在接收方的视角所以在这里这个数据包要交给上层协议再做进一步解析 传输层这边UDP 协议也要针对数据进行解析 取出 UDP 报头和载荷此处也需要把载荷里面的内容进一步交给应用层协议依赖 UDP 报头中的端口号区分需要交给哪个应用程序端口号就是用来区分不同进程的 数据就到了 QQ 这样的应用程序这里了 QQ 就要针对上述的数据进行“反序列化”再针对里面的数据进行进一步的逻辑 将收到的消息显示到界面上播放“滴滴滴”这样的声音提醒收到信息显示弹窗提示收到信息更新未读消息的列表红色的圆圈写个数字… 此处接收方做的工作就是发送方工作的“逆向工作”发送方的“封装”认为是“打包快递”接收方的“分用”认为是“拆快递“ 一个电脑会先连到交换机上交换机可能连到路由器上路由器可能又连到另一个交换机上交换机又连到另一个路由器上… 总之这中间会连接很多的交换机和路由器来完成数据转发的过程
中间过程的交换机和路由器也会涉及到封装和分用不会像主机这样复杂
交换机封装分用到链路层就可以决定数据是丢弃还是继续转发了不再继续分用经典的教科书上的交换机路由器封装分用到网络层就可以决定数据是丢弃还是继续转发了也不再继续分用 在传输的过程中每到一个设备都要进行封装分用经过层层数据的交换最终到达终点 封装分用这么麻烦会不会导致交换机、路由器、主机之间的通信效率很低呢 得看和谁比 如果是那网络通信和人的反应时间相比速度还是很快的如果拿网络通信和读写硬盘相比通常认为网络的速度比硬盘的速度更慢更不必说和内存比了 也有特殊情况 如果拿网络中最强的“万兆网卡”和硬盘中最弱的“机械硬盘”相比网络的速度更快