c语言之Linux网络开发

一、网络编程预备知识 socket IP地址 端口号 字节序 (一)socket 是一个编程接口 是一种特殊的文件描述符 (everything in Unix is a file) 并不仅限于TCP/IP协议 面向连接 (Transmission Control Protocol - TCP/IP) 无连接 (User Datagram Protocol -UDP 和 Inter-network Packet Exchange - IPX) (二)socket类型 1、流式套接字(SOCK_STREAM) 提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流,无长度限制。 2、数据报套接字(SOCK_DGRAM) 提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收。 3、原始套接字(SOCK_RAW) 可以对较低层次协议如IP、ICMP直接访问。 (三)socket的位置 (四)IP地址 IP地址是Internet中主机的标识: Internet中的主机要与别的机器通信必须具有一个IP地址 IP地址为32位(IPv4)或者128位(IPv6) 每个数据包都必须携带目的IP地址和源IP地址,路由器依靠此信息为数据包选择路由 表示形式:常用点分形式,如202.38.64.10,最后都会转换为一个32位的无符号整数 (五)端口号 为了区分一台主机接收到的数据包应该转交给哪个进程来进行处理,使用端口号来区别 TCP端口号与UDP端口号独立 端口号一般由IANA (Internet Assigned Numbers Authority) 管理 众所周知端口:1~1023(1~255之间为众所周知端口,256~1023端口通常由UNIX系统占用) 注册端口:1024~49150 动态或私有端口:49151~65535 (六)字节序 不同类型CPU的主机中,内存存储多字节整数序列有两种方法,称为主机字节序(HBO): 小端序(little-endian) - 低序字节存储在低地址 将低字节存储在起始地址,称为“Little-Endi...

玩转虚拟机系列之如何配置静态ip

 一、什么是NAT模式以及动态ip

       玩转虚拟机系列之如何搭建虚拟机中介绍了系统镜像的外壳VMware是如何安装的,以及如何安装一个CentOS系统,那么现在我们通过root用户登陆到系统。

然后通过命令行查看是否可以与宿主机进行通信,也就是上网:

可以看到上网是没有问题的:

       在开始安装虚拟机时我们默认使用的就是NAT模式,它是通过自己单独的路由器然后与物理机的路由器进行通信,类似下图这样:

我们可以在电脑终端中查看宿主机ip信息:

C:\Users\shenjianping>ipconfig 以太网适配器 以太网: ... IPv4 地址 . . . . . . . . . . . . : 192.168.0.118 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 192.168.0.1

然后在VMware中查看虚拟机网络信息:

二、设置静态ip

       在上图中的第4步中可以看到DHCP动态分配ip,那么如果需要静态ip,也就是固定ip怎么做呢?此时我们需要修改网卡ens33信息:

vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet" BOOTPROTO="static" #修改为static DEFROUTE="yes" PEERDNS="yes" PEERROUTES="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="aab5f723-024b-4829-bbfd-4010d7ff53a4" DEVICE="ens33" ONBOOT="yes" IPADDR=192.168.35.3 # 追加ip以及DNS信息 GATEWAY=192.168.35.2 NETMASK=255.255.255.0 DNS1=114.114.114.114 DNS2=8.8.8.8
修改完毕保存即可。然后通过reboot命令重启虚拟机进行查看以及测试。
[root@localhost ~]# ifconfig ens33: flags=4163
  mtu 1500 inet 192.168.226.3 netmask 255.255.255.0 broadcast 192.168.226.255 inet6 fe80::6aee:6bec:d80f:3c37 prefixlen 64 scopeid 0x20
    ether 00:0c:29:0d:24:2b txqueuelen 1000 (Ethernet) RX packets 102 bytes 8026 (7.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 92 bytes 9849 (9.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ... [root@localhost ~]# ping www.baidu.com PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data. 64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=128 time=32.7 ms 64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=128 time=32.7 ms 64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=3 ttl=128 time=33.1 ms
可以看到已经没问题了,ip已经是我们固定下来的静态值。


更多文章合集前往: 往期精彩文章

此博客中的热门博文

玩转虚拟机系列之如何搭建虚拟机

玩转虚拟机系列之远程工具

玩转虚拟机系列之如何高效创建虚拟机