计算机网络学习的核心内容就是网络协议的学习。计算机网络协议同我们的语言一样,多种多样,可类比于人与人之间交流的语言(普通话、英语、法语等等),网络协议是为计算机网络中进行数据交换而建立的规则、标准或者说是约定的集合。而 ARPA 公司与 1977 年到 1979 年推出了一种名为 ARPANET 的网络协议受到了广泛的热捧,其中最主要的原因就是它推出了人尽皆知的TCP/IP标准网络协议
网络层次的划分
为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在 1978 年提出了"开放系统互联参考模型",即著名的 OSI/RM 模型(Open System Interconnection/Reference Model)
OSI 七层模型(自下而上)
- 物理层:物理层确保原始的数据可在各种物理媒体上传输,两个重要的设备名称
中继器(Repeater,也叫放大器)和集线器。 - 数据链路层:如何将数据组合成数据块,在数据链路层中称这种数据块为帧(frame);如何控制帧在物理信道上的传输,包括如何处理传输差错,两个重要设备名称:
网桥和交换机 - 网络层:IP 地址和路由选择。
- 传输层:TCP 和 UDP,确保数据的可靠传输。
- 会话层:建立、管理和终止会话。
- 表示层:数据的表示、安全和压缩。
- 应用层:为应用软件提供网络服务。
TCP/IP 模型
实际使用的互联网协议模型,简化为四个层次:
- 网络接口层
- 互联网层
- 传输层
- 应用层。
IP 地址
IP 地址,全称是“Internet Protocol Address”,中文名叫“互联网协议地址”。它就像你家的门牌号,用来在互联网上标识每一个设备,确保信息能准确无误地发送到正确的地点。
IP 地址相关词汇解释:
-
IPv4:这是目前最常用的 IP 地址版本,由四组数字组成,每组数字范围是 0 到 255,比如
192.168.1.1。 -
IPv6:由于 IPv4 地址逐渐不够用,IPv6 被设计出来,拥有更大的地址空间。它由八组四个十六进制数表示,比如
2001:0db8:85a3:0000:0000:8a2e:0370:7334。 -
公网 IP:这是由互联网服务提供商(ISP)分配给你的,全世界唯一的 IP 地址,就像你房子的门牌号。
-
私网 IP:在家庭或办公室内部网络中使用的 IP 地址,只在局域网内有效,不会直接暴露在互联网上,比如
192.168.x.x或10.x.x.x。 -
子网掩码:用来区分 IP 地址中的网络部分和主机部分,比如
255.255.255.0。 -
默认网关:通常是路由器的 IP 地址,是局域网内设备访问互联网的出口。
-
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 协议具有拥塞控制和流量控制机制,以避免网络过载。
为什么要三次握手?
-
客户端发送 SYN(同步序列编号)包:客户端向服务器发送一个 SYN 包,其中包含客户端的初始序列号。这个包告诉服务器,客户端希望建立连接。
-
服务器响应 SYN-ACK(同步-确认)包:服务器收到客户端的 SYN 包后,会发送一个 SYN-ACK 包作为响应。这个包包含服务器的初始序列号,并且是对客户端序列号的确认(ACK)。
-
客户端发送 ACK(确认)包:客户端收到服务器的 SYN-ACK 包后,会发送一个 ACK 包来确认服务器的序列号。至此,三次握手完成,TCP 连接建立。
三次握手的主要目的:
- 防止重复连接请求:通过序列号,可以避免旧的连接请求在网络延迟后到达服务器,导致不必要的连接建立。
- 确保双方的接收和发送能力:三次握手确保了客户端和服务器
都能够接收和发送数据,从而可以建立一个双向通信通道。
为什么要四次挥手?
-
主动方发送 FIN(结束)包:当一方(主动方)完成数据发送并准备关闭连接时,它会发送一个 FIN 包给另一方(被动方)。这个包表明主动方已经没有数据要发送了。
-
被动方发送 ACK(确认)包:被动方收到 FIN 包后,会发送一个 ACK 包作为响应,确认已经收到了主动方的结束请求。
-
被动方发送 FIN 包:被动方在发送完所有剩余数据后,也会发送一个 FIN 包给主动方,表明它也没有数据要发送了。
-
主动方发送最终的 ACK 包:主动方收到被动方的 FIN 包后,会发送最后一个 ACK 包作为响应,确认已经收到了被动方的结束请求。至此,四次挥手完成,TCP 连接被关闭。
四次挥手的主要原因:
-
确保数据传输的完整性:通过确保双方都发送了 FIN 包,可以避免一方在另一方还有数据未发送时关闭连接。
-
有序关闭连接:四次挥手允许双方在数据传输完成后,有序地关闭连接,而不是突然断开。
-
处理不同步的数据流:由于 TCP 是全双工通信,双方都可以独立地开始和结束数据发送,因此需要四次挥手来分别确认双方的结束请求。
-
处理延迟确认:TCP 连接可能存在延迟确认的情况,四次挥手确保了即使在这种情况下,连接也能被正确关闭。
名词解释
- "sequance"序列号;
- ack:"acknowledge"确认号
- SYN:"synchronize"请求同步标志
- ACK:"acknowledge"确认标志"
- FIN:"Finally"结束标志。
UDP
UDP
用户数据报协议,是面向无连接的通讯协议,UDP 数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。
UDP 通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。
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 地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。