0


「网络编程」第一讲:初识网络_网络基础1

「前言」文章是关于网络编程方面的,今天内容大致是网络基础,讲解下面开始!

「归属专栏」网络编程

「笔者」枫叶先生(fy)

「座右铭」前行路上修真我

「枫叶先生有点文青病」

「每篇一句」

青山不改,绿水长流
——白居易

一、计算机网络背景

1.1 网络发展

独立模式:计算机之间相互独立

在早期的时候,计算机之间是相互独立的,此时如果多个计算机要协同完成某种业务,那么就只能等一台计算机处理完后再将数据传递给下一台计算机,然后下一台计算机再进行相应的业务处理,效率非常低下。

比如:

  • 小松负责终端A:小松正在运行业务①,完成后把数据送到运行业务②时移动到B主机前
  • 小竹负责终端B:在小松处理完之前处于等待状态
  • 小梅负责终端C:在小松、小竹都处理完前处于等待状态

这种计算机之间相互独立会导致:数据不一致、协作困难等问题

网络互联:多台计算机连接在一起,完成数据共享

这时就有人设法将这些计算机连接在一起,当某个业务需要多台计算机协同完成时,就可以将共享的数据放到服务器中进行集中管理,此时各个计算机就都能获取到这些共享的数据,所以各个业务在处理就能随时进行切换了

随着计算机的增多,便产生了局域网和广域网

局域网LAN(local area network ): 计算机数量更多了, 通过交换机和路由器连接在一起

  • 后来这样的网络雏形逐渐发展,连入这个网络中的机器变得越来越多,于是就出现了局域网的概念
  • 在局域网中有一种设备叫做交换机,交换机主要完成局域网内数据的转发工作,也就是在局域网内将数据从一台主机转发给另一台主机
  • 各个局域网之间通过路由器连接起来,路由器主要完成数据的路由转发工作

广域网WAN(Wide area network):将远隔千里的计算机都连在一起

各个局域网之间通过路由器相互连接在一起,便组成了一个更大的网络结构,我们将其称之为广域网。实际局域网和广域网是一种相对的概念,我们也可以将广域网看作一个比较大的局域网

一台计算机内部本质也是一个小型的网络结构

计算机体系结构中有网络,二网络也有自己的体系结构

1.2 认识 "协议"

什么是协议?

"协议" 是一种约定,,通信双方只要曾经做过某种约定,之后就可以使用这种约定来完成某种事情。而网络协议是通信计算机双方必须共同遵从的一组约定,因此我们一定要将这种约定用计算机语言表达出来,此时双方计算机才能识别约定的相关内容

比如:

在零几年的时候,家庭里面经常用的电话是座机电话, 零几年的时候花费还很贵

  • 假设张三在上初中,学校离家里比较近,每个星期都可以回家,可以当面询问下一周的零花钱,这个过程是面对面很方便
  • 假设在零几年,张三在上大学,距离家里面很远,每个月只能打电话向家里面要生活费,打电话的过程就是很浪费钱的过程,于是张三跟家里面做了一个约定:电话零响两声代表没钱了,需要打钱给我了;电话铃响三声才代表有事找家里面...
  • 这个电话铃声代表着不同的含义,而这个含义双方不用解释,双方早就已经有共识了,这个约定可以钱少“通话”的成本

对比到计算机:

  • 张三上初中:两台相近的计算机通信成本不是很高
  • 张三上大学:两台计算机的相距距离很远,比如一个在云南,一个在北京,这时就会引入了新的问题:通信的距离变长了,代表着通信的成本提高了。
  • 为了减少通信成本,计算机定制了协议

注:所有的网络问题:本质都是传输距离变长了

协议应该由谁来定制

  • 在当前这个互联网时代,计算机生产商有很多,计算机操作系统也有很多,计算机网络硬件设备更是多种多样,那我们是如何让这些不同厂商之间生产的计算机能够相互顺畅的通信的呢?这时候就需要有人站出来,约定一个共同的标准,并且让大家都来遵守这个标准,这就是网络协议。
  • 而那个站出来的人一定是该领域当中的佼佼者,因为网络协议的定制本质就是规则的定制,你要站出来制定规则那么一定要同行业的其他人都认可你。比如5G标准的定义,华为就是那个站出来的人,华为在通信领域已经具备很强的通信能力了,在这个行业里它就是所谓的佼佼者。
  • 正所谓“一流的企业做标准,二流的企业做品牌,三流的企业做产品”。但是标准的定制有一部分是公益性、开源性的,它制定标准的目的是为了让我们的世界变得更好;而标准的定制还有一部分是具有一定盈利性质的,当你需要使用这项技术时就会收取部分专利费,此时就能将曾经做的技术投入进行变现

计算机之间的传输媒介是光信号和电信号。通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式

通信的两台主机, 约定好协议就可以了么?

不可以,你有你定制的协议,我有我定制的协议,大家的协议都互不相同,依旧是无法正常通信,这些计算机都应该要遵守同一个标准

二、网络协议初识

  • 计算机生产厂商有很多;
  • 计算机操作系统, 也有很多;
  • 计算机网络硬件设备, 还是有很多;
  • 如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来,约定一个共同的标准,大家都来遵守,这就是 网络协议

2.1 协议分层

理解分层

  • 分层设计方面的优势:每一层都有自己特定的功能 -- 低耦合
  • 一般我们的分层依据:功能比较集中,耦合度比较高的模块,分为一层 -- 高内聚

比如在打电话,人与人之间通信使用的是汉语,我们可以将其称为语言层;而电话和电话之间通信使用的是电话协议,我们可以将其称之为通信设备层

后来随着科技的发展,我们都用上了智能手机,此时我们下层使用的通信设备变了,或是这部电话卖到了其他国家,此时上层使用的通信语言变了,但我们仍然可以正常沟通

在这个例子中, 我们的协议只有两层; 但是实际的网络通信会更加复杂, 需要分更多的层次

分层最大的好处在于“封装”,在分层情况下,将某层的协议进行替换后,通信双方之间是不会受到影响的

两台主机要通信,必须要解决一下的几个问题:

1、把数据包交付给自己直接相连的下一台主机

比如:张三北京到云南骑自行车旅游,首先张三得具备到下一站的能力,谁提供这个能力:自行车;同理数据包想要交付到下一台直接相连的主机,首先要具备交付这个能力

2、要有路径选择的能力

张三目标是云南,路途中会经过许许多多个站,如何选择下一个站,这是一个问题,只有具备了选择这个能力,张三才能一站站往下跳,张三才会有可能到云南(不考虑导航),数据包也是如此

3、容错纠错能力

数据包传输到下一站也有可能走错, 或者数据包丢了,就需要重新发送该数据包,所以需要有一定的容错纠错能力

4、解决应用方面的问题

结合1、2、3 点的能力,数据包已经具备到达另一台千里之外的主机的能力。张三去云南是手段,不是目的,玩才是张三的目的;数据包也是如此,从一台主机送到另一台主机是手段,数据表解决自己应用方面的问题才是数据包的目的

这四个问题就是网络要解决的问题,每一个问题都以高内聚低耦合的方式进行分层,一层状的形式划分成诺干层。

这也是为什么网络会划分成诺干层次的原因,每一层都有自己匹配的协议,每一层的协议都是解决自己的问题

2.2 OSI七层模型

  • OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;

  • 把网络从逻辑上分为了7层。每一层都有相关、相对应的物理设备,比如路由器,交换机;

  • OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;

  • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;

  • 但是,它既复杂又不实用,所以下面按照TCP/IP四层模型来讲解
    分层名称功能每层功能概览7应用层针对特定应用的协议6表示层设备固有数据格式和网络标准数据格式的转换5会话层通信管理、负责建立和断开通信连接(数据流动的逻辑通路)、管理传输层以下的分层4传输层管理两个节点之间的数据传输、负责可靠性传输(确保数据被可靠地传送到目标地址)3网络层地址管理与路由选择2数据链路层互联设备之间传送和识别数据帧1物理层以0/1代表电压的高低以及灯光的闪灭、界定连接器和网线的规格
    实际上再工程实践中,发现根本用不到这么多的层,所以把 5、6、7层合并成了一层:应用层

  • 数据链路层解决的是第一个问题:把数据包交付给自己直接相连的下一台主机的问题

  • 网络层解决的是第二个问题:要有路径选择的能力

  • 传输层解决的是第三个问题:容错纠错能力

  • 应用层解决的是第四个问题:解决应用方面的问题

应用层(三层)一般是由用户决定的,比如微信,它默认提供了数据链路层、网络层、传输层;而应用层由用户决定,加微信好友是会话层,用什么语言交流是表示层。

因为工程实践中发现的问题,所以重新对层数进行了划分

2.3 TCP/IP五层(或四层)模型

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求

如果是TCP/IP四层模型则去掉物理层,一般都叫TCP/IP四层模型

注:TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇

  • 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层
  • 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太 网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层
  • 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层
  • 传输层: 负责两台主机之间的数据传输。如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机
  • 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层

物理层补充

光电信号分两种:

  • 数字信号:比较适合家庭使用,方便家庭的电子设备进行解释,路由器进行二进制解释
  • 模拟信号:比较适合网络传输,远距离传输

光电信号是会衰减的,衰减到一定层度就没有了

集线器:该硬件的作用是,对光电信号进行放大,有了这个集线器光电信号就可以进行远距离传输了。交换机后面谈

在物理层上工作的还有调试解调器

调试解调器:就是我们日常所说的“猫”,“光猫”

不是真猫哈

补充其他一些知识:

光纤:是一种用于传输光信号的电信传输媒介,白色的是玻璃丝,非常细,很容易断(图中放大了玻璃丝)

光纤直接连的就是我们所说的“光猫”

猫的功能就是把数字信号转换成模拟信号,或者是把模拟信号转换成数字信号

猫连接的就是路由器,路由器真正识别的才是0 1序列,路由器帮我们构建局域网

网线(双绞线):常用于传输信号,白色的是双绞线水晶头

每个硬件设备自身内部都存在大量的寄存器

从数据链路层开始就是已经属于软件了

TCP/IP与OSI七层模型各层的对比:

下面几层几乎是没有区别的(红色),操作系统对应的是传输层和网络层,数据链路层和物理层都是对应在驱动层的,而TCP/IP协议当中的应用层就对应到OSI七层协议当中的应用层、表示层和会话层

传输层和网络层是OS自己内部实现的,所有的OS都要遵守这两层,只要是联网的一定是遵守这两层

传输层往上会提供一批网络的系统调用接口,以便应用层的调用(OS不相信任何人),而这些网络的系统调用接口全部被整合进了文件系统里面,也就是说未来使用的网络系统调用接口一定是跟文件的系统调用接口一起使用的。以后我所写的网络代码都是在应用层中

为什么叫TCP/IP四层模型?

传输层最具有代表性的协议就是:TCP协议,网络层最具有代表性的协议就是:IP协议,这两个协议是重中之重,这种地位是OS给的,每一个OS里面这两层必须是TCP/IP,后面也要重点学这两个协议

物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型

一般而言

  • 对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;
  • 对于一台路由器, 它实现了从网络层到物理层;
  • 对于一台交换机, 它实现了从数据链路层到物理层;
  • 对于集线器, 它只实现了物理层

但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发)

注:现在的路由器已经干到了应用层,但是工作主要还是在网络层

三、网络传输基本流程

协议报头

协议每一层都有报头,协议通常是通过协议报头来进行表达;每一份数据最终在被发送或者在不同的协议层中,都要有自己的报头

什么是报头?

报头本质也是一种数据。比如,你在淘宝上买一个水杯,但实际到了的时候,会多出一个快递盒子和快递单,这两个并不是你想要的,多出的快递盒子和快递单就是一个报头,也就是说,往网络发送数据包,实际上会多一点点东西,这些东西就是报头,每一层协议都有自己的报头

局域网通信

两台局域网的主机能够直接进行通信

每一台主机都有自己的“名字”:每一台主机都有网卡,每一张网卡都有自己的地址,这个地址称为MAC地址,表明自己在局域网中的唯一性

局域网通信原理(以太网)

主机Mac1,向Mac7发送 “hello”,在这个局域网上的主机都能收到 “hello” 这个数据包,但是 “数据包” 只有与匹配的MAC地址才会真正收到这个数据包,其他主机进行匹配MAC地址失败,失败则直接丢弃数据包

3.1 局域网的两台主机通信

两台计算机通过TCP/IP协议通讯的过程如下所示:

**数据包封装和分用 **

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).
  • 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理
  • 报文 = 报头 + 有效载荷

当用户A要将数据 “hello” 发送给另一台主机B,该数据需要先通过网络协议栈进行封装:(自顶向下)

  • 数据包报先交给应用层,应用层添加上对应应用层协议的报头信息后,将数据再交给传输层
  • 传输层收到数据包后,再添加上对应传输层协议的报头信息,并将数据继续向下进行交付
  • 网络层收到数据包后,再添加上对应网络层协议的报头信息,接着将数据包再交给链路层
  • 链路层收到数据包后,最后再添加上对应链路层协议的报头信息,至此数据封装完毕

下图为数据封装的过程:

注:用户数据就是用户发送的数据

数据封装完毕后就可以通过局域网将其发送给对端主机了(上图中是以太网),而当对端主机收到数据后,对应也需要通过网络协议栈对该数据进行解包与分用:(自底向上)

注:只有B主机会受到数据包,其他主机全部丢弃

  • 链路层收到数据包后,先将数据包中对应链路层协议的报头信息提取出来,然后将剩下的数据包交给网络层
  • 网络层收到该数据包后,再将数据包中对应网络层协议的报头信息提取出来,然后将剩下的数据包继续向上进行交付
  • 传输层收到该数据包后,再将数据包中对应传输层协议的报头信息提取出来,然后将剩下的数据包再交付给应用层
  • 应用层收到数据包后,最后将数据包中对应应用层协议的报头信息提取出来,至此便完成了数据包的解包与分用

下图为数据分用的过程:

或者

任何一台主机在发送数据之前,该数据包都要先自顶向下贯穿协议栈来完成数据包的封装,在这个过程中,每一层协议都会添加上对应的报头信息;而任何一台主机收到数据包后,都要先自底向上贯穿协议栈来完成数据包的解包和分用,在这个过程中,每一层协议都会将对应的报头信息提取出来

报文 = 报头 + 有效载荷

在网络协议中,我们可以认为同层协议在直接通信,也可以理解成为向下交付,这是两种不同的认知。比如,A和B在QQ聊天,A和B都认为他们在直接通信

如何识别报头和有效载荷?

别人发过来的数据包,自己主机接收后就是一坨字符串01序列,如何如何识别报头和有效载荷

获取报头大小的方法通常有两种:

  1. 定长报头。顾名思义就是报头的大小是固定的。
  2. 自描述字段。报头当中提供了一个字段,用来表示报头的长度

实际上每个协议都要提供一种方法,让我们获取到报头的大小,这样我们才能在解包时将报头与有效载荷进行分离

如何判断有效载荷交付给上层的哪个协议?

网络协议栈的每一层都可能会对应多种协议,即便将报头与有效载荷分离了,那当前层应该将有效载荷交付给上层对应的哪个协议呢?

实际在每种协议的报头当中,几乎都会包含一个字段,表明我们应该把分离出来的有效载荷交付给上层的哪个协议,这就是分用的过程

协议共性

  • 提供一个将报头与有效载荷分离的方法。
  • 协议当中必须包含一个字段,表明应该将有效载荷交付给上层的哪个协议。

实际当我们要学习一种协议的时候,首先就应该明确这两点,因为当我们在解包的时候必须将报头与有效载荷分离,而当我们在分用的时候必须知道应该将有效载荷交付给上层的哪个协议

常见的局域网:以太网、令牌环网、无线LAN

注:无线LAN是以太网的变种,但是没有以太网使用广泛

在任意时刻只允许一台主机在局域网中发送消息,否则发生碰撞

什么是碰撞??

当主机A在向主机B发送数据时,其他主机彼此之间可能也正在进行通信,比如主机A跟主机B在通信,主机B与主机C也在通信...

同一局域网中的所有主机在通信时,使用的都是一个共同的网络资源,因此如果局域网内的多台主机同时进行通信,此时这些数据之间就可能会相互干扰。

每一个局域网都可以看作是一个碰撞域,如果某个主机发送出去的数据与其他主机发送的数据之间产生了干扰,我们就称这两台主机在该碰撞域中发生了碰撞

如何看待局域网中的网络资源??

站在系统的角度,网络资源就是共享资源,临界资源

发生碰撞后是如何处理的?

重传数据:如果发生了碰撞,数据包将被丢失或损坏,发送方将需要重新发送数据包,以确保接收方正确地收到数据,等等

什么是令牌环网??

令牌环网是使用一个令牌在网络上流转以控制网络中节点的访问权限(令牌是一个特殊的数据包)。在令牌环网中,节点被连接成一个环形,每个节点都可以发送数据,但只有拥有令牌的节点可以发送数据(相当于互斥锁)。当一个节点拥有令牌时,它可以发送数据到相邻的节点,然后传递令牌给下一个节点。这种方式可以有效地控制网络中各节点的访问和通信,同时避免了数据冲突和重复发送的问题。

以太网名字的由来(简述)

“以太网”这个名字实际来源于物理学,在早期的时候,很多科学家都认为任何信息的传播都是需要媒介的,因此物理学家们就认为光的传播也是需要媒介的。这时物理学家们就发现了一个问题:既然光能够从太阳传播到地球上,那么在这个传播的过程中一定需要某种媒介,但太阳和地球之间不是绝对真空的状态吗?

此时物理学家们就提出了一个“以太假说”,认为宇宙空间并不是真空的,而是填充满了一种叫做“以太”的物质的,此时“以太”就可以作为光传播的媒介。但后来经过实验后发现,“以太”这种物质实际上是不存在的。

其中在这个故事线当中有两个人是与计算机学科相关的,一个人叫做图灵,另一个叫做冯诺依曼,这两个人当时也是参与了这场讨论的,因为他们不仅是计算机科学家,同时也是数学家。

经过后来的发展,在局域网产生之后就需要对局域网进行命名,而在局域网命名的时候人们就将其命名为“以太网”。因为我们曾经在物理学上认为“以太”就是传送物质的介质,也就是说“以太”是具有某种通信能力的,虽然“以太”在物理学上验证是不存在的,但现在在计算机领域我们做出来了这样一种东西,它也是能够传播物质(信息)的,同时也为了纪念之前的“以太假说”,于是早期的局域网标准就被命名为了“以太网”,有点嘲讽的意味...

3.2 跨网络的两台主机通信

跨局域网的两台主机之间是如何进行通信(同一种类型的局域网通信)

局域网之间都是通过路由器连接起来的,因此一个路由器至少能够横跨两个局域网。而这些被路由器级联局域网都认为,该路由器就是本局域网内的一台主机,因此路由器可以和这些局域网内的任意一台主机进行直接通信

比如局域网1当中的主机A想要和局域网2当中的主机B进行通信,那么主机A可以先将数据发送给路由器,然后路由器再将数据转发给局域网2当中的主机B,其中封装,解包分用与同一个局域网内的两台主机相似,也就是上面所谈的

跨局域网的两台主机之间是如何进行通信(不同类型的局域网通信)

局域网可能采用的是不同的通信标准,比如局域网1采用的是以太网,而局域网2采用的却是令牌环网,如何进行通信??

由于以太网和令牌环网是不同的通信标准,它们给数据添加的报头也是不一样的,因此令牌环网当中的主机无法对以太网当中的数据帧进行解包,反过来也是如此。

这种情况实际是由路由器来处理的,路由器是工作在网络层的一个设备(路由器必须要有两个网络接口,因为路由器至少横跨两个网络)

数据要从局域网1发送到局域网2时,路由器收到局域网1的数据后,会先将以太网对应的报头进行解包,然后将剩下的有效载荷向上交付给网络层,在网络层进行一系列数据分析后,再将数据包进行再一次封装,再交付给链路层,此时在链路层当中就会给该数据包添加上令牌环对应的报头信息,然后再将该数据发送到局域网2当中,此时该数据就能够在令牌环网当中传输了

这种方式能够屏蔽底层的差异,这就是 “IP” 的第一个优势。对于通信主机双方的IP层及其往上的协议来说,它们并不需要关心底层采用的是以太网还是令牌环网,它们认为只要填写了源IP地址和目的IP地址就能够将数据发送出去,因此现在主流的网络也叫做“IP网络”

四、网络中的地址管理

在网络中有两个常用的地址:IP地址和MAC地址

4.1 认识IP地址

IP协议有两个版本, IPv4和IPv6.后序凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4

  • IP地址是在IP协议中, 用来标识网络中不同主机的地址;
  • 对于IPv4来说, IP地址是一个4字节, 32位的整数;
  • 我们通常也使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255
  • IP地址通常在广域网中使用,准确来说,IP地址既可以在局域网中使用也可以在广域网中使用

还有另一个版本的IPv6的原因是:IPv4的IP地址不够用了,IPv6用128个比特位来标识IP地址,16字节

注:IPv4和IPv6不兼容

4.2 认识MAC地址

  • MAC地址用来识别数据链路层中相连的节点;
  • 长度为48位, 6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
  • 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)
  • MAC地址通常在局域网中使用

ifconfig

ifconfig 是Linux中的一个命令,它用于显示和配置网络接口的信息

我们用到的大部分局域网都是以太网标准,其中 **ether **对应就有”以太“的意思,而 **ether **后面的这个地址就是当前云服务器所对应的MAC地址。但实际云服务器上的MAC地址可能不是真正的MAC地址,该MAC地址可能虚拟技术模拟模拟出来的

inet 的地址暂且理解为IP地址

注:以上所有知识只为搭建起网络框架,帮助理解网络

--------------------- END ----------------------

「 作者 」 枫叶先生
「 更新 」 2023.6.13
「 声明 」 余之才疏学浅,故所撰文疏漏难免,
          或有谬误或不准确之处,敬请读者批评指正。

本文转载自: https://blog.csdn.net/m0_64280701/article/details/131047593
版权归原作者 枫叶先生 所有, 如有侵权,请联系我们删除。

“「网络编程」第一讲:初识网络_网络基础1”的评论:

还没有评论