`

udp connect 总结

udp 
阅读更多
最近在写健康检查的插件,udp的检查打算用connect 来做,总结一下udp 判断对端服务器是否在监听对应端口的方法:

单纯判断connect 的返回值无法判断对端服务器是否在监听,因为connect 只是让内核永久维护一个存储对端地址信息的数据结构
并不会像tcp 一样去与对端服务器发生通讯,tcpdump 抓包是没有任何数据包的

connect + send 也无法判断对端服务器是否在监听端口,tcpdump 抓包能抓到icmp unreachable,但是应用层没有相关错误信息,send的返回值是正确的,用getsockopt获取socket的状态也是正确的

connect + send +recv 可以判断对端服务器是否在监听对应的端口,但是会存在以下问题,
阻塞模式下:对端服务器有在监听对应端口的话,recv 一直不会返回;对端服务如果没有在监听对应端口的话,recv会返回unreachable的错误,表明网络不可达
非阻塞模式下:无论对端服务器是否在监听端口,recv 会马上返回Resource temporarily unavailable ;尝试用while 一直recv ,如果对端服务器有在监听对应端口的话,无法判断退出时间;对端服务器要是没有在监听对应端口的话,可以通过错误码来判断,退出while;

最后决定用connect +send+recv 来实现,并且通过setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv),来指定recv的timeout
分享到:
评论

相关推荐

    端口扫描器的设计与实现

    本文档包含端口扫描器课程设计全套代码(Java实现),课程设计报告,以及说明文档。内容齐全,代码可以运行,有质量保证。 课程设计报告包含五大模块:1.有关端口扫描的基本知识。 2.... 3.... 4.... 5....

    Linux网络编程.pdf socket tcp udp

    第一章 概论 .................................................................................................................. 1 1.1 网络的历史...........................................................

    Easy-Reactor是一个基于Reactor模式的Linux C++网络服务器框架

    在工作中开发基础服务器的经验总结、以及阅读陈硕《muduo》一书的收获,使得我以沉淀的心态做了这个项目 功能 对TCP服务器端: 支持设置:收到某类消息后回调函数,连接接收后回调函数,连接关闭前回调函数; 对TCP...

    Linux防火墙.pdf

     6.1.1 TCP connect()扫描 81  6.1.2 TCP SYN或半开放扫描 83  6.1.3 TCP FIN、XMAS和NULL扫描 85  6.1.4 UDP扫描 86  6.2 psad警报和报告 87  6.2.1 psad电子邮件警报 87  6.2.2 psad的syslog报告 90 ...

    TCP_IP详解卷1

    11.9 UDP和ARP之间的交互作用 118 11.10 最大UDP数据报长度 119 11.11 ICMP源站抑制差错 120 11.12 UDP服务器的设计 122 11.12.1 客户IP地址及端口号 122 11.12.2 目标IP地址 122 11.12.3 UDP输入队列 122 11.12.4 ...

    TCPIP详解卷[1].part04

    11.9 UDP和ARP之间的交互作用 118 11.10 最大UDP数据报长度 119 11.11 ICMP源站抑制差错 120 11.12 UDP服务器的设计 122 11.12.1 客户IP地址及端口号 122 11.12.2 目标IP地址 122 11.12.3 UDP输入队列 122 11.12.4 ...

    TCPIP详解卷[1].part09

    11.9 UDP和ARP之间的交互作用 118 11.10 最大UDP数据报长度 119 11.11 ICMP源站抑制差错 120 11.12 UDP服务器的设计 122 11.12.1 客户IP地址及端口号 122 11.12.2 目标IP地址 122 11.12.3 UDP输入队列 122 11.12.4 ...

    TCPIP详解卷[1].part03

    11.9 UDP和ARP之间的交互作用 118 11.10 最大UDP数据报长度 119 11.11 ICMP源站抑制差错 120 11.12 UDP服务器的设计 122 11.12.1 客户IP地址及端口号 122 11.12.2 目标IP地址 122 11.12.3 UDP输入队列 122 11.12.4 ...

    TCPIP详解卷[1].part05

    11.9 UDP和ARP之间的交互作用 118 11.10 最大UDP数据报长度 119 11.11 ICMP源站抑制差错 120 11.12 UDP服务器的设计 122 11.12.1 客户IP地址及端口号 122 11.12.2 目标IP地址 122 11.12.3 UDP输入队列 122 11.12.4 ...

    TCPIP详解卷[1].part06

    11.9 UDP和ARP之间的交互作用 118 11.10 最大UDP数据报长度 119 11.11 ICMP源站抑制差错 120 11.12 UDP服务器的设计 122 11.12.1 客户IP地址及端口号 122 11.12.2 目标IP地址 122 11.12.3 UDP输入队列 122 11.12.4 ...

    TCP/IP详解part_2

    11.9 UDP和ARP之间的交互作用 118 11.10 最大UDP数据报长度 119 11.11 ICMP源站抑制差错 120 11.12 UDP服务器的设计 122 11.12.1 客户IP地址及端口号 122 11.12.2 目标IP地址 122 11.12.3 UDP输入队列 122 11.12.4 ...

    TCPIP详解卷[1].part08

    11.9 UDP和ARP之间的交互作用 118 11.10 最大UDP数据报长度 119 11.11 ICMP源站抑制差错 120 11.12 UDP服务器的设计 122 11.12.1 客户IP地址及端口号 122 11.12.2 目标IP地址 122 11.12.3 UDP输入队列 122 11.12.4 ...

    TCPIP详解卷[1].part11

    11.9 UDP和ARP之间的交互作用 118 11.10 最大UDP数据报长度 119 11.11 ICMP源站抑制差错 120 11.12 UDP服务器的设计 122 11.12.1 客户IP地址及端口号 122 11.12.2 目标IP地址 122 11.12.3 UDP输入队列 122 11.12.4 ...

    TCPIP详解卷[1].part12

    11.9 UDP和ARP之间的交互作用 118 11.10 最大UDP数据报长度 119 11.11 ICMP源站抑制差错 120 11.12 UDP服务器的设计 122 11.12.1 客户IP地址及端口号 122 11.12.2 目标IP地址 122 11.12.3 UDP输入队列 122 11.12.4 ...

    TCPIP详解卷[1].part07

    11.9 UDP和ARP之间的交互作用 118 11.10 最大UDP数据报长度 119 11.11 ICMP源站抑制差错 120 11.12 UDP服务器的设计 122 11.12.1 客户IP地址及端口号 122 11.12.2 目标IP地址 122 11.12.3 UDP输入队列 122 11.12.4 ...

    TCPIP详解卷[1].part10

    11.9 UDP和ARP之间的交互作用 118 11.10 最大UDP数据报长度 119 11.11 ICMP源站抑制差错 120 11.12 UDP服务器的设计 122 11.12.1 客户IP地址及端口号 122 11.12.2 目标IP地址 122 11.12.3 UDP输入队列 122 11.12.4 ...

    网络编程教程,很好的一本写linux网络编程书,这是我上传的源码

    3 函数connect  4.1. 4 函数bind  4.1.5 函数listen  4.1.6 函数accept  4.1.7 函数read和write  4.1.8 函数close  4.2 应用示例  4.3 程序结果和异常说明  4.3.1 程序的运行结果  ...

    TCP-IP详解卷二:实现

    2.6.6 m_pullup使用总结 40 2.7 mbuf宏和函数的小结 40 2.8 Net/3联网数据结构小结 42 2.9 m_copy和簇引用计数 43 2.10 其他选择 47 2.11 小结 47 第3章 接口层 49 3.1 引言 49 3.2 代码介绍 49 3.2.1 全局变量 49 ...

    TCPIP协议详解卷二.part2.rar

    2.6.6 m_pullup使用总结 40 2.7 mbuf宏和函数的小结 40 2.8 Net/3联网数据结构小结 42 2.9 m_copy和簇引用计数 43 2.10 其他选择 47 2.11 小结 47 第3章 接口层 49 3.1 引言 49 3.2 代码介绍 49 3.2.1 全局...

    TCPIP协议详解卷二.part1.rar

    2.6.6 m_pullup使用总结 40 2.7 mbuf宏和函数的小结 40 2.8 Net/3联网数据结构小结 42 2.9 m_copy和簇引用计数 43 2.10 其他选择 47 2.11 小结 47 第3章 接口层 49 3.1 引言 49 3.2 代码介绍 49 3.2.1 全局...

Global site tag (gtag.js) - Google Analytics