10分钟带你快速了解计算机网络
我们学习计算机网络,肯定是要看7层网络体系的。分别是应用层,表示层,会话层,传输层,网络层,数据链路层和物理层。但是分得这么详细,工程上实现起来是很麻烦的,我们为了方便实现,进行了简化。如下所示:
下面我们开始研究:
先来看链接层,我们主要研究广域网和局域网。先来看WAN,主要由传统电话拨接,整合服务数字网络 (Integrated Services Digital Network, ISDN),非对称数位用路回路 (Asymmetric Digital Subscriber Line, ADSL)和电缆调制解调器 (Cable modem)。
接着来看局域网,局域网有多种实现方案,其中比较出名的是以太网,当然也有光纤。以太网的传输协议是CSMA/CD (Carrier Sen Multiple Access with Collision Detection) 。流程需要了解。
我们来看下MAC (Media Access Control) ,是网卡的编号,看一下其封装的格式:
里面还有一个细节:MTU (Maximum Transmission Unit, 最大传输单位)。虽然修改这个值可以减少拆包的概率,但是不是所有的网络都支持,所以不建议修改。
上面我们看到了,集线器有很多的缺点,碰撞的可能性太大了,我们需要去解决这个问题。先来看下,为什么会碰撞呢?是因为共享的。那么我们不共享就好了吧?引入了交换器的概念。
我们来看下交换器,交换器的特殊之处在于其内有一个特别的内存, 这个内存可以记录每个 switch port 与其连接的 PC 的 MAC 地址。所以可以直接进行通信。
总结下,网络硬件接口为以太网络,包括网络线、网络卡、Hub/Switch 等等。以太网络上面的传输使用网络卡卡号为基准的 MAC 讯框,配合 CSMA/CD 的标准来传送讯框,这就是硬件部分。
链接层的内容先到这里,下面我们接着看网络层IP。这个玩意是十分核心的,需要仔细来看。
先来看基础知识,首先要看的自然是IP的结构。IP分为IPv4和IPv6,我们主要关注前者。I
P 封包可以达到 65535 bytes 这么大,在比 MAC 大的情况下,我们的操作系统会对 IP 进行拆解的动作
我们从图中看到,每一行所占用的位数为 32 bits。详细解释如下:
∙Version(版本):宣告这个 IP 封包的版本,例如目前惯用的还是 IPv4 这个版本就在这里宣告。
∙IHL(Internet Header Length, IP表头的长度):告知这个 IP 封包的表头长度,使用的单位应该是字组 (word) ,一个字组为 4bytes 大小喔。
∙Type of Service(服务类型):这个项目的内容为『PPPDTRUU』,表示这个 IP 封包的服务类型,主要分为:PPP:表示此 IP 封包的优先度,目前很少使用;D:若为 0 表示一般延迟(delay),若为 1 表示为低延迟;T:若为 0 表示为一般传输量 (throughput),若为 1 表示为高传输量;R:若为 0 表示为一般可靠度(reliability),若为 1 表示高可靠度。UU:保留尚未被使用。
∙Total Length(总长度):指这个 IP 封包的总容量,包括表头与内容 (Data) 部分。最大可达
65535 bytes。
∙Identification(辨别码):我们前面提到 IP 袋子必须要放在 MAC 袋子当中。不过,如果 IP 袋子太大的话,就得先要将 IP 再重组成较小的袋子然后再放到 MAC 当中。而当 IP 被重组时,每个来自同一个 IP 的小袋子就得要有个标识符以告知接收端这些小袋子其实是来自同一个 IP 封包才行。 也就是说,假如 IP 封包其实是 65536 那么大 (前一个 Total Length 有规定), 那么这个 IP 就得要再被分成更小的 IP 分段后才能塞进 MAC 讯框中。那么每个小 IP 分段是否来自同一个 IP 资料,呵呵!那就是这个标识符的功用啦!
∙Flags(特殊旗标)这个地方的内容为『0DM』,其意义为:D:若为 0 表示可以分段,若为 1 表示不可分段M:若为 0 表示此 IP 为最后分段,若为 1 表示非最后分段。
∙Fragment Offt(分段偏移):表示目前这个 IP 分段在原始的 IP 封包中所占的位置。就有点像是序号啦,有这个序号才能将所有的小 IP 分段组合成为原本的 IP 封包大小嘛!透过 Total Length, Identification, Flags 以及这个 Fragment Offt 就能够将小 IP 分段在收受端组合起来啰!
∙Time To Live(TTL, 存活时间):表示这个 IP 封包的存活时间,范围为 0-255。当这个 IP 封包通过一个路由器时, TTL 就会减一,当 TTL 为 0 时,这个封包将会被直接丢弃。说实在的,要让 IP 封包通过 255 个路由器,还挺难的。
∙Protocol Number(协定代码):来自传输层与网络层本身的其他数据都是放置在 IP 封包当中的,我们可以在 IP 表头记载这个 IP 封包内的资料是啥, 在这个字段就是记载每种数据封包的内容啦!在这个字段记载的代码与相关的封包协议名称如下所示:
∙Header Checksum(表头检查码):用来检查这个 IP 表头的错误检验之用。
∙Source Address:还用讲吗?当然是来源的 IP 地址,从这里我们也知道 IP 是 32 位喔!
∙Destination Address:有来源还需要有目标才能传送,这里就是目标的 IP 地址。
∙Options (其他参数):这个是额外的功能,提供包括安全处理机制、路由纪录、时间戳、严格与宽松之来源路由等。
∙Padding(补齐项目):由于 Options 的内容不一定有多大,但是我们知道 IP 每个数据都必须要是 32 bits,所以,若 Options 的数据不足 32 bits 时,则由 padding 主动补齐。
我们主要关注TTL, Protocol, 来源地址与目标地址。
上面我们主要看了IP的结构,并且知道了32的IP地址是很重要的,这32的IP地址怎么使用,是个大学问。二进制数据实在是太难记了,我们8位为一组,分为4段。大概是这样0.0.0.0 一直到 255.255.255.255。当然,在实际应用中,不是这么分配的,就像我们每个人的姓名由姓和名组成,IP地址也是,由Net_ID (网域号码)与 Host_ID (主机号码)组成。为了方便管理,我们把IP进行了分级:
我们只需要关注ABC三级即可。
事情到这里并没有结束,由于IP数量的不足,我们把IP分为共有IP和私有IP。私有的IP的网段分为:
∙Class A:10.0.0.0 - 10.255.255.255
∙Class B:172.16.0.0 - 172.31.255.255
∙Class C:192.168.0.0 - 192.168.255.255
private IP的好处是可以保护内部的电脑,也可以增加上网的主机的数量。
我们前面管理IP地址,只是分为了网络地址+主机地址来管理,事实上,在企业内部进行管理IP地址的时候,也可以进行更加仔细的管理,比如一个公司有2个部门,想要分开来管理,就可以向主机地址借一位来作为网络地址。
于是我们就引入了子网掩码的概念了(Netmask)。我们来详细的看:
注意,子网掩码的概念是网络位全为1,主机位全为0。除此之外,还有2个保留地址,第一个是该网段的IP,最后一个是广播地址。
同时我们规定,A类地址的子网掩码是255.0.0.0,B类是255.255.0.0,C类地址的子网掩码是255.255.255.0。需要牢记。
下面我们来看无层级 IP: CIDR (Classless Interdomain Routing):
比如说C类某个IP的CIDR表示就是192.168.0.0/24
下面我们来看路由的概念,不同网络断之间的主机要如何进行通信呢?
每台主机都会有自己的路由表,大概流程是这样的:
∙查询 IP 封包的目标 IP 地址;
∙查询是否位于本机所在的网域之路由设定:
∙查询预设路由 (default gateway);
∙送出封包至 gateway 后,不理会封包流向。
我们可以借助于route来查看本机的路由表:
[root@www ~]# route -nKernel IP routing tableDestination Gateway Genmask Flags Metric Ref U Iface192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo0.0.0.0 192.168.0.254 0.0.0.0 UG 0 0 0 eth0# 上面输出的数据共有八个字段,你需要注意的有几个地方:# Destination :其实就是 Network 的意思,目的地的网域。# Gateway :就是该接口的 Gateway 那个 IP (一般指路由器)啦!若为 0.0.0.0 表示不需要额外的 IP;# Genmask :就是 Netmask 啦!与 Destination 组合成为一部主机或
网域;# Flags :共有多个旗标可以来表示该网域或主机代表的意义:# U:代表该路由可用;# G:代表该网域需要经由 Gateway 来帮忙转递;# H:代表该行路由为一部主机,而非一整个网域;# Iface :就是 Interface (接口) 的意思,网络接口
总结一下,我们学习了IP与MAC,我们肯定是需要绑定的,那么问题来了,我们怎么进行绑定呢,引入了链结层的 ARP 与 RARP 协定。 ARP (Address Resolution Protocol, 网络地址解析) 协议以及 RARP (Revers ARP, 反向网络地址解析),作用是在IP地址和MAC之间建立映射。