公司动态

【网络通信】不同主机通信、socket、IP地址

📅 2026/8/13 11:16:00
【网络通信】不同主机通信、socket、IP地址
目录引言socketIP地址三类IP地址点分十进制IP地址的组成1.A类地址网络地址查询网络情况ifconfig查询网络情况ping主机地址2.B类地址3.C类地址4.224.x.x.x~255.x.x.x子网掩码的作用杂碎引言Q如何实现两台主机间的进程实现数据传输?A同一台主机中的实现进程间通信的方式都是需要使用系统资源的而两台不同的主机的系统资源是不共享的。Linux系统的思想是“一切皆文件”所以Linux系统把文件的类型分为七种分别是普通文件、目录文件、管道文件、链接文件、字符设备文件、块设备文件、套接字文件。其中管道文件(pipe)的作用是为了实现同一台主机中不同进程间通信的而套接字文件(socket)的作用则是用于实现不同主机中的进程间通信的。socketsocket在Linux系统中指的是一种特殊接口实现互联网中不同主机上的应用进程之间进行双向通信。socket接口一般采用的是C/S架构C指的是客户端clientS指的是服务器server。也就是说利用该接口可以实现支持多个客户端对同一个服务器进行并发访问也可以实现一对一通信。IP地址Q主机都会连接到互联网中并且这些主机可能都会使用的相同网络协议那么作为主机A而言如何可以精确查找到想要通信的主机B而不会出现误发?A要实现双方主机的通信则需要知道双方主机的通信地址。在互联网中的每台主机都有一个IP地址Internet Protocol AddressIP地址给每个连接在互联网中的主机或者其他设备分配的一个在全世界唯一的的标识符而IP地址是由IP协议Internet Protocol提供的一种统一的地址格式。IP v4Internet Protocol version 4 第四个版本255.255.255.255 1111_1111 . 1111_1111 . 1111_1111 . 1111_1111 个IP三类IP地址可以看到IP协议中把网络地址主要分为三类分别是A类地址、B类地址、C类地址对于IP地址范围的划分需要阅读相关标准标准如下点分十进制通过标准可以知道IP协议提供的IP地址是32bit的并且把32bit分为4个段每个段由8bit组成每个段的值指定为十进制数也就是范围是0~255并且每个段使用英文句号分隔一般把这种表示方式称为“点分十进制”。打开计算机的网络设置可以看到IPv4地址就是采用点分十进制表示并且可以选择手动配置IP地址或通过动态主机配置协议DHCP自动分配IP如下图IP地址的组成Q标准中可以看到IP地址的组成分为三部分高阶位、网络编号、本地地址请问网络编号和本地地址的区别是什么AIP地址中的高阶位用于区分IP地址的类型由于一个IP地址是32bit的并且分为4个字段每个字段8bit1字节。而A类地址的第一个字节最高位固定是0B类地址的第一个字节最高位固定是10C类地址的第一个字节的最高位固定是110。另外可以把IP地址的组成分为两部分高阶位和网络编号看作是一部分本地地址看作是另一部分即可网络号区分在哪个网络下找你在哪个圈子。在哪个课室主机号找你在圈子里的哪个位置。课室里的哪个位置1.A类地址A类地址的网络编号占7bit范围是0~127也就是说理论上支持128个A类网络而每个A类网络中IP地址的本地地址占3个字段24bit所以每个A类网络理论上可以连接224个主机也就是说A类网络的IP地址的范围是 0.0.0.0 ~ 127.255.255.255。网络地址注意但是存在两种特殊情况网络编号为0 以及 网络编号为127这两个编号属于保留。特殊情况1网络编号位数全部为0IP地址的网络编号的值为0则表示本网络。特殊情况2网络编号位数全部为1IP协议中把网络编号为127的IP地址称为环回地址LoopBack环回的意思是把消息原样送回给发送者也就是说IP地址范围是127.xxx.xxx.xxx的地址其实都属于环回地址如果此时主机号是1也就是IP地址如果是127.0.0.1则表示本地环回地址也就是主机本身。查询网络情况ifconfigLinux系统中可以通过shell命令:ifconfig 来查看主机的网络配置其中就可以看到本地环回地址查询网络情况ping通过ping命令来对本地环回地址进行测试如果可以联通则表示主机的网卡和主机安装的IP协议都没问题如下图根据上述内容可以得到结论A类网络实际最多支持126个也就是A类地址的网络编号范围是1~126也就是说A类网络的IP地址的范围是1.0.0.0 ~126.255.255.255。主机地址掌握了IP地址中的网络编号的规则之后还需要了解一下IP地址中的本地地址的分配规则本地地址的作用是标识处于某个网络中的唯一主机。对于A类地址而言本地编号采用24bit所以每个A类网络理论上可以连接224个主机但是也存在两种特殊情况如下特殊情况1本地地址位数全部为0注意当IP地址的网络编号范围在1~126此时如果IP地址的本地地址的24bit都为0时此时只能区分出当前主机处在哪个网络也就是只可以得到网络地址也可以称为网段。举个例子IP地址如果是 5.0.0.0此时只能知道网络地址该地址一般会记录在路由器中。特殊情况2本地地址位数全部为1注意当IP地址的网络编号范围在1~126此时如果IP地址的本地地址的24bit都为1时此时相当于选择了处于该网络的所有主机所以一般把该地址称为广播地址。举个例子IP地址如果是 5.255.255.255此时表示选择所有在该网络中的主机如果把该地址作为目的地址则向该地址发送数据包就相当于向处于该网络中的所有主机发送数据包。2.B类地址可以看到IP协议标准中对B类地址的网络编号分配了16bit其中最高的2bit固定为10所以按照点分十进制的表示方式B类网络的IP地址的网络编号范围是128.0 ~ 191.255也就是理论上最多支持16384个B类网络。注意由于B类网络的网络编号最高2bit固定是10所以网络编号就不存在16bit全部为0和16bit全部为1的情况所以实际支持的B类网络就是16384个。对于B类网络而言IP地址的本地地址占16bit所以每个B类网络理论上支持的主机数量为216个也就是65536台。所以B类网络的IP地址范围是128.0.0.0 ~ 191.255.255.255。但是有特殊情况本地地址位数全部为0网络地址 和 本地地址位数全部为1广播地址所以每个B类网络实际上支持的最大主机数量是65536 - 2 65534个。3.C类地址可以看到IP协议中对C类地址的网络编号分配了24bit其中最高的3bit固定为110所以按照点分十进制的表示方式C类网络的IP地址的网络编号范围是192.0.0 ~ 223.255.255。也就是说理论上支持2097152个C类网络由于网络编号的最高是固定为110所以不存在网络编号全部位数为0和全部位数为1的情况所以实际上支持2097152个C类网络由于C类网络只分配了8bit的本地地址所以意味着每个C类网络理论上可以支持256台主机。但是有特殊情况本地地址位数全部为0网络地址 和 本地地址位数全部为1广播地址所以每个C类网络实际上支持的最大主机数量是256 - 2 254个。4.224.x.x.x~255.x.x.xQA类地址的网络编号是0. ~127. B类地址的网络编号是128.0 ~191.255C类地址的网络编号是192.0.0 ~223.255.255请问224.0.0 ~ 255.255.255的网络编号为何不用A对于IP地址而言还存在D类地址和E类地址只不过这两类地址不用于标识主机因为这两类地址没有分配本地地址也就是这两类地址的32bit全部分配给网络编号。子网掩码的作用Q已知双方主机的IP地址请问应该如何判断双方主机是否处于同一个网络呢A想要知道双方主机是否处于同一个网络则只需要知道双方主机的网络编号是否一致即可但是主机的IP地址是两部分网络编号本地地址组成的所以可以使用子网掩码方便的得到主机IP地址的网络编号。子网掩码用于“与”掉主机号。由于IP地址分为A类地址、B类地址、C类地址并且这三类地址的网络编号的位数不同所以这三类地址的子网掩码也不同。比如C类地址的子网掩码默认是255.255.255.0假设主机的IP地址是192.168.5.120则只需要把主机的IP地址和子网掩码进行位与操作可得到主机的网络编号为192.168.5然后就可以确定主机的所在网络也可以称为主机的网段。后期为了简化IP地址提出无分类地址方案CIDR该方案把IP地址分为两部分网络编号和主机编号表示形式为a.b.c.d/xx指的是前x位是网络编号所以x的范围是0~32。比如把IP地址写为192.168.5.120/24/24就是指该IP地址的网络编号有24bit主机编号有8bit所以就相当于子网掩码是255.255.255.0。杂碎不同的网络中 不同的网段网段 网络号