日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UCAS计算机网络实验

發(fā)布時間:2023/12/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UCAS计算机网络实验 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

經(jīng)過兩周辛勤的的工作,把實驗一實驗三完成了,不過其中還是有點不足的,不過主要實驗目的完成了,后面還有一些不太要緊的就算了。
后面有空的話 應該還會把實驗五做一下
源碼:https://github.com/cuixuage/NetWorking_MiniNet

Experiment

1.Switch_stack交換機實驗 completed in 2017/11/8

實現(xiàn)對數(shù)據(jù)結(jié)構(gòu)mac_port_map的所有操作,以及數(shù)據(jù)包的轉(zhuǎn)發(fā)和廣播操作
思路:
1.對于收到的packet,根據(jù)其des_mac在FDB表中進行查詢,存在對應的interface則轉(zhuǎn)發(fā),否則在局域網(wǎng)內(nèi)廣播此packet
2.對于收到的packet,如果其src_mac不在FDB表中則認為是新加入的主機,將其src_mac與interface物理端口的映射關(guān)系加入FDB
3.key points: 當交換機從某一個interface收到來自src_mac地址的A主機的packet時,可以確定: des_mac為A主機的packet從其對應的inerface轉(zhuǎn)出即可到達A主機

實現(xiàn)函數(shù):
-iface_info_t *lookup_port(u8 mac[ETH_ALEN]);
-void insert_mac_port(u8 mac[ETH_ALEN], iface_info_t *iface);
-int sweep_aged_mac_port_entry();
-void broadcast_packet(iface_info_t *iface, const char *packet, int len);
-void handle_packet(iface_info_t *iface, char *packet, int len);

實驗iperf結(jié)果: switch:
[ ID] Interval Transfer Bandwidth
[ 13] 0.0-30.2 sec 33.5 MBytes 9.29 Mbits/sec
boardcast:
[ ID] Interval Transfer Bandwidth
[ 13] 0.0-30.3 sec 20.9 MBytes 5.78 Mbits/se

3.NAT_stack NAT地址轉(zhuǎn)換實驗 completed in 2017/11/20

實現(xiàn)對于內(nèi)網(wǎng)外網(wǎng)IP_PORT hash表NAT_mapping_entry操作,從而實現(xiàn)數(shù)據(jù)包轉(zhuǎn)發(fā)(更換IP+PORT,重新計算checksum)
思路:
1.packet方向為DIR_IN
根據(jù)packet的tcp協(xié)議中des_port,從映射表中查找映射,得到局域網(wǎng)內(nèi)部主機的IP+PORT,替換des_IP, des_port,重新計算IP\TCP協(xié)議的校驗和,轉(zhuǎn)發(fā)packet
2.packet方向是DIR_OUT
根據(jù)packet中的src_IP,src_PORT,從映射表中查找映射,如果不存在則加入映射表,得到NAT新分配的assgined_port。替換src_IP為NAT公網(wǎng)IP,src_port為assgined_port,重新計算校驗和,轉(zhuǎn)發(fā)packet
3.根據(jù)packet的des_IP == NAT公網(wǎng)IP判斷packet發(fā)送方向
4.超時連接的timeout操作,free刪除鏈接
實現(xiàn)函數(shù):
-struct nat_mapping *nat_lookup_external(struct list_head *mapping_list, u16 external_port);
-struct nat_mapping *nat_lookup_internal(struct list_head *mapping_list,u32 internal_ip, u16 internal_port);
-u16 assign_external_port();
-void free_port(u16 port);
-struct nat_mapping *nat_insert_mapping(struct list_head *mapping_list, u32 internal_ip, u16 internal_port);
-static int get_packet_direction(char *packet);
-void nat_update_tcp_connection(char *packet, struct nat_mapping *mapping, int dir);
-struct nat_mapping *nat_get_mapping_from_packet(char *packet, int len, iface_info_t *iface, int dir);
-void do_translation(iface_info_t *iface, char *packet, int len, int dir);
-void *nat_timeout();

實驗結(jié)果:
h2啟動simpleHTTPServer ;h1 wget h2_IP
獲取到當前目錄所有文件并寫入到index.html

5.Socket_example 分布式字符統(tǒng)計實驗 completed in 2017/11/26

需求:統(tǒng)計某個文件中的所有字母出現(xiàn)次數(shù),并將工作合理分配到 conf 中出現(xiàn)的若干個IP 代表的 worker 中,并獲取結(jié)果展示
測試環(huán)境: mininet 搭建 1 個 switch+3 個 host(1 個 master+2 個 worker)

把 master 作為 server 端,worker 作為 client 進行的實驗
-1.Server 多線程處理來自 client 的鏈接請求 避免的 accept 阻塞問題
-2.server 發(fā)送 filename + file_start + file_end 到 client. Client 從給定的文件起始位置結(jié)束位置加以處理,并將 hash 結(jié)果返回到 server
-3.server 端 pthread_join 等待最后一個的線程執(zhí)行完畢后,再將 static ans 展示

總結(jié)

以上是生活随笔為你收集整理的UCAS计算机网络实验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。