网络通信里的这些名词你都知道是什么意思吗?

虽然网络通信的全过程对普通用户来说来说是透明的, 但我们或多或少总会经常听到一些专有名词, 什么IP, 网关, 掩码, MAC地址, 局域网等等, 总是听到但一直不是很清楚他们是什么意思的感觉真的非常难受, 这次花了好久看了许多博文终于对这些名词有了一个相对形象一点的理解

先列出这篇博文涉及到的一些名词, 如果你全部都知道是什么意思, 那么恭喜你! 可以完全不需要看这篇博文啦!

IP协议 IP地址 MAC地址 掩码 DNS 网关 路由器 WAN口
DHCP协议 ARP协议 TCP协议 UDP协议 交换机 LAN口
以太网 广播 局域网 广域网 因特网 互联网 五层模型

从物理硬件到用户

计算机网络的五层模型

在这里插入图片描述
互联网通信功能的实现依赖于上述的五层结构, 其中物理层贴近底层硬件, 而用户直接接触的则是应用层. 每一层结构都在通信的过程中完成了某种功能, 而为了完成这些功能, 需要大家共同遵某种规则, 这些规则就是“协议”, 互联网的每一层都定义了许多协议.
目前你只需要知道互联网是分成若干层的, 每一层会有若干协议就行了, 至于层与层之间的逻辑关系是什么, 这些协议都有哪些, 协议都有什么用之类的问题在之后理解原理过程自然就会有所感悟

物理层

电脑之间要传输数据, 肯定需要媒介的, 比如通过电缆, 光纤, 无线电波等等, 物理层描述的就是这些传输媒介, 它确保了网络通信最底层的物理连接

链路层

链路层规定了单个物理连接链路上数据的传输形式. 而使用最广泛的传输形式就是“以太网”协议规定的“帧”. 它将一组数据组合成数据块, 而在链路层中这种数据块称为“帧”, “帧”是链路层的数据传输单位.
每一“帧”由两部分组成: 标头数据

  • “标头”中包含了数据块的一些说明项: 比如发送者, 接收者, 数据类型等等
  • “数据”中则是数据块的具体内容
    每一“帧” 都有最大长度, 如果数据非常大, 则需要分割成多个帧进行传输

MAC地址

以太网规定每个接入网络设备都需要有一个“网卡”接口, 数据就是从一个网卡传送到另一个网卡, 而网卡的地址就是上面提到的“标头”中的发送者和接收者的标识, 被称为MAC地址.
每一张网卡的MAC地址在出厂时就已确定, 是全世界独一无二的, 不可以更改的. 有48个二进制位, 通常用12个十六进制数表示.
在Terminal输入ifconfig命令即可查看, 如下图 00:0c:29:96:2e:9c
在这里插入图片描述

广播

MAC地址是每台设备的唯一标识, 相当于我们的身份证号, 但如果不是我们自己告诉别人, 别人是不会知道我们的身份证号具体是多少的. 同样的, 一台设备想要给另一台设备通信, 他是如何获取另一台设备的MAC地址的呢? 这里就涉及到ARP了, 会在网络层中介绍.

现在假设已经获取了MAC地址, 数据帧是如被准确的传送到接收方的呢?
最开始的时候, 以太网采用的是非常“笨”的一种方法: 广播
它会把数据帧发送给所在网络中的所有设备, 设备拿到数据帧后将其中的MAC地址和自己的做比较, 如果相同则接收这个数据帧, 如果不同则抛弃.

网络层

有了数据帧的定义, 有了MAC地址, 有了广播的发送方式, 链路层就可以在多台设备之间传输数据了

但是这样做有一个重大“缺陷”, 以广播的方式发送数据帧, 每个设备都会收到一个数据帧, 不仅效率低, 而且仅局限在发送者所在的自网络. 也就是说, 如果发送者和接受者不在一个子网络, 是广播不过去的, 否则每一次广播互联网上所有设备都会收到一份数据帧, 那会“爆炸”的.

因此需要找到一个方法, 能够区分哪些MAC地址属于同一个子网络, 哪些不是. 如果是同一个子网络, 就采用广播的方式发送; 如果不是, 则采用“路由”的方式发送 (路由的概念后面会介绍)

很明显从MAC地址上是无法区分的, 因为MAC地址只与厂商有关, 和所处网络无关, 因此产生了“网络层” , 它引入了一套新的地址, 能够区分不同计算机是否属于统一个网络. . 这套地址就叫做“网络地址”, 简称“网址”.

“网络层”出现后, 每台设备具有两种地址, MAC地址和网址, 两者没有任何联系, MAC地址绑定网卡不可更改, 网址是分配的可变更的.

IP协议 & IP地址

规定网络地址是什么形式的协议称为IP协议, 规定的网络地址称为IP地址

目前广泛使用的是第四版IP协议, 称为IPV4. 这个版本规定, 网络地址由32位二进制表示. 常用分成四段的十进制数表示.
阮一峰博客

子网掩码

接入互联网的每一台设备都会分配一个IP地址, IP地址由两部分组成, 前一部分代表网络, 后一部分代表主机. 处于同一个子网络设备, 他们的IP地址的网络部分是相同的.

假设IP地址的前24代表网络, 最后8为代表主机, 那么192.168.2.1和192.168.2.3就属于同一个网络, 都是192.168.2.0网段.

但是单纯从IP地址上你无法判断网络部分是前多少位, 可能是前24位也可能是前16位. 为了区分网络部分和主机部分, 这里需要用到 “子网掩码”

子网掩码的形式同IP地址一样, 由32为二进制数组成, 将子网掩码与IP地址进行与运算, 如果结果相同, 则说明两个IP地址处于同一个网络

比如子网掩码225.225.225.0, 两个IP地址为192.168.1.2, 192.168.1.3, 将子网掩码和IP地址转换成二进制表示, 然后进行与运算(只有都为1的时候才为1, 否则就是0), 运算结果都是192.168.1.0, 因此可以说明这两个IP地址都在同一子网络.

我最初刚看到子网掩码的作用时, 有过这样一个疑惑: 为什么需要子网掩码, 我难道不能就认为规定前24位表示网络, 最后4位表示主机吗? 后来搜了一下子网掩码的百度词条, 才知道了原因

其实是我搞错了因果关系, 应该是现有了子网掩码才有了子网络这个概念; 而不是想要确定是否是同一个子网络, 才去发明子网掩码.

子网掩码最初是为了解决IPV4资源紧缺的问题而被提出来的, 因为随着时代的发展, 接入互联网的主机越来越多, 远远不是IPV4的32位数就能分配完全的, 于是人们就想到了将一个网络划分为许多子网络, 在这些子网络中IP地址是可以重复的. 而产生这写小网络的方法就是子网掩码, 比如一个ip地址, 192.168.3.2在子网掩码225.225.225.0 下属于192.168.3.0子网络, 而在掩码225.225.224.0 下属于192.168.2.0子网络, 虽然IP地址相同, 但是由于通过子网掩码解析出来的网络不同, 仍然具有唯一性. 就好像北京的张三和南京的张三不是同一个人.

IP数据包

根据IP协议发送的数据称为IP数据包, 它是将链路层的数据帧和网络层新增加的数据合并在一起而形成的, 里面既有链路层的MAC地址也有网络层的IP地址

ARP

还记得链路层中遗留的问题吗?如何获取设备的MAC地址?

MAC地址是每台设备的唯一标识, 相当于我们的身份证号, 但如果不是我们自己告诉别人, 别人是不会知道我们的身份证号具体是多少的. 同样的, 一台设备想要获得另一台设备的MAC地址, 也需要那台设备自己告诉他, 这里就涉及到ARP了.

ARP (Adress Resolution Protocol) : 地址解析协议, 是根据IP地址获取物理地址的一个协议. ARP会广播一个数据包,其中包含它所要查询主机的IP地址,在对方的MAC地址这一栏,填的是FF:FF:FF:FF:FF:FF,表示这是一个"广播"地址。它所在子网络的每一台主机,都会收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出回复,向对方报告自己的MAC地址,否则就丢弃这个包。

我最初看到ARP的作用时会有这样一个疑惑: 既然都知道了IP地址, 为什么不直接使用IP地址定位目标设备呢?

其实局域网内设备之间交换数据是通过交换机来完成的, 而IP路由是路由器的功能. 同时这里的IP地址并不是一个定位功能, 而是一个匹配验证的功能. 另外就是局域网内的交换机有一个MAC转发表, 将MAC地址和LAN口进行了映射, 知道了MAC地址后可以直接转发到对应的设备, 无须向链路层中说的广播

传输层

有了MAC地址和IP地址, 我们就可以在互联网上任意两台机器之间建立通信.

接下来的问题是同一台主机上有许多程序都需要用到网络, 比如,你一边浏览网页,一边与朋友在线聊天。当一个数据包从互联网上发来的时候,你怎么知道,它是表示网页的内容,还是表示在线聊天的内容?

也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做"端口"(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。

"端口"是0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系。

"传输层"的功能,就是建立"端口到端口"的通信。相比之下,“网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。因此,Unix系统就把主机+端口,叫做"套接字”(socket)。有了它,就可以进行网络应用程序开发了。

TCP / UDP

UDP : 我们需要在IP数据包中加入端口信息, 这就需要新的协议, UDP是最简单的实现方式. 它提供了一种无需连接就可以发送IP数据报的方法, 但是有一个缺点就是不知道对方是否成功接收, 可靠性差.
TCP: 加强版的UDP , 实现非常复杂, 但是非常可靠. 没发出一个IP数据包都会进行确认, 抱枕数据不会丢失.

应用层

应用程序收到"传输层"的数据,接下来就要进行解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。

"应用层"的作用,就是规定应用程序的数据格式。 比如www文件都必须遵守的HTTP协议, 规定了数据格式如下
php中文网
HTTPS: HTTPS是身披SSL外壳的HTTP。HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。

网络配置

用户开启一台新买的电脑, 在上网前需要配置四个参数

  • 本机的IP地址
  • 子网掩码
  • 网关的IP地址
  • DNS的IP地址
    可以选择手动进行配置, 但这样的话对于新手来说非常困难, 因此有了自动配置: DHCP

DHCP

DHCP: 动态主机配置协议, 是一种局域网的网络协议. 由服务器控制一段lP地址范围,客户机登录服务器时就可以自动获得服务器分配的lP地址和子网掩码.

DHCP是一种应用层协议, 建立在UDP协议之上.

(1)“以太网标头”,设置发出方(本机)的MAC地址和接收方(DHCP服务器)的MAC地址。前者就是本机网卡的MAC地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。

(2)“IP标头”,设置发出方的IP地址和接收方的IP地址。这时,对于这两者,本机都不知道。于是,发出方的IP地址就设为0.0.0.0,接收方的IP地址设为255.255.255.255。

(3)“UDP标头”,设置发出方的端口和接收方的端口。这一部分是DHCP协议规定好的,发出方是68端口,接收方是67端口。

这个数据包构造完成后,就可以发出了。以太网是广播发送,同一个子网络的每台计算机都收到了这个包。因为接收方的MAC地址是FF-FF-FF-FF-FF-FF,看不出是发给谁的,所以每台收到这个包的计算机,还必须分析这个包的IP地址,才能确定是不是发给自己的。当看到发出方IP地址是0.0.0.0,接收方是255.255.255.255,于是DHCP服务器知道"这个包是发给我的",而其他计算机就可以丢弃这个包。

接下来,DHCP服务器读出这个包的数据内容,分配好IP地址,发送回去一个"DHCP响应"数据包。这个响应包的结构也是类似的,以太网标头的MAC地址是双方的网卡地址,IP标头的IP地址是DHCP服务器的IP地址(发出方)和255.255.255.255(接收方),UDP标头的端口是67(发出方)和68(接收方),分配给请求端的IP地址和本网络的具体参数则包含在Data部分。

新加入的计算机收到这个响应包,于是就知道了自己的IP地址、子网掩码、网关地址、DNS服务器等等参数。

网关

  • 局域网: 几台电脑和几个交换机组成的网络
  • 广域网: 多个局域网和一些路由设备组成的网络. 又称外网, 公网
  • 因特网: 全世界最大的互联网
  • 互联网: 若干个网络连接成的网络, 广域网的一种

网关是一个局域网的出入口, 局域网内的主机只有通过网关才可以和广域网连接. 而路由器就是扮演网关这个角色,

路由器 & 交换机

路由器: 工作在网络层, 连接因特网中各局域网, 广域网的设备, 又称为 网关设备, 它用于连接多个逻辑上分开的网络, 处于网络的节点处. 每个路由器都有自己相邻路由器的地址, 并基于此维护了一个路由表, 在每次传输中, 路由器会根据情况选择最佳路线传输数据.
百度文库
交换机: 工作在链路层, 为接入的主机提供数据交换的通路
在这里插入图片描述

WAN & LAN

路由器上有一个LAN(Local Area Network)接口和一个WAN(Wide Area Networ)接口, LAN接口用于连接交换机和主机, WAN接口用于连接网线接入广域网. 路由器有两个IP地址, 一个是LAN口设置的网关IP地址, 局域网内的数据想要传输数据给外网设备都需要先把数据传送到这个网关地址. 另外一个是WAN口设置的外网地址, 其余局域网的数据都需要先传送到这一个外网地址, 再由路由器转发到内网主机.

交换机则只有LAN口, 用来连接主机. 但是交换机的LAN接口往往会有许多个, 用来喂路由器扩充端口数.
在这里插入图片描述
其实这篇博文更多的还是自己学习的一些总结, 方便自己以后的回顾, 开篇提到的那些概念在以前我绝对是看的一头雾水, 但现在有种柳暗花明的感觉, 真的超级感谢网上各种优秀的博文和回答,

DNS在这篇博文里没有提到, 这里附上DNS的学习总结

参考

  1. 快速理解抽象的网络基本概念
  2. 互联网协议入门一
  3. 互联网协议入门二
  4. 有了IP地址, 为什么还要MAC地址 —车小胖的回答
  5. 百度词条: 子网掩码
  6. 路由器知识:你必须要搞懂WAN口, LAN口, MAC地址
  7. HTTP和HTTPS协议,看一篇就够了
发布了3 篇原创文章 · 获赞 2 · 访问量 81

猜你喜欢

转载自blog.csdn.net/weixin_40996518/article/details/105337686
今日推荐