网络协议(三)网络包各层内容的来源

前面的文章中介绍了网络中来回跑的网络包长什么样子,这篇文章再来探讨下这包裹的每一层信息是怎么产生的。

这是上篇文章的包裹图,里面包含了很多信息:端口,IP,MAC地址。这些信息都是从哪来的呢。

端口

端口是由计算机操作系统来管理的,每一个端口都对应了一个进程或服务。端口在网络连接的所有设备中都统一标准,每个端口都有一个编号,也就是所谓端口号。端口位于网络协议的传输层,网络包的端口号使得收发机器明白这个包应该给到哪个进程(应用程序)。

IP

先来看看IP协议是什么。

IP协议是互联网上用于数据传输的一种协议,它是TCP/IP协议族中的一个关键组成部分,用于在网络中传输数据包(也就是前面说的网络包)。IP协议负责定义数据包的结构、寻址方式以及路由策略,以确保数据能够在不同的网络和计算机之间进行可靠的传递。IP协议工作在网络协议的网络层。

IP地址

IP地址是IP协议中的一个重要内容,类似于我们的家庭住址一样,每个网络设备都拥有一个IP地址。只有拥有了IP地址,该设备才能接入网络,正常收发数据包。

IPv4和IPv6是两种常用的IP地址格式,IPv4是一个32位的二进制数,可以表示大约43亿个地址;IPv6是一个128位的二进制数,几乎可以不受限制地提供地址。 就目前我接触到的IP格式来说,IPv4仍是主流。IPv4的32位二进制数通常被分割为4个“8位二进制数”。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。举个例子,32位二进制数每一位都用P来表示,每8位组成一组,则可以表示为【PPPP.PPPP.PPPP.PPPP】,这也是我们经常见到的IP格式例如【192.168.0.10】,其实IP地址本质上还是一个32位的二进制数,a.b.c.d的形式只是为了更便于人类来阅读。

下面文章中提到的IP都以IPv4地址格式为前提,不再特别声明。

子网掩码

在公司中配置电脑的网络信息时,除了IP外还需配置子网掩码,这是干嘛用的呢。

IP地址其实包含了两部分内容:网络部分与主机部分。

  • 网络部分用于标识该IP属于哪个子网,相同网络地址(一个IP地址的网络部分被称为网络号或者网络地址)的IP是属于同一个子网的,它们之间的通信也属于局域网内部的通信。
  • 主机部分是该IP在所处子网中的一个身份地址,即主机在子网内的一个身份标识。

那么怎么区分IP地址的哪些位是网络部分那些位是主机部分呢?这就是子网掩码要干的事了。

子网掩码同IP的长度一样,也是一个32位的二进制数,通常也采用8位一组,a.b.c.d的形式来表示。子网掩码与IP进行逻辑与运算后,得出来的结果就是IP的网络地址。将子网掩码取反后再与IP进行逻辑与运算,得出的结果就是IP的主机地址。

以上图中的配置为例,子网掩码255.255.255.0,对应的32为二进制数为11111111.11111111.11111111.00000000,前24位值为1,代表了IP的这些位是网络地址,后8位值为0,代表了IP的这些位是主机地址。 图中的IP为192.168.1.5 ,转化为32位二进制数就是11000000.10101000.00000001.00000101,配合子网掩码就能得到标黄的前24位就是网络地址(192.168.1.0),标蓝的后8位就是主机地址(5)。

另外,IP与子网掩码可以有另一种表示方式,就是192.168.1.5/24 ,IP后面的【/24】代表了这个IP的子网掩码的前24位是1,也就是子网掩码为255.255.255.0。

IP地址通常被分为A、B、C类,其实这就是子网掩码的几个粗粒度的分类。子网掩码的4个十进制位,用前几个来标识网络地址呢,一个,两个或者三个,就形成了A类,B类与C类的IP地址。

IP地址类型地址表示范围缺省(默认)子网掩码网络位n与主机位h
A类地址1.0.0.1-127.255.255.255255.0.0.00nnnnnnn.hhhhhhhh.

hhhhhhhh.hhhhhhhh

B类地址128.0.0.1-191.255.255.255255.255.0.010nnnnnn.nnnnnnnn.

hhhhhhhh.hhhhhhhh

C类地址192.0.0.1-223.255.255.255255.255.255.0110nnnnn.nnnnnnnn.

nnnnnnnn.hhhhhhhh

A、B、C 等不同类别是为了更好地满足不同规模和需求的网络。A 类地址通常用于大型组织和互联网服务提供商,B 类地址用于中等规模的组织,而 C 类地址用于小型组织。

然而,随着互联网的发展,这种严格的 A、B、C 类地址划分逐渐失去了某些意义,因为它们在实践中变得不够灵活。现代网络通常使用更灵活的子网掩码和无类别域间路由选择(CIDR)来更好地适应各种网络规模和需求。CIDR 允许更细粒度地划分 IP 地址,并更好地支持了互联网的增长和多样性。因此,虽然 A、B、C 类地址仍然存在,但它们的刚性划分已不再是网络设计的首要依据。

网关

网关即这张图中的“路由器”,当主机通信需要跨网络通信时,数据包就要通过网关来发向别的子网了,网关的具体内容,后面文章再详细介绍。

DHCP协议

知道了IP的具体含义,那么主机的IP怎么产生呢?答:两种方式

  1. 手动配置。手动配置IP,子网掩码,网关,DNS等信息。适用于机器需要固定IP的情况。
  2. DHCP协议自动分配。适用于不需要固定IP,只想要联网的情况,比如手机连家庭的wifi。

手动配置IP信息很好理解,我们重点关注DHCP协议。DHCP协议全称为动态主机配置协议(Dynamic Host Configuration Protocol)。使用DHCP协议,需要在局域网内配置一个DHCP Server,一旦有新设备接入局域网的时候,DHCP Server就会给这台设备分配一个可用的IP,并自动为其配置子网掩码、默认网关地址,域名服务器(DNS)地址和其他相关配置参数,以便可以与其他IP网络通信。那么DHCP具体是怎么运作的呢?

DHCP协议采用UDP作为传输协议,DHCP客户端发送请求消息到DHCP服务器的68号端口,DHCP服务器回应应答消息给DHCP客户端的67号端口。

一台设备刚接入局域网时是没有IP的,只有mac地址,这时候该设备就会向局域网广播一条消息,大声问一下“谁能给我IP?” 这时候发出去的包长下面这个样子,由于该设备还没有IP,所以暂用IP 0.0.0.0,广播地址的mac为FF:FF:FF:FF:FF:FF,ip为255.255.255.255。

DHCP Server收到这条消息后,就会拿一个该局域网内的空闲可用ip回复给该设备,回复的包长下面这个样子,由于此时该设备还没有IP,所以DHCP Server仍然是广播一条消息出去,该设备收到后,就可以思考下要不要使用DHCP Server给出的这个IP了。

如果设备想要用这个IP的话,就要ACK一下,告诉DHCP Server这个IP我用了。由于还没有得到 DHCP Server 的最后确认,客户端仍然使用 0.0.0.0 为源 IP 地址、255.255.255.255 为目标地址进行广播。

当 DHCP Server 接收到客户机的应答消息之后,会广播返回给设备一个 DHCP ACK 消息包,表明已经接受客户机的选择,并将这一 IP 地址的合法租用信息和其他的配置信息(子网掩码,网关地址,DNS信息等)都放入该广播包,发给设备,欢迎它加入网络大家庭。

DHCP协议给出的IP都是短租IP,如果需要长期使用的话就要不断续租,如果不续租就收回此IP了

入网的设备会在租期过去 50% 的时候,直接向为其提供 IP 地址的 DHCP Server 发送 DHCP request 消息包。设备接收到该服务器回应的 DHCP ACK 消息包,会根据包中所提供的新的租期以及其他已经更新的 TCP/IP 参数,更新自己的配置。这样,IP 租用更新就完成了。

至此,机器就有了自己的IP。

MAC

MAC是网卡出厂时自带的,也就是设备本身就有的。

至此一个网络包中需要拥有的基本信息就都具备了。接下来就是和其它主机进行通信了,下篇文章我们来分析下主机之间是怎么在局域网中进行通信的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值