当前位置: 首页 > news >正文

自助公益网站建设如何进行网站开发

自助公益网站建设,如何进行网站开发,常州比较有名的设计公司,沈阳市住房和城乡建设厅网站网络编程是现代软件开发中不可或缺的一部分,它涉及到计算机之间的数据交换和通信。本文将从基础理论入手,详细解析 OSI 模型和 TCP/IP 协议族,然后深入探讨 TCP 编程的基础知识,最后介绍常用的网络测试工具。通过理论与实践相结合…

网络编程是现代软件开发中不可或缺的一部分,它涉及到计算机之间的数据交换和通信。本文将从基础理论入手,详细解析 OSI 模型和 TCP/IP 协议族,然后深入探讨 TCP 编程的基础知识,最后介绍常用的网络测试工具。通过理论与实践相结合的方式,帮助读者全面掌握网络编程的核心概念和技能。

一、网络模型:OSI 与 TCP/IP
1. OSI 模型(开放系统互联模型)

OSI 模型将网络通信分为七层,虽然是理想模型但尚未完全实现:

  • 应用层:为用户提供应用程序服务(如电子邮件、文件传输)。
  • 表示层:处理数据表示和转换(如加密、压缩)。
  • 会话层:管理会话建立、维护和终止(如 keep-alive 机制)。
  • 传输层:提供端到端的可靠(TCP)或不可靠(UDP)传输。
  • 网络层:负责路由选择和 IP 寻址(如 NAT)。
  • 数据链路层:处理物理链路的数据帧传输(如交换机、帧校验)。
  • 物理层:传输比特流(如电缆、无线信号)。
2. TCP/IP 模型(网际互联模型)

TCP/IP 是实用的工业标准,分为四层:

  • 应用层:包含 HTTP、FTP、DNS 等协议。
  • 传输层:TCP 和 UDP 协议。
  • 网络层:IP、ICMP 等协议。
  • 接口层:负责物理连接(如网卡驱动)。
二、TCP/IP 协议族详解

TCP/IP 协议族是互联网的基础,包含众多协议:

  • 应用层:HTTP(网页)、TFTP(简单文件传输)、FTP(文件传输)、SNMP(网络管理)、DNS(域名解析)。
  • 传输层:TCP(可靠连接)和 UDP(无连接)。
  • 网络层:IP(寻址)、ICMP(网络控制)、RIP/OSPF(路由)、IGMP(组播)。
  • 物理层:ARP(IP 到 MAC 地址解析)、RARP(反向解析)。
三、TCP 编程基础知识
1. IP 地址分类

IP 地址分为五类,常见的是 A、B、C 类:

  • A 类:1.0.0.0 - 126.255.255.255(默认掩码:255.0.0.0)。
  • B 类:128.0.0.0 - 191.255.255.255(默认掩码:255.255.0.0)。
  • C 类:192.0.0.0 - 223.255.255.255(默认掩码:255.255.255.0)。
  • 私有地址:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16。
2. 网络接口与套接字(Socket)
  • Socket:网络通信的接口,通过 socket() 函数创建。
  • 地址与端口:IP 地址标识主机,端口(1-65535)标识应用程序。
  • 字节序转换:网络字节序为大端序,使用 htons()htonl() 等函数转换。
3. TCP 编程流程

服务器端

socket() → bind() → listen() → accept() → recv() → close()

客户端

socket() → connect() → send() → close()
四、TCP 编程实战

以下是一个简单的 TCP 服务器和客户端示例:

服务器端代码(01ser.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>typedef struct sockaddr *SA;int main(int argc, char **argv) {// 创建套接字int udpfd = socket(AF_INET, SOCK_STREAM, 0);if (udpfd == -1) {perror("socket");return 1;}// 设置服务器地址struct sockaddr_in ser;memset(&ser, 0, sizeof(ser));ser.sin_family = AF_INET;ser.sin_port = htons(50000);ser.sin_addr.s_addr = inet_addr("192.168.31.248");// 绑定地址if (bind(udpfd, (SA)&ser, sizeof(ser)) == -1) {perror("bind");return 1;}// 监听连接if (listen(udpfd, 5) == -1) {perror("listen");return 1;}printf("等待客户端连接...\n");// 接受客户端连接struct sockaddr_in cli;socklen_t len = sizeof(cli);int connfd = accept(udpfd, (SA)&cli, &len);if (connfd == -1) {perror("accept");return 1;}printf("客户端已连接: %s:%d\n", inet_ntoa(cli.sin_addr), ntohs(cli.sin_port));// 接收数据char buf[1024];while (1) {memset(buf, 0, sizeof(buf));ssize_t ret = recv(connfd, buf, sizeof(buf), 0);if (ret <= 0) {printf("客户端断开连接\n");break;}printf("客户端消息: %s\n", buf);}// 关闭连接close(connfd);close(udpfd);return 0;
}

客户端代码(02cli.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>typedef struct sockaddr *SA;int main(int argc, char **argv) {// 创建套接字int udpfd = socket(AF_INET, SOCK_STREAM, 0);if (udpfd == -1) {perror("socket");return 1;}// 设置服务器地址struct sockaddr_in ser;memset(&ser, 0, sizeof(ser));ser.sin_family = AF_INET;ser.sin_port = htons(50000);ser.sin_addr.s_addr = inet_addr("192.168.31.248");// 连接服务器if (connect(udpfd, (SA)&ser, sizeof(ser)) == -1) {perror("connect");return 1;}printf("已连接到服务器\n");// 发送数据char buf[1024];while (1) {memset(buf, 0, sizeof(buf));printf("输入消息(输入 'exit' 退出): ");fgets(buf, sizeof(buf), stdin);// 去除换行符buf[strcspn(buf, "\n")] = 0;if (strcmp(buf, "exit") == 0) {break;}// 发送数据send(udpfd, buf, strlen(buf), 0);}// 关闭连接close(udpfd);return 0;
}
五、常用网络测试工具
  1. telnet:远程登录工具,用于测试端口连通性。

    telnet 192.168.1.1 8080
    
  2. netstat:查看网络连接和端口状态。

    netstat -anp  # 查看所有连接和进程信息
    
  3. ping:测试网络连通性。

    ping www.baidu.com
    
  4. arp:查看和管理 ARP 缓存。

    arp -an  # 显示 ARP 表
    
  5. 抓包工具

    • Wireshark:图形界面抓包工具。
    • tcpdump:命令行抓包工具。
      tcpdump -n -i eth0 src or dst 192.168.1.100  # 抓指定 IP 的包
      
六、TCP 三次握手与四次挥手
1. 三次握手(建立连接)
  1. 客户端发送 SYN 包到服务器。
  2. 服务器回复 SYN+ACK 包。
  3. 客户端发送 ACK 包完成连接。
2. 四次挥手(关闭连接)
  1. 客户端发送 FIN 包表示请求关闭。
  2. 服务器回复 ACK 确认。
  3. 服务器发送 FIN 包表示请求关闭。
  4. 客户端回复 ACK 确认。
七、总结

网络编程是一个复杂而庞大的领域,本文从 OSI 模型和 TCP/IP 协议族出发,详细介绍了 TCP 编程的基础知识和实践技巧,以及常用的网络测试工具。掌握这些内容是进行网络编程的基础,希望读者通过本文能够建立起完整的网络编程知识体系,并在实践中不断深化理解。

通过后续的练习和作业(如发送结构体数据、文件传输等),读者可以进一步巩固所学知识,逐步成为网络编程的高手。

http://www.dtcms.com/a/545054.html

相关文章:

  • 仓颉语言相机拍照功能实现深度解析
  • **发散创新:AI绘画编程探索与实践**随着人工智能技术的飞速发展,AI绘
  • linux命令-文件目录操作-1
  • 【完整源码+数据集+部署教程】【制造业&传送带】几何形状检测系统源码&数据集全套:改进yolo11-DGCST
  • 面试的时候项目怎么聊,才能发挥最大的价值
  • PsTools 学习笔记(7.2):通用功能与远程操作基础
  • 做网站浏览器必须用xp系统吗张掖市作风建设年活动网站
  • 内江网站建设公司清华建设工程有限公司公司网站
  • VxWorks入门小白菜鸟教程4 —— 异步I/O库(AIO)的使用
  • 基于k8s部署wordpress博客系统并实现数据的持久化
  • SQL 查询语句的子句的执行顺序
  • sql 双游标循环
  • SQL 189 统计有未完成状态的试卷的未完成数和未完成率
  • 有哪些做微信小游戏的网站建设网站后期人员薪酬
  • 黑龙江交通基础设施建设网站怎么做推广网站
  • 企业微信AI SCRM推荐:从技术适配与场景功能实践进行评估
  • 从开源到落地:SimpleBGC 三轴稳像平台全栈技术解析(下)
  • 零基础新手小白快速了解掌握服务集群与自动化运维(十六)集群部署模块——Keepalived双机热备
  • 网站建设论坛做一个网站的流程
  • 金仓数据库平替MongoDB:银行存款系统国产化实践
  • 基于 Spring AI Alibaba 搭建 Text-To-SQL 智能系统(前置介绍)
  • 搞笑资讯网站源码数据库支持的网站怎么做
  • 友思特应用 | 基于高精度双目散斑 3D 相机的放射治疗视觉定位应用
  • MCU寄存器配置深度解析:从原理到实践
  • 论文学习_LLM4Decompile: Decompiling Binary Code with Large Language Models
  • 【日记】好耶!是新电脑!(3959 字)
  • Day73 嵌入式传感器技术全栈开发
  • 学历提升有几种方式长沙正规seo优化公司
  • 合肥网络公司 网站建设网站建设 预算
  • 23大数据 数据挖掘集合