目录
TCP协议(Transmission Control Protocol)——策略
网络层
在复杂的网络环境中确定一个合适的路径.
网络层的核心任务就是确保数据能够在不同的网络之间可靠地传输,它主要通过路由选择、IP地址管理、数据分段与重组等手段,确保数据从源主机到达目的主机。
IP协议
IP协议全称为“网际互连协议(Internet Protocol)”,IP协议是TCP/IP体系中的网络层协议。
基本概念

主机和路由器
- 主机:配有IP地址,但是不进行路由控制的设备。但实际现在几乎不存在不进行路由控制的设备了,就连你的笔记本也会进行路由控制。
- 路由器:既配有IP地址,又能进行路由控制。实际现在主流的路由器已经不仅仅具有路由的功能了,它甚至具备某些应用层的功能。
- 节点:主机和路由器的统称。
网络层解决的问题
网络层的主要任务就是确保数据包能够从源计算机顺利到达目标计算机,它负责在多个网络之间找到最佳路径,并根据目的地将数据准确地送到目标计算机。我们可以把它比作一名邮递员,负责把信件从一个地方送到另一个地方,可能经过多个中间站点,最终把信送到正确的收件人手中。
网络层的工作就像一个复杂的邮递系统,负责确保数据从源计算机传送到目标计算机,确保数据可以通过不同的网络层层传送、找到正确的路径、找到正确的目标地址、分割和重组数据包。它解决了数据包如何在不同网络之间找到路径、如何确保到达目标主机的问题。
路径选择
数据进行的网络传输一般都是跨网络的,而路由器就是连接多个网络的硬件设备,因此数据在进行跨网络传输时一定需要经过多个路由器。

-
确定目的地:在网络中传输数据时,首先需要知道目标主机的IP地址,就像旅行前知道目的地一样。这是数据路由的第一步。
-
路由器的作用:数据在网络中无法自己选择路径,因此每个路由器就像一个“路人”,它们有经验并且知道如何通向目标,路由器会根据路由表中的信息引导数据。
-
查找最短路径:每个路由器都有一张路由表,记录了到各个目标的最佳路径。数据包在经过每一个路由器时,路由器会查阅路由表,帮助数据选择最短的路径。
-
逐步接近目标:数据包通过多个路由器的引导,一步步接近最终的目标主机,直到最终到达目的地。
数据在网络中像是旅行一样,从源主机出发,经过多次“问路”,依靠路由器的帮助,最终找到最短路径,顺利到达目标主机。
IP协议格式

- 4位版本号(version):指定IP协议的版本(IPv4/IPv6),对于IPv4来说,就是4。
- 4位首部长度(header length):表示IP报头的长度,以4字节为单位。
- 8位服务类型(Type Of Service):3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。比如对于ssh/telnet这样的应用程序,最小延时比较重要,而对于ftp这样的程序,最大吞吐量比较重要。
- 16位总长度(total length):IP报文(IP报头+有效载荷)的总长度,用于将各个IP报文进行分离。
- 16位标识(id):唯一的标识主机发送的报文,如果数据在IP层进行了分片,那么每一个分片对应的id都是相同的。
- 3位标志字段:第一位保留,表示暂时没有规定该字段的意义。第二位表示禁止分片,表示如果报文长度超过MTU,IP模块就会丢弃该报文。第三位表示“更多分片”,如果报文没有进行分片,则该字段设置为0,如果报文进行了分片,则除了最后一个分片报文设置为0以外,其余分片报文均设置为1。
- 13位片偏移(framegament offset):分片相对于原始数据开始处的偏移,表示当前分片在原数据中的偏移位置,实际偏移的字节数是这个值× 8 \times 8×8得到的。因此除了最后一个报文之外,其他报文的长度必须是8的整数倍,否则报文就不连续了。
- 8位生存时间(Time To Live,TTL):数据报到达目的地的最大报文跳数,一般是64,每经过一个路由,TTL -= 1,一直减到0还没到达,那么就丢弃了,这个字段主要是用来防止出现路由循环。
- 8位协议:表示上层协议的类型。
- 16位首部检验和:使用CRC进行校验,来鉴别数据报的首部是否损坏,但不检验数据部分。
- 32位源IP地址和32位目的IP地址:表示发送端和接收端所对应的IP地址。
- 选项字段:不定长,最多40字节。
网段划分(重要)
IP 地址分为两个部分,网络号和主机号
- 网络号:保证相互连接的两个网段具有不同的标识;
- 主机号:同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号;

- 不同的子网其实就是把网络号相同的主机放到一起.
- 如果在子网中新增一台主机,则这台主机的网络号和这个子网的网络号一致,但是主机号必须不能和子网中的其他主机重复
通过合理设置主机号和网络号,就可以保证在相互连接的网络中,每台主机的IP地址都 不相同. 那么问题来了,手动管理子网内的IP,是一个相当麻烦的事情.
DHCP协议
- 因此对于IP地址的分配和回收一般不会手动进行,而是采用DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)技术。
- DHCP通常被应用在大型的局域网环境中,其主要作用就是集中地址管理、分配IP地址,使网络环境中的主机动态获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
- DHCP是一个基于UDP的应用层协议,一般的路由器都带有DHCP功能,因此路由器也可以看作一个DHCP服务器。
-
自动化管理
-
DHCP 服务器可以动态为主机分配 IP、网关、DNS,减少人工分配和配置错误的情况。
-
新设备接入即可自动获取合法 IP,节省大量运维时间。
-
-
集中式控制
-
DHCP 池(Scope)可按子网划分,每个子网配置对应的地址池。
-
地址池可设置租期,短租期适合频繁接入的设备(如无线终端),长租期适合固定终端。
-
-
避免冲突和浪费
-
动态回收机制:当终端离开网络,IP 地址会自动释放,减少长期占用。
-
可结合 MAC 地址绑定(Reservation),为关键服务器或打印机等固定设备分配固定 IP,同时避免与普通客户端冲突
-
网段划分
过去曾经提出一种划分网络号和主机号的方案,把所有IP地址分为五类,如下图所示

因此,各类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。
- D类:224.0.0.0到239.255.255.255。
- E类:240.0.0.0到247.255.255.255。
当要判断一个IP地址是属于哪一类时,只需要遍历IP地址的前五个比特位,第几个比特位最先出现0值,那么这个IP地址对应就属于A、B、C、D、E类地址。
随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类 网络地址,导致B类地址很快就分配完了,而A类却浪费了大量地址
- 例如,申请了一个B类地址,理论上一个子网内能允许6万5千多个主机.A类 地址的子网内的主机数更多.
- 然而实际网络架设中,不会存在一个子网内有这么多的情况.因此大量的IP地址都被浪费掉了
针对这种情况提出了新的划分方案,称为CIDR(Classless Inter domain Routing)
- 引入一个额外的子网掩码(subnetmask)来区分网络号和主机号;
- 子网掩码也是一个32位的正整数.通常用一串"0"来结尾;
- 将IP地址和子网掩码进行"按位与"操作,得到的结果就是网络号;
- 网络号和主机号的划分与这个IP地址是A类、B类还是C类无关;
下面举两个例子
划分子网的例子1

划分子网的例子2

可见,IP地址与子网掩码做与运算可以得到网络号,主机号从全0到全1就是子网的地址范围;
IP 地址和子网掩码还有一种更简洁的表示方法,例如140.252.20.68/24,表示IP地址为 140.252.20.68, 子网掩码的高24位是1,也就是255.255.255.0
特殊的IP地址
并不是所有的IP地址都能够作为主机的IP地址,有些IP地址本身就是具有特殊用途的。
- 将IP地址中的主机地址全部设为0,就成为了网络号,代表这个局域网。
- 将IP地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包。
- 127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1。
也就是说,IP地址中主机号为全0的代表的是当前局域网的网络号,IP地址中主机号为全1的代表的是广播地址,这两个IP地址都是不能作为主机的IP地址的。因此在某个局域网中最多能存在的主机个数是2^n-2(n为主机号数)
IP地址的数量限制
IP地址数量不足问题
我们知道,IP地址(IPv4)是一个4字节32位的正整数,因此一共有2^32个IP地址,也就是将近43亿个IP地址。但TCP/IP协议规定,每个主机都需要有一个IP地址。
- 现在全世界人口已经有70多亿了,就算有一半的人没有智能手机,算下来也有30多亿台智能手机需要IP地址。
- 随着科技的发展,我们使用的电脑、智能手表、智能冰箱、智能洗衣机等设备如果要入网也是需要IP地址的。
- 另外,IP地址并不是按照主机台数来配置的,因此一个主机可能需要多个IP地址,更别谈还有很多组网的路由设备也需要IP地址,以及一些特殊的IP地址不能使用的问题。
所以43亿个IP地址其实早就不够用了,因此才提出了CIDR的方案对已经划分好的五类网络继续进行子网划分,其目的就是为了减少IP地址的浪费,根本原因就是IP地址本来就不够了,所以不能够再浪费了。
CIDR虽然在一定程度上缓解了IP地址不够用的问题,因为CIDR提高了IP地址的利用率,减少了浪费,但IP地址的绝对上限并没有增加。
如何解决IP地址不足问题
解决IP地址不足有以下几种方式:
- 动态分配IP地址:只给接入网络的设备分配IP地址,因此同一个MAC地址的设备,每次接入互联网中,得到的IP地址不一定是相同的,避免了IP地址强绑定于某一台设备。
- NAT技术:能够让不同局域网当中同时存在两个相同的IP地址,NAT技术不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
- IPv6:IPv6用16字节128位来表示一个IP地址,能够大大缓解IP地址不足的问题。但IPv6并不是IPv4的简单升级版,它们是互不相干的两个协议,彼此并不兼容,因此目前IPv6还没有普及。
私网IP地址和公网IP地址
如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上, 理论上使用任意的IP地址都可以,但是RFC1918规定了用于组建局域网的私有IP地址
- 10.*,前8位是网络号,共16,777,216个地址。
- 172.16.*到172.31.*,前12位是网络号,共1,048,576个地址。
- 192.168.*,前16位是网络号,共65,536个地址。
包含在这个范围中的,都称为私网IP,其余的则称为公网IP(或全局IP)。
数据是如何发送到服务器的
路由器是连接两个或多个网络的硬件设备,在路由器上有两种网络接口,分别是LAN口和WAN口:
- LAN口(Local Area Network):表示连接本地网络的端口,主要与家庭网络中的交换机、集线器或PC相连。
- WAN口(Wide Area Network):表示连接广域网的端口,一般指互联网。
- 我们将LAN口的IP地址叫做LAN口IP,也叫做子网IP,将WAN口的IP地址叫做WAN口IPO,也叫做外网IP。
我们使用的电脑、家用路由器、运营商路由器、广域网以及我们要访问的服务器之间的关系大致如下:

- 一个路由器可以配置两个IP地址,一个是WAN口IP,一个是LAN口IP(子网 IP).
- 路由器LAN口连接的主机,都从属于当前这个路由器的子网中.
- 不同的路由器,子网IP其实都是一样的(通常都是192.168.1.1).子网内的主机IP 地址不能重复.但是子网之间的IP地址就可以重复了.
- 每一个家用路由器,其实又作为运营商路由器的子网中的一个节点.这样的运营商路由器可能会有很多级,最外层的运营商路由器,WAN口IP就是一个公网IP了.
由于私网IP不能出现在公网当中,因此子网内的主机在和外网进行通信时,路由器会不断将数据包IP首部中的源IP地址替换成路由器的WAN口IP,这样逐级替换,最终数据包中的源IP地址成为一个公网IP,这种技术成为NAT(Network Address Translation,网络地址转换)
为什么私网IP不能出现在公网当中?
🔹地址唯一性问题
公网 IP 必须在全世界唯一,否则会导致路由混乱。而私网 IP 本身就是设计来 可重复使用 的(比如很多家庭网关都用 192.168.1.1),所以如果放到公网就会冲突。
🔹 路由器的转发策略
运营商和骨干网络的路由器会 直接丢弃 来自私网 IP 段的数据包,因为这些地址不应该出现在公网路由表中。
🔹 安全与隔离
私网 IP 的设计初衷就是给内部网络使用(例如企业内网、家庭局域网)。如果直接暴露到公网,会打破这种隔离,带来 安全风险(比如内网机器直接暴露在互联网上)。
路由
在复杂的网络结构中,找出一条通往终点的路线
数据在路由的过程中,实际就是一跳一跳(Hop by Hop)“问路”的过程。所谓“一跳”就是数据链路层中的一个区间,具体在以太网中指从源MAC地址到目的MAC地址之间的帧传输区间。

IP 数据包的传输过程也和问路一样
- 当IP数据包到达路由器时,路由器会先查看目的IP;
- 路由器决定这个数据包是能直接发送给目标主机,还是需要发送给下一个路由器;
- 依次反复,一直到达目标IP地址;
那么如何判定当前这个数据包该发送到哪里呢?这个就依靠每个节点内部维护一个路由表;

- 路由表可以使用route命令查看
- 如果目的IP命中了路由表,就直接转发即可;
- 路由表中的最后一行,主要由下一跳地址和发送接口两部分组成,当目的地址与 路由表中其它行都不匹配时,就按缺省路由条目规定的接口发送到下一跳地址。
假设某主机上的网络接口配置和路由表如下:

- Destination代表的是目的网络地址。
- Gateway代表的是下一跳地址。
- Genmask代表的是子网掩码。
- Flags中,U标志表示此条目有效(可以禁用某些条目)G标志表示此条目的下一跳地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发。
- Iface代表的是发送接口。
当IP数据包到达路由器时,路由器就会用该数据的目的IP地址,依次与路由表中的子网掩码 Genmask进行“按位与”操作,然后将结果与子网掩码对应的目的网络地址Destination进行比对,如果匹配则说明该数据包下一跳就应该跳去这个子网,此时就会将该数据包通过对应的发送接口Iface发出。
如果将该数据包的目的IP地址与子网掩码进行“按位与”后,没有找到匹配的目的网络地址,此时路由器就会将这个数据包发送到默认路由,也就是路由表中目标网络地址中的default。可以看到默认路由对应的Flags是UG,实际就是将该数据转给了另一台路由器,让该数据在另一台路由器继续进行路由。
数据包不断经过路由器路由后,最终就能到达目标主机所在的目标网络,此时就不再根据该数据包目的IP地址当中的网络号进行路由了,而是根据目的IP地址当中的主机号进行路由,最终根据该数据包对应的主机号就能将数据发送给目标主机了。
路由表生成算法
路由可分为静态路由和动态路由:
- 静态路由:是指由网络管理员手工配置路由信息。
- 动态路由:是指路由器能够通过算法自动建立自己的路由表,并且能够根据实际情况进行调整。
路由表相关生成算法:距离向量算法、LS算法、Dijkstra算法等。
IP协议屏蔽底层差异
IP协议通过一系列的设计和机制,屏蔽了不同局域网技术之间的差异,使得不同类型的网络能够无缝地互联。其主要方式如下:
1. 抽象化的寻址机制
IP协议通过IP地址实现了与具体硬件或局域网技术的独立性。每台设备(无论它连接的是以太网、令牌环网还是无线网络)都会分配一个唯一的IP地址。IP地址的作用是标识设备的逻辑位置,与其物理硬件(如MAC地址)无关。无论底层网络使用的是哪种传输技术,IP层只关心设备的IP地址,而不需要了解它是如何在局域网内部传输数据的。
-
例如:在局域网内部,设备可能使用MAC地址(如以太网的MAC地址或Wi-Fi的MAC地址)进行通信,但是一旦数据要跨网络传输,网络层(即IP协议)只会关注IP地址,不会涉及底层的MAC地址。
2. 路由与封装/解封装机制
当数据在一个网络中传输时,链路层负责通过本地局域网传送数据(使用MAC地址等底层地址)。但是,当数据需要跨越不同的网络时,IP协议使得数据在不同的网络间转发成为可能。IP协议通过路由器来实现数据的转发,屏蔽了不同网络使用的底层技术。
-
数据封装与去封装:在跨网络传输时,路由器会不断剥离原先的局域网报头(如以太网的MAC头),并在下一跳网络中重新封装适合该网络的局域网报头(如Wi-Fi的MAC头)。通过这种方式,IP协议隐藏了局域网技术的差异。
3. 协议无关性
IP协议本身设计为一个无连接的、不可靠的协议,它仅负责数据包的寻址与转发,而不关心数据如何可靠传输或如何保证数据顺序。这种设计使得IP协议能够独立于底层网络的传输技术,能够在不同的物理网络(如以太网、Wi-Fi、光纤、卫星链路等)上运行。
-
例如:无论底层使用的是光纤传输、无线电波、还是铜线传输,IP协议始终只处理数据的逻辑传输路径(基于IP地址),而不涉及如何通过物理介质传输数据。这就是IP协议的传输无关性。
4. 支持多种底层网络
IP协议通过封装技术(例如:数据链路层的帧封装)支持不同类型的底层网络。网络中可以同时使用不同的局域网技术(如以太网、Wi-Fi、令牌环网等),并且这些不同的局域网技术只在链路层起作用。IP协议负责将数据从源主机送到目标主机的过程中,链路层会处理物理网络的差异,而IP协议依然保持不变,继续处理路由和寻址。
-
例如:IP协议将数据传输到路由器,路由器会根据目标地址转发数据。当数据到达不同的局域网时,IP协议会依赖于底层的链路层技术来完成具体的数据转发(如以太网、Wi-Fi等),而不需要关心局域网的具体实现。
5. 数据包的独立性
IP协议负责将数据包从源主机传送到目标主机,它对数据包本身是完全独立的。这意味着,数据包在传输过程中,不同的网络层和链路层会根据自己的需求进行封装与转发。IP协议仅关心数据包的路由和转发路径,而底层链路层负责根据实际的物理介质技术(如以太网、Wi-Fi等)封装和传输数据。
6. 路由协议的支持
IP协议与不同的路由协议(如RIP、OSPF、BGP等)一起工作,确保数据包在不同的网络之间能够正确找到路径。路由器根据目的IP地址决定下一跳,将数据包从一个网络转发到另一个网络。即使两个网络使用不同的物理传输技术(如Wi-Fi与以太网),IP协议和路由协议依然可以保证数据的传递和最终送达目标主机。
总结
IP协议通过以下方式屏蔽了底层差异:
-
使用IP地址进行抽象化寻址,不依赖于底层物理地址(如MAC地址)。
-
通过路由器进行跨网络转发,去除并重新封装底层网络的通信报头。
-
采用无连接、不可靠的传输方式,保证协议的无关性,使其能够在不同的物理网络上工作。
-
支持多种不同类型的底层网络通信技术,通过链路层实现数据的封装和传输。
-
依赖路由协议确保数据在不同网络间的转发与传输。
因此,IP协议能够在不同的局域网和广域网技术之间实现无缝的通信,屏蔽了底层网络的差异,确保了数据能够可靠、正确地传输到目标主机。
传输层VS网络层

我们学习到的UDP、TCP协议位于传输层,是网络层的上层。它们是一种策略,而底层的网络层则是能力。
以TCP协议为例
TCP协议(Transmission Control Protocol)——策略
TCP是传输层协议,提供面向连接的、可靠的数据传输服务。TCP的核心特性包括:
-
面向连接:在数据传输前,源和目标之间需要建立一个连接(通过三次握手)。连接建立后,数据传输可以顺利进行。
-
可靠性:TCP通过数据确认、重传机制来确保数据的可靠传输。接收方在收到数据后会发送确认信息,源方只有在收到确认后才会继续发送后续数据。
-
数据顺序:TCP确保数据的顺序。无论数据包在传输过程中是否乱序,接收方都会按顺序重新排列数据包。
-
流量控制:TCP采用流量控制机制,确保发送方不会超出接收方的处理能力,避免网络拥塞。
-
拥塞控制:TCP通过多种机制(如慢启动、拥塞避免、快速重传)来避免网络拥塞,确保数据传输的稳定性。
TCP协议属于一种策略,因为它通过建立连接、重传机制、确认机制等策略,提供可靠的数据传输服务,确保在网络不稳定的情况下也能可靠传输数据。
IP协议(Internet Protocol)——能力
IP协议是网络层协议,负责在不同的网络之间传输数据包。IP协议的作用是确保数据从源主机经过多个中间网络节点传输到目标主机。IP协议具备以下能力:
-
数据包路由:根据目标IP地址,确定数据包的路径。
-
寻址:每个设备都被分配一个唯一的IP地址,IP协议通过该地址来识别源和目的主机。
-
分段和重组:由于不同网络的MTU(最大传输单元)大小不同,IP协议会将大数据包分割成小的数据包(分段),在接收端进行重组。
-
无连接:IP协议本身不提供连接管理和数据传输的可靠性保障。它只负责将数据包从源传输到目的,并不关心数据是否到达或传输过程中是否发生错误。
IP协议属于一种能力,因为它提供了基础的网络通信能力,但并不保证数据的可靠性、顺序、或完整性。这些问题通常由上层的协议(如TCP)来处理。
总结:
-
IP协议是网络层协议,主要提供网络之间的数据传输能力。它负责数据包的路由、寻址、分段等任务,但并不关心数据是否传输成功、是否丢失或乱序。
-
TCP协议是一种传输层策略,提供可靠的、面向连接的数据传输,确保数据按顺序、无错误地到达目标。它通过连接管理、确认机制、重传机制等方式提供可靠性保障。
因此,IP协议为网络层提供基本的通信能力,而TCP和UDP则是不同的策略,它们在传输层提供不同的服务,分别适用于不同的应用需求。
TCP/IP协议核心作用:把数据100%可靠的从主机A跨网络传输到主机B
1129

被折叠的 条评论
为什么被折叠?



