进程间通信(分类):网络通信、无名管道、有名管道、信号、消息队列、共享内存、信号量集
OSI七层模型:(理论模型)
应用层 :  要传输的数据信息,如文件传输,电子邮件等
 表示层 :  数据加密,解密操作,压缩,解压缩
 会话层 :  建立数据传输通道
 传输层 :  传输的方式  UDP  TCP   端口号
 网络层 :  实现数据路由    路由器  ip
 数据链路层 :  封装成帧,点对点通信(局域网内通信),差错检测   交换机  ARP
 物理层 :  定义物理设备标准,比如网线,光纤等传输介质   比特流  bit  0 1
TCP/IP四层模型:(工业生产)
应用程:HTTP, HTTPS(超文本传输协议) (基于TCP)
               FTP : 文件传输协议(基于TCP)
               TFTP:简单文件传输协议(基于UDP)
               MQTT: 消息遥测传输协议(物联网)
               DNS :域名解析服务 
传输层:UDP : 用户数据报协议    面向数据包
               TCP:传输控制协议       面向数据流
 网络层:IPv4、IPv6
 网络接口层:ARP:地址解析协议
标记主机:
 MAC:硬件地址 : 局域网通信
 IP:软件地址
端口号:同一主机,区分不同的网络进程
            2字节的无符号整形数据
             0-65535
ARP:地址解析协议
 网络层:IP协议:IPv4:32bits
                              IPv6:128bits
点分十进制:192.168.1.148
 网络配置:
1.虚拟机——>设置——>网络适配器——>桥接方式
2.编辑——>虚拟网络编辑器——>更改设置——>VMnet0——>桥接模式——>桥接到电脑正在上网的网卡——>应用——>确定
3.修改配置文件: sudo vim /etc/network/interfaces
4.重启网络配置: sudo /etc/init.d/networking restart
5.测试 ifconfig (查看虚拟机的IP地址) ping www.baidu.com
网络通信模型:B/S : Browser——>Server
                                     1. 通用的客户端
                         C/S : Client-----》Server
                                    1. 专用的客户端
                                    2.  客户端也可保存资源

int socket(int domain, int type, int protocol);
     功能:创建一个通讯的套接字
     参数:
          domain: 网络协议族
               AF_INET:   IPv4
               AF_INET6: IPv6
          type: 表示传输层协议类型
              SOCK_STREAM:   tcp
              SOCK_DGRAM:    udp
        protocol:
                 0 : 默认普通正常模式
  成功:文件描述符
   失败:-1
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
                         const struct sockaddr *dest_addr, socklen_t addrlen);
   功能:向目标地址发送数据
    参数:
             sockfd:通讯套接字
             buf:要发送的数据内容首地址
             len : 内容字节数
             flags : 0:默认方式发送
             dest_addr:数据接收方的地址
             addrlen:接收方的地址大小
   返回值:
            成功:实际发送的字节数
            失败:-1
int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
    功能:绑定套接字和自己的地址信息
     参数:
            sockfd:套接字
            addr : 自己的地址信息
            addrlen:地址的大小
    返回值:
          成功:0
          失败:-1
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);
     功能:接收udp发送的数据
     参数:
            sockfd:接收数据的套接字
            buff:保存接收数据的首地址
            len:期待收到的字节数
            flags:0:默认方式接收
            src_addr: 保存发送发地址信息的空间首地址
            addrlen:发送方地址信息大小的首地址
   返回值:
         成功:返回实际收到的字节数
         失败:-1
网络字节序:大端
 主机字节序:小端
htons: 将主机字节序(小端)的short类型转换成网络字节序(大端)
 htonl: 将主机字节序(小端)的long类型转换成网络字节序(大端)
 ntohs:将网络字节序转换成主机字节序
inet_ntoa():将二进程整形ip转换成字符串ip
 inet_addr() : 将字符串ip转换成网络字节序的二进制ip
