:一台主机到底是如何被网络找到的?从 IP 地址到 MAC 地址,再到端口号)
◆ 博主名称 小此方-CSDN博客大家好欢迎来到小此方的博客。⭐️网络系列个人专栏 【主题曲】计算机网络⭐️此方的GitHub github_此方⭐️我们思考 (Rethink) · 我们重建 (Rebuild) · 我们记录 (Record)文章目录概要序論一、认识和理解IP地址1.1 IP地址的基本概念与格式1.2 跨网段数据传输与路由器1.2.1 数据传输的路径与角色1.2.2 逻辑层与物理层的屏蔽1.3 IP地址与MAC地址的关系1.4 IP地址与MAC地址的核心区别二、端口号2.1 认识端口与进程2.2 认识端口号概要序論Hello大家好我是此方本文将介绍 IP 地址、MAC 地址与端口号的基本概念及其作用理解跨网段通信与路由器的工作原理并梳理三者在网络通信中的关系与区别。一、认识和理解IP地址在探讨网络通信时IP地址Internet Protocol Address是网络层核心的概念之一。它用于在网络中标识不同的主机或节点是实现跨网络数据传输的基础。1.1 IP地址的基本概念与格式IP协议网际协议目前主要有两个版本IPv4与IPv6。在未经特殊说明的情况下通常默认指代的是IPv4协议。对于 IPv4 而言IP地址的基本特征与表现形式如下数据长度IP地址本质上是一个4字节Byte、即32位Bit的整数。点分十进制表示法为了方便人类阅读与记忆通常采用“点分十进制”的字符串形式来表示 IP 地址例如192.168.0.1。数值范围被点号分隔的每一个十进制数字代表其中的 1 个字节其取值范围在0 到 255之间。讲个段子2 32 4 , 294 , 967 , 296 2^{32} 4,294,967,2962324,294,967,296但是世界人口早就超越了这个数字IPv4 在 2011 年就已经彻底发光了。大家只能搞出NAT 技术让成百上千台设备挤在一个公网 IP 后面后来中国提出了IPv6。但推行起来却卡在了国际政治与利益博弈上1.2 跨网段数据传输与路由器数据从一台计算机传输到另一台计算机时通常需要穿越不同的局域网网段这一过程被称为跨网段数据传输。1.2.1 数据传输的路径与角色当源主机例如 用户AIP为192.168.2.2需要向不同局域网的目标主机例如 用户BIP为172.168.2.2发送数据时本地判断与交付源主机的网络层在检测数据包时发现目标 IP 不属于当前局域网便不会在本地网段直接广播而是将数据包推送到本地网关——即路由器。路由器的中转作用路由器连接着不同的网络段它拥有多个网卡和多个 IP 地址如同时拥有192.168.2.1和172.168.2.1。路由器接收到数据后基于目标 IP 进行路由选择再将数据精准转发至下一跳网络直至送达最终的目标主机。1.2.2 逻辑层与物理层的屏蔽在数据传输的全路径中不同网段底层所使用的物理介质和数据链路层协议可能完全不同例如以太网与令牌环网网络层IP协议通过统一的 IP 报头屏蔽了底层的物理介质差异使得上层如 TCP、FTP 等在逻辑上以为两端是直接连通的。链路层驱动程序各节点在物理传输时调用各自对应的驱动程序如以太网驱动或令牌环驱动完成帧的封包与解包。1.3 IP地址与MAC地址的关系在跨网络传输中IP地址与MAC地址共同协作完成数据路由与物理交付两者扮演着截然不同的角色。我们可以借用“唐僧西天取经”的故事来具象化理解两者的工作机制IP地址长远目标代表“从哪里来到哪里去”例如源IP为东土大唐目的IP为西天。在整个传输过程中数据包的源 IP 和目的 IP 是保持不变的。它决定了数据传输的终点与整体路径选择。MAC地址下一站目标代表“上一站从哪里来下一站去哪里”例如从东土大唐到女儿国再从女儿国到车迟国最后到黑风岭。在跨路由器传输的每一跳中数据链路层的源MAC和目的MAC会随着物理介质的变化而不断变更。通过 IP 地址指明远方终点MAC 地址解决局域网内相邻节点的跳转数据包才能在错综复杂的网络中准确无误地跨越重重路由器最终抵达目的地。下图结合封装与解包体现路由器解包和重新封装的特点1.4 IP地址与MAC地址的核心区别IP地址在整个路由过程中一直不变MAC地址一直在变目的IP是一种长远目标MAC是下一阶段目标目的IP是路径选择的重要依据MAC地址是局域网转发的重要依据。提炼IP网络的意义和网络通信的宏观流程图IP网络层存在的意义提供网络虚拟层让世界的所有网络都是IP 网络屏蔽最底层网络的差异。二、端口号2.1 认识端口与进程数据传输到主机不是目的而是手段数据最终是给人用的如聊天、下载、浏览网页而人在系统中的代表就是进程如 QQ、迅雷、浏览器把数据交给主机内的进程人才能拿到数据。到达主机内部后再交给主机内的进程才是目的。标识进程的唯一性系统中同时存在非常多的进程当数据到达目标主机之后怎么转发给目标进程这就需要在网络背景下、在系统中标识主机中进程的唯一性。2.2 认识端口号端口号port是传输层协议的内容。基本概念端口号是一个2 字节、16 位的整数。端口号用来标识一个进程告诉操作系统当前的数据要交给哪一个进程来处理。IP地址 端口号能够标识网络上的某一台主机的某一个进程。一个端口号只能被一个进程占用。端口号范围划分0 - 1023知名端口号HTTP、FTP、SSH 等广泛使用的应用层协议它们的端口号都是固定的。1024 - 65535操作系统动态分配的端口号。客户端程序的端口号就是由操作系统从这个范围分配的。理解“端口号”和“进程ID”一个进程可以绑定多个端口号但是一个端口号不能被多个进程绑定。进程 PID 属于系统概念技术上也具有唯一性确实可以用来标识唯一的一个进程。但如果直接在网络中使用 PID会致使系统进程管理和网络强耦合因此实际设计时并没有选择这样做。理解源端口号和目的端口号传输层协议TCP 和 UDP的数据段中有两个端口号分别叫做源端口号和目的端口号用来描述“数据是谁发的要发给谁”。好的本期内容就到这里如果对你有帮助还不要忘记点赞三联支持。我是此方我们下期再见。bye! Linux、C、算法持续连载中欢迎关注WeChat Official Account 【此方的技术栈】。