Ping程序

一、概述

Ping程序是对两个TCP/IP系统连通性进行测试的基本工具。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。

二、格式

大多数TCP/IP实现都在内核中直接支持Ping服务器——这种服务器不是一个用户进程

?

在Unix中,把ICMP的标识符字段设置为发送进程的ID号,这样子即使在同一台主机上同时运行了多个Ping程序实例,也能正确识别出返回的信息。

时间: 2024-10-06 07:00:45

Ping程序的相关文章

计算机网络(5)-----ICMP协议和PING程序

控制报文协议(Internet Control Message Protocol) 定义 它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息.控制消息是指网络通不通.主机是否可达.路由是否可用等网络本身的消息. 简介 ICMP报文就像是IP报文的小弟,总顶着IP报文的名头出来混.因为ICMP报文是在IP报文内部的,如图: IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成.其中一个重要的模块就是ICMP(网络控制报文)

《网络编程》原始套接字 ---ping程序实现

概述 基于字节流套接字(SOCK_STREAM)和数据报套接字(SOCK_DGRAM)不可以访问传输层协议,只是对应用层的报文进行操作,传输层的数据报格式都是由系统提供的协议栈实现,用户只需要填充相应的应用层报文,由系统完成底层报文首部的填充并发送.原始套接字(SOCK_RAW)可以访问位于基层的传输层协议,原始套接字没有端口号. 原始套接字(SOCK_RAW)是一种不同于 SOCK_STREAM.SOCK_DGRAM 的套接字,它实现于系统核心.原始套接字使进程可以读与写 ICMP.IGMP

ping程序的实现

构造icmp包,发送给自己在同一网段的主机,使用select函数,非阻塞方式接收回包.还包括反码算术求和求首部校验和的函数. 转载请注明出处. 可能的情况 1.在线 目的主机直接回复icmp包. 2.终点不可达(发送不到目的主机) 接收到路由器或本机的icmp的终点不可达回包. 3.接受不到回包(能发送到目的主机) 能发送到目的主机,但是被目的主机的防火墙拦截了,不做回复,所以收不到回包. 代码绝大部分是老师上课的内容,自己整理了一遍,加上了一些注释: 1 // SetAvailableIP.c

Ping程序与Traceroute程序的原理(五)

(参考文献)TCP/IP详解,卷1:协议 "ping"这个名字来源于声呐定位操作.目的是为了测试另外一台主机是否可以到达.该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答. 一般来说,如果不能ping到某台主机那么就不能Telnet或者FTP到那台主机.反过来,如果不能Telnet到某台主机,那么通常可以用ping程序来确定问题出在哪里.Ping程序还能测出到这台主机的往返时间,以表明该主机离我们有"多远". Ping程序 我们称发送回显请求的p

ping程序剖析

   在剖析ping之前我们先补充一点知识...     (1)结构体addinfo      头文件:#include<netdb.h>     struct addrinfo     {            int  ai_flags;            int  ai_family;      //AF_INET,AF_INET6,UNIX etc            int  ai_socktype;   //STREAW,DATAGRAM,RAW            int

Linux下实现ping程序

今天参照大神的代码实现了一个ping程序. 总体是先发送一个ping请求,然后循环四次监听返回. send_ping函數 將icmp_hdr(icmp消息的header)的指針指向一片內存空間,然後定義各個屬性.通過memcpy函數將要發送的數據複製到data屬性中. 再通過sendto函數將icmp數據包發送到指定地址 sendto函數 #include <sys/types.h> #include <sys/socket.h> int sendto(int socketfd,

003.同时Ping多个IP(select实现IO复用,信号计时),ping程序升级版

写这个的目的主要是为了以后的方便: 1.信号计时函数的使用 2.ip头的构建和icmp头的构建 3.selec函数t的用法 代码实现: /src/ping.h 1 /* 2 * ping.h 3 * 4 * Created on: 2015年11月6日 5 * Author: root 6 */ 7 8 #ifndef PING_H_ 9 #define PING_H_ 10 11 #endif /* PING_H_ */ 12 13 #include <sys/types.h> 14 #in

TCP协议学习记录 (三) Ping程序 RR选项 记录路由hop

一开始想直接在上个程序改,自己构造IP包头,但后来发现不行,微软不让干了,所有后来选用libcap库来收发包 代码写的很乱.. 1 #pragma pack(4) 2 3 #define ECHO_REQUEST 8 4 #define DATASIZE 65500 5 #define PACKETSIZE 65535 6 #define IPCOUNT 9 7 #define MACSIZE 6 8 #define OPTION_RR 7 9 10 struct ethhdr 11 { 12

Ping程序实现

/************************************************************************* > File Name: Ping.c > Author: ICKelin > Mail: [email protected] > Created Time: 2014年12月17日 星期三 04时53分50秒 **************************************************************