第七章:网络层
网络层概述
网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输
要实现网络层任务,需要解决以下主要问题:
- 网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输)
- 网络层寻址问题
- 路由选择问题
因特网(Internet) 是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈。
由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层。
网络层提供的两种服务
面向连接的虚电路服务
可靠通信由网络来保证
必须建立网络层的连接一虚电路VC(Virtual Circuit)
通信双方沿着已建立的虚电路发送分组
目的主机的地址仅在连接建立阶段使用,之后每个分组的首部只需携带一条虚电路的编号(构成虚电路的每一段链路都有一个虚电路编号)
这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组最终正确到达接收方(无差错按序到达、不丢失、不重复)。
通信结束后,需要释放之前所建立的虚电路。
很多广域分组交换网都使用面向连接的虚电路服务。例如,曾经的X.25和逐渐过时的帧中继FR、异步传输模式ATM等。
无连接的数据报服务
可靠通信应当由用户主机来保证;
不需要建立网络层连接;
每个分组可走不同的路径;
每个分组的首部必须携带目的主机的完整地址
这种通信方式所传送的分组可能误码、丢失、重复和失序。
由于网络本身不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
因特网采用了这种设计思想,也就是将复杂的网络处理功能置于因特网的边缘(用户主机和其内部的运输层),而将相对简单的尽最大努力的分组交付功能置于因特网核心。
虚电路服务与数据报服务的比较
对比方面 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机来保证 |
连接的建立 | 必须建立网络层连接 | 不需要建立网络层连接 |
终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有终点的完整地址 |
分组的转发 | 属于同一条虚电路的分组均按照同一路由进行转发 | 每个分组可走不同的路由 |
当结点出故障时 | 所有通过出故障的结点的虚电路均不能工作 | 出故障的结点可能会丢失分组,一些路由可能会发生变化 |
分组的顺序 | 总是按发送顺序到达终点 | 到达终点时不一定按发送顺序 |
服务质量保证 | 可以将通信资源提前分配给每一个虚电路,容易实现 | 很难实现 |
IPv4地址
IPv4地址概述
IPv4地址就是给因特网(Internet) 上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符。
IP地址由因特网名字和数字分配机构ICANN(Internet Corporation for Assigned Names and Numbers)进行分配。
- 我国用户可向亚太网络信息中心APNIC(Asia Pacific Network Information Center)申请IP地址,需要缴费。
- 2011年2月3日,互联网号码分配管理局IANA (由ICANN行使职能)宣布,IPv4地址已经分配完毕。
- 我国在2014至2015年也逐步停止了向新用户和应用分配IPv4地址。同时全面开展商用部署IPv6。
IPv4地址的编址方法经历了如下三个历史阶段:
- 1981:分类编址
- 1985:划分子网
- 1993:无分类编址
32比特的IPv4地址不方便阅读、记录以及输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用。
分类编址的IPv4地址
地址类型 | 网络号 |
---|---|
A类地址 | 0 |
B类地址 | 10 |
C类地址 | 110 |
D类地址 | 1110(多播) |
E类地址 | 1111 (保留) |
只有A类、B类和C类地址可分配给网络中的主机或路由器的各接口
主机号为“全0”的地址是网络地址,不能分配给主机或路由器的各接口
主机号为“全1"的地址是广播地址,不能分配给主机或路由器的各接口
A类地址
最小网络号0,保留不指派
第一个可指派的网络号为1 ,网络地址为1.0.0.0
最大网络号127,作为本地环回测试地址,不指派
最小的本地环回测试地址为127.0.0.1
最大的本地环回测试地址为127.255.255.254
最后一个可指派的网络号为126,网络地址为126.0.0.0
可指派的网络数量为 - 2 = 126(减2的原因是除去最小网络号0和最大网络号127)
每个网络中可分配的IP地址数量为 - 2 = 16777214 (减2的原因是除去主机号为全0的网络地址和全1的广播地址)
B类地址
最小网络号也是第一个可指派的网络号128.0
网络地址为128.0.0.0
最大网络号也是最后一个可指派的网络号191.255
网络地址为191.255.0.0
可指派的网络数量为 = 16384
每个网络中可分配的IP地址数量为- 2 = 65534 (减2的原因是除去主机号为全0的网络地址和全1的广播地址)
注意:有些教材中指出128.0是保留网络号,B类第一个可指派的网络号为128.1。
但根据2002年9月发表的RFC3330文档,128.0网络号已经可以分配了。
C类地址
最小网络号也是第一个可指派的网络号192.0.0
网络地址为192.0.0.0
最大网络号也是最后一个可指派的网络号223.255.255
网络地址为223.255.255.0
可指派的网络数量为= 2097152
注意:有些教材中指出192.0.0是保留网络号,C类第一个可指派的网络号为192.0.1。
但根据2002年9月发表的RFC3330文档,192.0.0网络号已经可以分配了。只不过目前还没有分配出去。
划分子网的IPv4地址
32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号
- 子网掩码使用连续的比特1来对应网络号和子网号
- 子网掩码使用连续的比特0来对应主机号
- 将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可得到IPv4地址所在子网的网络地址
示例:已知某个网络的地址为218.75.230.0,使用子网掩码255.255.255.128对其进行子网划分,
地址与子网掩码 | 网络号 | 主机号 | 对齐 |
---|---|---|---|
C类网络地址 | 218.75.230. | 0 | |
子网掩码 | 255.255.255. | 1 | 0000000 |
10000000为128的二进制
划分出的子网数量 = 2
每个子网可分配的地址数量- 2= 126
(减2是要去掉主机号为“全0”的网络地址和“全1”的广播地址)
网络号 | 子网号 | 主机号 | 描述 |
---|---|---|---|
218.75.230. | 0 | 0000000 | 子网0的网络地址218.75.230.0 |
218.75.230. | 0 | 0000001 | 可分配最小地址218.75.230.1 |
… | |||
218.75.230. | 0 | 1111110 | 可分配最大地址218.75.230.126 |
218.75.230. | 0 | 1111111 | 子网0的广播地址218.75.230.127 |
子网划分------- | ------ | ------ | ---------------------- |
218.75.230. | 1 | 0000000 | 子网1的网络地址218.75.230.128 |
218.75.230. | 1 | 0000001 | 可分配最小地址218.75.230.129 |
… | |||
218.75.230. | 1 | 1111110 | 可分配最大地址218.75.230.254 |
218.75.230. | 1 | 1111111 | 子网1的广播地址218.75.230.255 |
无分类编址的IPv4地址
划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小并没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁。
为此,因特网工程任务组IETF又提出了采用无分类编址的方法来解决IP地址紧张的问题,同时还专门成立IPv6工作组负责研究新版本IP以彻底解决IP地址耗尽问题。
1993年,IETF发布了无分类域间路由选择CIDR(Classless Inter- Domain Routing)的RFC文档: RFC 1517~1519和1 520。
- CIDR消除了传统的A类、 B类和C类地址,以及划分子网的概念;
- CIDR可以更加有效地分配IPv4的地址空间, 并且可以在新的IPv6使用之前允许因特网的规模继续增长。
CIDR使用“斜线记法”,或称CIDR记法。即在IPv4地址后面加上斜线"/",在斜线后面写上网络前缀所占的比特数量。
CIDR实际上是将网络前缀都相同的连续的IP地址组成一个"CIDR地址块”
我们只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的全部细节:
- 地址块的最小地址
- 地址块的最大地址
- 地址块中的地址数量
- 地址块聚合某类网络 (A类、B类或C类)的数量
- 地址掩码(也可继续称为子网掩码)
路由聚合
网络前缀越长,地址块越小,路由越具体;
若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,这称为最长前缀匹配,因为这样的路由更具体。
IPv4地址的应用规划
定长的子网掩码FLSM(Fixed Length Subnet Mask)
- 使用同一个子网掩码来划分子网
- 每个子网所分配的IP地址数量相同,造成IP地址的浪费
变长的子网掩码VLSM(Variable Length Subnet Mask)
- 使用不同的子网掩码来划分子网
- 每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费
IP数据报的发送和转发过程
IP数据报的发送和转发过程包含以下两部分:
- 主机发送IP数据报
- 路由器转发IP数据报
静态路由配置及其可能产生的路由环路问题
静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表。
- 这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化。
- 一般只在小规模网络中采用。
使用静态路由配置可能出现以下导致产生路由环路的错误
- 配置错误
- 聚合了不存在的网络
- 网络故障
路由条目的类型
- 直连网络
- 静态路由(人工配置)
- 动态路由(路由选择协议)
特殊的静态路由条目
- 默认路由(目的网络为0.0.0.0, 地址掩码为0.0.0.0)
- 特定主机路由(目的网络为特定主机的IP地址,地址掩码为255.255.255.255)
- 黑洞路由(下一跳为null0)
路由选择协议概述
静态路由选择
由人工配置的网络路由、默认路由、特定主机路由、黑洞路由等都属于静态路由。
这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化。
一般只在小规模网络中采用。
动态路由选择
路由器通过路由选择协议自动获取路由信息。
比较复杂、开销比较大。能较好地适应网络状态的变化。
适用于大规模网络。
路由选择协议
内部网关协议IGP
路由信息协议RIP
内部网关路由协议IGRP
基于距离向量
- RIP在因特网.上最早使用
- IGRP是思科早期私有的协议,现在已被EIGRP取代
增强型内部网关路由协议EIGRP
思科私有的,用来取代IGRP的混合型路由协议(结合距离向量和链路状态)
开放式最短路径优先OSPF
中间系统到中间系统IS-IS
基于链路状态
- OSPF在各种网络中广泛使用
- 集成化IS-IS是ISP骨干网.上最长常用的IGP协议
外部网关协议EGP
边界网关协议BGP
路由器基本结构
- 路由表一般仅包含从目的网络到下一跳的映射
- 路由表需要对网络拓扑变化的计算最优化
- 转发表是从路由表得出的
- 转发表的结构应当使查找过程最优化
路由信息协议RIP的基本工作原理
路由信息协议RIP(Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议之一,其相关标准文档为RFC 1058。
RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量D一V(Distance Vector)"
RIP使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离。
- 路由器到直连网络的距离定义为1。
- 路由器到非直连网络的距离定义为所经过的路由器数加1。
- 允许一条路径最多只能包含15个路由器。 “距离"等于16时相当于不可达。
因此,RIP只适用于小型互联网。
RIP认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由。
当到达同一目的网络有多条“距离相等”的路由时,可以进行等价负载均衡。
RIP包含以下三个要点:
- 和谁交换信息 仅和相邻路由器交换信息
- 交换什么信息 自己的路由表
- 何时交换信息 周期性交换(例如每30秒)
开放最短路径优先OSPF的基本工作原理
开放最短路径优先OSPF(Open Shortest Path First),是为克服RIP的缺点在1989年开发出来的。
- “开放” 表明OSPF协议不是受某一家厂 商控制,而是公开发表的。
- “最短路径优先” 是因为使用了Dijkstra提出的最短路径算法SPF。
OSPF是基于链路状态的,而不像RIP那样是基于距离向量的。
OSPF采用SPF算法计算路由,从算法上保证了不会产生路由环路。
OSPF不限制网络规模,更新效率高,收敛速度快。
链路状态是指本路由器都和哪些路由器相邻,以及相应链路的"代价”(cost) 。
- “代价”用来表示费用、距离、时延、带宽,等等。这些都由网络管理人员来决定。
OSPF相邻路由器之间通过交互问候(Hello) 分组,建立和维护邻居关系。
使用OSPF的每个路由器都会产生链路状态通告LSA(Link State Advertisement)。LSA中包含以下内容:
- 直连网络的链路状态信息
- 邻居路由器的链路状态信息
LSA被封装在链路状态更新分组LSU中,采用洪泛法发送。
使用OSPF的每个路由器都有一个链路状态数据库LSDB, 用于存储LSA。
通过各路由器洪泛发送封装有自己LSA的LSU分组,各路由器的LSDB最终将达到一致。
使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表。
OSPF有以下五种分组类型:
-
类型1,问候(Hello) 分组
用来发现和维护邻居路由器的可达性。 -
类型2,数据库描述(Database Description) 分组
向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息 -
类型3, 链路状态请求 (Link State Request) 分组
向邻居路由器请求发送某些链路状态项目的详细信息。 -
类型4,链路状态更新(Link State Update)分组
路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态。 -
类型5, 链路状态确认(Link State Acknowledgment)分组
这是对链路状态更新分组的确认分组。
OSPF在多点接入网络中路由器邻居关系的建立
- 选举指定路由器DR(designated router)和备用的指定路由器BDR(backup designated router)
- 所有的非DR/BDR只与DR/BDR建立邻居关系
- 非DR/BDR之间通过DR/BDR交换信息
边界网关协议BGP的基本工作原理
内部网关协议IGP (例如路由信息协议RIP或开放最短路径优先OSPF)
- 设法使分组在一个自治系统内尽可能有效地从源网络传输到目的网络
- 无需考虑自治系统外部其他方面的策略
外部网关协议EGP (例如边界网关协议BGP)
- 在不同自治系统内,度量路由的"代价”(距离, 带宽,费用等)可能不同。因此,对于自治系统之间的路由选择,使用“代价”作为度量来寻找最佳路由是不行的。
外部网关协议EGP (例如边界网关协议BGP)
- 在不同自治系统内,度量路由的“代价” (距离,带宽,费用等)可能不同。因此,对于自治系统之间的路由选择,使用“代价”作为度量来寻找最佳路由是不行的。
- 自治系统之间的路由选择必须考虑相关策略(政治,经济,安全等)
- BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由
BGP发言人交换网络可达性的信息(要到达某个网络所要经过的一系列自治系统)
当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好的路由。也就是构造出树形结构、不存在回路的自治系统连通图。
BGP-4有以下四种报文:
- OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化。
- UPDATE(更新)报文: 用来通告某一路由的信息,以及列出要撤销的多条路由。
- KEEPALIVE(保活)报文: 用来周期性地证实邻站的连通性。
- NOTIFICATION(通知)报文: 用来发送检测到的差错。
IPv4数据报的首部格式
版本:
占4比特,表示IP协议的版本。
通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4 (即IPv4) 。
首部长度:
占4比特,表示IP数据报首部的长度。该字段的取值以4字节为单位。
最小十进制取值为5,表示IP数据报首部只有20字节固定部分;
最大十进制取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分。
可选字段:
长度从1个字节到40个字节不等。用来支持排错、测量及安全等措施。
可选字段增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理IP数据报的开销。实际上可选字段很少被使用。
填充字段:
确保首部长度为4字节的整数倍。 使用全0进行填充。
区分服务:
占8比特,用来获得更好的服务。
该字段在旧标准中叫作服务类型,但实际上一直没有被使用过。
1998年,因特网工程任务组IETF把这个字段改名为区分服务。
利用该字段的不同数值可提供不同等级的服务质量。
只有在使用区分服务时,该字段才起作用。一般情况下都不使用该字段。
总长度:
占16比特,表示IP数据报的总长度(首部+数据载荷)。
最大取值为十进制的65535,以字节为单位。
标识:
占16比特,属于同一个数据报的各分片数据报应该具有相同的标识。
IP软件维持一个计数器,每产生一个数据报,计数器值加1,并将此值赋给标识字段。
标志:
占3比特,各比特含义如下:
-
DF位:
1表示不允许分片:
0表示允许分片 -
MF位:
1表示“后面还有分片”;
0表示"这是最后一个分片” -
保留位:必须为0
片偏移:
占13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位。
片偏移以8个字节为单位。
这三个字段共同用于IP数据报分片
生存时间TTL:
占8比特,最初以秒为单位,最大生存周期为255秒;路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器.上所耗费的时间,若不为0就转发,否则就丢弃。
现在以“跳数”为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃。
协议:
占8比特,指明IPv4数据报的数据部分是何种协议数据单元。
常用的一些协议和相应的协议字段值如下。
协议名称 | ICMP | IGMP | TCP | UDP | IPv6 | OSPF |
---|---|---|---|---|---|---|
协议字段值 | 1 | 2 | 6 | 17 | 41 | 89 |
首部检验和:
占16比特,用来检测首部在传输过程中是否出现差错。比CRC检验码简单,称为因特网检验和。
IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(生存时间、标志、片偏移等)的取值可能发生变化。
由于IP层本身并不提供可靠传输的服务,并且计算首部校验和是一项耗时的操作,因此在IPv6中,路由器不再计算首部校验和,从而更快转发IP数据报。
源IP地址和目的IP地址:
各占32比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址。
网际控制报文协议ICMP
为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocol)。
主机或路由器使用ICMP来发送差错报告报文和询问报文。
ICMP报文被封装在IP数据报中发送。
ICMP差错报告报文共有以下五种:
-
终点不可达
当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种错误。 -
源点抑制
当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。 -
时间超过
当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值减1。
若结果不为0,则将该IP数据报转发出去;若结果为0,除丢弃该IP数据报外,还要向源点发送时间超过报文。
另外,当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文。 -
参数问题
当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文。 -
改变路由(重定向)
路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
以下情况不应发送ICMP差错报告报文:
- 对ICMP差错报告报文不再发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
- 对具有多播地址的数据报都不发送ICMP差错报告报文
- 对具有特殊地址(如127.0.0.0或0.0.0.0) 的数据报不发送ICMP差错报告报文
常用的ICMP询问报文有以下两种:
-
回送请求和回答
ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。
收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。
这种询问报文用来测试目的站是否可达及了解其有关状态。 -
时间戳请求和回答
ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间。
在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从
1900年1月1日起到当前时刻一共有多少秒。
这种询问报文用来进行时钟同步和测量时间。
ICMP应用举例
分组网间探测PING(Packet InterNet Groper):
用来测试主机或路由器间的连通性
应用层直接使用网际层的ICMP (没有通过运输层的TCP或UDP)
使用ICMP回送请求和回答报文
跟踪路由traceroute:
用来测试IP数据报从源主机到达目的主机要经过哪些路由器
Windows版本
- tracert命令
- 应用层直接使用网际层ICMP
- 使用了ICMP回送请求和回答报文以及差错报告报文
Unix版本
- traceroute命令
- 在运输层使用UDP协议
- 仅使用ICMP差错报告报文
虚拟专用网VPN与网络地址转换NAT
虚拟专用网VPN(Virtual Private Network)
利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网。
由于IPv4地址的紧缺,一个机构能够申请到的IPv4地址数量往往远小于本机构所拥有的主机数量。因此,虚拟专用网中的各主机所分配的地址应该是本机构可自由分配的专用地址,而不是需要申请的、在因特网上使用的公有地址。
如下图所示,同一机构内不同部门的内部网络所构成的虚拟专用网VPN又称为内联网VPN。
有时一个机构的VPN需要有某些外部机构(通常就是合作伙伴)参加进来。这样的VPN就称为外联网VPN。
在外地工作的员工需要访问公司内部的专用网络时,只要在任何地点接入到因特网,运行驻留在员工PC中的VPN软件,在员工的PC和公司的主机之间建立VPN隧道,即可访问专用网络中的资源。这种VPN称为远程接入VPN。
网络地址转换NAT(Network Address Translation)
虽然因特网采用了无分类编址方式来减缓IPv4地址空间耗尽的速度,但由于因特网用户数目的激增,特别是大量小型办公室网络和家庭网络接入因特网的需求不断增加,IPv4地址空间即将面临耗尽的危险仍然没有被解除。
1994年提出了一种网络地址转换NAT的方法再次缓解了IPv4地址空间即将耗尽的问题。
NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。
由于绝大多数的网络应用都是使用运输层协议TCP或UDP来传送数据,因此可以利用运输层的端口号和IP地址一起进行转换
这样,用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。这种将端口号和IP地址一起进转换的技术叫作网络地址与端口号转换NAPT(Network Address and Port Translation).
对于一些P2P网络应用,需要外网主机主动与内网主机进行通信,在通过NAT时会遇到问题,需要网络应用自己使用一些特殊的NAT穿越技术来解决问题。
Use this card to join MyBlog and participate in a pleasant discussion together .
Welcome to GoodBoyboy 's Blog,wish you a nice day .