首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

18.1 Socket 原生套接

原生套接的实现原理依赖于Windows系统中提供的ioctlsocket函数,该函数可将指定的网卡设置为混杂模式,网卡混杂模式(Promiscuous Mode)是常用于计算机网络的一种模式,...启用混杂模式的主要用途之一是网络分析,使用混杂模式可以捕获网络中所有的数据,且不仅仅是它所连接的设备的通信数据。...cmd: 操作代码,用于控制对套接的特定操作。argp: 与特定请求代码相关联的参数指针。此参数的具体含义取决于请求代码。...要实现前提是需要先选中绑定到那个网卡,如下InitAndSelectNetworkRawSocket函数则是实现绑定套接到特定网卡的实现流程,在代码中首先初始化并使用gethostname函数获取到当前主机的主机名...,当读者运行后会看到如下图所示的代码片段,此处笔者就选择三号网卡进行绑定操作,当绑定后此时套接ID对应的则是特定的网卡,后续的操作均可针对此套接ID进行,如下图所示;图片当读者有了设置混杂模式的功能则下一步就是包了

30740

18.1 Socket 原生套接

原生套接的实现原理依赖于Windows系统中提供的ioctlsocket函数,该函数可将指定的网卡设置为混杂模式,网卡混杂模式(Promiscuous Mode)是常用于计算机网络的一种模式,...启用混杂模式的主要用途之一是网络分析,使用混杂模式可以捕获网络中所有的数据,且不仅仅是它所连接的设备的通信数据。...cmd: 操作代码,用于控制对套接的特定操作。 argp: 与特定请求代码相关联的参数指针。此参数的具体含义取决于请求代码。...要实现前提是需要先选中绑定到那个网卡,如下InitAndSelectNetworkRawSocket函数则是实现绑定套接到特定网卡的实现流程,在代码中首先初始化并使用gethostname函数获取到当前主机的主机名...,当读者运行后会看到如下图所示的代码片段,此处笔者就选择三号网卡进行绑定操作,当绑定后此时套接ID对应的则是特定的网卡,后续的操作均可针对此套接ID进行,如下图所示; 当读者有了设置混杂模式的功能则下一步就是包了

28720
您找到你想要的搜索结果了吗?
是的
没有找到

UNIX协议(无名套接

关于什么是UNIX套接可以参考:https://cloud.tencent.com/developer/article/1018893 这里主要介绍非命名的UNIX套接的用法。...功能:创建一个全双工的流管道 参数: domain:协议家族,为AF_LOCAL或AF_UNIX type:套接类型。可以是SOCK_STREAM或者SOCK_DGRAM。...为0 sv:返回套接对,这个是输出参数。返回的两个描述符都是可读可写的。 返回值:成功返回0,失败返回-1....注意:由于创建的每个套接都是没有名字的,这就意味着无关进程不能使用它们。 2.一个简单的例子: 父进程给子进程发送一个数据给子进程,子进程收到数据后最数据进行加一操作,再发回给父进程。...2)普通的TCP UDP套接是不能传递文件描述符的

71370

UNIX协议(命名套接

这里主要介绍命名UNIX套接 1.什么是UNIX套接 Unix协议并不是一个实际的协议族,而是在单个主机上执行客户/服务通信的一种方式。是进程间通信(IPC)的一种方式。...它提供了两类套接:字节流套接(有点像TCP)和数据报套接(有点像UDP) UNIX数据报服务是可靠的,不会丢失消息,也不会传递出错。...2.UNIX协议特点 1)UNIX套接TCP套接相比,在同一台主机的传输速度前者是后者的两倍。...UNIX套接仅仅复制数据,并不执行协议处理,不需要添加或删除网络报头,无需计算校验和,不产生顺序号,也不需要发送确认报文 2)UNIX套接可以在同一台主机上各进程之间传递文件描述符 3)UNIX...套接传统套接的区别是用路径名表示协议族的描述 3.UNIX地址结构 #define UNIX_PATH_MAX 128 struct sockaddr_un{ sa_family_t sun_family

2.9K100

linux本来端口,Linux

1、如果要eth0的,命令格式如下: tcpdump -i eth0 -w /tmp/eth0.cap 2、如果要192.168.1.20的,命令格式如下: tcpdump -i etho host...192.168.1.20 -w /tmp/temp.cap 3、如果要192.168.1.20的ICMP,命令格式如下: tcpdump -i etho host 192.168.1.20 and...port 10002 -w /tmp/port.cap 5、假如要vlan 1的,命令格式如下: tcpdump -i eth0 port 80 and vlan 1 -w /tmp/vlan.cap...6、假如要pppoe的密码,命令格式如下: tcpdump -i eht0 pppoes -w /tmp/pppoe.cap 7、假如要eth0的,抓到10000个后退出,命令格式如下: tcpdump...-i eth0 -c 10000 -w /tmp/temp.cap 8、在后台eth0在80端口的,命令格式如下: nohup tcpdump -i eth0 port 80 -w /tmp/temp.cap

5.5K40

Linux网络套接(二)

返回值:返回一个新的套接描述符。...首先是写出服务器的代码,代码的思路是这样的: ①首先为服务器创建套接,因为这个是TCP协议,TCP是面向连接的,因此服务器是需要进入监听状态才能让客户端连接,所以使用socket接口创建出来的套接是属于监听套接...②创建完监听套接字后,开始绑定IP和端口号。先创建出服务器的sockaddr_in结构(因为使用AF_INET协议),然后填充结构体,填充的是使用何种协议,IP和端口号。...=2) { Usage(argv[0]); return 1; } //tcp_server //1.创建套接,此套接为监听套接,用于绑定和监听 int listen_sock...=2) { Usage(argv[0]); return 1; } //tcp_server //1.创建套接,此套接为监听套接,用于绑定和监听 int listen_sock

1.9K30

Linux网络-套接编程基础

Linux网络编程套接 零、前言 一、网络基础知识 1、源IP地址和目的IP地址 2、源MAC地址和目的MAC地址 3、认识端口号 4、PORT VS PID 5、TCP和UDP协议 6、网络字节序...二、socket编程接口 1、sockaddr结构 2、socket 常见API 零、前言 本章就Linux网络编程进行概念及接口学习,下一篇则是简单的进行上手网络套接编程 一、网络基础知识 1...位的长整数从主机字节序转换为网络字节序 如果主机是小端字节序,这些函数将参数做相应的大小端转换然后返回;如果主机是大端字节序,这些函数不做转换,将参数原封不动地返回 二、socket编程接口 1、sockaddr结构 套接不仅支持跨网络的进程间通信...,还支持本地的进程间通信(套接) 因此套接提供了sockaddr_in结构体和sockaddr_un结构体,其中sockaddr_in结构体是用于跨网络通信的,而sockaddr_un结构体是用于本地通信的...为了让套接的网络通信和本地通信能够使用同一套函数接口,于是就出现了sockeaddr结构体,该结构体与sockaddr_in和sockaddr_un的结构都不相同,但这三个结构体头部的16个比特位都是一样的

1.4K20

Linux网络-TCPUDP套接编程

零、前言 本章主要是对套接网络编程的一个学习,目标是能够基本的进行套接编程 一、UDP套接 1、创建套接 无论是服务端还是客户端,进行网络编程需要做的第一件事就是创建套接 socket...函数函数原型: int socket(int domain, int type, int protocol); 解释: domain:创建套接或者叫做协议家族,也就是创建套接的类型。...相比于UDP套接来说,TCP套接与之在一些地方是相同的,但是TCP的特点是面向链接的流式套接,所以还是有很大的区别的 1、创建套接 同样的tcp的服务端和客户端首先第一件事是创建套接文件...这是一个输入输出型参数 返回值:获取连接成功返回接收到的套接的文件描述符,获取连接失败返回-1,同时错误码会被设置 套接文件之间的区别: socket函数创建的套接文件:用于不断获取客户端发来的连接请求...,同文件的读写是一样是流式的,那么对于TCP来说,使用文件读写的方式进行读写套接文件同样可以达到数据发送和接收的目的 读取套接文件数据,即为接收对应套接建立链接的远端发送来的消息;向套接文件进行写入数据

3.6K10

linux 进程命令,linux命令之tcpdump详解

DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ] [-s snaplen ] [ -w file ] [ expression ] 选项...注意,是最终要获取这么多个。例如,指定”-c 10″将获取10个,但可能已经处理了100个,只不过只有10个是满足条件的。-i interface:指定tcpdump需要监听的接口。...-s len:设置tcpdump的数据抓取长度为len,如果不设置默认将会是65535节。...其他功能性选项:-D:列出可用于的接口。将会列出接口的数值编号和接口名,它们都可以用于”-i”后。-F:从文件中读取的表达式。若使用该选项,则命令行中给定的其他表达式都将失效。...-w:将数据输出到文件中而不是标准输出。可以同时配合”-G time”选项使得输出文件每time秒就自动切换到另一个文件。可通过”-r”选项载入这些文件以进行分析和打印。

4.6K20

linux网络编程之socket(十五):UNIX套接编程和socketpair 函数

UNIX套接与TCP套接相比较,在同一台主机的传输速度前者是后者的两倍。这是因为,IPC机制本质上是可靠的通讯,而网络协议是为不可靠的通讯设计的。...三、UNIX套接编程注意点 1、bind成功将会创建一个文件,权限为0777 & ~umask 2、sun_path最好用一个绝对路径 3、UNIX协议支持流式套接口与报式套接口 4、UNIX...流式套接connect发现监听队列满时,会立刻返回一个ECONNREFUSED,这和TCP不同,如果监听队列满,会忽略到来的SYN,这导致对方重传SYN。...protocol: 协议类型 sv: 返回套接对 返回值:成功返回0;失败返回-1 实际上socketpair 函数跟pipe 函数是类似的,也只能在同个主机上具有亲缘关系的进程间通信,但...即父进程持有sockfds[0] 套接进行读写,而子进程持有sockfds[1] 套接进行读写。 参考: 《Linux C 编程一站式学习》 《TCP/IP详解 卷一》 《UNP》

3.1K00

linux如何是什么,linux命令是什么

linux命令是“tcpdump”,可以抓取流动在网卡上的数据,可以将网络中传送的数据的“头”完全截获下来提供分析;它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息...本教程操作环境:Red Hat Enterprise Linux 6.1系统、Dell G3电脑。 tcpdump命令是基于unix系统的命令行的数据报嗅探工具,可以抓取流动在网卡上的数据。...-s len:设置tcpdump的数据抓取长度为len,如果不设置默认将会是65535节。...其他功能性选项: -D:列出可用于的接口。将会列出接口的数值编号和接口名,它们都可以用于”-i”后。 -F:从文件中读取的表达式。若使用该选项,则命令行中给定的其他表达式都将失效。...-w:将数据输出到文件中而不是标准输出。可以同时配合”-G time”选项使得输出文件每time秒就自动切换到另一个文件。可通过”-r”选项载入这些文件以进行分析和打印。

10.5K20

linux命令详解_linux命令指定ip和端口

一、介绍 linux命令 二、被请求端口监听:dst port tcpflow -ci eth0 dst port 6060 tcpdump -i eth0 dst port 6060 案例: hubble-transfer...默认情况下 tcpdump 将一直,直到按下 Ctrl + c 中止,使用 -c 选项我们可以指定的数量: 示例:只针对 eth0 网口 10 个。...对于保存的文件,我们可以使用 -r 选项进行读取。命令:root@kali:~# tcpdump -r 2017.pcap 5. 时不进行域名解析( -n选项 )。...默认情况下,tcpdump 结果中将进行域名解析,显示的是域名地址而非 ip 地址,使用 -n 选项,可指定显示 ip 地址。 6. 增加时间戳(-tttt选项)。...使用-tttt选项,结果中将包含日期: 7. 指定的协议类型。

9.5K10

linux查看请求接口源ip,linux 「建议收藏」

第二种是确定传输方向的关键,主要包括src , dst ,dst or src, dst and src , 这些关键指明了传输的方向。...如果没有指明方向关键,则 缺省是src or dst关键。 第三种是协议的关键,主要包括fddi,ip ,arp,rarp,tcp,udp等类型。...其他的几个关键就是指明了监听的的协议内容。如果没有指定任何协议,则tcpdump将会 监听所有协议的信息。...除了这三种类型的关键之外,其他重要的关键如下:gateway, broadcast,less, greater,还有三种逻辑运算,取非运算是 ‘not ‘ ‘!...的输出结果介绍 下面我们介绍几种典型的tcpdump命令的输出信息 (1) 数据链路层头信息 使用命令#tcpdump –e host ice ice 是一台装有linux的主机,她的MAC地址是0:

5.6K40

面向对象之套接(socket)和黏

一丶套接(socket)   tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端   基于UDP协议的socket   server端: import socket udp_sk =...socket.socket(type=socket.SOCK_DGRAM) #创建一个服务器的套接 udp_sk.bind(('127.0.0.1',9000)) #绑定服务器套接...udp_sk.sendto(b'hi',addr) # 对话(接收与发送) udp_sk.close() # 关闭服务器套接...那粘的成因是什么呢? 当发送端缓冲区的长度大于网卡的MTU时,tcp会将这次发送的数据拆成几个数据发送出去。 MTU是Maximum Transmission Unit的缩写。...如果本机的MTU比网关的MTU大,大的数据就会被拆开来传送,这样会产生很多数据碎片,增加丢率,降低网络速度。   那我们如何解决粘呢?

52220
领券