网络编程
文章平均质量分 63
巴菲特的好弟弟-
这个作者很懒,什么都没留下…
展开
-
Linux编程(进程的五种通信)
引言:IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。一、管道概念:管道分为无名管道和命名管道。管道是一种半双工的通信方式(半双工即信息既可由A传到B,又能由B传A,但只能由一个方向上的传输存在),数据只能单向流动。管道的问题在于他们没有名字,只能在具有亲缘关系(父子进程间)的进程间使用。管道特点:①半双工的通信方式。②只能用于具有亲缘关系的进程间的通信。③管道不储存数原创 2021-04-13 19:49:50 · 224 阅读 · 0 评论 -
H.264概念
一、H.264概念H.264是由ITU-T视频专家组和ISO/IEC动态图像专家组联合组成的联合组(JVT,Joint Video Team)提出的高度压缩数据视频编解码器标准。二、H.264的数据格式H.264是由**视频编码层(VCL)和网络适配层(NAL)**组成。①VCL:H264编码/压缩的核心,主要负责将视频数据编码/压缩,再切分。②NAL层的基本单位叫NALU(网络抽象层单元)blog.csdnimg.cn/25b161a63ce74813a55a1b090a51d6ea.png)原创 2022-05-28 10:39:32 · 430 阅读 · 0 评论 -
EasyCwmp源码分析
一、源码架构组成EasyCwmp设计包括两个部分:①EasyCwmp Core:它包括TR069 CWMP引擎,并负责与ACS服务器的通信。使用C语言开发。②EasyCwmp DataModel:它包含TR-06的DATAModel,并且符合某些DataModel标准,例如TR-098,TR-181,TR-104等。使用shell开发,只支持部分协议模型,在开发和维护过程效率比较低。二、EasyCwmp源码组成三、EasyCwmp文件依赖四、EasyCwmp执行流程详细代码参考easyc原创 2022-05-25 13:41:44 · 1288 阅读 · 0 评论 -
TR-069协议介绍
一、概念关于TR-069①协议命名TR-069, 全称“Technical Report 069”是由DSL Forum(一个非盈利性的全球行业联盟,致力于发展宽带网络范)。其成员包括通讯、设备、计算机、网络和服务提供商等行业的领先厂商,现已更名为“Broadband Forum”)修订一份技术规范,该规范是应用层的管理协议,命名为“CPE广域网管理协议(CPE WAN Management Protocol)”。②协议应用TR069协议提供了对下一代网络中家庭网络设备进行管理配置的通用框架、消息原创 2022-05-23 16:44:53 · 19348 阅读 · 0 评论 -
SNMP协议
一、概念SNMP(简单网络管理协议)是由互联网工程任务组定义的一套网络管理协议。该协议是基于简单网关监视协议指定的。SNMP可以使网络管理员通过一台工作站完成对计算机、路由器和其他网络设备的远程管理和监视。管理工作站可以远程管理所有支持该协议的网络设备,如监控网络状态、修改网络设备配置、接收网络事件警告等。SNMP协议能够帮助网络管理员提交网络管理效率,及时发现和解决网络问题,对网络增长做好规划。网络管理员还可以通过SNMP协议,接收网络节点的通知消息和警告事件报告等。二、SNMP架构组成SNMP原创 2022-05-18 14:18:24 · 3263 阅读 · 0 评论 -
使用wireshark抓包——ICMP包
一、ICMPIP协议的助手 —— ICMP 协议ICMP 全称是 Internet Control Message Protocol,也就是互联网控制报文协议。ICMP 功能:ICMP 主要的功能包括:确认 IP 包是否成功送达目标地址、报告发送过程中 IP 包被废弃的原因和改善网络设置等。ICMP报文封装在IP数据报内部ICMP 会送请求报文:二、实验①访问可达的网络:(1)查看IP层的携带信息。类型 8 的是ICMP回送请求,类型 0 是回送响应。①访问不可达的网络:原创 2022-05-17 17:22:11 · 5545 阅读 · 0 评论 -
使用wireshark抓包并分析TCP四次挥手
一、四次挥手①第一次挥手:(FIN+ACK)客户端发送FIN+ACK包给服务端,用来关闭客户端到服务器的数据传送。此时客户端进入FIN_WAIT_1状态。②第二次挥手:(ACK)服务端收到FIN包后, 此时有可能服务端还在与其他客户端进行交互,但会先发送ACK包。确认字符ack=X+1,此时会发送一个新的序列号seq=Z给服务端。服务端就进入了CLOSE_WAIT(关闭等待)状态。TCP服务端通知高层的应用进程,客户端向服务端的方向就释放了,此时处于半连接状态。③第三次挥手:(FIN+ACK)原创 2022-05-17 14:16:51 · 7033 阅读 · 1 评论 -
使用wireshark抓包并分析TCP三次握手
一、实验过程1、TCP包抓取及分析过程①确认使用的协议,使用HTTP服务。选择https://www.baidu.com/作为目标地址。②启动Wireshark软件,点击开始抓包后。在浏览器地址输入https://www.baidu.com/③在Wireshark软件中使用过滤器,添加本机IP地址和TCP协议过滤条件2、开始实验①获取IP双方IP地址(便于过滤)获取本机IP地址获取https://www.baidu.com/的IP地址②在工具栏上的Filter对话框中填入过滤条件:原创 2022-05-17 11:55:58 · 12313 阅读 · 0 评论 -
网络编程第三方库——Libnet库(发送)
一、概念专业的构造和发送网络数据包的开发工具包,是个高层次的API函数库,允许开发者自己构造和发送网络数据包。头文件:#include<libnet.h>编译加:-lnet二、Libnet特点①隐藏了很多底层细节,省去了很多麻烦:如缓冲区管理、字节流顺序、校验和计算等问题,使开发者把重心放到程序的开发中。②可以轻松、快捷的构造任何形式的网络数据包,从而开发各种各样的网络程序。③使用非常广泛,例子著名的软件Ettercap、Firewalk、Snort、Tcpreplay等。④在1原创 2022-05-12 15:14:42 · 1551 阅读 · 0 评论 -
网络编程第三方库——libpcap库(接收)
一、主要作用1、补货各种数据包eg:网络流量统计2、过滤网络数据包eg:过滤掉本地的一些数据,类似防火墙3、分析网络数据包eg:分析网络协议,数据的采集4、存储网络数据包eg:保存补货的数据以为将来进行分析二、ubuntu安装指令sudo apt-get install libpcap-dev三、使用libcap库的开发步骤①打开网络设备②设备过滤规则(可选)③捕获数据④关闭网络设备头文件:#include <pcap.h>编译时需要加上: -lpcap四、原创 2022-05-12 11:19:16 · 2993 阅读 · 0 评论 -
原始套接字——发送UDP信息
一、报文格式信息传递:ubuntu---->windows二、组包①组MAC报头//1.组mac报文头部struct ether_header *eth_addr = (struct ether_header *)msg;//赋值mac地址memcpy(eth_addr->ether_dhost, dst_mac, 6);memcpy(eth_addr->ether_shost, src_mac, 6);//赋值帧类型eth_addr->ether_type原创 2022-05-09 16:01:19 · 1953 阅读 · 0 评论 -
网络编程中利用结构体方式组包(以arp攻击为例)
一、逐个元素组包//msg存放arp应答报文 unsigned char msg[]={ /*mac头部(14个字节)*/ 0x70,0x5A,0x0F,0x63,0xF5,0x9D, /*目的mac地址(xp的mac))*/ 0x00,0x00,0x00,0x00,0x00,0x00, /*源mac地址(伪装的mac)*/ 0x08,0x06, /*帧类型*/ /*ARP报文头部(28个字节)*/ 0x00,0x01, /*硬件类型*/原创 2022-05-06 17:23:27 · 399 阅读 · 0 评论 -
ARP攻击代码(ARP欺骗)
一、ARP攻击ARP欺骗攻击原理:ARP欺骗攻击建立在局域网主机间相互信任的基础上的。比如:假设A、B、C在同一个局域网中,网关为192.168.43.1,IP地址和MAC地址分别假设如下。假设C是攻击者。当A发广播询问:我是192.168.43.2,硬件地址macA,我想知道主机IP是192.168.43.3的硬件地址。此时B回应:我是192.168.43.3,硬件地址是macB。如果此时IP地址是192.168.43.4的C非法回应:我是IP192.168.43.3,我的硬件地址是macC原创 2022-05-06 15:31:51 · 2285 阅读 · 1 评论 -
ARP请求获得MAC地址代码
一、sendto函数sendto(sock_raw_fd, msg, msg_len, 0, (struct sockaddr*)&sll, sizeof(sll));注意:1、sock_raw_fd:原始套接字2、msg:发送的消息(封装好的数字协议)3、sll:本机网络接口,值发送的数据应该从本机的哪个网卡出去,而不是以前的目的地址原始套接字:组帧数据报文—>设置从本机的哪块网卡sendto发出去二、步骤①本地接口结构体头文件:#include <netpack.原创 2022-05-06 14:40:55 · 2743 阅读 · 0 评论 -
混杂模式概念
一、混杂模式1、指一台机器的网卡能够接收所以经过它的数据包,而不论其目的地址是否是它2、一般计算机网卡都工作在非混杂模式下,如果设置网卡为混杂模式需要root权限。二、Linux下设置1、设置混杂模式 ifconfig eth0 promisc2、取消混杂模式 ifconfig etho -promisc三、Linux下通过程序设置网卡混杂模式struct ifreq ethreq;strncpy(ethreq.ifr_name, "eth0", IFNAMSIZ);if(ioctl(s原创 2022-05-06 11:01:57 · 749 阅读 · 0 评论 -
利用C语言编写一个网络分析器
一、链路层数据格式mac报文:14个字节二、IP数据报文格式三、demo(网络分析器)recvfrom接收链路层帧数据,不经过网络层、传输层,不会给发送者的地址结构赋值,因此后两个参数为NULL。设计思路:①创建一个原始套接字。②while(1)利用recvfrom不断接收网络数据。③解析获得mac头部中的源mac和目的mac,并判断网络层的协议类型。④若是IP报文,则获得源IP和目的IP,并解析获得传输层协议类型。⑤若传输层为TCP或UDP协议,则解析报文获得数据#includ原创 2022-05-05 18:40:47 · 1920 阅读 · 5 评论 -
原始套接字和报文格式
一、原始套接字概述原始套接字(SOCK_RAW)概述:1、一种不同于SOCK_STREAM、SOCK_DGRAM的套接字,它实现于系统核心。2、可以接收本机网卡上的所以数据帧(数据包),对于监听网络流量和分析网络数据很有作用。3、开发人员可发送自己组装的数据包到网络上。4、广泛应用与高级网络编程。5、网络专家、黑客通常用此来编写奇特的网络程序。三种套接字对比:①流式套接字只能收发TCP协议的数据。②数据包套接字只能收发UDP协议的数据。③原始套接字可以收发内核没有处理的数据包,因此要原创 2022-05-05 11:48:39 · 2180 阅读 · 0 评论 -
路由器的工作流程
一、 网络拓扑图假设PC0 ping PC2①PC0发送报文经过网关至Router0②分析data中的目的IP是否和当前的路由器的某个接口同一个网络1.若是,数据发送给3.2的PC机(src_mac为3.1的mac,目的mac为3.2的mac)2.若否,就会立即查看路由表有没有下一跳的记录,如果有,就会分析路由器的哪个接口和下一跳设备相连。二、Packet Tracer配置流程①配置各PC机的IP地址(连接同一个交换机需在同一网段)。②配置PC机的网关,如图③打开网卡接口,使状态为UP原创 2022-05-03 12:46:35 · 2177 阅读 · 0 评论 -
TCP并发服务器(进程、线程、select)
一个好的服务器,一般都是并发服务器(同一时刻可以响应多个客户端的请求)。并发服务器设计一般有多进程服务器、多线程服务器、I/O复用服务器等。一、进程版本优点:父子进程资源独立,某个进程结束,不会影响已有的进程,服务器更加稳定。缺点:消耗资源大demo:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/sock原创 2022-05-01 16:01:43 · 1028 阅读 · 0 评论 -
多播的概念
一、多播概述多播:数据的收发仅仅在同一组中进行(相当于我往一个群里发,只有加入这个群的人才能收到)多播的特点:①多播地址标示一组接口。②多播可以用于广域网使用。③在IPv4,多播是可选的。二、多播地址IPv4的D类地址是多播地址十进制:244.0.0.1—239.255.255.254范围内任意一个IP地址都代表多播组。十六进制:E0.00.00.01—EF.FF.FF.FE多播地址向以太网MAC地址的映射多播的MAC地址:高24位固定,低23位将多播IP地址的低23位映射过原创 2022-04-28 11:50:03 · 3293 阅读 · 1 评论 -
广播的概念
一、广播广播:由一台主机向该主机所在子网内的所有主机发送数据的方式。广播只能用UDP或原始IP实现,不能用TCP。广播的MAC地址:ff.ff.ff.ff.ff.ff二、广播的用途单个服务器与多个服务器主机通信时减少分组流通。以下几个协议都用到广播:①地址解析协议(ARP)通过IP,获取对方的MAC地址②动态主机配置协议(DHCP)自动获取主机IP③网络时间协议(NTF)获取当前时间三、UDP广播的特点①处于同一子网的所有主机必须处理数据。②UDP数据包会沿协议向上一直到UDP原创 2022-04-28 10:53:03 · 2807 阅读 · 0 评论 -
TFTP协议(基于UDP)
一、TFTP简介TFTP:简单文件传送协议,最初用于引导无盘系统,被设计用来传输小文件特点: 基于UDP协议实现 不进行用户有效性认证数据传输模式: octet:二进制模式 netascii:文本模式 mail:已经不再支持二、TFTP通信过程1、服务器在69号端口等待客户端的请求2、服务器若批准此请求,则使用临时端口与客户端进行通信3、每个数据包的编号都有变化(从1开始)4、每个数据包都要得到ACK的确认如果出现超时,则需要重新发送最后的原创 2022-04-27 11:16:51 · 2232 阅读 · 0 评论 -
大小端字节序转换
特点①各主机的字节序可能不同,网络协议指定的通讯字节序为大端。②只有在多字节数据处理时才需要考虑字节序。③运行在同一台计算机的进程互相通信时,不需要考虑字节序。二、字节序转换函数头文件:#include <arpa/inet.h>①htonl函数(发送数据方使用)32位:(IPv4字节序的转换)uint32_t htonl(uint32_t host32bitvalue); 功能:将32位主机字节序数据转换成网络字节序数据。返回值:返回网络字节序的值。②ntohl函数(.原创 2022-04-24 17:45:24 · 6102 阅读 · 0 评论 -
大端存储和小端存储
一、大端存储高字节数据存储在低地址。二、 小端存储低字节数据存储在低地址注意:无论是大端存储还是小端存储,读取到的数据为0x0102030405三、大端存储或小端存储都是由系统设定的,其二者区别在于低地址存储的数据,因此可以写程序进行判断。#include <stdio.h>#include <stdlib.h>typedef union{ //共用体 成员公用一个空间,空间为共用体中的最大类型 unsigned short data;原创 2022-04-24 15:24:45 · 25346 阅读 · 0 评论 -
初识DPDK
一、简介DPDK是一款高性能的网络驱动组件,旨在为数据面应用程序提供一个简单方便的,完整的,快速的数据包处理解决方案。主要技术有用户态、轮询取代中断、零拷贝、网卡RSS、访问DirectlO等。二、特点①运行在用户空间,减少了报文在用户空间和应用空间的多次拷贝。如图所示:DPDK绕过了Linux内核的网络驱动模块,直接从网络硬件到达用户空间,不需要进行频繁的内存拷贝和系统调用。②提高虚拟化网络设备的数据采集效率。三、UIO技术认识UIO(Userspace I/O)是运行在用户空间的I/O技原创 2021-12-01 10:33:49 · 1829 阅读 · 0 评论 -
泛洪相关概念
一、泛洪的定义泛洪(flooding) 是交换机和网桥使用的一种数据流传递技术,将某个接口收到的数据流从除该接口之外的所有接口发送出去。二、广播与泛洪的区别①广播帧的产生网络中存在有广播帧是不可避免的,比如开启了DHCP服务器, 每次请求, 都会”FF.FF.FF.FF.FF.FF”的帧格式出现。它向所有端口转发.假设主机A与B在同一个网络内,当主机A要向主机B发送信息,那么需要知道主机B的IP地址和MAC地址,这里面我们假定A只知道B的IP地址,而不知道 B的MAC地址,那么这时A就需要向网络中原创 2021-11-24 14:17:25 · 5231 阅读 · 0 评论 -
交换机二/三层转发原理
知识储备:①单播:一对一,信息的接收和传递必须只在两个节点进行。(效率低)②多播(组播):以“尽力而为”的形式发送信息到某个目标组,在有源主机向多点目标主机发送信息需求时,源主机只发送一份数据,数据的目标地址是组播组地址。(解决单播情况下数据的重复拷贝及宽带的重复占用,也解决了广播情况下的宽带资源浪费)③广播:一个终端向多个计算机发送消息,但是计算机越多,广播的消息可能会延时或者消息不可到达!一、二层交换基本原理二层交换机属于数据链路层,可以识别数据包中的MAC地址信息,根据MAC地址进行转原创 2021-11-24 11:28:53 · 5460 阅读 · 0 评论 -
三个虚拟空间中实现A->C互PING成功
①创建 3 个新的网络名称空间#ip netns add demo1#ip netns add demo2#ip netns add demo3②.创建2对 veth pair# ip link add lk11 type veth peer name lk12# ip link add lk21 type veth peer name lk22③绑定veth pair并配置IP1.demo1->lk11绑定#ip link set dev lk11 netns demo1.原创 2021-11-23 17:08:12 · 491 阅读 · 0 评论 -
通过veth pair和bridge实现多个Network Namespace互通
veth pair虽然可以实现两个 network namespace 之间的通信,但是当多个 namespace 需要通信的时候,就无能为力了。讲到多个网络设备通信,我们首先想到的交换机和路由器。一、利用veth pair(成对出现)实现两个空间名称互PING1.创建使用默认名称#ip link add type veth指定名称#ip link add name1 type veth peer name name22.名称空间与 veth pair 进行绑定### 名称空间 a 绑原创 2021-11-23 11:23:28 · 1656 阅读 · 0 评论 -
网络命名空间
网络命名空间(namespace)命名空间(Linux namespace)是linux内核针对实现容器虚拟化映入的一个特性。我们创建的每个容器都有自己的命名空间,运行在其中的应用都像是在独立的操作系统中运行一样,命名空间保证了容器之间互不影响。命名空间和cgroups是软件集装箱化(Docker)的大部分新趋势的主要内核技术之一。 简单来说,cgroups是一种计量和限制机制,它们控制您可以使用多少系统资源(CPU,内存)。 另一方面,命名空间限制了您可以看到的内容。 由于命名空间进程有自己的系统资源原创 2021-11-22 17:36:07 · 2307 阅读 · 0 评论 -
NAT原理
NAT(网络地址转换)当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。一、作用①解决IP地址不足的问题(宽带共享)②有效的避免来自网络外部的攻击,隐藏并保护网络内部的计算机。(NAT之内的PC联机到Internet上时,所显示的IP是NAT主机的公共IP,所以Client端的PC具有一定程度的安全,外界在使用端口扫描的时候,就真查不到Client端的PC。)二、工作原理借助于NAT,私原创 2021-11-22 11:05:43 · 390 阅读 · 0 评论 -
深入理解select/epoll/poll
一、I/O复用技术1、概念:把多个I/O的阻塞复用到同一个select的阻塞上,使得系统在单线程的情况下可以同时处理多个客户端的请求。2、场景:当多个客户端同时向服务端发出请求时,当前的代码模式依旧无法满足要求,所以引入I/O复用,使程序同时监听多个文件描述符。二、引入I/O复用的原因1.TCP服务器同时处理监听套接字和链接套接字。2.服务器要同时处理TCP请求和UDP请求等多个请求。3.程序要同时处理用户输入和网络输入。4.客户端程序要同时处理用户输入和网络连接。5、服务器要同时接听多个端原创 2021-09-27 16:46:17 · 328 阅读 · 0 评论