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

不使用原始套接字发送udp请求后,如何从端口读取ICMP响应

在不使用原始套接字发送UDP请求后,要从端口读取ICMP响应,可以通过以下步骤实现:

  1. 创建一个UDP套接字并绑定到一个端口上。
    • UDP套接字是通过socket库创建的,可以使用socket.socket(socket.AF_INET, socket.SOCK_DGRAM)来创建一个UDP套接字。
    • 使用bind方法将套接字绑定到一个特定的IP地址和端口上,例如socket.bind(('0.0.0.0', 1234))
  • 发送UDP请求到目标主机。
    • 使用sendto方法发送UDP请求数据包到目标主机的IP地址和端口,例如socket.sendto(data, (target_ip, target_port))
  • 设置套接字超时时间。
    • 使用settimeout方法设置套接字的超时时间,以确保在一定时间内等待ICMP响应,例如socket.settimeout(5)
  • 接收并处理ICMP响应。
    • 使用recvfrom方法接收来自目标主机的ICMP响应数据包,例如response, address = socket.recvfrom(1024)
    • 解析ICMP响应数据包,可以使用第三方库如scapy来解析数据包的内容。

需要注意的是,由于不使用原始套接字发送UDP请求,因此无法直接读取ICMP响应。上述方法是通过发送UDP请求后,等待目标主机返回的ICMP响应,然后从端口读取该响应。这种方法适用于一些特定的场景,例如在某些网络环境下无法使用原始套接字,或者需要通过UDP请求触发目标主机返回ICMP响应的情况。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云官网:https://cloud.tencent.com/
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云物联网平台(IoT Hub):https://cloud.tencent.com/product/iothub
  • 腾讯云移动开发平台(MTP):https://cloud.tencent.com/product/mtp
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

《Python黑帽子》:原始套接和流量嗅探

在本文中,我们将使用原始套接来访问诸如IP 和ICMP 头等底层的网络信息。在下面的例子中,我们只对IP 层和更高层感兴趣,因此我们不会去解码以太网头中的信息。...当你发送一个UDP 数据包到主机的某个关闭的UDP 端口上时,目标主机通常会返回一个ICMP 包指示目标端口不可达。...这样的ICMP 信息意味着目标主机是存活的,因为我们可以假设如果没有接收到发送UDP 数据的任何响应,目标主机应该不存在。...挑选一个不太可能被使用UDP 端口来确保这种方式的有效性是必要的,为了达到最大范围的覆盖度,我们可以查探多个端口以避免正好将数据发送到活动的UDP 服务上。 为什么使用UDP 呢?...在第一个例子中,我们只需设置原始套接嗅探器,读取一个数据包,然后退出即可。 首先,我们通过构建套接对象对网络接口上的数据包嗅探进行必要的参数设置①。

1.3K20

Go 语言网络编程系列(一)—— Socket 编程入门:Dial 函数及其使用

服务端来看,代码编写分为以下几个步骤: 建立并绑定 Socket:首先服务端使用 socket() 函数建立网络套接,然后使用 bind() 函数为套接绑定指定的 IP 和端口; 监听请求:接下来...,服务端使用 listen() 函数监听客户端对绑定 IP 和端口请求; 接收连接:如果有请求过来,并通过三次握手成功建立连接,则使用 accept() 函数接收并处理该连接; 处理请求发送响应:服务端通过...read() 函数从上述已建立连接读取客户端发送请求数据,经过处理再通过 write() 函数将响应数据发送给客户端 客户端来看,代码编写分为以下几个步骤: 建立 Socket:客户端同样使用...socket()函数建立网络套接; 建立连接:建立连接:然后调用 connect() 函数传入 IP 和端口号建立与指定服务端网络程序的连接; 发送请求与接收响应:连接建立成功,客户端就可以通过 write...() 函数向服务端发送数据,并使用 read() 函数服务端接收响应

6.7K30

八股文!!

Fragment offset:某个分片位于原始报文中的偏移,重组报文时使用 TTL:分片生命周期 Protocol:上层协议标识(TCP/UDP/ICMP等) 校验和:针对IP首部的累加校验和 源IP...IP分片:链路不同,MTU也不同,IP会将数据包以路径MTU分片发包,到达目的IP重组,分片增加了出现问题的几率 4 ICMP协议 ICMP协议报文头格式 ICMP协议的作用 ICMP协议的使用...ICMP的应用—ping程序 Ping程序提供网络层到某台主机的路由是否可达 发送方组ICMP回显请求报文,标识符字段填写进程ID,序号字段0开始,发送回显请求报文时序号递增,并在选项数据中保存发送的时间...traceroute利用udp模块组成udp数据包,并将目的端口号设置为不可能的端口号,依次将IP数据报包头的ttl字段1递增,traceroute依据返回的ICMP报文是端口不可达或请求超时来判断是否结束...另一端write该套接时将会被响应一个rst报文,再次写入时触发sigpipe信号(信号默认动作是结束进程,即使捕捉该异常,write也会得到sigpipe错误)由此也可得知对端状态变更 如果另一端主动写入

94511

CSAPP 网络编程 笔记

典型:多个描述多路复用,比如交互式输入和网络套接。 出现粘包如何处理? UDP原始套接UDP协议中发送数据大于缓冲区大小,系统如何处理,说明理由。...UDP采用循环服务器的工作方式,它仅有的单个套接口用于接收所有到达的数据报,并发回所有的响应UDP套接口有一个接收缓冲区用于存放到来的数据报。...如何避免UDP协议下客户端将非服务端发送的应答,误认为是服务器应答? 通过 recvfrom 里返回的 IP 与端口区分 使用 connect 简述ping程序的功能与实现原理。...利用原始套接发送 icmp 回射请求,等待对方的应答,应答中包含请求的标识符、序列号、时间戳 简述traceroute程序的功能与实现原理。...首先发送 ttl 为1的 udp 数据报,然后逐次递增ttl,确定下一跳的路由。 当 icmp 报文到达目标主机时,目标主机返送一个 icmp 错误,显示端口不可达。

53230

TCPIP协议族

其关键问题是确定数据包源端到目的端如何选择路由。...在TCP/IP协议栈中,源端口号和目的端口号分别与源IP地址和目的IP地址组成套接(socket),唯一的确定一条TCP连接。...套接(socket)分为源套接和目的套接: 源套接:源端口号+源IP地址; 目的套接:目的端口号+目的IP地址; 源套接和目的套接用于唯一的确定一条TCP连接。...目的主机B收到请求报文,将其中的主机A的IP地址与MAC地址的映射存到自己的ARP高速缓存中,并把自己的IP地址到MAC地址的映射作为响应发回主机A。...ICMP还定义了源抑制(source quench)报文。当路由器的缓冲区满,送入的报文被丢弃,此时路由器向发送报文的主机发送源抑制报文,要求降低发送速率。

73920

应用层

传输的步骤(特点): UDP套接指定了应用所在的一个端节点(end point) 在发送数据报时,采用创建好的本地套接(标示 ID),就不必在发送每个报文中指明自己所采用的 ip和port...但是在发送报文时,必须要指定对方的ip和udp port(另外一个段节点) 套接(Socket) 进程向套接发送报文或套接接收报文 套接 门户 发送进程将报文推出门户,发送进程依赖于传输层设施在另外一侧的...方式的大致模式 广告公司站点获得信息 Web缓存(代理服务器) 目标:访问原始服务器,就满足客户的请求 操作: 用户设置浏览器: 通 过缓存访问Web 浏览器将所有的HTTP 请求发给缓存...允许用户用目录来组织 报文 允许用户读取报文组件 IMAP在会话过程中保留 用户状态: 目录名、报文ID与目录名 之间映射 DNS Email DNS P2P应用 CDN TCP套接...(Socket)编程 UDP套接编程

5510

网络嗅探器

原理:   通常的套接程序只能响应与自己MAC地址相匹配的 或者是 广播形式发出的数据帧,对于其他形式的数据帧网络接口采取的动作是直接丢弃   为了使网卡接收所有经过他的封包,要将其设置成混杂模式,通过原始套接来实现...设置混杂模式:   创建原始套接,   绑定到一个明确的本地地址,   向套接发送SIO_RCVALL控制命令,   接收所有的IP包 代码实现步骤:   1 创建原始套接   2 绑定到明确地址...主程序代码如下: void main() { //创建原始套接 SOCKET sRaw = socket(AF_INET,SOCK_RAW,IPPROTO_IP); //获取本地...: break; case IPPROTO_ICMP: break; } } 解析TCP头代码如下:取出端口号,输出 void DecodeTCPPacket...: break; case IPPROTO_ICMP: break; } } void main() { // 创建原始套节 SOCKET

1.9K100

原始套接和流量嗅探

---- 原始套接和流量嗅探 前言 《Python黑帽子:黑客与渗透测试编程之道》的读书笔记,会包括书中源码,并自己将其中一些改写成Python3版本。...书是比较老了,anyway,还是本很好的书 本篇是第3章原始套接和流量嗅探 1、Windows和Linux上的包嗅探 为了多平台使用,先创建SOCKET,再判断平台 windows允许嗅探所有协议 linux...coding:utf8 -*- import socket import os # 监听主机,即监听那个网络接口,下面的为我的kali的ip host = "10.10.10.145" # 创建原始套接...sniffer = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket_protocol) #raw的中文是生的意思,大概就是原始套接的意思吧...层 如果要主机发现,关闭的端口会对UDP包返回一个ICMP端口不可达的响应,以此判断主机是否存活,所以需要解码ICMP #!

1.8K20

计网之网络应用

每个字段如何描述 字段的语义(semantics) 字段中信息的含义 规则(rules) 进程何时发送/响应信息 进程如何发送/响应信息 网络应用对传输服务的需求 数据丢失(data...,用于数据缓存和请求响应代理 用户向设定浏览器通过缓存进行Web访问 浏览器向缓存/代理服务器发送所有的HTTP请求请求对象在代理服务器缓存中,缓存返回对象 否则,缓存服务器向原始服务器发送...SOCK_DGRAM , 数据报套接 Data GRAM ,面向UDP SOCK_RAW , 原始套接 面向网络层IP/ICMP/IGMP......,saddrlen); recv函数TCP连接的另一端接收数据,或调用了connect函数的UDP客户端套接接收服务器发来的数据 recvform函数用于UDP服务器端套接与未调用connect...IP和端口号 listen 设置TCP套接为监听模式,同时设置请求队列大小 accept 接收/提取一个连接请求,创建新套接(建立连接通道) send 发送数据(TCP套接/连接模式的C端UDP

26931

Python socket 模块的使用

先看一段创建服务器端的代码 import socket #定义服务器端启动要绑定的ip和端口 ip_port = ('127.0.0.1',9999) # 创建socket对象并指定连接的网络类型和传输协议...  socket.SOCK_RAW 原始套接,普通的套接无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文;此外,利用原始套接,可以通过...socket.SOCK_RDM 是一种可靠的UDP形式,即保证交付数据报但不保证顺序。SOCK_RAM用来提供对原始协议的低级访问,在需要执行某些特殊操作时使用,如发送ICMP报文。...其中data是包含接收数据的字符串,address是发送数据的套接地址。 sk.send(string[,flag])   将string中的数据发送到连接的套接。...因为udp协议本身就比tcp协议的步骤要少(不需要三次握手),所以如果我们选择使用udp协议来写程序步骤也会简化不少 import socket #指定要绑定的ip和端口 ip_port = ('127.0.0.1

1.2K20

python学习----------so

服务器根据地址类型,socket类型,协议创建socket 服务器为socket绑定ip和端口 服务器监听端口请求,随时准备客户端发来的连接请求 客户端创建socket 客户端打开socket,根据服务器...  socket.SOCK_RAW 原始套接,普通的套接无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文;此外,利用原始套接,可以通过...socket.SOCK_RDM 是一种可靠的UDP形式,即保证交付数据报但不保证顺序。SOCK_RAM用来提供对原始协议的低级访问,在需要执行某些特殊操作时使用,如发送ICMP报文。...其中data是包含接收数据的字符串,address是发送数据的套接地址。 sk.send(string[,flag])   将string中的数据发送到连接的套接。...该函数主要用于UDP协议。 sk.settimeout(timeout) 设置套接操作的超时期,timeout是一个浮点数,单位是秒。值为None表示没有超时期。

1K10

SeedLab——Packet Sniffing and Spoofing Lab

通常情况下,应用程序使用高级套接(如TCP套接UDP套接)进行网络通信,这些套接封装了底层的网络协议细节,提供了简化的接口供应用程序使用。...然而,使用原始套接,应用程序可以绕过这些封装,直接访问和操作网络协议栈中的原始数据。...当使用原始套接发送IP数据包时,操作系统会负责处理IP头部的构建和校验和计算。我们只需要构造IP数据包的内容,将其传递给操作系统,并通过原始套接发送即可。...Q F 为什么时原始套接需要root权限? 通过原始套接,可以直接访问和操作网络层的数据包,包括构造和发送自定义的网络数据包。所有会存在潜在的安全风险,因此必须要root权限。...如果没有root权限,在创建原始套接过程就会失败了。 Task 2.3: Sniff and then Spoof 编写一个程序能够响应ICMP ECHO,伪造ICMP Reply。

45710

网络协议:一文搞懂Socket套接

2、数据报套接(SOCK_DGRAM) 提供了一种无连接的服务,通信双方不需要建立任何显式连接,数据可以发送到指定的套接,并且可以指定的套接接收数据。...数据报套接使用UDP进行数据的传输。由于数据包套接不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理。...3、原始套接(SOCK_RAW) 与标准套接(标准套接指的是前面介绍的流套接和数据报套接)的区别在于:原始套接可以读写内核没有处理的 IP 数据包,而流套接只能读取 TCP 的数据,数据报套接只能读取...1、Demo 服务端 服务端的 Socket Demo 流程思路: 创建 ServerSocket 对象,绑定监听端口; 通过 accept() 方法监听客户端请求; 链接建立,通过输入流读取客户端发送请求信息...; 连接建立,通过输出流向服务器端发送请求信息; 通过输入流获取服务器响应的信息; 关闭相关资源。

1.7K20

Golang中用到的的Websocket库

这些套接提供双向、可靠、有序和不重复的数据流,没有记录边界。 原始套接(或原始 IP 套接)通常在路由器和其他网络设备中可用。...套接通信 每个网络套接都由地址标识,地址是传输协议、IP 地址和端口号的三元组。主机之间的通信主要有两种协议:TCP 和 UDP。...建立连接,客户端和服务器开始交换数据:客户端通过 TCPConn 对象向服务器发送请求,服务器解析请求发送响应,TCPConn 对象接收来自服务器的响应。...= nil { // handle error } 连接到 UDP 套接 与 TCP 套接相反,使用 UDP 套接,客户端只向服务器发送数据报。...将此用作Sec-WebSocket-Accept响应标头的值。 传输数据帧 握手成功完成,应用程序可以客户端读取数据和向客户端写入数据。

1.9K20

Socket套接(网络编程万总结-附代码)

2.2 数据报套接使用传输层UDP协议 UDP,即User Datagram Protocol(用户数据报协议),传输层协议。...2.3 原始套接 原始套接用于自定义传输层协议,用于读写内核没有处理的IP协议数据。...三、UDP数据报套接编程 对于UDP协议来说,具有无连接,面向数据报的特征,即每次都是没有建立连接,并且一次发送全部数据报,一次接收全部的数据报。...3.1 Java数据报套接通信模型 java中使用UDP协议通信,主要基于 DatagramSocket 类来创建数据报套接,并使用 DatagramPacket 作为发送或接收的UDP数据报。...TCP连接,所以是给接收方使用 输出流:同理,所以是给发送使用 4.4 TCP中的长短连接 TCP发送数据时,需要先建立连接,什么时候关闭连接就决定是短连接还是长连接: 短连接:每次接收到数据并返回响应

55620

python资源库——socket网络编

sockket简介 socekt又称为‘套接’,用于描述IP和地址端口,是一个通信链路的句柄,应用程序通常通过套接向网络发出请求或者应答网络请求。...socket.SOCK_RAW 原始套接,普通的套接无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文;此外,利用原始套接,可以通过...socket.SOCK_RDM 是一种可靠的UDP形式,即保证交付数据报但不保证顺序。SOCK_RAM用来提供对原始协议的低级访问,在需要执行某些特殊操作时使用,如发送ICMP报文。...通常是一个元组(ipaddr,port) sk.fileno() 套接的文件描述符 socket编程思路 TCP服务端 创建套接,绑定套接到本地IP与端口 开始监听连接 进入循环,不断接受客户端的连接请求...然后接收传来的数据,并发送给对方数据 传输完毕,关闭套接 TCP客户端 创建套接,连接远端地址 连接发送数据和接收数据 传输完毕,关闭套接 server端: import socket ip_port

87210

17 . Go之网络编程

Socket又称“套接”,应用程序通常通过“套接”向网络发出请求或者应答网络请求,使主机间或者一台计算机的进程间可以通讯 类似于操作系统将复杂丑陋的控制计算机硬件的操作封装成统一简单的接口,只需要使用者学会如何操作系统就可以简单快速的操作计算机硬件...建立并绑定 Socket:首先服务端使用 socket() 函数建立网络套接,然后使用 bind() 函数为套接绑定指定的 IP 和端口; // 2....处理请求发送响应:服务端通过 read() 函数从上述已建立连接读取客户端发送请求数据,经过处理再通过 write() 函数将响应数据发送给客户端。...客户端来看,代码编写分为以下几个步骤 // 1 . 建立 Socket:客户端同样使用 socket()函数建立网络套接; // 2 ....发送请求与接收响应:连接建立成功,客户端就可以通过 write() 函数向服务端发送数据,并使用 read() 函数服务端接收响应

97250

一文告诉你java NIO底层用到的那些connect、bind、listen、accept、close

IPROTO_TCP表示TCP协议,IPROTO_UDP表示UDP协议 connect 客户端用来建立与TCP服务器的连接,它的调用将激发TCP的三路握手,即会使当前套接CLOSED状态转移到SYN_SENT...对于4.4BSD内核发送SYN,没有响应再等6s发送,无响应等24s,如果总共等了75s仍然没有就返回ETIMEDOUT错误 客户端收到SYN响应为RST,返回ECONNREFUESED错误。...如果端口指定,内核会在bind被调用时选择一个临时的端口。...由于地址结构是个常量,所以如果是内核指定端口,无法返回,所以要获取内核指定的临时端口,必须调用getsockname返回协议地址 listen 做两件事 指示内核应该接受指向此套接的连接请求,对应...TCP状态转移为套接CLOSED状态变成LISTEN状态 规定内核应该为相应套接排队的最大连接个数 socket创建的套接默认是用来主动发起请求的,即用来调用connect函数,listen则是将这个套接变成被动套接

1.6K30

C++ Socket编程实例解析

数据包套接使用UDP(User Datagram Protocol)协议进行数据的传输。由于数据包套接不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理。...原始套接(SOCK_RAW) 原始套接(SOCKET_RAW)允许对较低层次的协议直接访问,比如IP、 ICMP协议,它常用于检验新的协议实现,或者访问现有服务中配置的新设备,因为RAW SOCKET...网络监听技术很大程度上依赖于SOCKET_RAW 基于TCP的Socket使用流式套接,相比于使用数据包套接UDP来讲,TCP可以使程序员不必关心数据正确性及顺序正确性,缺点是效率较低。...,创建套接(WSAStartup()/socket()); 2:绑定套接到一个IP地址和一个端口上(bind()); 3:将套接设置为监听模式等待连接请求(listen()); 4:请求到来...,接受连接请求,返回一个新的对应于此次连接的套接(accept()); 5:用返回的套接和客户端进行通信(send()/recv()); 6:返回,等待另一连接请求; 7:关闭套接,关闭加载的套接字库

2.3K10

一文总结计算机网络

工作流程: 网卡读取自己的MAC地址—>发送RARP请求的广播数据包—>RARP服务器收到请求,为其分配IP地址,并将RARP回应发送给该机器—>该机器收到IP地址使用IP地址进行通信 ICMP...使用场景 1、需要频繁交互的场景使用长连接,如即时通信工具(微信/QQ,QQ也有UDP),相反则使用短连接,比如普通的web网站,只有当浏览器发起请求时才会建立连接,服务器返回响应,连接立即断开。...糊涂窗口综合证:TCP接收方的缓存已满,而交互式的应用进程一次只接收缓存中读取1节(这样就使接收缓存空间仅腾出1节),然后向发送发送确认,并把窗口设置为1个字节(但发送的数据报为40节的的话)...为此,客户端的套接必须首先描述它要连接的服务器的套接,指出服务器端套接的地址和端口号,然后就向服务器端套接提出连接请求。...*连接确认:当服务器端套接监听到或者说接收到客户端套接的连接请求时,就响应客户端套接请求,建立一个新的线程,把服务器端套接的描述发 给客户端,一旦客户端确认了此描述,双方就正式建立连接。

56720
领券