深圳在哪些网站上面做推广知识付费网站搭建
2026/4/15 17:47:22 网站建设 项目流程
深圳在哪些网站上面做推广,知识付费网站搭建,网站界面模板下载,旅游微网站分销目录 一、OSI 与 TCP/IP 模型 1.OSI 模型#xff08;7 层#xff09; 2.TCP/IP 模型#xff08;4 层#xff09; 二、Linux 网络配置#xff1a;命令与文件 1. 永久配置 IP 2.临时配置 IP 3.网络调试命令 三、网络编程核心概念#xff1a;Socket 与字节序 1.Soc…目录一、OSI 与 TCP/IP 模型1.OSI 模型7 层2.TCP/IP 模型4 层二、Linux 网络配置命令与文件1. 永久配置 IP2.临时配置 IP3.网络调试命令三、网络编程核心概念Socket 与字节序1.Socket套接字2.字节序四、UDP 通信无连接的传输协议1.UDP 通信流程2.核心函数解析2.1 创建套接字socket()2.2 绑定地址bind()2.3 发送数据sendto()2.4 接收数据recvfrom()五、UDP 通信代码示例1.服务端代码server.c2.客户端代码client.c3.编译运行4.运行结果一、OSI 与 TCP/IP 模型1.OSI 模型7 层网络通信是分层协作的先理清最基础的分层逻辑。OSI 模型从下到上是物理层→数据链路层→网络层→传输层→会话层→表示层→应用层。层级层描述常用协议7应用层为应用程序或用户请求提供各种请求服务。HTTP、FTP、STMP、POP3、TELENT、NNTP、IMAP4、FINGER6表示层数据编码、格式转换、数据加密。LPP、NBSSP5会话层创建、管理和维护会话。SSL、TLS、DAP、LDAP4传输层数据通信。TCP、UDP3网络层IP选址及路由选择。IP、ICMP、RIP、IGMP、OSPF2数据链路层提供介质访问和链路管理。以太网、网卡、交换机、PPTP、L2TP、ARP、ATMP1物理层管理通信设备和网络媒体之间的互联互通。物理线路、光纤、中继器、集线器、双绞线、网络适配器物理层负责把主机中的数据转换成电信号再通过网络介质(双绞线、光纤、无线信道等)来传输。该层描述了通信设备的机械、电气、功能等特性。数据链路层负责物理相邻通过网络介质相连的主机间的数据传输主要作用包括物理地址寻址、数据帧封装、差错控制等。该层可分为逻辑链路控制子层LLC和介质访问控制子层MAC。网络层负责数据传输的路由选择和网际互连。传输层管理网络通信两端的数据传输提供可靠或不可靠的传输服务。会话层负责信息传输的组织和协调管理进程会话过程。表示层为不同主机间的通信提供统一的数据表示形式。应用层为网络用户提供各种服务例如电子邮件、文件传输等。2.TCP/IP 模型4 层TCP/IP 模型是 OSI 模型的简化版对应关系是网络接口层→ OSI 的数据链路 物理层负责监视数据在主机和网络之间的交换。网络层→ 对应 OSI 网络层主要解决主机到主机的通信问题。传输层→ 对应 OSI 传输层为应用层实体提供端到端的通信功能保证了数据包的顺序传送及数据的完整性。应用层→ OSI 的应用 会话 表示层为用户提供所需要的各种服务。二、Linux 网络配置命令与文件在 Linux 里配置网络常用这几个操作1. 永久配置 IP编辑网络配置文件sudo vim /etc/network/interfaces在文件里设置 IP手动 / 自动修改后重启网络服务生效sudo /etc/init.d/networking restart2.临时配置 IP用 ifconfig 临时设 IP重启失效ifconfig ens33 192.168.0.13/24 up3.网络调试命令查本机 IPifconfig测试联网ping www.baidu.com查网络连接netstat -anp三、网络编程核心概念Socket 与字节序1.Socket套接字Socket 是 “网络文件描述符”打开网络设备后获得它就能通过它收发数据。标识一个网络连接IP端口IP 定位主机端口定位主机上的应用程序端口范围1~655352.字节序网络设备和主机的字节存储顺序可能不同网络字节序大端存储高位字节存在低地址主机字节序小端存储Intel/AMD/ARM CPU 都是小端四、UDP 通信无连接的传输协议UDP 是 “用户数据报协议”特点是无连接、低延迟、不可靠发太快会丢包适合音视频这类对实时性要求高的场景。1.UDP 通信流程服务端步骤socket()创建套接字bind()绑定 IP 和端口recvfrom()接收客户端数据sendto()给客户端回发数据close()关闭套接字客户端步骤socket()创建套接字sendto()给服务端发数据recvfrom()接收服务端回复close()关闭套接字函数调用关系2.核心函数解析2.1 创建套接字socket()int socket(int domain, int type, int protocol);domain地址族PF_INET 网络程序type套接字类型SOCK_DGRAMUDPprotocol协议填 0 自动适配返回值成功返回套接字 fd失败返回 - 12.2 绑定地址bind()int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);sockfd要绑定的套接字 fdmy_addr网络地址结构IPv4 用 struct sockaddr_instruct sockaddr_in { u_short sin_family; // 地址族AF_INET u_short sin_port; // 端口要转网络字节序 struct in_addr sin_addr; // IP地址 };返回值成功 0失败 - 12.3 发送数据sendto()ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen);dest_addr目标主机的地址结构返回值成功返回发送的字节数失败 - 12.4 接收数据recvfrom()ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen);src_addr可选存发送方的地址返回值成功返回接收的字节数失败 - 1五、UDP 通信代码示例1.服务端代码server.c#include arpa/inet.h #include netinet/in.h #include netinet/ip.h #include stdio.h #include stdlib.h #include string.h #include strings.h #include sys/socket.h #include sys/types.h #include time.h #include unistd.h typedef struct sockaddr *(SA); int main(int argc, char **argv) { // 创建UDP套接字 int sockfd socket(AF_INET, SOCK_DGRAM, 0); if (-1 sockfd) { perror(socket); return 1; } // 初始化服务端/客户端地址结构 struct sockaddr_in ser, cli; bzero(ser, sizeof(ser)); bzero(cli, sizeof(cli)); ser.sin_family AF_INET; ser.sin_port htons(50000); // Host to Network Short将主机字节序转为网络字节序大端序 ser.sin_addr.s_addr inet_addr(192.168.0.159); // 绑定套接字到指定IP和端口 int ret bind(sockfd, (SA)ser, sizeof(ser)); if (-1 ret) { perror(bind); return 1; } // 循环接收客户端数据并回复 socklen_t len sizeof(cli); while (1) { char buf[512] {0}; recvfrom(sockfd, buf, sizeof(buf), 0, (SA)cli, len); printf(recv:%s\n, buf); time_t tm; time(tm); struct tm *info localtime(tm); sprintf(buf, %s %d:%d:%d, buf, info-tm_hour, info-tm_min, info-tm_sec); sendto(sockfd, buf, strlen(buf) 1, 0, (SA)cli, len); } close(sockfd); return 0; }2.客户端代码client.c#include arpa/inet.h #include netinet/in.h #include netinet/ip.h #include stdio.h #include stdlib.h #include string.h #include strings.h #include sys/socket.h #include sys/types.h #include time.h #include unistd.h typedef struct sockaddr *(SA); int main(int argc, char **argv) { // 创建UDP套接字 int sockfd socket(AF_INET, SOCK_DGRAM, 0); if (-1 sockfd) { perror(sockfd); return 1; } // 初始化服务端地址结构 struct sockaddr_in ser; bzero(ser, sizeof(ser)); ser.sin_family AF_INET; ser.sin_port htons(50000); ser.sin_addr.s_addr inet_addr(192.168.0.159); // 循环向服务端发送数据并接收回复 int i 10; while (i--) { char buf[512] hello; sendto(sockfd, buf, strlen(buf), 0, (SA)ser, sizeof(ser)); bzero(buf, sizeof(buf)); recvfrom(sockfd, buf, sizeof(buf), 0, NULL, NULL); printf(recv:%s\n, buf); sleep(1); } close(sockfd); return 0; }3.编译运行# 编译服务端 gcc udp_server.c -o server # 编译客户端 gcc udp_client.c -o client # 启动服务端 ./server # 另开终端启动客户端 ./client4.运行结果

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询