Linux网络编程-osi、udp

发布于:2025-07-25 ⋅ 阅读:(21) ⋅ 点赞:(0)

网络:不同主机,进程间通信

达到不同主机之间的困难:

        解决主机之间的硬件层面的互联互通

        解决主机之间的软件层面的互联互通

广域网:进行大范围网络数据交换

IP地址:区分不同主机 唯一的(软件地址)

MAC地址:硬件地址

端口号:区分同一主机上的不同进程

网络字节序:大端(逆序)

主机字节序:小端(顺序)

1.osi七层模型

  OSI:开放系统互联模式

                应用层 :要传输的数据信息,如文件传输,电子邮件等;

                表示层:数据加密,解密操作,压缩,解压缩;

                会话层:建立数据传输通道;

                传输层:传输的方式UDP TCP 端口号

                网络层:实现数据路由 路由器 ip

                数据链路层:封装成帧,点对点通信(局域网内通信),差错检测 交换机 ARP

                物理层:定义物理设备标准,比如网线,光纤等传输介质  比特流  bit  0 1

2.TCP/IP模型           

        2.1五层模型

                应用层:HTTP(超文本传输协议)、HTTPS(比HTTP多一层加密协议)、FTP(文件传输协议)、TFTP(简单文件传输协议,下层选择不一样)、MQTT(消息队列遥测传输协议)

                传输层:TCP(传输控制协议)、UDP(用户数据报协议)
                网络层:

                数据链路层:封装成帧,点对点通信(局域网内通信),差错检测   交换机

                物理层:定义物理设备标准,比如网线,光纤等传输介质   比特流  bit

        2.2四层模型

                 应用层:HTTP、HTTPS、FTP、TFTP、MQTT

                传输层:TCP(传输控制协议)、UDP(用户数据报协议)

                网络层: IP

                网络接口层: 网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路

3.网络层协议

        3.1IP(ipv4"32bie"\ipv6"64bit")

                                网络位:子网掩码全为1的位是ip地址的网络位

                                192.168.1.0(网段号:IP地址网络位不变,主机位全为0,则为该P地址的网段号)

                                                    广播号:192.168.1.255:IP地址网络位不变,主机位全为1
                                                    网关号:192.168.1.1

                                主机位:子网掩码全为1的位是ip地址的主机位

                                子网掩码:  255.255.255.0(前三个是网络位,最后一位是主机位)

        3.2端口号:区分同一主机上的不同进程

                *16位的数值 0-65535作用:唯一的标识一个进程每一个应用进程都有一个端口号;通讯时用来区分数据包属于哪一个进程。
                Mtp :80

                FTP:20/21

                TFPT: 69

                HTTPS: 443

                MQTT:1883

ip是面向计算机的,域名是面向人的(将域名解析为ip地址  DNS"域名解析服务”)

4.udp编程常用接口

客户端:

        socket():创建网络套接字

        sendto():发送数据包

        recvfrom():接受数据包

        close():关闭套接字

int socket(int domain,int type,int protocol)
功能:创建一个通信套接字
参数:

domain:ip层协议族

        AF_INET  IP4

        AF_INET6  IP6

type:传输层使用的协议类型

        SOCK_DGRAM UDP

        SOCK_STREAM TCP

protocol:

        0按照默认协议返回值

返回值:

成功:返回套接字

失败:-1

size_t  sendto(int sockfd,const void *buf,sizeof_t len,int flags,const struct sockaddr *dest_addr,socklen_t addrlen);
功能:向通信套接字发送数据
参数:

sockfd:套接字

buf:要发送的数据的首地址

len:发送的数据的大小

flags:默认方式 0

dest_addr:保存接受方地址信息的指针

.sin_port = htons(50000)//

.sin_addr.s_adde =inet_addr("ip地址")//将地址转为un int  inet_ntoa(int 转char)

addrlen:接收方地址变量的大小

返回值:

成功:实际发送的字节数

失败:-1

服务端:

        socket()

        bind():绑定服务器当前主机的身份(IP+PORT)

        recvfrom():接收

        sendto():发送

        close():关闭

bind(int sockfd,const struct sockaddr *addr,socklen_t addrlen)
功能:绑定当前主机的ip和进程的端口
参数:

 sockfd:套接字

addr:自己信息的地址

addrlen:地址信息的大小

返回值:

成功:0

失败:-1

 ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
                        struct sockaddr *src_addr, socklen_t *addrlen);
功能:从套接字接受数据
参数:

sockfd:套接字

buf:存储接收到的数据的位置的首地址

len:期待接收到的字节数

flags::默认方式:0
src_addr:送发地址信息的首地址

addrlen:送发方地址变量的大小

返回值:

成功:返回接收到的字节数

失败:-1

B/S模型:browser/server 客户端(通用)(浏览器)/服务端(专用)

C/S模型:client/server 客户端(专用)/服务端(专用)


网站公告

今日签到

点亮在社区的每一天
去签到