title: 计算机网络基础知识
subtitle:
date: 2024-05-26T20:41:07+08:00
slug: 297df01
draft: false
description:
keywords:
license: CC
comment: true
weight: 0
tags:
- 计算机网络协议
- TCP
- UDP
- 网络协议
categories: - 计算机网络
hiddenFromHomePage: false
hiddenFromSearch: false
hiddenFromRss: false
hiddenFromRelated: false
summary:
resources: - name: featured-image
src: featured-image.jpg - name: featured-image-preview
src: featured-image-preview.jpg
toc: true
math: true
lightgallery: true
password:
message:
repost:
enable: false
url:
See details front matter: https://fixit.lruihao.cn/documentation/content-management/introduction/#front-matter
基础知识
MAC 地址
(1)计算机联网必须的硬件是安装在计算机上的网卡
(2)通信中,用来标识主机身份的地址就是制作在网卡上的一个硬件地址。每块网卡在 生产出来后,都有一个全球唯一的编号来标识自己,这个地址就是 MAC 地址,即网卡的 物理地址
(3)MAC 地址由 48 位二进制数组成,通常分成六段,用 16 进制表示,其中前 24 位是生 产厂商向 IEEE 申请的厂商编号,后 24 位是网络接口卡序列号
(4)MAC 地址的第 8 位为 0 时,表示该 MAC 地址为单播地址;为 1 时,表示该 MAC 地址 为组播 MAC 地址。
(5)单播的发送方式为一对一,即一台主机发送的数据只发送给另一台主机。
(6)广播方式为一对多,即一台主机发送一个数据,在这个网段的所有主机都能收到
(7)组播方式介于单播和广播之间,也是一对多,但接收者不是网段上的全体成员,而 是一个特定的组的成员。
以太网帧格式:
IP
IP 在 TCP/IP 参考模型中处于第三层,也就是网络层。
网络层的主要作用是:实现主机与主机之间的通信,也叫点对点(end to end)通信。
IP 包格式
IP 地址的基础知识
IP 地址(IPv4 地址)由 32
位正整数来表示,IP 地址在计算机是以二进制的方式处理的。
人类为了方便记忆采用了点分十进制的标记方式,也就是将 32 位 IP 地址以每 8 位为组,共分为 4 组,每组以「.」隔开,再将每组转换成十进制。
IP 地址分类
A 类: 0.0.0.0 ~ 127.255.255.255
B 类: 128.0.0.0 ~ 191.255.255.255
C 类: 192.0.0.0 ~ 223.255.255.255
A 类就是 32 位里面,第 1 位是 0,后面 7 位是网络号,剩下的都是主机号(24 位)
B 类就是 32 位里面,前 2 位是 10,后面 14 位为网络号,剩下都是主机号(16 位)
C 类就是 32 位里面,前 3 位是 110,后面 21 位为网络号,剩下都是主机号(8 位)
最大主机数计算方法:
假如主机号位数是 n,那么最大主机数就是2^n - 2
减 2 是因为在 IP 地址中,有两个 IP 是特殊的,分别是主机号全为 1 和 全为 0 地址。
主机号全为 1 指定某个网络下的所有主机,用于广播
主机号全为 0 指定某个网络
广播地址作用
广播地址作用: 广播地址用于在同一个链路中相互连接的主机之间发送数据包。
D,E 类地址
什么是 D、E 类地址?
而 D 类和 E 类地址是没有主机号的,所以不可用于主机 IP,D 类常被用于多播,E 类是预留的分类,暂时未使用。
多播作用
多播用于将包发送给特定组内的所有主机。
无分类地址 CIDR
因为 IP 分类存在许多缺点,所以后面提出了无分类地址的方案,即 CIDR。
这种方式不再有分类地址的概念,32 比特的 IP 地址被划分为两部分,前面是网络号,后面是主机号。
表示形式 a.b.c.d/x,其中 /x 表示前 x 位属于网络号, x 的范围是 0 ~ 32,这就使得 IP 地址更加具有灵活性。
比如 10.100.122.2/24,这种地址表示形式就是 CIDR,/24 表示前 24 位是网络号,剩余的 8 位是主机号。
还有另一种划分网络号与主机号形式,那就是子网掩码,掩码的意思就是掩盖掉主机号,剩余的就是网络号。
子网划分
假设对 C 类地址进行子网划分,网络地址 192.168.1.0,使用子网掩码 255.255.255.192 对其进行子网划分。
C 类地址中前 24 位是网络号,最后 8 位是主机号,根据子网掩码可知从 8 位主机号中借用 2 位作为子网号。
由于子网网络地址被划分成 2 位,那么子网地址就有 4 个,分别是 00、01、10、11,具体划分如下图:
划分后的 4 个子网如下表格:
IP 地址与路由控制
TCP
TCP 报文格式
TCP 报文由首部和数据两部分组成。首部一般由 20-60 字节(Byte)构成,长度可变。其中前 20B 格式固定,后 40B 为可选。
因为,TCP 报文还得传给下层网络层,封装成 IP 包,而一个 IP 包最大长度为 65535,同时 IP 包首部也包含最少 20B,所以一个 IP 包或 TCP 包可以包含的数据部分最大长度为 65535-20-20=65495B。
TCP 报文中数据部分是可选的,即 TCP 报文可以不包含数据(同理 IP 包也可以不包含数据)。不含数据的 TCP 报文通常是一些确认和控制信息类的报文,如 TCP 建立连接时的三次握手和 TCP 终止时的四次挥手等。
1、源端口号(Source Port)
长度为 16 位,指明发送数据的进程。
2、目的端口号(Destination Port)
长度为 16 位,指明目的主机接收数据的进程。
3、序号(Sequence Number)
也称为序列号,长度为 32 位,序号用来标识从 TCP 发送端向接入端发送的数据字节流进行编号,可以理解成对字节流的计数。
4、确认号(Acknowledgement Number)
长度为 32 位,确认号包含发送确认的一端所期望收到的下一个序号。确认号只有在 ACK 标志为 1 时才有效。
5、首部长度
长度为 4 位,用于表示 TCP 报文首部的长度。用 4 位(bit)表示,十进制值就是[0,15],一个 TCP 报文前 20 个字节是必有的,后 40 个字节根据情况可能有可能没有。如果 TCP 报文首部是 20 个字节,则该位应是 20/4=5。
6、保留位(Reserved)
长度为 6 位,必须是 0,它是为将来定义新用途保留的。
7、标志(Code Bits)
长度为 6 位,在 TCP 报文中不管是握手还是挥手还是传数据等,这 6 位标志都很重要。6 位从左到右依次为:
URG:紧急标志位,说明紧急指针有效;
ACK:确认标志位,多数情况下空,说明确认序号有效;
PSH:推标志位,置位时表示接收方应立即请求将报文交给应用层;
RST:复位标志,用于重建一个已经混乱的连接;
SYN:同步标志,该标志仅在三次握手建立 TCP 连接时有效
FIN:结束标志,带该标志位的数据包用于结束一个 TCP 会话。
8、窗口大小(Window Size)
长度为 16 位,TCP 流量控制由连接的每一端通过声明的窗口大小来提供。
9、检验和(Checksum)
长度为 16 位,该字段覆盖整个 TCP 报文端,是个强制性的字段,是由发送端计算和存储,到接收端后,由接收端进行验证。
10、紧急指针(Urgent Pointer)
长度为 16 位,指向数据中优先部分的最后一个字节,通知接收方紧急数据的长度,该字段在 URG 标志置位时有效。
11、选项(Options)
长度为 0-40B(字节),必须以 4B 为单位变化,必要时可以填充 0。通常包含:最长报文大小(MaximumSegment Size,MSS)、窗口扩大选项、时间戳选项、选择性确认(Selective ACKnowlegement,SACK)等。
12、数据
UDP
UDP 报文格式
UDP 数据报由首部和数据两部分组成,其中首部只有 8B(字节)。
1、源端口号(Source Port)
长度为 16 位,指明发送数据的进程。
2、目的端口号(Destination Port)
长度为 16 位,指明目的主机接收数据的进程。
3、长度
长度为 16 位,该字段值为报头和数据两部分的总字节数。
4、检验和(Checksum)
长度为 16 位,UDP 检验和作用于 UDP 报头和 UDP 数据的所有位。由发送端计算和存储,由接收端校验。
5、数据
CSMA/CD 协议 CSMA/CA 协议
CSMA/CD 协议是载波监听多点接入/碰撞检测,是一种以太网中使用的介质访问控制方法。
载波监听多点接入:多个设备共享一个信道,当一个设备发送数据时,其他设备不能发送数据,必须等待。
碰撞检测:当一个设备发送数据时,其他设备不能发送数据,必须等待。当一个设备发送数据时,其他设备不能发送数据,必须等待。
CAMA/CA 用于无线网络中(包括蜂窝数据网络)
RIP 和 OSPF
RIP(Routing Information Protocol,路由信息协议)是一种基于距离矢量
的路由协议,用于在小型到中型网络中动态地分发路由信息。其工作原理如下:
-
距离矢量算法:
- RIP 使用距离矢量算法(Distance Vector Algorithm),其核心思想是通过不断地向相邻路由器通告(即交换)路由信息来更新路由表。
- 在这类算法中,路由器会保存一张路由表,表中包含到达每个目的网络的最短距离(以跳数表示)和下一跳路由器的地址。
-
周期性更新:
- RIP 路由器会定期(默认每 30 秒)向其所有相邻路由器广播其路由表。这种方式被称为“路由更新”。
- 当一个路由器收到一个更新包时,它会检查包中的每一项路由,看是否有更短的路径。如果有,它会更新自己的路由表。
-
跳数限制:
- RIP 使用跳数作为衡量路径代价的度量标准。每经过一个路由器就算作一个跳(hop)。
- RIP 设置了一个最大跳数限制为 15 跳,这意味着如果某目的网络的跳数超过 15,RIP 将认为该网络不可达。
-
防环机制:
- 水平分割(Split Horizon):防止路由器将从某个接口学到的路由信息再次通过同一接口发送出去,从而减少路由环路的可能性。
- 毒性逆转(Route Poisoning):当某条路由不可达时,路由器会将该路由的跳数设置为 16(不可达)并通告给其他路由器。
- 触发更新(Triggered Updates):当路由发生变化时,立即向相邻路由器发送更新,而不是等待常规的更新周期。
-
路由计时器:
- 路由更新计时器:定期发送路由更新,默认每 30 秒一次。
- 路由老化计时器:如果在 180 秒内没有收到某条路由的更新,则认为该路由可能不可用。
- 路由失效计时器:如果在 240 秒内没有收到某条路由的更新,则认为该路由不可用,并将其从路由表中删除。
通过这些机制,RIP 能够在动态变化的网络环境中更新和维护路由表,但由于其跳数限制和收敛速度慢等问题,它通常适用于较小规模的网络。
OSPF
OSPF(Open Shortest Path First,开放最短路径优先)是一种链路状态路由协议
,广泛应用于大型复杂网络中。与基于距离矢量的 RIP 不同,OSPF 使用链路状态算法(Link State Algorithm)来计算路由,并具有更快的收敛速度和更高的可扩展性。以下是 OSPF 的工作原理和关键特性:
工作原理
-
链路状态广告(LSA):
- OSPF 使用链路状态广告(Link State Advertisements, LSA)来通告网络拓扑信息。
- 每个路由器生成 LSAs,并将其发送给同一区域(area)内的所有其他路由器。
- LSAs 包含关于路由器接口状态、链路代价(通常基于带宽)、邻接关系等信息。
-
链路状态数据库(LSDB):
- 每个 OSPF 路由器维护一份链路状态数据库,包含该区域内所有路由器的 LSAs。
- LSDB 是整个网络拓扑的完整视图,所有区域内的路由器都共享相同的 LSDB。
-
Dijkstra 算法:
- OSPF 使用 Dijkstra 算法(最短路径优先算法)来计算从自身到所有网络目的地的最短路径。
- 基于 LSDB,路由器计算出一棵最短路径树(Shortest Path Tree, SPT),并据此更新其路由表。
-
区域划分:
- OSPF 支持将自治系统(AS)划分为多个区域(Area),以简化管理和优化性能。
- 核心区域(Backbone Area,即 Area 0)连接其他所有区域,并负责跨区域的路由信息交换。
- 每个区域内的路由器只需了解本区域的详细拓扑,减少了路由器的计算和存储负担。
-
邻接关系和路由更新:
- 路由器通过发送 Hello 报文在同一子网内建立邻接关系。
- 邻接路由器之间交换 LSAs,确保 LSDB 的同步。
- OSPF 采用可靠的传输机制,确保 LSAs 不会丢失,并通过泛洪(Flooding)机制将 LSAs 传播到整个网络。
关键特性
-
快速收敛:
- OSPF 在网络拓扑发生变化时能够迅速更新路由表,提供较快的收敛速度。
-
无类域间路由(CIDR)支持:
- OSPF 支持可变长度子网掩码(VLSM),允许更高效的 IP 地址利用。
-
负载均衡:
- OSPF 支持多条等价路径的负载均衡,增加网络冗余和可靠性。
-
路由认证:
- OSPF 支持多种认证机制(如简单密码认证和 MD5),提高了路由信息的安全性。
-
可扩展性:
- 通过区域划分和层次化设计,OSPF 能够有效管理大型网络。
-
多播更新:
- OSPF 使用多播地址(224.0.0.5 和 224.0.0.6)发送路由更新,减少了对非 OSPF 设备的干扰。
总结
OSPF 作为一种链路状态路由协议,具有快速收敛、可扩展性强、支持多播更新和负载均衡等优点,广泛应用于大型企业网络和服务提供商网络中。其复杂的功能和灵活的配置选项使其在高性能和高可靠性要求的网络环境中表现出色。
网络协议组成
网络协议由 3 个要素组成,分别是语法、语义和同步。
(1)语法,即数据与控制信息的结构或格式;
(2)语义,即需要发出何种控制信息,完成何种动作以及做出何种响应;
(3)同步,即事件顺序的详细说明
数据经历总时延
发送时延 -->发送时延 = 数据包大小 / 链路带宽
传播时延 --> 传播时延 = 链路距离 / 信号传播速度
处理时延
排队时延
排队时延 是四种时延中随时间变化最大的。这是因为:
排队时延直接受到网络流量和拥塞情况的影响,这些因素在不同时间段可能会有很大的波动。
在高流量时段,排队时延可能会显著增加,甚至导致网络拥塞。
在低流量时段,排队时延可能会非常小或接近于零。
IEEE802 局域网标准
LAN(Localareanetwork,局域网)是一个相对与 WAN(Wideareanetwork,广域网)而言的概念。
IEEE 802.3(有线)
(以太网是采用目前最为通用的通信标准的一种局域网)
IEEE 802.3u 100Mb/s 快速以太网
IEEE 802.3z 光纤介质1Gb/s 以太网标准规范
IEEE 802.3ab 双绞线实现1Gb/s以太网标准规范
IEEE 802.3ae 光纤10Gb/s 以太网标准
IEEE 802.3ba 实现100Gb/s 以太网标准
IEEE 802.11(无线)
IEEE 802.11a 载波频率5GHz速率最高可达54M/s
IEEE 802.11b 载波频率2.4GHz速率最高可达11Mb/s
IEEE 802.11g 载波频率2.4GHz速率最高可达54Mb/s
IEEE 802.11n 速率最高可达600Mb/s
11n 的三大优势:纯属速度快、覆盖范围广、兼容性强。
网络模型
OSI 七层网络模型
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理层
网络中常见的设备
集线器: 工作在物理层
中继器:工作在物理层
交换机: 工作在数据链路层
网桥: 工作在数据链路层
路由器: 工作在网络层
网关: 工作在应用层
各层传输的数据单元(Protocol Data Unit)
https://zh.wikipedia.org/wiki/协议数据单元
物理层: 比特流(bit)
数据链路层: 数据帧(frame)
网络层: 数据包(packet)
传输层:数据段(segment)-->TCP
数据报(datagram) --> UDP
应用层: 报文(message)
TCP/IP 网络模型
- 应用层
- 传输层
- 网络层
- 网络接口层