最近中文字幕完整版高清,宅男宅女精品国产av天堂,亚洲欧美日韩综合一区二区,最新色国产精品精品视频,中文字幕日韩欧美就去鲁

首頁(yè) > 考試輔導(dǎo) > 計(jì)算機(jī)考試 > 軟件水平考試 > 軟件水平學(xué)習(xí)指南 > ping命令工作原理詳細(xì)解析

ping命令工作原理詳細(xì)解析

內(nèi)容簡(jiǎn)介:

    ping的原理就是首先建立通道,然后發(fā)送包,對(duì)方接受后返回信息,這個(gè)包至少包括以下內(nèi)容,發(fā)送的時(shí)候,包的內(nèi)容包括對(duì)方的ip地址和自己的地址,還有序列數(shù),回送的時(shí)候包括雙方地址,還有時(shí)間等,主要是接受方在都是在操作系統(tǒng)內(nèi)核里做好的,時(shí)刻在監(jiān)聽(tīng),提供一段c程序的代碼,希望對(duì)大家有用。

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

#define packet_size 4096
#define max_wait_time 5
#define max_no_packets 3

char sendpacket[packet_size];
char recvpacket[packet_size];
int sockfd,datalen=56;
int nsend=0,nreceived=0;
struct sockaddr_in dest_addr;
pid_t pid;
struct sockaddr_in from;
struct timeval tvrecv;

void statistics(int signo);
unsigned short cal_chksum(unsigned short *addr,int len);
int pack(int pack_no);
void send_packet(void);
void recv_packet(void);
int unpack(char *buf,int len);
void tv_sub(struct timeval *out,struct timeval *in);

void statistics(int signo)
{ printf("\n--------------------ping statistics-------------------\n");
printf("%d packets transmitted, %d received , %%%d lost\n",nsend,nreceived,
(nsend-nreceived)/nsend*100);
close(sockfd);
exit(1);
}

/*校驗(yàn)和算法*/
unsigned short cal_chksum(unsigned short *addr,int len)
{ int nleft=len;
int sum=0;
unsigned short *w=addr;
unsigned short answer=0;

/*把icmp報(bào)頭二進(jìn)制數(shù)據(jù)以2字節(jié)為單位累加起來(lái)*/
while(nleft>1)
{ sum+=*w++;
nleft-=2;
}