计算机网络基础复习
一、网络层次划分
OSI七层模型
1、物理层
物理层负责通过机械、电气、功能和过程特性,在物理介质上透明传输原始比特流(0/1),核心设备是中继器和集线器,不涉及数据解析或逻辑控制(无寻址与纠错)。
核心作用:
-
为上层提供物理介质:为数据链路层提供可用的比特流传输通道。
-
透明传输:不关心数据内容,只确保比特流的正确发送与接收。
2、数据链路层
数据链路层负责将网络层的数据封装成帧,通过MAC寻址、差错控制和流量管理,在相邻节点间实现可靠传输,核心设备包括交换机和网桥,典型协议是以太网。
核心作用
-
物理地址寻址:通过MAC地址标识设备(如以太网帧中的源/目的MAC)。
-
可靠性与效率:在物理层基础上,通过检错、重发、流量控制等机制保证数据传输的可靠性。
3、网络层
网络层通过IP协议实现全球互联,核心任务是路由选择和逻辑寻址,关键设备是路由器,数据以IP数据报形式传输,配套协议包括ICMP、ARP等。
核心功能
-
路由选择(Routing):决定数据包从源主机到目标主机的最佳路径(如路由器根据路由表转发)。
-
逻辑寻址(Logical Addressing):使用IP地址(如
192.168.1.1
)唯一标识网络中的设备,实现跨网络通信。 -
数据封装:将传输层的数据段封装成IP数据报(Packet),添加源/目标IP地址。
-
拥塞控制:避免网络过载(如通过ICMP协议反馈拥塞情况)。
关键特点
-
基本单位:IP数据报(Packet)。
-
核心协议:
-
IP协议(Internet Protocol):提供不可靠、无连接的传输服务(不保证数据到达)。
-
ICMP协议:传递网络状态信息(如
ping
命令、丢包通知)。 -
ARP协议:将IP地址解析为MAC地址(如局域网通信)。
-
RARP协议:反向解析,通过MAC地址获取IP地址(已淘汰,现用DHCP替代)。
-
-
重要设备:路由器(Router)——连接不同网络,基于IP地址转发数据
4、传输层
传输层通过TCP(可靠)和UDP(高效)协议实现端到端通信,核心任务是数据分段、差错控制、流量控制,关键设备是网关,数据以段(Segment)为单位传输。
1. 核心功能
-
端到端通信:提供主机到主机(进程到进程)的数据传输服务,确保数据从发送方应用层正确传递到接收方应用层。
-
数据传输方式:
-
可靠传输(TCP):确保数据不丢失、不重复、有序、无差错(如网页浏览、文件传输)。
-
不可靠但高效传输(UDP):不保证可靠性,但延迟低、速度快(如视频通话、在线游戏)。
-
-
数据分段与重组:将上层(应用层)的大块数据分割成适合网络传输的段(Segment),并在接收端重组。
-
差错控制:通过校验和(Checksum)检测数据错误,TCP还提供确认应答(ACK)和超时重传机制。
-
流量控制:调节发送速率,防止接收方处理不过来(如TCP的滑动窗口机制)。
-
多路复用与分用:通过端口号(Port)区分不同应用程序(如HTTP用80端口,DNS用53端口)。
2. 关键特点
-
基本单位:段(Segment)或报文(TCP/UDP报文)。
-
核心协议:
-
TCP(传输控制协议):面向连接、可靠传输(三次握手建立连接,四次挥手释放连接)。
-
UDP(用户数据报协议):无连接、不可靠但高效(无需建立连接,直接发送数据)。
-
-
重要设备:网关(Gateway)——连接不同协议的网络(如转换TCP/IP与ATM协议)。
3. 核心作用
-
为应用层屏蔽网络细节:应用层无需关心数据如何路由或传输(网络层管路由,传输层管端到端传输)。
-
确保通信质量:根据需求选择TCP(可靠)或UDP(高效)。
4. 与网络层的关系
-
网络层:负责将数据包从源主机路由到目标主机(基于IP地址)。
-
传输层:负责将数据从主机上的某个进程传递到另一主机的对应进程(基于端口号)。
特性 | TCP | UDP |
---|---|---|
连接方式 | 面向连接(需三次握手) | 无连接 |
可靠性 | 可靠(确认应答+重传) | 不可靠(可能丢包) |
速度 | 较慢(需维护连接状态) | 极快(无需握手) |
适用场景 | 网页(HTTP)、文件(FTP) | 视频流、游戏、DNS查询 |
头部开销 | 较大(20字节) | 较小(8字节) |
5、会话层
会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。
6、表示层
表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。
7、应用层
为操作系统或网络应用程序提供访问网络服务的接口。
会话层、表示层和应用层重点:
-
1> 数据传输基本单位为报文;
-
2> 包含的主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。
二、IP地址
IP地址分为A-E五类,其中A/B/C类划分网络号和主机号,D类用于组播,E类保留。特殊地址包括网络地址、广播地址、回环地址和私有地址,各自用于不同场景(如广播、测试、内网通信)。
1. IP地址的基本结构
IP地址由 网络号(Network ID) 和 主机号(Host ID) 组成,用于唯一标识网络中的设备。
2. 五类IP地址
类别 | 开头位 | 范围 | 网络号长度 | 用途 |
---|---|---|---|---|
A类 | 0 | 1.0.0.0 ~ 126.255.255.255 | 第1字节 | 大型网络(政府、运营商) |
B类 | 10 | 128.0.0.0 ~ 191.255.255.255 | 前2字节 | 中型企业、高校 |
C类 | 110 | 192.0.0.0 ~ 223.255.255.255 | 前3字节 | 小型网络(家庭、公司) |
D类 | 1110 | 224.0.0.0 ~ 239.255.255.255 | 无划分 | 组播(一对多通信) |
E类 | 1111 | 240.0.0.0 ~ 255.255.255.255 | 无划分 | 保留(实验用途) |
3. 特殊IP地址
地址类型 | 示例 | 用途 |
---|---|---|
网络地址 | 192.168.1.0 | 主机号全0,代表整个网络本身(如192.168.1.0/24 )。 |
直接广播地址 | 192.168.1.255 | 主机号全1,向该网络所有主机广播(路由器可转发)。 |
受限广播地址 | 255.255.255.255 | 仅限本地网络广播,路由器不转发(如DHCP初始请求)。 |
组播地址 | 224.0.0.1 | D类地址,用于组播通信(如视频会议、OSPF路由协议)。 |
未知地址 | 0.0.0.0 | 表示“本网络”或用于DHCP初始请求(如无盘机获取IP)。 |
回环地址 | 127.0.0.1 | 测试本机网络服务(如ping 127.0.0.1 )。 |
4. 私有地址(RFC 1918)
私有地址仅用于内部网络,互联网路由器不会转发这些地址的流量:
-
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
)
用途:家庭路由器(如192.168.1.1
)、企业内部网络。
5. 关键区别
-
网络地址 vs. 广播地址:
-
网络地址的主机号全0(
192.168.1.0
),广播地址的主机号全1(192.168.1.255
)。
-
-
直接广播 vs. 受限广播:
-
直接广播可跨网段(需路由器支持),受限广播仅限本地网络。
-
三. 子网掩码及网络划分
1、 为什么要划分子网?
-
节约IP地址:避免为一个小型网络分配一整个大类网络(如B类地址),造成巨大浪费。
-
提高性能与安全:将大型网络分割成小的广播域,减少网络拥堵,并通过隔离增强安全性。
-
管理需求:将不同部门(如财务部、市场部)划分到不同子网,便于管理和实施不同策略。
2、 什么是子网掩码?
-
定义:一个32位的二进制数,用于区分IP地址中的网络部分和主机部分。
-
规则:
-
1 代表网络位(包括子网位)。
-
0 代表主机位。
-
-
表示法:与IP地址一样,用点分十进制表示(如
255.255.255.0
)。 -
核心功能:判断两个IP是否在同一子网。将两个IP地址分别与子网掩码进行“按位与”运算,结果相同则在同一子网。
3、 子网划分的核心思想
借用原主机号的高位部分作为子网号。这意味着:
-
子网数量增加:网络被细分了。
-
每个子网内的主机数量减少:因为主机号的位数变少了。
4、 子网掩码的计算方法(两种常见题型)
方法一:已知要划分的子网数量
目标:根据需要的子网数 N
,确定子网掩码。
步骤:
-
将子网数
N
转换为二进制。 -
计算该二进制的位数
K
(即2^K >= N
)。 -
将原类别的默认子网掩码的主机部分的前
K
位划为子网位(置1)。 -
得到新的子网掩码。
例题:将B类IP地址 168.195.0.0
划分成 27 个子网。
-
27
的二进制是11011
,共 5 位 (K=5
)。 -
B类默认掩码是
255.255.0.0
(二进制:11111111.11111111.00000000.00000000
)。 -
向主机部分(后16位)借 5 位作为子网位:
11111111.11111111.11111000.00000000
。 -
转换为十进制:
255.255.248.0
。
方法二:已知每个子网需要的主机数量
目标:根据每个子网需要的主机数 H
,确定子网掩码。
关键公式:所需IP数 = H(主机) + 1(网络地址) + 1(广播地址) + 1(网关地址,通常计算时至少保留2个)
更安全的做法是:2^M >= H + 2
(其中 M
是主机位位数)。
步骤:
-
计算满足
2^M >= (主机数 + 2)
的最小M
值(M
是主机位位数)。 -
则子网掩码中主机部分的位数就是
M
。 -
子网掩码的后
32 - M
位为0,其余为1。
例题:将B类地址划分成每个子网有 700 台主机的子网。
-
2^M >= 700 + 2
→2^10 = 1024 >= 702
,所以主机位位数M = 10
。 -
那么网络位(包括子网位)的位数就是
32 - 10 = 22
位。 -
B类地址默认前16位是网络位,我们还需要从主机位里借
22 - 16 = 6
位作为子网位。 -
所以子网掩码是 22 个1 followed by 10 个0:
11111111.11111111.11111100.00000000
。 -
转换为十进制:
255.255.252.0
。
例题:一个子网需要 10 台主机。
-
2^M >= 10 + 2
→2^4 = 16 >= 12
,所以M = 4
(主机位4位)。 -
网络位为
32 - 4 = 28
位。 -
子网掩码为
255.255.255.240
(11111111.11111111.11111111.11110000
)。
⚠️注意:如果算出来 14 + 2 = 16
,2^4 = 16
刚好满足。但如果 14 + 1 + 1 + 1 = 17
(严谨考虑网关),则 2^4=16 < 17
,所以需要 2^5=32
个地址空间,子网掩码为 255.255.255.224
(主机位5位)。
5、 重要总结与提醒
-
特殊地址:每个子网都有网络地址(主机位全0)和广播地址(主机位全1),这两个地址不能分配给任何主机。
-
网关地址:通常是子网内的第一个可用IP(如
x.x.x.1
),计算所需IP数时必须考虑。 -
CIDR表示法:子网掩码也可以用“前缀长度”表示,即
/数字
。例如:-
255.255.255.0
→/24
(24个网络位) -
255.255.252.0
→/22
(22个网络位)
-
-
划分子网是在“借用”主机位,每借1位,子网数量翻倍,每个子网的主机数减半。
四、ARP/RARP协议
-
ARP:解决IP -> MAC的映射问题,是局域网通信的基石,至今至关重要。
-
RARP:解决MAC -> IP的映射问题,是历更协议,已被DHCP完全替代。
协议 | 功能 | 解决的问题 | |
---|---|---|---|
ARP | 通过IP地址查找MAC地址 | 已知目标的IP地址,但不知道其硬件(MAC)地址如何发送数据? | |
RARP | 通过MAC地址查找IP地址 | 已知自己的MAC地址,但不知道自己的IP地址(如无盘工作站启动时)。 |
ARP欺骗是什么?
ARP欺骗是一种利用ARP协议无需验证这一安全缺陷的网络攻击技术。攻击者通过伪造并发送虚假的ARP报文(通常是ARP响应),来篡改目标主机或网络设备(如网关)上的ARP缓存表,从而将网络流量劫持到攻击者控制的机器上。
简单来说,就是攻击者冒充别人,告诉受害者:“嘿,你要找的人(比如网关)的MAC地址是我这个!” 因为ARP协议天生轻信,受害者就会乖乖地把原本要发给真正目标的数据,都发给了攻击者。
五、路由选择协议
常见的路由选择协议有:RIP协议、OSPF协议。
RIP协议 :底层是贝尔曼福特算法,它选择路由的度量标准(metric)是跳数,最大跳数是15跳,如果大于15跳,它就会丢弃数据包。
OSPF协议 :Open Shortest Path First开放式最短路径优先,底层是迪杰斯特拉算法,是链路状态路由选择协议,它选择路由的度量标准是带宽,延迟。
按工作范围(AS)分类
一个大的网络(如互联网)被分成很多个自治系统(AS, Autonomous System)。每个AS是一个由单一机构管理的大型网络(如一个ISP、一所大学、一家大公司的网络)。
类型 | 工作范围 | 协议举例 | 特点 |
---|---|---|---|
内部网关协议(IGP) | Within an AS (同一个自治系统内部) | RIP, OSPF, IS-IS, EIGRP | 关注如何高效地将数据包在AS内部送达。 |
外部网关协议(EGP) | Between ASes (不同自治系统之间) | BGP (唯一广泛使用的EGP) | 关注如何在不同AS之间选择策略性的最佳路径(而不仅仅是速度最快)。 |
可以简单理解为:
-
IGP:负责一个国家(AS)内部的省际、城际交通规划。
-
EGP (BGP):负责国家之间的国际航线规划,涉及政治、经济等复杂策略。
特性 | RIP | OSPF | BGP |
---|---|---|---|
协议类型 | IGP (Distance-Vector) | IGP (Link-State) | EGP (Path-Vector) |
度量值 | 跳数 (Hop Count) | 成本 (Cost,基于带宽) | 路径属性 (AS Path, Local Pref等) |
收敛速度 | 慢 | 快 | 慢 |
网络规模 | 小 (<=15跳) | 大 (分层设计) | 极大 (整个互联网) |
核心功能 | 简单寻路 | 高效内部路由 | 策略控制、互联自治系统 |
配置复杂度 | 低 | 中 | 高 |
-
RIP:简单但过时的“数跳数”协议,用于极小网络。
-
OSPF:现代企业网络的核心,“画地图”计算最短路径,高效可靠。
-
BGP:互联网的基石,“谈策略”决定流量如何在不同运营商之间流动,复杂而强大。
六、TCP/IP协议
特性 | IP (网际协议) | TCP (传输控制协议) |
---|---|---|
核心职责 | 寻址和路由 | 可靠传输和流量控制 |
可靠性 | 不可靠 (尽力而为) | 可靠 (确认、重传、排序) |
连接性 | 无连接 (每个包独立路由) | 面向连接 (需先建立连接) |
数据单位 | 包 (Packet) | 段 (Segment) |
所处层级 | 网络层 | 传输层 |
地址类型 | IP地址 (标识主机) | 端口号 (标识主机上的应用) |
TCP报文首部
TCP协议的三次握手和四次挥手:
注:seq:"sequance"序列号;ack:"acknowledge"确认号;SYN:"synchronize"请求同步标志;;ACK:"acknowledge"确认标志";FIN:"Finally"结束标志。
TCP连接建立过程
首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。
TCP连接断开过程
假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。",Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!
为什么是三次握手?
-
主要原因:防止已失效的连接请求报文突然传到服务器,导致错误和资源浪费。
-
两次握手时,如果一个被阻塞的旧连接请求突然到达,服务器会误以为新请求,直接建立连接并空等,造成服务器资源被大量无用连接占用。
-
三次握手机制下,客户端不会确认这种陈旧的连接响应,从而避免了该问题。
为什么是四次挥手?
-
主要原因:TCP连接是全双工的,双方需独立关闭各自的数据通道。
-
一方发送
FIN
只表示它没有数据要发送了,但还可以接收数据。 -
因此,关闭需要两次独立的双向交互:
-
A→B FIN:A说“我没话说了”。
-
B→A ACK:B说“好的”。
-
B→A FIN:B也说完所有话后,说“我也说完了”。
-
A→B ACK:A说“好的,再见”。(A等待片刻后彻底关闭)
-
常见基于TCP的协议
-
FTP (文件传输)
-
HTTP/HTTPS (网页浏览)
-
SMTP (发送邮件)
-
POP3/IMAP (接收邮件)
-
Telnet/SSH (远程登录)
七、UDP协议
UDP用户数据报协议,是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。
核心特点
-
无连接:发送数据前不需要建立连接,直接发送。就像寄信,无需打电话确认对方在家。
-
不可靠传输:不保证数据包能否到达、是否按序、是否重复。一旦送出,就不管了。可能出现丢包。
-
面向报文:对应用层交下来的报文,既不合并,也不拆分,保留原样发送。
-
没有拥塞控制:无论网络状况多差,都以恒定速率发送数据。适合实时应用。
-
支持广播和多播:可以一次性向网络中的所有或一组主机发送数据。
报文结构(非常简单,仅8字节)
UDP报头只有 4个字段,每个字段固定2字节(16位):
-
源端口号:发送方的端口(可省略,为0)。
-
目的端口号:接收方的端口。
-
长度:整个UDP数据报(头部+数据)的长度。
-
校验和:用于检查数据在传输中是否出错(可选,但通常使用)。
典型应用场景
UDP的优势在于速度快、延迟低、开销小。适用于:
-
DNS(域名解析):一次请求通常只需一个包来回,快速是关键。
-
音视频流媒体(如视频会议、直播):容忍少量丢包,但无法忍受重传带来的延迟。
-
实时在线游戏:操作指令需要极低的延迟。
-
TFTP(简单文件传输)、SNMP(网络管理):交换的信息量很小。
八、DNS协议
DNS是域名系统(DomainNameSystem)的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务,可以简单地理解为将URL转换为IP地址。域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的IP地址,在Internet上域名与IP地址之间是一一对应的,DNS就是进行域名解析的服务器。DNS命名用于Internet等TCP/IP网络中,通过用户友好的名称查找计算机和服务。
九、NAT协议
NAT网络地址转换(Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。原因很简单,NAT不仅完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
十、DHCP协议
NAT网络地址转换(Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。原因很简单,NAT不仅完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
十一、HTTP协议
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。 HTTP 协议包括哪些请求?
GET:请求读取由URL所标志的信息。
POST:给服务器添加信息(如注释)。
PUT:在给定的URL下存储一个文档。
DELETE:删除给定的URL所标志的资源。
HTTP 中, POST 与 GET 的区别
- 1)Get是从服务器上获取数据,Post是向服务器传送数据。
- 2)Get是把参数数据队列加到提交表单的Action属性所指向的URL中,值和表单内各个字段一一对应,在URL中可以看到。
- 3)Get传送的数据量小,不能大于2KB;Post传送的数据量较大,一般被默认为不受限制。
- 4)根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。
- I. 所谓 安全的 意味着该操作用于获取信息而非修改信息。换句话说,GET请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
- II. 幂等 的意味着对同一URL的多个请求应该返回同样的结果。
十二、一个举例
在浏览器中输入 http://www.baidu.com/ 后执行的全部过程。
现在假设如果我们在客户端(客户端)浏览器中输入 http://www.baidu.com, 而 baidu.com 为要访问的服务器(服务器),下面详细分析客户端为了访问服务器而执行的一系列关于协议的操作:
简约版:
1、输入URL
2、DNS解析服务器IP
3、TCP三次握手建立可靠连接
4、发送HTTP请求
5、服务器处理并返回HTTP响应
6、浏览器解析渲染页面
7、TCP四次挥手关闭连接
详细版
- 1)客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层。
- 2)在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。
- 3)客户端的网络层不用关系应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。
- 4)客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。
原文链接:
计算机网络基础知识总结 | 菜鸟教程