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

正文內(nèi)容

計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)(1)-文庫(kù)吧

2024-12-29 18:05 本頁(yè)面


【正文】 主函數(shù)的邏輯流程圖如下:這個(gè)函數(shù)主要實(shí)現(xiàn)的是根據(jù)用戶輸入的命令行參數(shù),設(shè)置IP包頭選項(xiàng),從而實(shí)現(xiàn)IP包格式的填充,然后顯示的調(diào)用一下SIGALARM信號(hào)處理函數(shù),讓發(fā)送循環(huán)開(kāi)始。接下來(lái)是進(jìn)入無(wú)限接收循環(huán),接收到一個(gè)分組,記錄接到的時(shí)間,調(diào)用相應(yīng)的處理函數(shù),進(jìn)行分組的分析。這函數(shù)就是一切之后一直做的事情,程序一直就這樣運(yùn)行著。整個(gè)readloop函數(shù)的邏輯流程圖如下: 到了這個(gè)函數(shù)就既有了發(fā)送,又有了接收了,只是整個(gè)函數(shù)它只管接收到分組,不管后續(xù)的處理,具體是怎么分析的分組就得下面的函數(shù)來(lái)處理啦,下面主要有兩個(gè)函數(shù),一個(gè)是發(fā)送函數(shù),主要管理著發(fā)送相關(guān)的處理;另一個(gè)是接收函數(shù),主要管理著接收相關(guān)的處理。在接收到分組以后,readloop函數(shù)就調(diào)用本函數(shù),并把接收到得分組和接收到的時(shí)間傳送給本函數(shù),本函數(shù)分為兩個(gè)版本,一個(gè)v4版本,一個(gè)v6版本。V4版本處理的是ipv4的分組,v6版本處理的是ipv6的分組,各個(gè)版本根據(jù)相應(yīng)的ip頭格式和icmp的頭格式,把需要的信息讀取出來(lái),并把數(shù)據(jù)段的第一個(gè)字節(jié)讀取出來(lái),因?yàn)檫@個(gè)字節(jié)存放的是這個(gè)分組發(fā)送時(shí)的時(shí)間,然后與結(jié)束的時(shí)間相減得出這條路線的延遲時(shí)間。整個(gè)proc函數(shù)的邏輯流程圖如下:這個(gè)邏輯圖是v4版本和v6版本共同的地方,v4不同于v6版本的是,v4版本在或得icmp頭指針之前還得先獲得ip頭指針,然后把ip頭分析完才到icmp頭呢,而v6版本是直接就是icmp頭,沒(méi)有ip頭,所以我們不必再去獲得和分析ip頭。此函數(shù)與proc函數(shù)非常類似也是有v4和v6兩個(gè)版本,各個(gè)版本的函數(shù)填充并發(fā)送對(duì)應(yīng)版本的數(shù)據(jù)包,唯一不同的就是v4版本中如果用戶指定了偽裝源地址的話,是需要自己填寫(xiě)一個(gè)ip頭的。除此之外,其他的都是共同的,主要就是填充icmp頭信息和獲取當(dāng)前時(shí)間并把它存到數(shù)據(jù)包的第一個(gè)字節(jié)里。整個(gè)send函數(shù)的邏輯流程圖如下:五、程序源代碼實(shí)驗(yàn)一數(shù)據(jù)包的捕獲與分析在實(shí)驗(yàn)一中,因?yàn)橹饕亲グ?,沒(méi)有什么源代碼,主要也就有一些過(guò)濾條件,可以算是代碼。因此,在這里就把過(guò)濾條件說(shuō)明如下:1. == 這一個(gè)過(guò)濾代碼是指發(fā)往百度的ip包。所以,把這個(gè)寫(xiě)到filter窗格里就可以只顯示發(fā)往百度主頁(yè)的ip包的信息了。2. == 80這個(gè)是過(guò)濾了所有目的端口不是80的包,這樣剩下的就都是發(fā)往80端口的數(shù)據(jù)包啦。3. == 80 and =過(guò)濾條件可以用與、或、非的關(guān)系運(yùn)算符進(jìn)行連接,所以這句就可以顯示出所有發(fā)往百度主頁(yè)的端口為80的數(shù)據(jù)包了。4. !=值得注意的就是這個(gè)讓我們以為對(duì)的,可是其實(shí)不是非常對(duì)的表達(dá)式,說(shuō)它我們以為對(duì)是因?yàn)?,我們總把它想成是把所有發(fā)給百度主頁(yè)的包過(guò)濾掉,很不幸,它不會(huì)按照我們的期望進(jìn)行。相反。因此,那個(gè)表達(dá)式可以被讀作: 。因?yàn)橐粋€(gè)ip數(shù)據(jù)報(bào)同含源地址和目標(biāo)地址。實(shí)驗(yàn)二Ping程序的核心代碼intmain(int argc, char **argv){ int c。 int temp。 struct addrinfo *ai。 quite_mode=0。 =0。 =0。 =0。 =0。 bzero(amp。false_source_addr,sizeof(struct sockaddr_in))。 opterr = 0。 /* don39。t want getopt() writing to stderr */ while ( (c = getopt(argc, argv, vhT:c:i:vt:hbqs:o:r:)) != 1) { switch (c) { case 39。v39。: verbose++。 break。 case 39。h39。: printf(!**This is a Ping program**! You can use it to send ICMP ECHO_REQUEST packets to network hosts.\n\Usage: ping [OPTION...] HOST ...\n\n\ Options valid for all request types:\n\n\ c NUMBER Stop after sending NUMBER packets\n\ i NUMBER Wait NUMBER seconds between sending each packet\n\ v Verbose output\n\n\ Options valid for echo requests:\n\n\ t NUM 設(shè)置ttl值為NUM,IPv4和IPv6同時(shí)適用\n\ b 允許ping一個(gè)廣播地址,只用于IPv4\n\ q 安靜模式\n\ s Send NUMBER data octets\n\n\ Options valid for other:\n\n\ o NUM Sever type\n\ 0 最小化延遲\n\1 最大化吞吐量\n\ 2 最大化可靠性\n\ 3 最小化成本\n\ r ipaddr 偽裝的源ip地址\n\ h 顯示幫助信息\n\n)。 return 0。 case 39。q39。: quite_mode=1。 break。 case 39。t39。: en_ttl=1。 ttl=atoi(optarg)。 if(ttl0) err_quit(The ttl value is too small! It must between 1 and 255!)。 else if(ttl255) err_quit(The ttl value is too big! It must between 1 and 255!)。 break。 case 39。b39。: allow_broadcast=1。 break。 case 39。c39。: ping_count=atoi(optarg)。 break。 case 39。i39。: delay=atoi(optarg)。 if(delay0) err_quit(The delay value is too small! It must bigger than 0!)。 case 39。s39。: datalen=atoi(optarg)。 if(datalen0) err_quit(The datalen value is too small! It must bigger than 0!)。 else if(datalen 1472 amp。amp。 datalen 65400) printf(The datalen value is bigger than MTU(1500),so you may not be sucess!\n)。 else if(datalen 65399) err_quit(The datalen value is too big!)。 break。 case 39。o39。: temp=atoi(optarg)。 if(temp3 |temp0) err_quit(The server type is not exist!)。 server_type=server_types[atoi(optarg)]。 en_server_type=1。 break。 case 39。r39。: inet_aton(optarg,amp。)。 en_false_source_addr=1。 break。 case 39。?39。: err_quit(Your option is wrong. ping h for help!)。 } } if (optind != argc1) err_quit(!ping h for help!)。 host = argv[optind]。 pid = getpid()。 signal(SIGALRM, sig_alrm)。 signal(SIGINT,readloopstop)。 ai = host_serv(host, NULL, 0, 0)。 printf(\nping %s (%s): %d data bytes\n, aiai_canonname, Sock_ntop_host(aiai_addr, aiai_addrlen), datalen)。 /* 4initialize according to protocol */ if (aiai_family == AF_INET) { pr = am
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1