Linux操作系统 -socket网络通信

同一台主机之间的进程

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);

具有阻塞功能(直到接收到数据,才会继续向下执行)

相关推荐
C++忠实粉丝3 分钟前
计算机网络socket编程(4)_TCP socket API 详解
网络·数据结构·c++·网络协议·tcp/ip·计算机网络·算法
九州ip动态3 分钟前
做网络推广及游戏注册为什么要换IP
网络·tcp/ip·游戏
Estar.Lee7 分钟前
时间操作[取当前北京时间]免费API接口教程
android·网络·后端·网络协议·tcp/ip
蝶开三月9 分钟前
php:使用socket函数创建WebSocket服务
网络·websocket·网络协议·php·socket
糖豆豆今天也要努力鸭15 分钟前
torch.__version__的torch版本和conda list的torch版本不一致
linux·pytorch·python·深度学习·conda·torch
G丶AEOM23 分钟前
SSL/TLS,SSL,TLS分别是什么
网络·网络协议·网络安全
烦躁的大鼻嘎23 分钟前
【Linux】深入理解GCC/G++编译流程及库文件管理
linux·运维·服务器
儒道易行26 分钟前
【DVWA】RCE远程命令执行实战
网络·安全·网络安全
ac.char30 分钟前
在 Ubuntu 上安装 Yarn 环境
linux·运维·服务器·ubuntu
敲上瘾30 分钟前
操作系统的理解
linux·运维·服务器·c++·大模型·操作系统·aigc