我们学习计算机网络,肯定是要看7层网络体系的。分别是应用层,表示层,会话层,传输层,网络层,数据链路层和物理层。但是分得这么详细,工程上实现起来是很麻烦的,我们为了方便实现,进行了简化。如下所示:

计算机网络的三个基本概念(10分钟带你快速了解计算机网络)(1)


下面我们开始研究:

先来看链接层,我们主要研究广域网和局域网。先来看WAN,主要由传统电话拨接,整合服务数字网络 (Integrated Services Digital Network, ISDN),非对称数位用路回路 (Asymmetric Digital Subscriber Line, ADSL)和电缆调制解调器 (Cable modem)。

接着来看局域网,局域网有多种实现方案,其中比较出名的是以太网,当然也有光纤。以太网的传输协议是CSMA/CD (Carrier Sense Multiple Access with Collision Detection) 。流程需要了解。

我们来看下MAC (Media Access Control) ,是网卡的编号,看一下其封装的格式:

计算机网络的三个基本概念(10分钟带你快速了解计算机网络)(2)

里面还有一个细节:MTU (Maximum Transmission Unit, 最大传输单位)。虽然修改这个值可以减少拆包的概率,但是不是所有的网络都支持,所以不建议修改。

上面我们看到了,集线器有很多的缺点,碰撞的可能性太大了,我们需要去解决这个问题。先来看下,为什么会碰撞呢?是因为共享的。那么我们不共享就好了吧?引入了交换器的概念。

计算机网络的三个基本概念(10分钟带你快速了解计算机网络)(3)


计算机网络的三个基本概念(10分钟带你快速了解计算机网络)(4)

我们来看下交换器,交换器的特殊之处在于其内有一个特别的内存, 这个内存可以记录每个 switch port 与其连接的 PC 的 MAC 地址。所以可以直接进行通信。

总结下,网络硬件接口为以太网络,包括网络线、网络卡、Hub/Switch 等等。以太网络上面的传输使用网络卡卡号为基准的 MAC 讯框,配合 CSMA/CD 的标准来传送讯框,这就是硬件部分。

链接层的内容先到这里,下面我们接着看网络层IP。这个玩意是十分核心的,需要仔细来看。

先来看基础知识,首先要看的自然是IP的结构。IP分为IPv4和IPv6,我们主要关注前者。IP 封包可以达到 65535 bytes 这么大,在比 MAC 大的情况下,我们的操作系统会对 IP 进行拆解的动作


计算机网络的三个基本概念(10分钟带你快速了解计算机网络)(5)

我们从图中看到,每一行所占用的位数为 32 bits。详细解释如下:

我们主要关注TTL, Protocol, 来源地址与目标地址。

上面我们主要看了IP的结构,并且知道了32的IP地址是很重要的,这32的IP地址怎么使用,是个大学问。二进制数据实在是太难记了,我们8位为一组,分为4段。大概是这样0.0.0.0 一直到 255.255.255.255。当然,在实际应用中,不是这么分配的,就像我们每个人的姓名由姓和名组成,IP地址也是,由Net_ID (网域号码)与 Host_ID (主机号码)组成。为了方便管理,我们把IP进行了分级:


计算机网络的三个基本概念(10分钟带你快速了解计算机网络)(6)

我们只需要关注ABC三级即可。

事情到这里并没有结束,由于IP数量的不足,我们把IP分为共有IP和私有IP。私有的IP的网段分为:


private IP的好处是可以保护内部的电脑,也可以增加上网的主机的数量。

我们前面管理IP地址,只是分为了网络地址 主机地址来管理,事实上,在企业内部进行管理IP地址的时候,也可以进行更加仔细的管理,比如一个公司有2个部门,想要分开来管理,就可以向主机地址借一位来作为网络地址。

于是我们就引入了子网掩码的概念了(Netmask)。我们来详细的看:


计算机网络的三个基本概念(10分钟带你快速了解计算机网络)(7)


注意,子网掩码的概念是网络位全为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

下面我们来看路由的概念,不同网络断之间的主机要如何进行通信呢?

每台主机都会有自己的路由表,大概流程是这样的:

我们可以借助于route来查看本机的路由表:

[root@www ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.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之间建立映射。

我们想要通信时,会发起ARP请求,接收方会把MAC地址传回,然后就可以通信了,为了进行优化,我们引入了ARP表来进行缓存。

我们可以使用ifconfig eth0来获取本机的mac地址。

可以使用arp -n来获取arp表格(20分钟更新一次)

到现在这里还有一个问题,我们需要保证网络连接的正确性,引入了ICMP ,全名是『 Internet Control Message Protocol, 因特网讯息控制协议 』。ICMP 是一个错误侦测与回报的机制,最大的功能就是可以确保我们网络的联机状态与联机的正确性。封装在IP层。

网络层的介绍到此为止,我们下面来学习传输层。主要学习TCP/UDP。这两个是贼重要的。

先来看TCP。

计算机网络的三个基本概念(10分钟带你快速了解计算机网络)(8)

先来详细分析下:

大概看了下TCP包的内容,下面我们来看下其中比较重要的地方:

端口是很重要的,我们在写程序的时候,不要占用常用程序的端口。接下来重要的是三次握手和四次挥手,用于建立连接和断开连接。详细过程比较重要。

看完TCP,我们来看UDP,User Datagram Protocol,长成这样:

计算机网络的三个基本概念(10分钟带你快速了解计算机网络)(9)

我们需要区分TCP和UDP,这个玩意,在面试中是很常见的。


最后我们来看应用层,为了上网,我们可以使用IP地址,但是基本没有人可以记住,所以我们引入了网址的概念,配个DNS(Domain Name System),我们实现了网址和IP地址的转换。

我们来看下,如果我们的计算机需要联网,我们需要什么?IP,Netmask,Network,Broadcast,Gateway和DNS。

总结下,比较常用的概念:Router(路由器),FireWall(防火墙),NAT,DHCP,DNS,Proxy。

写在最后

更多优质资源,请关注我的博客。https://haojunsheng.github.io/ 以及「区块链指北」

,