Linux网络操作命令与函数全面总结

c8a09c625b002bfc04605dc407775605.jpeg

1. 引言

Linux作为服务器和开发平台,网络操作是其核心功能之一。本文旨在全面总结Linux系统中的网络操作方法,包括命令行工具和编程接口,帮助读者深入理解Linux网络管理的机制。

2. 命令行工具

2.1 ping 命令

ping 命令用于测试网络连接和延迟。

  • 基本使用ping [选项] 目标IP或域名
  • 常用选项
    • -c:指定发送报文的次数

2.2 ifconfig 或 ip 命令

ifconfig(较老版本)和 ip 命令用于配置和显示网络接口参数。

  • ip 基本使用
    • 显示接口:ip link show
    • 启用接口:ip link set dev 接口名 up
    • 配置IP:ip addr add IP地址/子网掩码 dev 接口名

2.3 netstat 或 ss 命令

netstat(较老版本)和 ss 命令用于显示网络连接、路由表、接口统计等网络信息。

  • ss 基本使用
    • 显示所有连接:ss -a
    • 显示监听端口:ss -l

2.4 traceroute 或 tracepath 命令

traceroute(较老版本)和 tracepath 命令用于跟踪数据包到达目的地的路径。

  • traceroute 基本使用traceroute [选项] 目标IP或域名
  • tracepath 基本使用tracepath 目标IP或域名

2.5 arp 命令

arp 命令用于操作系统的ARP缓存,显示或修改地址解析协议缓存。

  • 基本使用arp [选项]
  • 常用选项
    • -a:显示ARP缓存表

3. 编程接口

3.1 套接字编程

3.1.1 socket() 函数

socket() 函数用于创建套接字。

  • 函数原型int socket(int domain, int type, int protocol);
  • 示例代码
    #include <sys/socket.h>int main() {int sockfd = socket(AF_INET, SOCK_STREAM, 0);if (sockfd < 0) {perror("Error creating socket");return 1;}close(sockfd);return 0;
    }
    

3.1.2 bind() 函数

bind() 函数用于绑定套接字到地址和端口。

  • 函数原型int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
  • 示例代码
    #include <sys/socket.h>
    #include <netinet/in.h>int main() {int sockfd = socket(AF_INET, SOCK_STREAM, 0);struct sockaddr_in serv_addr;serv_addr.sin_family = AF_INET;serv_addr.sin_addr.s_addr = INADDR_ANY;serv_addr.sin_port = htons(8080);if (bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {perror("Error binding");return 1;}close(sockfd);return 0;
    }
    

3.1.3 listen() 和 accept() 函数

listen() 函数用于监听套接字上的连接,而 accept() 函数用于接受连接。

  • 函数原型
    • int listen(int sockfd, int backlog);
    • int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
  • 示例代码
    #include <sys/socket.h>
    #include <netinet/in.h>int main() {int sockfd = socket(AF_INET, SOCK_STREAM, 0);// 绑定套接字...listen(sockfd, 5);int newsockfd = accept(sockfd, NULL, NULL);if (newsockfd < 0) {perror("Error accepting");return 1;}close(newsockfd);close(sockfd);return 0;
    }
    

3.2 网络信息API

3.2.1 getaddrinfo() 函数

getaddrinfo() 函数用于获取与主机名或IP地址相关的网络信息。

  • 函数原型
    int getaddrinfo(const char *node, const char *service,const struct addrinfo *hints,struct addrinfo **res);
    
  • 示例代码
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netdb.h>
    #include <stdio.h>int main() {struct addrinfo hints, *res;memset(&hints, 0, sizeof hints);hints.ai_family = AF_UNSPEC; // AF_INET or AF_INET6hints.ai_socktype = SOCK_STREAM;int status = getaddrinfo("www.example.com", "80", &hints, &res);if (status != 0) {fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(status));return 1;}// 使用获取到的地址信息...freeaddrinfo(res);return 0;
    }
    

3.2.2 getnameinfo() 函数

getnameinfo() 函数用于从网络地址结构中获取主机名和服务名。

  • 函数原型
    int getnameinfo(const struct sockaddr *sa, socklen_t salen,char *host, size_t hostlen,char *serv, size_t servlen, int flags);
    
  • 示例代码
    #include <sys/socket.h>
    #include <netdb.h>
    #include <stdio.h>int main() {struct sockaddr_in sa;char host[NI_MAXHOST], serv[NI_MAXSERV];// 假设sa已被填充正确的地址信息int status = getnameinfo((struct sockaddr *)&sa, sizeof(sa),host, sizeof(host),serv, sizeof(serv),NI_NUMERICHOST | NI_NUMERICSERV);if (status != 0) {fprintf(stderr, "getnameinfo: %s\n", gai_strerror(status));return 1;}printf("Host: %s\n", host);printf("Service: %s\n", serv);return 0;
    }
    

4. 网络监控和调试工具

4.1 tcpdump 命令

tcpdump 是一个强大的命令行工具,用于捕获和分析网络流量。

  • 基本使用tcpdump [选项]
  • 常用选项
    • -i:指定网络接口
    • -nn:不解析域名和服务名
    • port:指定端口

4.2 netcat 或 nc 命令

netcat(通常简称为 nc)是一个用于读写网络连接的实用工具。

  • 基本使用nc [选项] 目标IP或域名 目标端口
  • 常用选项
    • -l:监听模式
    • -p:指定源端口

5. 总结

Linux提供了丰富的网络操作工具和编程接口,使得网络管理变得灵活而强大。从基本的网络配置和监控到复杂的套接字编程和网络信息获取,Linux都能轻松应对。了解和掌握这些工具和接口,对于Linux系统管理和开发都是非常有价值的。在实际应用中,应根据具体需求选择合适的方法。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1551992.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【初阶数据结构】详解插入排序 希尔排序(内含排序的概念和意义)

文章目录 前言1. 排序的概念及其应用1.1 排序的概念1.2 排序的应用 2. 插入排序2.1 基本思想2.2 插入排序的代码实现2.3 插入排序算法总结 3. 希尔排序3.1 基本思想3.2 希尔排序的代码实现3.3 希尔排序的特征总结 前言 初级数据结构系列已经进入到了排序的部分了。相信大家听到…

DolphinScheduler 资源中心无法上传大文件

服务&#xff1a;dolphinscheduler 版本&#xff1a;v3.16 问题描述&#xff1a;资源中心-文件管理中使用文件上传是出现中断或上传失败 排除思路&#xff1a; 测试小文件或其他类型文件时是否正常&#xff1b;F12查看接口调用成功以及失败时的对比&#xff0c;发现接口调用…

内核级理解套接字和全连接队列

一、全连接队列 listen 函数第二个参数 backlog 是输入全连接队列的长度&#xff0c;一般不会太大。那如何理解全连接队列呢&#xff1f; 首先三次握手建立连接的过程和服务器是否 accept 无关&#xff0c;accept 的本质就是把已经建立的连接以文件描述符的形式返回。 那么在…

[含文档+PPT+源码等]精品大数据项目-基于Django实现的高校图书馆智能推送系统的设计与实现

大数据项目——基于Django实现的高校图书馆智能推送系统的设计与实现背景&#xff0c;可以从以下几个方面进行详细阐述&#xff1a; 一、信息技术的发展背景 随着信息技术的飞速发展和互联网的广泛普及&#xff0c;大数据已经成为现代社会的重要资源。在大数据背景下&#xf…

言语理解(3)

如果选项中填写的第一句话是文言文&#xff0c;那么尤其要注意它后面的第一句话 D B 要注意要填写的句子后面最近的一句话 文艺和时代和文章中的主题词&#xff0c;B和D的区别就是文艺带动时代向前发展&#xff0c;D是文艺和时代互相影响&#xff0c;从全文可知是文艺影响时代带…

墙绘艺术市场的数字化转型:SpringBoot案例

1 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。这样的大环境让那些止步不前&#…

常州威雅学校:欢迎探访校园,共赴全人教育之旅!

自2012年创校起&#xff0c;我们践行着“每一个孩子都卓越”的全人教育理念&#xff0c;见证了常州威雅发展至今天的方兴未艾。在岁月不居&#xff0c;时节如流间&#xff0c;我们用点点滴滴的耕耘&#xff0c;为学生的成长穿针引线&#xff0c;也在学校建设中精益求精。 一百次…

计算机毕业设计 服装生产信息管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Golang | Leetcode Golang题解之第449题序列化和反序列化二叉搜索树

题目&#xff1a; 题解&#xff1a; type Codec struct{}func Constructor() (_ Codec) { return }func (Codec) serialize(root *TreeNode) string {arr : []string{}var postOrder func(*TreeNode)postOrder func(node *TreeNode) {if node nil {return}postOrder(node.Le…

SQL第10课挑战题

1. 从OrderItems表中返回每个订单号order_num各有多少行数order_lines&#xff0c;并按order_lines对结果进行排序 2. 返回名为cheapest_item的字段&#xff0c;该字段包含每个供应商成本最低的产品&#xff08;使用products表中的prod_price)&#xff0c;然后从最低成本到最高…

CMOS Sensor调试笔记

最近在调CMOS Sensor&#xff1b;基于无ISP的芯片。 第一步&#xff0c;找模组厂要到对应Sensor对应分辨率&#xff0c;YUV信息的驱动。 第二步&#xff0c;确认信号的极性&#xff0c;VSYNC&#xff0c;SYNC, PCLK。 第三步&#xff0c;开始测试。 问题解决&#xff1a; 1&am…

Unity Asset Store的默认下载位置及更改下载路径的方法

修改Unity Asset Store的默认下载路径 Unity Asset Store默认下载位置 Unity Asset Store里下载资源&#xff0c;默认是下载到C盘里的&#xff0c;如果你不想做C盘战士的话&#xff0c;记得将下载的资源转移到其他盘。 Unity商城默认下载路径是C:\用户\用户名&#xff08;一般…

ZYNQ: GPIO 之 MIO 控制 LED 实验

GPIO 之 MIO 控制 LED 实验目的 使用 GPIO 通过两个 MIO 引脚控制 PS 端两个 LED 的亮灭&#xff0c;实现底板上 PS_LED0、PS_LED1 两个 LED 灯同亮同灭的效果。 简介 ZYNQ PS 中的外设&#xff08;如 USB 控制器、UART 控制器、I2C 控制器以及 GPIO 等等&#xff09;可以通…

哈希表和字符串哈希算法

哈希 哈希表&#xff08;Hash Table&#xff09;是一种数据结构&#xff0c;它可以通过一个哈希函数将键&#xff08;key&#xff09;映射到存储位置&#xff0c;从而实现高效的数据查找、插入和删除操作。哈希表的特点是能够在常数时间&#xff08;O(1)&#xff09;内完成查找…

【韩顺平Java笔记】第4章:运算符

文章目录 61. 上一章总结62. 算术运算符介绍62.1 运算符介绍62.2 算术运算符介绍62.3 算术运算符一览 63. 算术运算符使用64. 算术运算符练习165. 算术运算符练习266. 67. 算术运算符练习3,468. 关系运算符介绍68.1 关系运算符介绍68.2 关系运算符一览 69. 关系运算符使用70. 逻…

仿真设计|基于51单片机的温湿度及PM2.5监测系统仿真

目录 具体实现功能 设计介绍 51单片机简介 资料内容 仿真实现&#xff08;protues8.7&#xff09; 程序&#xff08;Keil5&#xff09; 全部内容 资料获取 具体实现功能 &#xff08;1&#xff09;LCD1602液晶第一行显示当前的PM2.5值&#xff0c;第二行显示当前的温度…

观测云对接 SkyWalking 最佳实践

简介 SkyWalking 是一个开源的 APM&#xff08;应用性能监控&#xff09;和可观测性分析平台&#xff0c;专为微服务、云原生架构和基于容器的架构设计。它提供了分布式追踪、服务网格遥测分析、度量聚合和可视化一体化的解决方案。如果您的应用中正在使用SkyWalking &#xf…

25中国烟草校园招聘面试问题总结 烟草面试全流程及面试攻略

开头附上工作招聘面试必备问题噢~~包括综合面试题、无领导小组面试题资源文件免费&#xff01;全文干货。 工作招聘无领导小组面试全攻略最常见面试题&#xff08;第一部分&#xff09;共有17章可用于国企私企合资企业工作招聘面试面试必备心得面试总结资源-CSDN文库https://d…

家庭教育研究编辑部家庭教育研究杂志社2024年第14期目录

特别关注 幼儿园主题课程生活化资源的开发与利用 包丽梅1-3 探讨提高小学信息科技教学效率的策略 王小峰4-6 幼儿园实施体育游戏教学的策略研究 邵惇妹7-9 中华优秀传统文化融入小学德育课堂策略探究 梁叶华10-12 幼儿园新生入园分离焦虑研究 郭舒苗13-15 协同育人 …

实验5 预备实验2-配置单个的路由器

配置单个的路由器 一、实验目的 此次试验目的是了解思科网络设备的配置基本特点及IOS命令基本操作方法。这些是配置思科设备的重要前提。 二、实验内容及结果 1、实验环境搭建 添加一个模块化的路由器&#xff0c;单击Packet Tracer 5.3的工作区中刚添加的路由器&#xff0c;…