freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

最新計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告-在線瀏覽

2024-08-30 02:48本頁(yè)面
  

【正文】 層實(shí)驗(yàn)—Ping程序的設(shè)計(jì)與實(shí)現(xiàn)PING程序是我們使用的比較多的用于測(cè)試網(wǎng)絡(luò)連通性的程序。ICMP是基于IP的一個(gè)協(xié)議,ICMP包通過(guò)IP的封裝之后傳遞。另一部分由SIGALARM信號(hào)每秒驅(qū)動(dòng)一次。否結(jié)束四、程序核心功能的實(shí)現(xiàn)機(jī)制實(shí)驗(yàn)一 利用協(xié)議分析軟件跟蹤局域網(wǎng)報(bào)文,實(shí)驗(yàn)內(nèi)容如下:將安裝協(xié)議分析軟件的PC接入以太網(wǎng)中,跟蹤PC之間的報(bào)文,并存入文件以備重新查。利用協(xié)議分析軟件的統(tǒng)計(jì)工具顯示網(wǎng)絡(luò)報(bào)文的各種統(tǒng)計(jì)信息。ICMP消息使用IP頭作為基本控制。四、 程序核心功能的實(shí)現(xiàn)機(jī)制實(shí)驗(yàn)二Ping實(shí)際上是使用ICMP中的ECHO報(bào)文來(lái)實(shí)現(xiàn)的。Code=0Checksum為從TYPE開(kāi)始到IP包結(jié)束的校驗(yàn)和Identifier 如果 code = 0, identifier用來(lái)匹配echo和echo reply消息Sequence Number 如果 code = 0, identifier用來(lái)匹配echo和echo reply消息功能描述: 收到echo 消息必須回應(yīng) echo reply 消息。例如: identifier 可能用于類(lèi)似于TCP或UDP的 port 用來(lái)標(biāo)示一個(gè)會(huì)話, 而sequence number 會(huì)在每次發(fā)送echo請(qǐng)求后遞增。 //版本號(hào)與包頭長(zhǎng)度 BYTE TOS。 //IP包長(zhǎng)度 WORD Id。 //偏移量,也是用于IP包的拆裝,本實(shí)驗(yàn)不用,置零 BYTE TTL。 //上一層協(xié)議,本實(shí)驗(yàn)置ICMP WORD Checksum。 BYTE Saddr[4]。 //目的端IP地址 BYTE Data[1]。2)ICMP包格式struct icmp { BYTE Type。 //本實(shí)驗(yàn)置零 WORD Checksum。 //用于匹配ECHO和ECHO REPLY包 WORD Seq。 //用戶數(shù)據(jù)}。char sendbuf[BUFSIZE]。int ttl_value。int datalen。int broad_sign=0。 /* add 1 for each sendto() */pid_t pid。int verbose。 /* set nonzero by daemon_init() *//* function prototypes */void proc_v4(char *, ssize_t, struct timeval *)。void send_v4(void)。void readloop(void)。void tv_sub(struct timeval *, struct timeval *)。struct addrinfo* host_serv(const char *host, const char *serv, int family, int socktype)。void err_quit(const char *fmt, ...)。struct proto { void (*fproc)(char *, ssize_t, struct timeval *)。 struct sockaddr *sasend。 /* sockaddr{} for receiving */ socklen_t salen。 /* IPPROTO_xxx value for ICMP */} *pr。ifdef IPV6struct proto proto_v6 = { proc_v6, send_v6, NULL, NULL, 0, IPPROTO_ICMPV6 }。 /* data that goes with ICMP echo request */double rtt_min = INFINITY, rtt_max = INFINITY, rtt_total = 0, rtt_sqr_total = 0。int ttl_flag = 0, broadcast_flag = 0。struct timeval tval_start。int main(int argc, char **argv){ int c。 opterr = 0。t want getopt() writing to stderr */ while ( (c = getopt(argc, argv, vhbt:q)) != 1) { switch (c) { case 39。: verbose++。 case 39。: puts(usage)。 case 39。: broadcast_flag = 1。 case 39。: ttl_flag = sscanf(optarg, %d, amp。amp。amp。 break。q39。 break。?39。}if (optind != argc1) err_quit(usage)。 pid = getpid()。 signal(SIGINT, sig_int)。 printf(ping %s (%s): %d data bytes\n, aiai_canonname, Sock_ntop_host(aiai_addr, aiai_addrlen), datalen)。proto_v4。proto_v6。(((struct sockaddr_in6 *) aiai_addr)sin6_addr))) err_quit(cannot ping IPv4mapped IPv6 address)。 prsasend = aiai_addr。 prsalen = aiai_addrlen。tval_start, NULL)。 exit(0)。 double rtt。 struct icmp *icmp。 ip = (struct ip *) ptr。 /* length of IP header */ icmp = (struct icmp *) (ptr + hlen1)。 if (icmpicmp_type == ICMP_ECHOREPLY) { if (icmpicmp_id != pid) return。 tvsend = (struct timeval *) icmpicmp_data。 rtt = tvrecvtv_sec * + tvrecvtv_usec / 。 if (rtt rtt_max) rtt_max = rtt。 rtt_sqr_total += rtt * rtt。 if (verbose 0) printf(%d bytes from %s: seq=%u, ttl=%d, rtt=%.3f ms\n, icmplen, Sock_ntop_host(prsarecv, prsalen), icmpicmp_seq, ipip_ttl, rtt)。 }}void proc_v6(char *ptr, ssize_t len, struct timeval* tvrecv){ifdef IPV6 int hlen1, icmp6len。 struct ip6_hdr *ip6。 struct timeval *tvsend。 /* start of IPv6 header */ hlen1 = sizeof(struct ip6_hdr)。 icmp6 = (struct icmp6_hdr *) (ptr + hlen1)。 if (icmp6icmp6_type == ICMP6_ECHO_REPLY) { if (icmp6icmp6_id != pid) return。 tvsend = (struct timeval *) (icmp6 + 1)。 rtt = tvrecvtv_sec * + tvrecvtv_usec / 。 if (rtt rtt_max) rtt_max = rtt。 rtt_sqr_total += rtt * rtt。 if (verbose 0) printf(%d bytes from %s: seq=%u, hlim=%d, rtt=%.3f ms\n, icmp6len, Sock_ntop_host(prsarecv, prsalen), icmp6icmp6_seq, ip6ip6_hlim, rtt)。 }endif /* IPV6 */}unsigned short in_cksum(unsigned short *addr, int len){ int nleft = len。 unsigned short *w = addr。 while (nleft 1) { sum += *w++。 } /* 4mop up an odd byte, if necessary */ if (nleft == 1) { *(unsigned char *)(amp。 sum += answer。 0xffff)。 /* add carry */
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1