计算机网络:拓扑结构 / 局域互联 / IP地址 / 协议 / 子网掩码 / 路由

更多
2018年09月13日 11点35分 作者:叶飞 修改

@想一想@:计算机网络是如何搭建/构成的,又是如何能够从一个点达到另一个点的,不同计算机之间又是如何进行有效通信的……


网络拓扑结构

大白话:网络上各个节点如何连接……是不是这样的?


有点乱,但宏观上来说,可能真这样的,不然怎么叫“网(web)”呢?^_^

但细分到内部,大体上来说,有以下一些常见的连接方式:

  • 环型:所有节点依次连接,形成一个闭环
  • 星型:有一个中央节点⑧,其他所有节点都各自连接到该中央节点
  • 总线型:有一条主干线①③④⑥,其他节点连接到这条主线

@想一想@:以上连接方式的优劣?

局域网/互联网

因为每种连接方式都各有利弊,所以早期的网络连接是“八仙过海各显神通”,我想怎么连就怎么连。

所以就出现了这种情况:A公司用环形,B公司用星型,C公司用总线……

现在问题来了:怎么把ABC这三家(以及后面有可能加入的)公司网络连在一起?

应运而生:

  • 局域网:你们ABC……自己搭建的网络都属于局域网,你们内部怎么连我不管,但你要想和外部连接,搞个节点出来做网关(gateway)
  • 互联网:用统一的方式,通过网关把所有的局域网连接起来,就形成互联网。

举个例子,网关就相当于某些保密单位的“传达室”,

  • 所有的外部邮件,邮差只管送到传达室,然后由传达室再进行分发到具体的部门和个人
  • 所有部门和人员,要向外部传递信息,也都是先交到传达室……

另外:由于互联网的普及,很多很多局域网也按互联网这种模式组织。所以小局域网又可以组成大局域网,大局域网再组成超大局域网……“局域”是相对的,可以是一个家庭,也可以是一个公司,或者一个小区,甚至一个城市一个国家!

PS:飞哥能查到的(应该很老旧的)中国3个国家级网关:教育网、高能所和公用数据网


IP地址

要想在网络上找到一个节点,就一定要给这个节点一个地址,是不是?地址有很多种,现在最流行的,就是IP地址。

IP本身是一种协议,Internet Protocol,互联网协议。IP地址,就是基于这种协议所生成/产生的地址。

协议

通信双方达成的一致,共同遵守的规范(体会:规范和协议之间所体现的价值观差异),就是协议。

协议(以及接口)在计算机应用中占有非常重要的地位。没有(一个广泛遵守的)协议,通信就会变得非常困难(甚至不可能):

  • 数据:你发给我一串010101101010010101010011……我知道是啥鬼意思?
  • 连接方式:我怎么公告我的地址,你怎么找到我,找我干什么,我怎么回复你?……

这些都需要用协议规范。

IP4和IP6

根据IP协议,网络上所有节点地址以32位的二进制表示,为了便于人眼识别,每8位(一个字节的长度)为一截,转成十进制后用小数点分割。比如,17bang.ren对应的IP地址

  • 就是:121.4.222.169,
  • 对应:01111001.00000100.11011110.10101001

复习:DNS

IP地址,实际上分为两个部分:

  • 网络地址:确定节点所在的网络,类似于先找到小区
  • 主机地址:确定节点本身的位置,类似于再找到门户

和域名一样,IP地址一样是要(花钱)申请的。而且,2019年11月26日,全球所有43亿个IPv4地址已分配完毕!

其实很早以前,业内专家就遇见了这一天,而且他们还提出了解决方法:IP6;而之前我们讲的,就被称之为IP4

直观来看,IP6和IP4相比,最大的区别:

  1. 使用128位二进制表示(容量是不是32位的4倍?)
  2. 用冒号分割,16进制表示

cmd演示:ipconfig查看本机ip地址

本地链接 IPv6 地址. . . . . . . . : fe80::b572:c277:ec4e:dda3%7

%号指定网卡接口等,略过……

NAT

但随着你学习的深入,你会发现,被吹得天花乱坠的IP6并没有被广泛的使用,IP4好像仍然活得挺滋润,为什么呢?

还记得网关不?局域网和外部交互需要网关,那是不是:

  • 只要这个网关有一个公网IP地址
  • 局域网内部可以不用公网IP地址

也OK的?就类似于公司/我家有个门牌号就行了,部门/卧室也要门牌号吗?所以第一个结论:

不是网络上每一个节点都需要一个公网IP(地址)。

NATNetwork Address Translation,网络地址转换技术:

  • 局域网内部的节点,如果没有公网IP,和外网交互时,就直接使用网关公网IP
  • 如果网关IP也不是公网IP?没事,网关上面还有网关……
  • 所有收发信息再由网关分发

公网/私网地址

很多局域网内部也使用IP协议搭建,所以局域网内部节点也有IP地址。

根据IP地址是否能直接用于互联网访问,可分成:

  • 公网地址:经向相关机构申请,能够直接互联互通的IP地址
  • 私网地址:未经申请,自己在局域网中使用的IP地址

PS:就是为了照顾局域网的IP地址使用,以下IP地址被预留,不会用作公网地址:

  • A类地址:10.0.0.0~10.255.255.255
  • B类地址:172.16.0.0~172.31.255.255
  • C类地址:192.168.0.0~192.168.255.255
所以基本上你一眼就能看出哪些IP地址是公网的,哪些是私网的。

#试一试#:在你电脑上ipconfig看看你的ip地址,是不是和我的很类似:

IPv4 地址 . . . . . . . . . . . . : 192.168.1.10

至少前面三个完全相同吧?是巧合吗?和飞哥这么有缘?其实不是的,我们要讲科学,咳咳,……

另外,注意这里:

默认网关. . . . . . . . . . . . . : fe80::1%7
                                   192.168.1.1

这说明飞哥的电脑在一个网关IP地址为192.168.1.1的局域网内。复习:局域网 vs 互联网

那我对外交互时的IP地址是多少呢?

演示:浏览器上IP地址查询


注意:不是说一个节点有一个公网地址,就不能被放置在局域网中。

演示:服务器拥有公网IP,但ipconfig仍显示私网IP地址

子网掩码

@想一想@:假如请求同一局域网中的另一个节点cmd演示ping,比如:

  • 192.168.1.1
  • 172.17.0.1
  • 192.168.1.2
  • 192.168.2.1

会发生什么?计算机应该只会在当前局域网中查找?但是,怎么界定这个“当前”局域网?(局域网可以一层套一层)

演示ipconfig中,除了网关,还有:

子网掩码  . . . . . . . . . . . . : 255.255.255.0

子网掩码(和IP地址一样)也是一个32位地址,比如255.255.255.0就是111111111.11111111.11111111.000000000

子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址:

  1. 把当前IP和请求IP同子网掩码进行位与运算复习:1 and 1 = 1;1 and 0 = 0;0 and 0 = 0。
  2. 得到的结果如果相同,两个IP属于同一个网段/子网中的节点,可以直接通信,不走网关。

通常把子网掩码设置成:

  • 前面n个连续的1,对应网络地址
  • 后面n个连续的0,对应主机地址

再8位一段8位一段,配合小数点分割,这样就一目了然。比如,子网掩码255.255.255.0,就会截取IP地址的前三段做网络地址,最后一段做主机地址。

@想一想@:使用255.255.255.0的子网掩码能容纳多少个节点?

所以子网掩码还有一个作用:确定网络中最大节点数。当网络比较复杂节点过多不能浪费的时候,子网掩码就要精打细算,不会255这样明确……


路由器

网关通常由路由器充当。

路由器的英文单词就是router:路径(机)器,在网络中,能决定一个点到另一个点径的机器。

PS:用尽了洪荒之力吧路由两个字带出来了,翻译出来背锅……

你想象中的互联网是咋样子的?是不是这个样子的:

互联网是一个网状结构,所以网络中两个节点之间就可以有很多条路径可以到达(就像我们的交通系统一样)。

如前文图片,我们要从①到⑥,是不是有很多路径?

  • 1-3-4-6
  • 1-8-6
  • 1-0-9-7-6
  • ……

究竟选择哪一条路径呢?这个工作就交给路由器了。

所谓wifi,其实就是无线路由器。

路由器配置

使用ipconfig找到默认网关的IP地址

默认网关. . . . . . . . . . . . . : 192.168.1.1在浏览器中输入该IP地址,进入路由器管理界面。理解:

路由器:

  • 对外的WAN(Wide Area Network)接口:使用公网IP
  • 对内的LAN(Local Area Network)接口:使用局域网IP

PPPoE:一种使用用户名和密码上网的方式

MAC地址:

  • 设备(网卡)的唯一身份标志,在出厂时写入,绝不重复,不可更改。
  • 以前有些网络服务商(ISP)会将MAC地址和PPPoE账号绑定,确保一个账号只有一台设备使用,所以路由器会提供MAC地址克隆功能欺骗(因为这个技术太过普及,现在的ISP也懒得干这种傻事了……)

DHCP:Dynamic Host Configuration Protocol,动态主机配置协议,简单来说,就是路由器会自动的为所有接入的设备、动态的分配内网IP地址,不再需要我们手动设置。这就是为什么现在路由器可以开机即用的原因。

可以在路由器上根据网址和MAC地址等,按黑名单/白名单进行监控过滤等……

tracert

一个cmd命令,trace route的缩写,可以用于追踪从本地/机到某个IP地址的行经路径/节点

通过查询IP地址演示,从源栈教室路由器到沙坪坝到重庆再到上海……的过程。


网络协议分层

除了IP协议,网络上还要很多协议,这些协议可以被分成4层(或更细的7层):


简单的说一下:
  • 网络接口层:ARP(Address ResolutionProtocal):确定Mac地址和IP之间的映射
  • 网间层:IP协议确定如何通过IP找到彼此
  • 传输层:确定两个节点之间数据传输方式。
  • 应用层:针对具体的应用,比如网页浏览(HTTP)、email发送(SMTP),文件断点传输(FTP)……设定的一些协议

我们的使用是从上到下的,比如先HTTP,HTTP再调用TCP,TCP再调用IP……

@想一想@:为什么要分层?

TCP/IP协议(簇):实际上不仅仅指TCP和IP两个协议,而是囊括了相关一系列(如图所示)协议的合集


#常见面试题:TCP和UDP的区别,以及什么几次“握手”#

背景知识:

  1. 数据会被分成若干段,被称之为数据包
  2. 因为路由,数据包可能以一种“乱序”的方式到达终点
  3. 甚至,某些包有可能被丢失(或未及时到达)

区别:

  • UDP:丢了就丢了,算了…… @想一想@:为什么可以这么任性?(效率优先,牺牲数据完整性,适用场景:音视频即时通信……)
  • TCP:不行,必须保证数据的完整性。所以有了所谓的“三次握手”和“四次握手”,一共七次握手:

建立连接(3次)

  1. 发:我现在给你发数据,可以吗?
  2. 收:可以,请发送?
  3. 发:我开始发送了……(包含一份包裹清单)

关闭连接(4次)

  1. 发:我发完了
  2. 收:收到,知道你发完了。(同时对照包裹清单检查)
  3. 收:一切OK,可以关闭连接
  4. 发:关闭连接

所以,握手,其实就是一种确认。

@想一想@:为什么要这么麻烦?(确保数据传输的完整性)



作业

编程 入门 计算机 网络 云计算
赞: 60 踩: 1

打赏
已收到打赏的 帮帮币

你的 打赏 非常重要!
为了保证文章的质量,每一篇文章的发布,都已经消耗了作者 1 枚 帮帮币
没有“帮帮币”,作者无法发布新的文章。

全系列阅读
评论 / 0

编程基础


项目管理相关

需求发布、开发规划、部署、测试,源代码版本管理(git)等……

逸闻史话

认识计算机

编程语言

数据结构和算法

Web开发基础

全部
关键字



帮助

反馈