【Linux网络编程】
文章平均质量分 83
zthgreat
这个人很懒,什么都没有留下
展开
-
flannel-vxlan模式原理解析
前言上一章介绍完flannel的udp模式后,接着来介绍一下vxlan模式,因为很多生产的K8S都正在使用这个模式,所以将会介绍得详细些。在前面的章节中,我们介绍过配置linux vxlan完成跨主机的容器通信,flannel的vxlan模式大概完成的事情就是把那个章节中手工完成的事情自动化了而已,想了解的童鞋可以看回那一章linux配置跨主机容器通信vxlan模式下的flannel比udp模式少了一个组件,就是用c语言写的打开tun设备的守护进程flanneld,因为vxlan模式下通信的全程都由原创 2021-08-03 10:36:44 · 1573 阅读 · 0 评论 -
理解linux虚拟网络设备tun
tun是linux的另一种虚拟网络设备,与前面讲过的veth类似,只是另一端连的不一样,veth设备是一端连着内核协议栈,另一端连着另一个netns的协议栈;而tun设备是一端连着内核协议栈,另一端连接着一个用户程序,任何时候从协议栈发到tun网卡的数据都能从用户程序中读到,而从用户程序写入/dev/net/tun的数据都会被内核协议栈收到。当我们通过程序打开/dev/net/tun设备时,就会发现我们的主机上多了一张网卡,打开多次会新增多张网卡,命名依次为tun0/tun1/tun2…,我们读写tun网原创 2021-08-03 10:31:35 · 3542 阅读 · 0 评论 -
linux模拟POD并通过主机上外网
在这篇文章我们将完成以下几件事情:模拟一个POD将这个POD和主机连接起来,在主机中能访问POD的网站让这个POD能上外网模拟一个PODPOD是一个K8S的逻辑概念,POD里会有一个或多个容器,他们之间共享一个网络命名空间,可以用localhost相互访问,下面我们将脱离开K8S,直接用docker来模拟这种情况:docker run -itd --name=pause --net=none podinfo这时候pause容器会新建一个网络命名空间,但不会加入docker0网原创 2021-08-03 10:26:10 · 431 阅读 · 0 评论 -
理解linux虚拟网络设备bridge
上一节我们介绍了Linux veth设备,知道了如何把多个彼此隔离的网络命名空间(下面开始简称NS)与主机通过VETH连接起来,并且多个NS间也能相互通信,在这一节我们将介绍另一种方式,用linux bridge。Linux bridge即linux虚拟网桥,工作方式类似于物理的网络交换机,工作在二层时,能够转发以太网报文,能够学习MAC地址与端口的映射关系,但是也能工作在三层,提供类似三层交换机的功能,想要让linux bridge工作在三层,只需要给它配置一个IP地址。还是通过一些示例来了解一下,我原创 2021-08-03 10:23:16 · 4254 阅读 · 2 评论 -
理解linux虚拟网络设备veth
上一章介绍了linux network namespace,接着来讨论一下如何让一个独立的网络命名空间的和主机的网络相互通信,这里我们需要用到linux虚拟网络设备veth。veth设备veth设备总是成对出现,通常就是用来连接不同网络命名空间(下面开始简称NS),一端连着NS1的内核协议栈,另一端连着NS2的内核协议栈,一端发送的数据会被另一端接收。我们接下来试一下创建一个新的NS,然后跟主机的NS连接起来通过下面的命令可以创建一对VETH设备ip link add veth0 type ve原创 2021-08-03 10:20:53 · 1952 阅读 · 0 评论 -
理解linux network namespace
network namespace 是linux内核提供的用于实现网络虚拟化的重要功能,它能创建多个隔离的网络空间,一个独立的网络空间内的防火墙、网卡、路由表、邻居表、协议栈都是独立的。不管是虚拟机还是容器,当运行在独立的命名空间时,就像是一台单独的主机一样。下面会通过一些例子来说明网络命名空间,以加深理解,会用到iproute2工具包的ip命令,请各位先自行安装,并且使用root权限操作在centos下执行如下命令:yum install iproute2验证安装完成:[root@worker原创 2021-08-03 10:11:24 · 1409 阅读 · 1 评论 -
Linux网络编程---I/O多路复用之epoll
实现一个基本的流式套接字客户端/服务器通信程序,客户端和服务器按如下步骤交互:(1)客户端向服务器发出日期时间请求字符串,如:%D %Y %A %T等。(2)服务器从网络接收到日期时间请求字符串后,根据字符串格式生成对应的日期时间值返回给客户端。二、事件I/O在前面用select函数有效的解决了多个I/O端口的复用问题,但是select函数存在两个缺陷:一是进程所能同时打开的文原创 2015-10-05 17:45:47 · 1173 阅读 · 0 评论 -
Linux网络编程---I/O多路复用 之 select
实现一个基本的流式套接字客户端/服务器通信程序,客户端和服务器按如下步骤交互:(1)客户端向服务器发出日期时间请求字符串,如:%D %Y %A %T等。(2)服务器从网络接收到日期时间请求字符串后,根据字符串格式生成对应的日期时间值返回给客户端。在前面我们用了单进程和多进程来简单实现这个程序,通过多进程会比单进程占用更多的系统资源,所以希望单进程也能具有为多个客户端同时提供原创 2015-09-27 19:52:02 · 3326 阅读 · 0 评论 -
Linux网络编程---ICMP协议分析及ping程序实现
#include#include#include //是Linux系统的日期时间头文件#include // 是POSIX标准定义的unix类系统定义符号常量的头文件,包含了许多UNIX系统服务的函数原型,例如read函数、write函数和getpid函数#include#include //对与引用socket函数必须#include#include //定义了与网络原创 2015-10-10 19:44:41 · 20522 阅读 · 8 评论 -
流式(TCP)套接字客户端/服务器编程 (多线程并发服务器)
实现一个基本的流式套接字客户端/服务器通信程序,客户端和服务器按如下步骤交互:(1)客户端向服务器发出日期时间请求字符串,如:%D %Y %A %T等。(2)服务器从网络接收到日期时间请求字符串后,根据字符串格式生成对应的日期时间值返回给客户端。//TCP服务器/* 用法:./server ip port 说明:该流式原创 2015-09-24 16:12:41 · 7792 阅读 · 1 评论 -
一个简单的TCP套接字编程实例
采用一个服务器程序对应一个客户的方法,服务器不需要采取任何并发技术,执行TCP套接字服务端的基本过程是创建套接字原创 2015-09-19 09:51:03 · 1972 阅读 · 0 评论 -
Linux网络编程---UDP洪水攻击
UDP攻击,又称UDP洪水攻击或UDP淹没攻击(英文:UDP Flood Attack)是导致基於主机的服务拒绝攻击的一种。UDP 是一种无连接的协议,而且它不需要用任何程序建立连接来传输数据。当受害系统接收到一个 UDP 数据包的时候,它会确定目的端口正在等待中的 应用程序。当它发现该端口中并不存在正在等待的应用程序,它就会产生一个目的地址无法连接的 ICMP数据包发送给该伪造的源地址。如果向受原创 2015-10-21 13:06:54 · 5708 阅读 · 3 评论 -
Linux网络编程---TCP三次握手,SYN洪水攻击,
TCP三次握手,四次挥手图解,SYN洪水攻击实例。原创 2015-10-20 19:05:53 · 5094 阅读 · 1 评论 -
Linux网络编程---ICMP洪水攻击
一、ICMP洪水攻击的原理原创 2015-10-20 16:57:57 · 1893 阅读 · 0 评论 -
流式套接字客户端/服务器编程 (迭代服务器+并发服务器)
实现一个基本的流式套接字客户端/服务器通信程序,客户端和服务器按如下步骤交互:(1)客户端向服务器发出日期时间请求字符串,如:%D %Y %A %T等。(2)服务器从网络接收到日期时间请求字符串后,根据字符串格式生成对应的日期时间值返回给客户端。//TCP服务器/*用法:./server port说明:该流式套接字服务器程序工作于单进程模原创 2015-09-22 20:14:16 · 3225 阅读 · 0 评论 -
Linux网络编程---信号驱动I/O
实现一个基本的流式套接字客户端/服务器通信程序,客户端和服务器按如下步骤交互:(1)客户端向服务器发出日期时间请求字符串,如:%D %Y %A %T等。(2)服务器从网络接收到日期时间请求字符串后,根据字符串格式生成对应的日期时间值返回给客户端。为了在一个套接字上使用信号驱动 I/O 操作,下面这三步是所必须的。(1)一个和 SIGIO信号的处理函数必须设定。(2)原创 2015-10-04 18:24:04 · 3056 阅读 · 0 评论 -
数据报(UDP)套接字客户端/服务器编程
实现一个基本的数据报套接字客户端/服务器通信程序,客户端和服务器按如下步骤交互:(1)客户端向服务器发出日期时间请求字符串,如:%D %Y %A %T等。(2)服务器从网络接收到日期时间请求字符串后,根据字符串格式生成对应的日期时间值返回给客户端。/* UPD服务器 说明:数据报服务器,用于接收来自数据报客户端发来原创 2015-09-23 22:08:54 · 5376 阅读 · 0 评论