news 2026/6/15 18:33:43

虚拟网络环境及socket概述

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
虚拟网络环境及socket概述

虚拟网络环境及socket概述

文章目录

  • 虚拟网络环境及socket概述
    • 一、前言
    • 二、VMware虚拟机网络环境概述
      • 2.1 概述
      • 2.2 注意事项
      • 2.3 几种组网方式的区别
      • 2.4 Vmware和Windows的数据互通
    • 三、Socket简介
      • 3.1 什么是socket
    • 四、socket下的常用编程接口
    • 五、小结

一、前言

今天,将带来新的内容——虚拟网络环境的介绍,当进入虚拟的网络环境中,先前学的数据传输,你还认识它吗?

二、VMware虚拟机网络环境概述

2.1 概述

虚拟机是一种软件技术。通过在宿主机里安装一个服务,利用这个服务来共享宿主机的资源,通过服务,虚拟化成多个独立的主机进行管理。

完成虚拟机,首先保证服务是否安装。

这里的宿主机就是Windows

2.2 注意事项

  • 宿主机找到这个服务

    搜索中找到服务->找到VM打头的服务,都要打开(大约4-5个)->通过双击可以查看服务的详细信息


    服务就是一个进程/程序,选了这个服务,就相当于接了一根线。如图,里面有显示文件地址,说明服务就这个文件里,因此说服务是一个程序。在网络中,有两个服务是非常重要的,DHCP服务NAT服务

    安装虚拟机时,如果出现了没有IP地址或者连不上网等情况,可以先检查一下这些服务有没有打开,有时候可能会被杀毒软件给禁用,重新换成自动,再重启以下可能就好了。

2.3 几种组网方式的区别

  • NAT方式

    宿主机里含有一个NAT服务

    NAT是网络地址转换器,可以模拟成路由器(含有LAN口和WAN口)

    NAT有两个IP,一个接收虚拟机内部的私有网,一个将私有网隐藏起来,转成别的IP交给WAN口,WAN口具有路由能力

    • 宿主机被安装了能够连接到NAT路由器的虚拟网卡(vmnet8),宿主机就是通过这个网卡和虚拟机进行通信的
    • 虚拟机如果要访问外网,需要配置网关(只要不在一个网段的,就往网关丢),网关的地址必须是NAT路由器的LAN口IP(不能是windows的vmnet8)
    • vmnet8这个网卡,是宿主机专门用来访问虚拟机用的,一定不要配置网关和DNS,这个网卡不是为宿主机提供网络服务的

    NAT服务就像是一个假的路由器(靠软件实现的),外网能不能上就看宿主机能不能上网。

  • host-only

    宿主机里安装了虚拟的交换机,虚拟机为宿主机提供了vmnet1的网卡,来连接到交换机上。一旦虚拟机网卡连接到了host-only,就意味连接到了交换机,只能和vmnet1进行数据交互。因为没有路由能力(交换机只能识别MAC地址,不能识别IP地址),虚拟机就无法访问外网。

    一个网卡,意味着一个小网络,有单独的IP地址和网段。

    host-only使用的很少

  • 桥接

    虚拟机利用宿主机利用实际的网卡,充当虚拟机的物理层,虚拟机利用自己的独立MAC地址,使用宿主机的物理层进行数据通信

    应用:寝室里其他设备也可以直接访问到虚拟机;嵌入式开发板和虚拟机相连

    一个网卡可以设置很多很多IP地址

    vmnet0指桥接,可以桥接到很多地方

2.4 Vmware和Windows的数据互通

提出问题:vmtools安装不了

介绍:vmtools就是VMware这个虚拟机软件提供的一个插件,只适合同一台机器上宿主机和虚拟机的访问,实验室的多台主机和服务器相连,这个插件就无能为力

建议:使用网络服务进行数据交换

到底是什么服务呢?

C/S模型

介绍:client和server模型(客户端和服务器):就像是浏览器和百度服务器之间的关系

浏览器主动连接百度服务器,百度服务器才会回它消息

使用:利用ssh的远程登陆协议:虚拟机里安装ssh的服务器进程;宿主机安装ssh的客户端进程

  • 虚拟机里安装ssh的服务器进程

    • 如何判断虚拟机里有没有这个服务,若没有就安装

      netstat -tuan——查看当前机器的服务(socket)链接状态

      netstat -tuan // t-所有的tcp;u-所有的udp;a-all;n-以数字形式打印出来

      每行都表示一条链接:协议 + 接收缓存 + 发送缓存 + 本地地址 + 远程地址 + 状态

      只需要找本地地址中端口号为22的,只要有这行就表示服务已经安装好了

    • 如何安装ssh服务

      Ubuntu:敲sshd的命令,自动提示你用什么命令来安装这个服务:sudo apt install openssh-server

      Centos:搜索sshd的服务是什么软件,然后利用yum install xxxx

  • 宿主机安装ssh的客户端进程

    Mobaxterm——免费的开源软件(也可以使用xshell等)

    苹果的自带了ssh的客户端服务。

    在这里我以Mobaxterm为例进行讲解~

    官网安装->使用

    整个软件的核心就是session

在windows上编写程序,传输到传输到Linux上。

Windows上编写了hello world的程序——不要忘记保存

关于Linux的指令这里就不再详述了,只做演示而已

三、Socket简介

3.1 什么是socket

应用层 用户态

/- - - - - - - - - - - - -/ syscall(系统调用,实现从用户态向内核态的转换)需要名词(对象)

传输层
网路层 内核态(这三层)
物理接口层

传输层、网络层和物理接口层就是将用户千方百计构造出来的数据无差错的、有序的发送给对方(可靠传输)

应用层:关注如何处理数据包

如何在用户态访问内核态?

用户态:需要名词(文件描述符)

内核态(这三层):维护了很多条链接,链接可以理解为非常复杂的结构体,用户态不能直接访问。每条链接如何抽象给用户态呢?这就有了文件描述符

文件描述符:就是一个非负整数,如:0、1、2、3等。代表硬件设备,一个进程中管理器的数字号

用户态利用文件描述符和系统调用的动词实现数据的交互。

我们改一下程序:

重新拖到Linux上去运行

奇怪的事情发生了,为什么会这样呢?

printf是一个标准输出的设备,write将标准输出的设备抽象成数字1,向1写那个值,代表着1就是那个设备。设备都有驱动,Linux的操作系统内有一张表01234…,对应内核的驱动。

如:

必须获得这个内核抽象链接的对应的文件描述符,socket可以认为是一张信封,也是一个大而全的通用接口

历史演变

1969年:Linux已经出现了

1973年:有一个分支BSD,伯克利大学在原有的Linux的基础上,提出了一个技术——socket技术(注意:此时网络还没出现)

1985年:网络普及(tcp/ip逐渐得到认可)

为了能像接口一样接入网络,socket本意就是插座,充当一个中转站,实现机器和网络之间的连接

socket正式支持TCP/IP协议,能够上网

四、socket下的常用编程接口

鉴于socket是一个大而全的接口,我们可以使用man 2 socket,选一个合适的参数填进去,从而使用。

socket:拿信封(拿一个进程里面和内核相关的设备行为)

bind:绑定local address

举个例子

完整代码:

#include<stdio.h>#include<string.h>#include<sys/socket.h>#include<netinet/in.h>#include<netinet/ip.h>#include<sys/types.h>#include<arpa/inet.h>intmain(intargc,char*argv[]){structsockaddr_inself;// 结构体里包含了IP和端口信息intret;intudp_socket=socket(AF_INET,SOCK_DGRAM,0);// 获取一张信封,传输层采用了UDP技术// 将这个信封绑定系统的一个端口号,其他客户端就能通过这个端口号向你发出信息// 服务器就可以通过这个端口号来获取信息了memset(&self,0,sizeof(self));self.sin_family=AF_INET;self.sin_port=htons(7788);ret=bind(udp_socket,(conststructsockaddr*)&self,sizeof(self));if(ret==-1){perror("bind");return-1;}// 一定要让服务器不能死掉,一般服务器都是循环等待新的客户请求while(1){getchar();}return0;}

运行结果展示:

五、小结

通过本篇,相信你也对虚拟网络环境的配置有了大致的了解以及有关socket的基本概述,后面将会继续深入~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 20:26:41

fastlane 结合 appuploader 命令行实现跨平台上传发布 iOS App

在自动化发布 iOS 应用这件事上&#xff0c;fastlane 几乎是默认选项。只要团队以 macOS 为中心&#xff0c;构建、签名、上传一条线走完&#xff0c;体验并不差。但当项目开始引入 CI、多系统协作&#xff0c;或者希望把“构建”和“上传”拆开时&#xff0c;fastlane 的前提条…

作者头像 李华
网站建设 2026/6/15 14:56:12

视频直播点播平台EasyDSS构建高并发、低延迟的远程教学直播新模式

随着在线教育的常态化推进&#xff0c;远程教学已成为学校教育与职业培训的重要补充形式。无论是K12阶段的同步课堂、高校的公开课直播&#xff0c;还是企业的内部培训&#xff0c;都对视频直播的稳定性、互动性、多终端适配性提出了严苛要求。EasyDSS作为一款成熟的视频直播点…

作者头像 李华
网站建设 2026/6/15 13:43:35

大数据量 Excel 导入的性能与内存优化实战

大数据量 Excel 导入的性能与内存优化实战 一 核心原则 使用流式/事件驱动读取&#xff08;如 EasyExcel、POI SAX&#xff09;&#xff0c;避免 XSSFWorkbook 一次性将整表加载进内存&#xff0c;内存占用可做到与文件大小基本无关。采用分批处理 批量写入&#xff0c;每批积…

作者头像 李华
网站建设 2026/6/14 18:32:01

AI大模型通用技术架构图,非常详细收藏我这一篇就够了

AI大模型通用技术架构图​最后 我在一线科技企业深耕十二载&#xff0c;见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事&#xff0c;早已在效率与薪资上形成代际优势&#xff0c;我意识到有很多经验和知识值得分享给大家&#xff0c;也可以通过我们的能力和经验解答…

作者头像 李华
网站建设 2026/6/14 18:11:49

小白入门大模型产品经理:完整学习路线与免费资源大礼包_LLM大模型产品经理学习路线

文章提供了大模型产品经理的完整学习路线&#xff0c;包括基础知识、大模型技术、产品管理、实战经验和持续提升五个阶段。同时介绍了七阶段AI大模型学习计划&#xff0c;涵盖系统设计、提示词工程、平台应用开发等内容。文章还提供了一系列免费学习资源&#xff0c;包括学习路…

作者头像 李华