同一台主机之间的进程
1.古老的通信方式
无名管道
有名管道
信号
2、IPC对象通信 system v
消息队列
共享内存
信号量集
由于不同主机间进程通信
3.socket网络通信
国际网络体系结构: 七层OSI模型(理论模型)
应用层:要传输的数据信息,如文件传输,电子邮件等
表示层:数据加密,解密操作,压缩,解压缩
会话层:建立数据传输通道
传输层:传输的方式 UDP TCP 端口号
网络层:实现数据路由 路由器 ip
数据链路层:封装成帧,点对点通信(局域网内通信),差错检测 交换机 ARP地址解析协议
物理层:定义物理设备标准,比如网线,光纤等传输介质 比特流
TCP/IP模型: 工业模型
4层
应用层:HTTP、HTTPS、FTP、TFTP、MQTT
传输层:TCP、UDP
网络层:IP
网络接口层:网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路
5层
应用层:HTTP、HTTPS、FTP、TFTP、MQTT
传输层:TCP、UDP
网络层:IP
数据链路层:封装成帧,点对点通信(局域网内通信),差错检测 交换机
物理层:定义物理设备标准,比如网线,光纤等传输介质 比特流 bit
协议:
应用层协议:
FTP:文件传输协议(实现文件上传/下载)
TFTP:简单文件传输协议(实现文件上传/下载)
HTTP:超文本传输协议(实现超文本集视频、图片、文字于一体的文件类型传输
HTTPS:加密版超文本传输协议
MQTT:消息队列遥测传输协议(物联网传输)
传输层协议:
UDP:用户数据报协议
TCP:传输控制协议
网络层:
IP协议
192.168.1.128
IPv4 32位
IPv6 128位
网络位:该IP地址位于哪个网段(局域网)内
主机位:这个网段(局域网)第几台主机
子网掩码: 用来区分IP地址的网络位和主机位,搭配IP地址使用。
子网掩码是1的部分对应IP地址的网络位
子网掩码是0的部分对应IP地址的主机位
公有IP:由电信公司直接分配,并需要付费的IP地址, 可以直接访问internet
私有IP:不能直接访问internet的ip地址
网络编程之 UDP
UDP:用户数据报协议
1、特性:
1.发送数据时不需要建立链接,节省资源开销
2.不安全不可靠的协议 //一般用在实时性比较高的广播,组播//vnc
3.面向报文。
4.资源开销小
2、框架:
C/S模式 :有一个专用的客户端
server:socket() ===>bind()===>recvfrom()===>close()
client:socket() ===> bind()===>sendto() ===>close()
B/S模式 :有一个通用的客户端浏览器
套接字编程接口:
套接字:通信对象的抽象, 网络通信的端口,一个通信链的句柄。
1.socket: 创建一个用来通信的接口(文件描述符)
int socket(int domain, int type, int protocol);
2.sendto:向一个IP地址和端口发送数据信息
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen);
3.htons ---> 主机转网络字节序
主机:小端 host
网络:大端 network
4.inet_addr
将字符串IP地址转换成二进制IP地址形式
in_addr_t inet_addr(const char *cp);
5.bind:将一个套接字与IP地址和端口号绑定(只能绑定自己的IP地址)
int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
6.recvfrom:接收网络发送的数据信息
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);
具有阻塞功能(直到接收到数据,才会继续向下执行)