8分钟构建你的网络知识体系

132 阅读10分钟

pexels-tomas-malik-793526-1998439.jpg

计算机网络学习的核心内容就是网络协议的学习。计算机网络协议同我们的语言一样,多种多样,可类比于人与人之间交流的语言(普通话、英语、法语等等),网络协议是为计算机网络中进行数据交换而建立的规则、标准或者说是约定的集合。而 ARPA 公司与 1977 年到 1979 年推出了一种名为 ARPANET 的网络协议受到了广泛的热捧,其中最主要的原因就是它推出了人尽皆知的TCP/IP标准网络协议

网络层次的划分

为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在 1978 年提出了"开放系统互联参考模型",即著名的 OSI/RM 模型(Open System Interconnection/Reference Model)

OSI 七层模型(自下而上)

  • 物理层物理层确保原始的数据可在各种物理媒体上传输,两个重要的设备名称 中继器(Repeater,也叫放大器)和集线器
  • 数据链路层:如何将数据组合成数据块,在数据链路层中称这种数据块为帧(frame);如何控制帧在物理信道上的传输,包括如何处理传输差错,两个重要设备名称:网桥和交换机
  • 网络层:IP 地址和路由选择。
  • 传输层:TCP 和 UDP,确保数据的可靠传输。
  • 会话层:建立、管理和终止会话。
  • 表示层:数据的表示、安全和压缩。
  • 应用层:为应用软件提供网络服务。

TCP/IP 模型

实际使用的互联网协议模型,简化为四个层次:

  • 网络接口层
  • 互联网层
  • 传输层
  • 应用层。

image.png

image.png

IP 地址

IP 地址,全称是“Internet Protocol Address”,中文名叫“互联网协议地址”。它就像你家的门牌号,用来在互联网上标识每一个设备,确保信息能准确无误地发送到正确的地点。

image.png

IP 地址相关词汇解释:

  1. IPv4:这是目前最常用的 IP 地址版本,由四组数字组成,每组数字范围是 0 到 255,比如192.168.1.1

  2. IPv6:由于 IPv4 地址逐渐不够用,IPv6 被设计出来,拥有更大的地址空间。它由八组四个十六进制数表示,比如2001:0db8:85a3:0000:0000:8a2e:0370:7334

  3. 公网 IP:这是由互联网服务提供商(ISP)分配给你的,全世界唯一的 IP 地址,就像你房子的门牌号。

  4. 私网 IP:在家庭或办公室内部网络中使用的 IP 地址,只在局域网内有效,不会直接暴露在互联网上,比如192.168.x.x10.x.x.x

  5. 子网掩码:用来区分 IP 地址中的网络部分和主机部分,比如255.255.255.0

  6. 默认网关:通常是路由器的 IP 地址,是局域网内设备访问互联网的出口。

  7. DNS:域名系统,用来将域名(如www.google.com)来包装IP地址,方便记忆

私有地址

私有地址(private address)也叫专用地址,它们不会在全球使用,只具有本地意义

A 类私有地址:10.0.0.0/8,范围是:10.0.0.0~10.255.255.255

B 类私有地址:172.16.0.0/12,范围是:172.16.0.0~172.31.255.255

C 类私有地址:192.168.0.0/16,范围是:192.168.0.0~192.168.255.255

IP 地址分类

IP 地址根据其第一位数字被分为不同的类别,这被称为 IP 地址的"类"。IPv4 地址分为 A、B、C、D 和 E 五类,其中 A、B 和 C 类是最常见的,用于不同的网络规模。

A 类地址 :1.0.0.0 到 126.255.255.255

  • 子网掩码:默认为 255.0.0.0,意味着前 8 位是网络地址,后 24 位是主机地址。

B 类地址: 128.0.0.0 到 191.255.255.255

  • 子网掩码:默认为 255.255.0.0,意味着前 16 位是网络地址,后 16 位是主机地址。

C 类地址:192.0.0.0 到 223.255.255.255

  • 子网掩码:默认为 255.255.255.0,意味着前 24 位是网络地址,后 8 位是主机地址。

D 类地址 :224.0.0.0 到 239.255.255.255

E 类地址:240.0.0.0 到 255.255.255.255

想象一下,IP 地址就像电话号码。A、B、C 类地址就像是不同地区的电话号码,有的地区很大(A 类),有的地区中等(B 类),有的地区很小(C 类)。

  • A 类地址:就像大城市的电话号码,有很多号码供很多人使用。
  • B 类地址:就像中等城市的电话号码,城市数量不多,但每个城市里有很多号码。
  • C 类地址:就像小城镇的电话号码,有很多这样的城镇,但每个城镇的号码不多。
  • D 类和 E 类地址:就像特殊服务的电话号码,比如紧急电话或测试电话,不用于普通通信。

子网掩码

每个 IP 地址都有一个子网掩码(一个 32 位的数字),它告诉我们哪些数字是网络地址(就像区号),哪些是主机地址(就像电话号码的其余部分),它在 IP 地址的分配管理中起着至关重要的作用,特别是在大型网络或需要划分多个子网络的场景中。

假设你有一个 C 类 IP 地址范围 192.168.1.0 到 192.168.1.255,使用默认的 C 类子网掩码 255.255.255.0:

  • 网络地址:192.168.1.0(网络地址总是以 0 结尾)
  • 广播地址:192.168.1.255(用于发送到网络上所有主机的广播消息)
  • 可用主机地址:从 192.168.1.1 到 192.168.1.254(除去网络地址和广播地址)

TCP/IP 协议

TCP 是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接

IP 层是接收和发送 TCP 或 UDP 层的数据包,IP 数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)

TCP/IP 协议的主要特点:

  • 无连接性:IP 协议是无连接的,每个数据包独立发送,不建立端到端的连接。
  • 尽最大努力交付:IP 协议不保证数据包的顺序或可靠性,只负责将数据包发送出去。
  • 面向字节流:TCP 协议将数据视为字节流,提供有序、可靠、全双工的字节流传输服务。
  • 拥塞控制和流量控制:TCP 协议具有拥塞控制和流量控制机制,以避免网络过载。

为什么要三次握手?

image.png

  1. 客户端发送 SYN(同步序列编号)包:客户端向服务器发送一个 SYN 包,其中包含客户端的初始序列号。这个包告诉服务器,客户端希望建立连接。

  2. 服务器响应 SYN-ACK(同步-确认)包:服务器收到客户端的 SYN 包后,会发送一个 SYN-ACK 包作为响应。这个包包含服务器的初始序列号,并且是对客户端序列号的确认(ACK)。

  3. 客户端发送 ACK(确认)包:客户端收到服务器的 SYN-ACK 包后,会发送一个 ACK 包来确认服务器的序列号。至此,三次握手完成,TCP 连接建立。

三次握手的主要目的:

  • 防止重复连接请求:通过序列号,可以避免旧的连接请求在网络延迟后到达服务器,导致不必要的连接建立
  • 确保双方的接收和发送能力:三次握手确保了客户端和服务器都能够接收和发送数据,从而可以建立一个双向通信通道。

为什么要四次挥手?

image.png

  1. 主动方发送 FIN(结束)包:当一方(主动方)完成数据发送并准备关闭连接时,它会发送一个 FIN 包给另一方(被动方)。这个包表明主动方已经没有数据要发送了。

  2. 被动方发送 ACK(确认)包:被动方收到 FIN 包后,会发送一个 ACK 包作为响应,确认已经收到了主动方的结束请求。

  3. 被动方发送 FIN 包:被动方在发送完所有剩余数据后,也会发送一个 FIN 包给主动方,表明它也没有数据要发送了。

  4. 主动方发送最终的 ACK 包:主动方收到被动方的 FIN 包后,会发送最后一个 ACK 包作为响应,确认已经收到了被动方的结束请求。至此,四次挥手完成,TCP 连接被关闭。

四次挥手的主要原因:

  • 确保数据传输的完整性:通过确保双方都发送了 FIN 包,可以避免一方在另一方还有数据未发送时关闭连接。

  • 有序关闭连接:四次挥手允许双方在数据传输完成后,有序地关闭连接,而不是突然断开。

  • 处理不同步的数据流:由于 TCP 是全双工通信,双方都可以独立地开始和结束数据发送,因此需要四次挥手来分别确认双方的结束请求。

  • 处理延迟确认:TCP 连接可能存在延迟确认的情况,四次挥手确保了即使在这种情况下,连接也能被正确关闭。

名词解释

  • "sequance"序列号;
  • ack:"acknowledge"确认号
  • SYN:"synchronize"请求同步标志
  • ACK:"acknowledge"确认标志"
  • FIN:"Finally"结束标志。

UDP

UDP用户数据报协议,是面向无连接的通讯协议,UDP 数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。

UDP 通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。

image.png UDP 与 TCP 位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP 不被应用于那些使用虚电路的面向连接的服务,UDP 主要用于那些面向查询---应答的服务,例如 NFS。相对于 FTP 或 Telnet,这些服务需要交换的信息量较小。

每个 UDP 报文分 UDP 报头和 UDP 数据区两部分。报头由四个 16 位长(2 字节)字段组成,分别说明该报文的源端口、目的端口、报文长度以及校验值。UDP 报头由 4 个域组成,其中每个域各占用 2 个字节,具体如下:

(1)源端口号;

(2)目标端口号;

(3)数据报长度;

(4)校验值。

NAT

NAT 网络地址转换(Network Address Translation)属接入广域网(WAN)技术,是一种 将私有(保留)地址转化为合法 IP 地址的转换技术,它被广泛应用于各种类型 Internet 接入方式和各种类型的网络中。原因很简单,NAT 不仅完美地解决了 lP 地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

DHCP

DHCP 动态主机设置协议(Dynamic Host Configuration Protocol) 是 一个局域网的网络协议,使用 UDP 协议工作

主要有两个用途:给内部网络或网络服务供应商自动分配 IP 地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。