第一篇:網(wǎng)絡課程設計(共)
南 華 大 學
絡 安
題目:RSA加解密算法 姓名: 學號:
導師: 全 網(wǎng)
1.實驗目的
通過C#語言編程實現(xiàn)Rsa加密算法,加深對公開密碼體制的了解。
2.RSA原理
2.1 RSA概述
當前最著名、應用最廣泛的公鑰系統(tǒng)RSA是在1978年,由美國麻省理工學院(MIT)的Rivest、Shamir和Adleman在題為《獲得數(shù)字簽名和公開鑰密碼系統(tǒng)的方法》的論文中提出的。它是一個基于數(shù)論的非對稱(公開鑰)密碼體制,是一種分組密碼體制。其名稱來自于三個發(fā)明者的姓名首字母。它的安全性是基于大整數(shù)素因子分解的困難性,而大整數(shù)因子分解問題是數(shù)學上的著名難題,至今沒有有效的方法予以解決,因此可以確保RSA算法的安全性。RSA系統(tǒng)是公鑰系統(tǒng)的最具有典型意義的方法,大多數(shù)使用公鑰密碼進行加密和數(shù)字簽名的產(chǎn)品和標準使用的都是RSA算法。
RSA算法是第一個既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法,因此它為公用網(wǎng)絡上信息的加密和鑒別提供了一種基本的方法。它通常是先生成一對RSA 密鑰,其中之一是保密密鑰,由用戶保存;另一個為公開密鑰,可對外公開,甚至可在網(wǎng)絡服務器中注冊,人們用公鑰加密文件發(fā)送給個人,個人就可以用私鑰解密接受。為提高保密強度,RSA密鑰至少為500位長,一般推薦使用1024位。
該算法基于下面的兩個事實,這些事實保證了RSA算法的安全有效性: 1)已有確定一個數(shù)是不是質(zhì)數(shù)的快速算法; 2)尚未找到確定一個合數(shù)的質(zhì)因子的快速算法。
目前,日益激增的電子商務和其它因特網(wǎng)應用需求使公鑰體系得以普及,這些需求量主要包括對服務器資源的訪問控制和對電子商務交易的保護,以及權利保護、個人隱私、無線交易和內(nèi)容完整性(如保證新聞報道或股票行情的真實性)等方面。公鑰技術發(fā)展到今天,在市場上明顯的發(fā)展趨勢就是PKI與操作系統(tǒng)的集成,PKI是“Public Key Infrastructure”的縮寫,意為“公鑰基礎設施”。公鑰體制廣泛地用于CA認證、數(shù)字簽名和密鑰交換等領域。
公鑰加密算法中使用最廣的是RSA。RSA算法研制的最初理念與目標是努力使互聯(lián)網(wǎng)安全可靠,旨在解決DES算法秘密密鑰的利用公開信道傳輸分發(fā)的難題。而實際結果不但很好地解決了這個難題;還可利用RSA來完成對電文的數(shù)字簽名以抗對電文的否認與抵賴;同時還可以利用數(shù)字簽名較容易地發(fā)現(xiàn)攻擊者對電文的非法篡改,以保護數(shù)據(jù)信息的完整性。目前為止,很多種加密技術采用了RSA算法,該算法也已經(jīng)在互聯(lián)網(wǎng)的許多方面得以廣泛應用,包括在安全接口層(SSL)標準(該標準是網(wǎng)絡瀏覽器建立安全的互聯(lián)網(wǎng)連接時必須用到的)方面的應用。此外,RSA加密系統(tǒng)還可應用于智能IC卡和網(wǎng)絡安全產(chǎn)品。
2.2 RSA算法的編程思路
1)確定密鑰的寬度。
2)隨機選擇兩個不同的素數(shù)p處q,它們的寬度是密鑰寬度的二分之一。3)計算出p和q的乘積n。
4)在2和Φ(n)之間隨機選擇一個數(shù)e , e 必須和Φ(n)互素,整數(shù)e用做加密密鑰(其中Φ(n)=(p-1)*(q-1))。
5)從公式ed ≡ 1 mod Φ(n)中求出解密密鑰d。6)得公鑰(e,n), 私鑰(d , n)。7)公開公鑰,但不公開私鑰。
8)將明文P(假設P是一個小于n的整數(shù))加密為密文C,計算方法為: C = Pe mod n 9)將密文C解密為明文P,計算方法為:
P = Cd mod n 然而只根據(jù)n和e(不是p和q)要計算出d是不可能的。因此,任何人都可對明文進行加密,但只有授權用戶(知道d)才可對密文解密
3.程序實現(xiàn)
本實驗本采用C#語言,用Visual Studio下編程得到以下結果:
3.1
源程序如下:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;
using System.Windows.Forms;using System.IO;
namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1(){ InitializeComponent();}
private void button1_Click(object sender, EventArgs e){ Form2 form = new Form2();form.Show();} private void Form1_Load(object sender, EventArgs e){ radioButton1.Checked = true;}
private void radioButton1_CheckedChanged(object sender, EventArgs e){ if(radioButton1.Checked == true){ label2.Text = “加密”;label3.Text = “E”;label5.Text = “請選擇加密文件”;button2.Text = “加密”;} else { label2.Text = “解密”;label3.Text = “D”;label5.Text = “請選擇解密文件”;button2.Text = “解密”;}
}
private void button3_Click(object sender, EventArgs e){ openFileDialog1.ShowDialog();textBox3.Text = openFileDialog1.FileName;} private void button2_Click(object sender, EventArgs e){ if(radioButton1.Checked == true){
if(textBox3.Text!= “"){ string pathstring = textBox3.Text, s1 = @”d:Code.txt“;if(File.Exists(pathstring)){ FileStream fileStream = File.OpenRead(pathstring);
try { StreamReader reader = new StreamReader(fileStream, System.Text.Encoding.Default);
while(!reader.EndOfStream){ string s = reader.ReadLine();int i, j;int m = Convert.ToInt32(textBox1.Text);int n = Convert.ToInt32(textBox2.Text);char[] a = new char[s.Length];for(i = 0;i < s.Length;i++){ j =(int)((s[i] ^(m))% n);a[i] = Convert.ToChar(j);if(File.Exists(s1)){ StreamWriter writer = new StreamWriter(s1, false, System.Text.Encoding.Default);writer.WriteLine(a);writer.Close();}}} reader.Close();} catch(Exception ex){ MessageBox.Show(ex.Message);} }
else
{ MessageBox.Show(”你要讀的文件不存在“);} }
} if(radioButton2.Checked == true){ textBox3.Text = openFileDialog1.FileName;if(textBox3.Text!= ”“){ string pathstring = textBox3.Text, s1 = @”d:Info.txt“;if(File.Exists(pathstring)){ FileStream fileStream = File.OpenRead(pathstring);
try { StreamReader reader = new StreamReader(fileStream, System.Text.Encoding.Default);
while(!reader.EndOfStream){ string s = reader.ReadLine();int i, j;int m = Convert.ToInt32(textBox1.Text);int n = Convert.ToInt32(textBox2.Text);char[] a = new char[s.Length];for(i = 0;i < s.Length;i++){ j =(int)((s[i] ^(m))% n);a[i] = Convert.ToChar(j);if(File.Exists(s1)){ StreamWriter writer = new StreamWriter(s1,false, System.Text.Encoding.Default);writer.WriteLine(a);writer.Close();
}}} reader.Close();} catch(Exception ex){ MessageBox.Show(ex.Message);}}}}}}} 點擊
得
源代碼:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;
namespace WindowsFormsApplication1 { public partial class Form2 : Form { public Form2(){ InitializeComponent();}
private void Form2_Load(object sender, EventArgs e)
{
}
private void label10_Click(object sender, EventArgs e){
}
private void textBox2_TextChanged(object sender, EventArgs e){ label13.Text = ”“;if(textBox2.Text!= ”“){ int m = Convert.ToInt32(textBox2.Text);int i, j;for(i = 2;i < m;i++){ if(m % i == 0){ label13.Text = ”不是質(zhì)數(shù),請重新輸入!“;break;} } } try { label5.Text = ”輸入的數(shù)與“ +(Convert.ToInt32(textBox1.Text)1)+ ”互質(zhì)“;} catch { } }
private void button1_Click(object sender, EventArgs e){ int P = Convert.ToInt32(textBox1.Text);int Q= Convert.ToInt32(textBox2.Text);int N = P * Q;int R =(P-1)*(Q-1);int D = Convert.ToInt32(textBox3.Text);int I, E=0;for(I=2;I private void textBox1_TextChanged(object sender, EventArgs e){ label12.Text = ”“;if(textBox1.Text!= ”“){ int m = Convert.ToInt32(textBox1.Text);int i, j;for(i = 2;i < m;i++){ if(m % i == 0){ label12.Text = ”不是質(zhì)數(shù),請重新輸入!";break;} } } } } } 3.2 加密過程: 選擇 原文.txt 為要加密的文件,Code.txt 為密文,Info.txt 為經(jīng)過解密的文件如圖: 原文: 密文: 經(jīng)過解密可得: 由上知該實驗已順利完成! 4.心得和體會 以上這些是我根據(jù)RSA的加密原理,自已通過編程,親自體會而來。RSA算法本身比較簡單,做一個實驗的時候,遇到的困難主要是在編程,由于C#語言為面向對象的語言,具有良好的與用戶接口,故采用這種語言。編程中在輸入輸出流這個地方出了一點問題,花了比較長的時候才把原因找到,并最終將程序完成.由于條件所限,在選取加密鑰的時候,取數(shù)都比較小,實際應用中,數(shù)字會很大,但基本原理算法是一樣的。 本實驗仍有些不足,比如說,加密比較大的文件時,比較吃力,花費時間較多。 雖然有以上困難和問題,最終還是成功的將這個實驗做成,在一定的程度上加強了編程能力和對RSA算法的認識。 湖南第一師范學院信息科學與工程系 題 目 學生姓名學 號專業(yè)班級指導教師 課程設計報告 中小型企業(yè)網(wǎng)絡搭建 王歡 計網(wǎng)(1)班 王建軍、李科峰 2010 年 6 月 8 日 03080130822 08 中小型企業(yè)網(wǎng)絡搭建 一.需求分析 1.二.網(wǎng)絡結構設計 1.網(wǎng)絡技術選型 根據(jù)需求,采用以太網(wǎng)技術(快速以太網(wǎng)、交換式以太網(wǎng)、千兆位以太網(wǎng))進行組網(wǎng)。 以太網(wǎng)技術:以太網(wǎng)的技術成熟、成本較低、互操作性強、易于使用和管理、可擴充性強.設計中利用到的其他技術如下: VLAN技術:控制廣播風暴、提高網(wǎng)絡整體安全性、網(wǎng)絡管理簡單、提高性能等優(yōu)點。 第三層交換技術:一方面支持VLAN之間通信;另一方面交換技術減少了數(shù)據(jù)包的碰撞問題。支持VLAN的交換機配合第三層功能不但具有很高的性能,而且具有充分的彈性,因此,是最好的選擇 網(wǎng)絡的冗余技術:提高網(wǎng)絡的可靠性;鏈路冗余既可提高可靠性,又能均衡負載; 缺點:不適應重負荷應用環(huán)境,實時性差,存在沖突域; 動態(tài)路由協(xié)議OSPF技術: STP技術: 以太網(wǎng)通道技術: 廣域網(wǎng)技術(PPP協(xié)議): 2.網(wǎng)絡拓撲設計 3.命令配置 1.基本信息配置 SW1的基本信息配置(SW2、RT1、RT3的基本配置與SW1相同)Switch>enable //進入特權模式 Switch#config terminal //進入全局配置模式 Switch(config)#hostname SW3 //配置主機名 SW1(config)#no ip domain-lookup //禁用域名查找 SW1(config)#line console 0 //進入Console線路模式 SW1(config-line)#logging synchronous //配置Console信息顯示自動換行 SW1(config-line)#no login //配置口Console登錄不認證 SW1(config-line)#privilege level 15 //配置為最高特權級別 SW1(config-line)#line vty 0 4 // 進入Vty線路模式 SW1(config-line)#no login //配置Telnet登錄不認證 SW1(config-line)#privilege level 15 //配置為最高特權級別,enable不需要密碼 //企業(yè)總部網(wǎng)絡 2.二層網(wǎng)絡全局配置(1)SW1的vlan配置 SW1(config)#vtp mode transparent//配置為透明模式 SW1(config)#vlan 8-12 SW1(config-vlan)#exit SW1#show vlan //查看vlan信息 (2)STP根網(wǎng)橋配置 SW1(config)#spanning-tree vlan 8 priority 0 SW1(config)#spanning-tree vlan 10 priority 0 SW2(config)#spanning-tree vlan 11 priority 0 (3)STP備份根網(wǎng)橋配置 SW1(config)#spanning-tree vlan 8 priority 4096 SW1(config)#spanning-tree vlan 11 priority 4096 SW2(config)#spanning-tree vlan 10 priority 4096 //按vlan編號來部署STP實現(xiàn)負載分擔:SW1為vlan 8和vlan10的根網(wǎng)橋,vlan 11的備份根網(wǎng)橋;SW2則為vlan8和vlan10的備份根網(wǎng)橋,vlan 11的根網(wǎng)橋。 3.二層網(wǎng)絡接口配置 (1)交換機SW1-SW2間鏈路捆綁 SW1(config)#interface range fa0/1-2 //以太網(wǎng)接口1和2,注意1后面要空格 SW1(config-if-range)#switchport trunk encapsulation dot1q SW1(config-if-range)#switchport mode trunk SW1(config-if-range)#switchport trunk allowed vlan all SW1(config-if-range)#channel-group 2 mode on//手動捆綁:組2 SW2(config)#interface range fa0/1-2 //以太網(wǎng)接口1和2,注意1后面要空格 SW2(config-if-range)#switchport trunk encapsulation dot1q SW2(config-if-range)#switchport mode trunk SW2(config-if-range)#switchport trunk allowed vlan all SW2(config-if-range)#channel-group 2 mode on//手動捆綁:組2 SW1#show etherchannel summary//查看以太網(wǎng)通道信息 (2)SW1的二層接口配置 SW1(config)#interface fa0/2 SW1(config-if)#switchport mode access SW1(config-if)#switchport access vlan 12 SW1(config-if)#spanning-tree portfast //配置成Portfast端口,加快收斂速度。 (3)SW2的二層接口配置 SW2(config)#interface fa0/10 SW2(config-if)#switchport mode access SW2(config-if)#switchport access vlan 10 SW2(config-if)#spanning-tree portfast //配置成Portfast端口,加快收斂速度。 SW2(config)#interface fa0/11 SW2(config-if)#switchport mode access SW2(config-if)#switchport access vlan 11 SW2(config-if)#spanning-tree portfast //配置成Portfast端口,加快收斂速度。 SW2(config)#interface fa0/12 SW2(config-if)#switchport mode access SW2(config-if)#switchport access vlan 11 SW2(config-if)#spanning-tree portfast //配置成Portfast端口,加快收斂速度。 (4)SW2的網(wǎng)管配置 SW2(config)#interface vlan 8 SW2(config-if)#ip address 192.168.8.130 255.255.255.128 SW2(config-if)#no shutdown SW2(config-if)#exit SW2(config)#ip default-gateway 192.168.8.129 SW1#show spanning-tree brief//查看STP簡要信息 4.三層網(wǎng)絡接口配置 (1)SW1的三層網(wǎng)絡接口配置 SW1(config)#ip routing //啟動三層交換機的路由功能 SW1(config)#interface vlan 8 //Vlan 8 的路由點 SW1(config-if)#ip address 192.168.8.129 255.255.255.128 SW1(config-if)#no shutdown SW1(config-if)#exit SW1(config)#interface vlan 10 //Vlan 10 的路由點 SW1(config-if)#ip address 192.168.10.1 255.255.255.0 SW1(config-if)#no shutdown SW1(config-if)#exit SW1(config)#interface vlan 11 //Vlan 11的路由點 SW1(config-if)#ip address 192.168.11.1 255.255.255.0 SW1(config-if)#no shutdown SW1(config-if)#exit SW1(config)#interface vlan 12 //Vlan 12的路由點 SW1(config-if)#ip address 192.168.12.1 255.255.255.0 SW1(config-if)#no shutdown SW1(config-if)#exit SW1#show ip int brief //查看接口簡要信息 (2)SW1-RT1的三層鏈路配置 SW1(config)#interface fa0/3 //上連接口:上連RT的E0/0 SW1(config-if)#no switchport //配置接口為三層接口 SW1(config-if)#ip address 192.168.1.1 255.255.255.248 SW1(config-if)#no shutdown RT1(config)#interface ethernet 1/1 RT1(config-if)#ip address 192.168.1.2 255.255.255.248 RT1(config-if)#no shutdown SW1#show ip interface brief //查看接口簡要信息,查看接口是否配置成功。RT1#show ip interface brief //查看接口簡要信息,查看接口是否配置成功。SW1#ping 192.168.1.2//ping 對端,檢測鏈路是否連通。RT1#ping 192.168.1.1//ping 對端,檢測鏈路是否連通。 5.邊界網(wǎng)絡對接(靜態(tài)路由配置) SW1(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.2 RT1(config)#ip route 192.168.0.0 255.255.0.0 192.168.1.1 //企業(yè)分部網(wǎng)絡 6.RT1的Loopback0配置、局域網(wǎng)接口配置及測試 RT1(config)#interface loopback 0 //配置回環(huán)接口 0 RT1(config-if)#ip address 192.168.0.1 255.255.255.255//配置回環(huán)接口的IP地址 RT1(config)#interface ethernet 1/2//配置局域網(wǎng)接口 RT1(config-if)#ip address 192.168.2.1 255.255.255.0 RT1(config-if)#no shutdown//開啟端口 RT1(config-if)#exit RT1#show ip int brief //查看所有接口的信息 7.RT3的Loopback0配置、局域網(wǎng)接口配置及測試 RT3(config)#interface loopback 0 //配置回環(huán)接口 0 RT3(config-if)#ip address 192.168.0.3 255.255.255.255//配置回環(huán)接口的IP地址 RT3(config)#interface ethernet 1/3//配置局域網(wǎng)接口 RT3(config-if)#ip address 192.168.3.1 255.255.255.0 RT3(config-if)#no shutdown//開啟端口 RT3(config-if)#exit RT3show ip int brief //查看所有接口的信息 8.RT1-RT3的廣域網(wǎng)鏈路配置及測試 RT1(config)#interface serial 0/0 RT1(config-if)#clock rate 1000000 //DCE端配置時鐘速率,1Mbps RT1(config-if)#bandwith 1000 //接口邏輯帶寬,用于計算接口的開銷值,單位kbps;在實際項目中,接口邏輯帶 寬應配置成與接口物理帶寬一致且兩端的bandwith 必須一致。RT1(config-if)#encapsulation ppp //配置數(shù)據(jù)鏈路層封裝 RT1(config-if)#ip address 192.168.0.1 255.255.255.252 RT1(config-if)#no shutdown //打開接口 RT1(config-if)#end RT3(config)#interface serial 0/0 RT3(config-if)#bandwith 1000 //接口邏輯帶寬,用于計算接口的開銷值,單位kbps;在實際項目中,接口邏輯帶 寬應配置成與接口物理帶寬一致且兩端的bandwith 必須一致。RT3(config-if)#encapsulation ppp//配置數(shù)據(jù)鏈路層封裝 RT3(config-if)#ip address 192.168.0.3 255.255.255.252 RT3(config-if)#no shutdown RT3(config-if)#end RT1#show ip interface brief //查看接口簡要信息 RT3#show ip interface brief //查看接口簡要信息 9.OSPF路由配置 (1)RT1的OSPF配置 RT1(config)#router ospf 1 //開啟OSPF進程1,標識不同的OSPF的進程。RT1(config-router)#router-id 1.1.1.1 //手動配置OSPF Router-ID RT1(config-router)#network 192.168.0.1 0.0.0.0 area 0//發(fā)布Loopback 0。這里的0.0.0.0是采用的反掩碼形式表是,area 0表示骨干區(qū)域。RT1(config-router)#network 192.168.1.0 0.0.0.7 area 0 RT1(config-router)#network 192.168.0.4 0.0.0.3 area 0 RT1(config-router)#network 192.168.2.0 0.0.0.255 area 0 RT1(config-router)#passive-interface e2/1 //為業(yè)務網(wǎng)段配置被動接口 RT1(config-router)#passive-interface e1/1 (2)RT3的OSPF配置 RT3(config)#router ospf 1 //開啟OSPF進程1,標識不同的OSPF的進程。RT3(config-router)#router-id 3.3.3.3 //手動配置OSPF Router-ID RT3(config-router)#network 192.168.0.3 0.0.0.0 area 0//發(fā)布Loopback 0。這里的0.0.0.0是采用的反掩碼形式表是,area 0表示骨干區(qū)域。RT3(config-router)#network 192.168.0.4 0.0.0.3 area 0 RT3(config-router)#network 192.168.3.0 0.0.0.255 area 0 RT3(config-router)#passive-interface e3/1 //為業(yè)務網(wǎng)段配置被動接口 3.子網(wǎng)劃分及IP分配方案 4.網(wǎng)絡服務器規(guī)劃 三.網(wǎng)絡設備選型 四.網(wǎng)絡軟件選型 南 華 大 學 網(wǎng) 絡 安 題目:RSA加解密算法 姓名 學號: 導師: 全 非對稱加密算法的實現(xiàn) 非對稱密碼系統(tǒng)即公鑰密碼系統(tǒng),主流分為基于大整數(shù)分解難度,基于離散 一、設計內(nèi)容、算法原理 對數(shù)計算難度和橢圓曲線公鑰密碼三類。本次實驗主要介紹RSA、ELG加密。 二、RSA 1).RSA公鑰密碼算法原理和過程: Alice要求Bob將信息m用RSA方法加密傳送回來,Alice找到大素數(shù)p,q, 令n=pq, 取a>1滿足(a,?(n))?1,再找d使得da?1(mod?(n)),然后 Alice將n、a作為加密密鑰(公鑰)發(fā)送給Bob, 這里p,q,d,?(n)都是私鑰,要求保密,用作解密。 Bob 將原文m< 這里大素數(shù)要求足夠大,通常要求是大于100位的十進制數(shù)。有資料表明,幾十位的素數(shù)構造的RSA公鑰密碼系統(tǒng)是不安全的。因為位數(shù)較多,加密效率就不 dd并將密文?m(modn),aadadEA傳送給 Alice。 得到原文 DA(EA)?EA?(m)?m?m?(n)k?1?m(modn)夠高,因此,通常用來加密對稱密碼的密鑰,例如,加密序列密碼的密鑰。 Maple簡介:Maple是一個具有強大符號運算能力、圖形處理能力的交互式計算機代數(shù)系統(tǒng),它可以進行各種科學計算和數(shù)學推理,它的高精度數(shù)值計算能力對于處理大數(shù)的計算和素性判定有其獨特的功能。它適合于所有需要科學計算的人.。 RSA算法可以實現(xiàn)數(shù)字簽名。B向A進行簽名,則 1、B不能否認進行了簽名 2、A不能篡改B的簽名 設A(如網(wǎng)站)的公鑰為EA,私鑰為DA B(簽名者)的公鑰為 EB,私鑰為DB,B的原文m, B用DB作用m , 得到DB(m),再用A提供的EA作用,得到 EA(DB(m))?C,B將C和EB發(fā)給A, A收到后,先用DA作用于C再用EB作用 EB(DA(C)?)B不能否認進行了簽名,因為AEB(DA(EA(DB(m?))。)這時,m用B提供的EB算出;A不能篡改B的簽名,因為B可以用A提供的EA和DB算出,而A不知道DB,改動后算不出上面等式。2)、RSA公鑰密碼算法程序流程 1、A的準備工作 (1)產(chǎn)生兩個u到v位的隨機數(shù),如果是偶數(shù),則加1,然后判別是否是素數(shù),如果是,賦值給p,q(2)令n=pq, t=(p-1)(q-1);(3)找1?a?min{p?1,q?1} 滿足(a,t)?1,找一個不能整除t的素數(shù),依次試除。 (4)解ax?1(modt)相當于求解 ty?ax?1,將 t,a輾轉相除,得到 n利用P0?1,P1?q1,Pk?qkPk?1?Pk?2,x?(?1)Pn,再除以q1,q2,?,qn,給d(5)將公鑰 n,a發(fā)送給B 2、B的加密過程 t,再賦值(1) 原文m長度設為56位,遠小于n,保證了(m, n)=1, 加密得到密文s?m(modn),分am為十進制數(shù)字和字符串兩種情況 (2)將密文s傳送給 A。 3、A的解密過程 A收到s后,計算 先分別求解 dm?s(modn)dd得到原文m。直接計算速度太慢,且溢出,b1?s(modp,)b2?s(modq),然后利用孫子定理解同余式組 x?b1(modp),x?b2(modq),它的解x?M1M1'b1?M2M2'b2(modn)就是原文。 2反復利用 d?[d]?r來計算 m(modp)可以大大加快運行速度。 d3)、基于RSA算法的數(shù)字簽名程序流程 B向阿A進行數(shù)字簽名。只需A和B都擁有密鑰生成、加密和解密程序。A運行密鑰生成程序,將公鑰EA ={n,a}發(fā)給B, 將私鑰DA密。 B運行密鑰生成程序,將公鑰EB ={n1,a1}發(fā)給A, 將私鑰DB保密。 B計算 簽名m< A收到后,先計算DA(C)?(C)d(DB)?(ma1d1?{p,q,d,?(n)}保 ?{p1,q1,d1,?(n1)}再計算C?(DB)(modn)并?m(modn1),d1a?((DB))?DBadad?DB?(n)k?1再計算 ?DB(modn),)?ma1a1d1?m?(?n1k)得到簽名?m(modn1)1m。 三、ELG 四、設計過程、設計的特點和結果、心得 1)、密鑰生成 選出一個大素數(shù) p 選出 d 作為群G ? < Zp*, ??>中的一個成員,使得 1 ??d ??p ??2 選出 e1作為群 G ? < Zp*, ??> 中的一個本原根 e2 ? e1d mod p C 2???P ? e2r)mod p // C1和C2是密文 Public_key ??(e1, e2, p)// 公開宣布 Private_key ? d //保密 2)、解密 P ???C2(C1d)?1] mod p // P 是明文 3)、證明 ?C2(C1d)?1] mod p =?P ? e2r)??(e1dr)?1 mod p = P 五、實現(xiàn)環(huán)境 Windows xp Maple13 + mapletoolbox+matlab 混合編程 六、編寫的源程序代碼 1、RSA_System RSA_SYSTEM.m function varargout = RSA_SYSTEM(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename,...'gui_Singleton', gui_Singleton,...'gui_OpeningFcn', @RSA_SYSTEM_OpeningFcn,...'gui_OutputFcn', @RSA_SYSTEM_OutputFcn,...'gui_LayoutFcn', [] ,...'gui_Callback', []);if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1});end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else gui_mainfcn(gui_State, varargin{:});end function RSA_SYSTEM_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;X = imread('back.jpg'); subplot('position',[-0.00,-0.3,1.0,1.6]);imagesc(X);colormap(gray);axis image off; guidata(hObject, handles); function varargout = RSA_SYSTEM_OutputFcn(hObject, eventdata, handles)varargout{1} = handles.output; function primeP_Callback(hObject, eventdata, handles) function primeP_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end function primeQ_Callback(hObject, eventdata, handles) function primeQ_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end function phN_Callback(hObject, eventdata, handles) function phN_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end function publicN_Callback(hObject, eventdata, handles) function publicN_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end function PruducPrime_Callback(hObject, eventdata, handles) P=maple('nextprime(rand(10^120)())');Q=maple('nextprime(rand(10^120)())');N=P*Q; phN=(Q-1)*(P-1); set(handles.primeP,'String',char(P))set(handles.primeQ,'String',char(Q))set(handles.publicN,'String',char(N))set(handles.phN,'String',char(phN))set(handles.Private_Key,'Enable','on');set(handles.Selecte_String,'Enable','on');set(handles.SelecteNum,'Enable','on');%計算私鑰d global d e e=2^16+1;format rat E=1/e;setmaple('e',e);setmaple('E',E);setmaple('n2',phN);setmaple('n',N); d=maple('convert(E,rational)mod n2');setmaple('d',d); function SelecteNum_Callback(hObject, eventdata, handles) [FileName,PathName,FilterIndex] = uigetfile;if FilterIndex~=0 global m im=importdata(strcat(PathName,FileName));is=isa(im,'cell');if is==0 m=csvread(strcat(PathName,FileName));set(handles.Num_Secret,'Enable','on');end if is==1 msgbox('請選擇數(shù)字型文件!','警告:');end end function Num_Secret_Callback(hObject, eventdata, handles) fidout=fopen('密文.txt','w');global m for i=1:length(m)M=m(i); setmaple('m',M); C=maple('Power(m,e)mod n'); fprintf(fidout,'%snn',char(C)); end msgbox('恭喜!你已成功加密,產(chǎn)生文件為“密文.txt”','溫馨提示:');set(handles.Num_CodeBreak,'Enable','on'); function Num_CodeBreak_Callback(hObject, eventdata, handles) %以下是解密過程 fidin=fopen('密文.txt');fidout=fopen('明文.txt','w'); while ~feof(fidin) % 判斷是否為文件末尾 tline=fgetl(fidin); % 從文件讀行 if isempty(tline)==0 %若該行非空 midvar=sscanf(tline,'%f'); setmaple('C',tline); m=maple('Power(C,d)mod n') fprintf(fidout,'%snn',char(m)); end continue % 如果是非數(shù)字繼續(xù)下一次循環(huán) end fclose(fidout); msgbox('恭喜!你已成功解密,產(chǎn)生文件為“明文.txt”','溫馨提示:');set(handles.Num_CodeBreak,'Enable','off');set(handles.Num_Secret,'Enable','off'); function Selecte_String_Callback(hObject, eventdata, handles) [FileName,PathName,FilterIndex] = uigetfile;if FilterIndex~=0 global path path=strcat(PathName,FileName); set(handles.String_Secret,'Enable','on');end function String_Secret_Callback(hObject, eventdata, handles) global path a=importdata(path,'%s');is=isa(a,'double');if is ~= 1 b=cell2mat(a);mm=double(b); fidout1=fopen('密文1.txt','w');for i=1:length(mm)M=mm(i); setmaple('m',M); C=maple('convert((Power(m,e)mod n),binary)');fprintf(fidout1,'%snn',char(C)); end msgbox('恭喜!你已成功加密,產(chǎn)生文件為“密文1.txt”','溫馨提示:');set(handles.String_CodeBreak,'Enable','on');end if is==1 msgbox('請選擇字符型文件!','警告:');set(handles.String_Secret,'Enable','off');end function String_CodeBreak_Callback(hObject, eventdata, handles) fidin=fopen('密文1.txt');fidout=fopen('明文1.txt','w'); while ~feof(fidin) % 判斷是否為文件末尾 tline=fgetl(fidin); % 從文件讀行 if isempty(tline)==0 %若該行非空 midvar=sscanf(tline,'%f'); setmaple('C',tline); m=maple('Power(convert(C,decimal,binary),d)mod n'); m=double(m); m=char(m); fprintf(fidout,'%s',m); end continue % 如果是非數(shù)字繼續(xù)下一次循環(huán) end fclose(fidout); msgbox('恭喜!你已成功解密,產(chǎn)生文件為“明文1.txt”','溫馨提示:');set(handles.String_CodeBreak,'Enable','off');set(handles.String_Secret,'Enable','off'); function Private_Key_Callback(hObject, eventdata, handles)global d set(handles.privateKey,'String',char(d)); function privateKey_Callback(hObject, eventdata, handles) function privateKey_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end %------function Open_Callback(hObject, eventdata, handles)uiopen; %------function Close_Callback(hObject, eventdata, handles)close(gcf); %------function ELG_Callback(hObject, eventdata, handles)ELG_SYSTEM delete(handles.RSA_SYSTEM); 2、ELG_System ELG_SYSTEM.m function varargout = ELG_SYSTEM(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename,...'gui_Singleton', gui_Singleton,...'gui_OpeningFcn', @ELG_SYSTEM_OpeningFcn,...'gui_OutputFcn', @ELG_SYSTEM_OutputFcn,...'gui_LayoutFcn', [] ,...'gui_Callback', []);if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1});end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else gui_mainfcn(gui_State, varargin{:});end function ELG_SYSTEM_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;X = imread('key.jpg'); subplot('position',[-0.00,-0.4,1.4,1.7]);imagesc(X);colormap(gray);axis image off; guidata(hObject, handles); function varargout = ELG_SYSTEM_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; %------function Open_Callback(hObject, eventdata, handles) uiopen; %------function Close_Callback(hObject, eventdata, handles) close(gcf); %------function RSA_Callback(hObject, eventdata, handles) RSA_SYSTEM delete(handles.ELG_SYSTEM); function primeP_Callback(hObject, eventdata, handles) function primeP_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end function public_ha_Callback(hObject, eventdata, handles) function public_ha_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end function Produce_PublicKey_Callback(hObject, eventdata, handles) function ProduecPublicKey_Callback(hObject, eventdata, handles) global xa p ha p=maple('m := proc(n)global a, q;for a do q := nextprime((rand(10^n))());if isprime(4*q+1)= true then break end if end do;4*q+1 end proc;m(150)');setmaple('p',p); set(handles.primeP,'String',char(p));xa=maple('rand(10^100)()');setmaple('xa',xa); ha=maple('2 &^ xa mod p');setmaple('ha',ha); set(handles.public_ha,'String',char(ha));set(handles.PrivateOut,'Enable','on');set(handles.Select_String,'Enable','on');set(handles.Select_Num,'Enable','on'); function Select_Num_Callback(hObject, eventdata, handles) [FileName,PathName,FilterIndex] = uigetfile;if FilterIndex~=0 global m im=importdata(strcat(PathName,FileName));is=isa(im,'cell');if is==0 m=csvread(strcat(PathName,FileName));set(handles.Code_Num,'Enable','on');end if is==1 msgbox('請選擇數(shù)字型文件!','警告:');end end function Code_Num_Callback(hObject, eventdata, handles) fidout=fopen('密文.txt','w');global m for i=1:length(m)M=m(i); setmaple('m',M); k=maple('rand(10^150)()');setmaple('k',k);U=maple('2 &^ k mod p');v=maple('ha &^ k mod p');setmaple('v',v);V=maple('m*v mod p'); fprintf(fidout,'%sn',char(U));fprintf(fidout,'%snn',char(V));end msgbox('恭喜!你已成功加密,產(chǎn)生文件為“密文.txt”','溫馨提示:');set(handles.Break_Num,'Enable','on'); function Break_Num_Callback(hObject, eventdata, handles) %以下是解密過程 fidin=fopen('密文.txt');fidout=fopen('明文.txt','w'); while ~feof(fidin) % 判斷是否為文件末尾 tline=fgetl(fidin); % 從文件讀行 if isempty(tline)==0 %若該行非空 t1line=''; midvar=sscanf(tline,'%f'); t1line=tline; tline=fgetl(fidin); midvar=sscanf(tline,'%f'); setmaple('C1',t1line); setmaple('C2',tline); m=maple('convert(C2/C1 &^ xa, rational)mod p'); fprintf(fidout,'%snn',char(m)); end continue % 如果是非數(shù)字繼續(xù)下一次循環(huán) end fclose(fidout); msgbox('恭喜!你已成功解密,產(chǎn)生文件為“明文.txt”','溫馨提示:');set(handles.Code_Num,'Enable','off');set(handles.Break_Num,'Enable','off'); %---Executes on button press in Select_String.function Select_String_Callback(hObject, eventdata, handles) [FileName,PathName,FilterIndex] = uigetfile;if FilterIndex~=0 global path path=strcat(PathName,FileName); set(handles.Code_String,'Enable','on');end %---Executes on button press in Code_String.function Code_String_Callback(hObject, eventdata, handles) global path a=importdata(path,'%s');is=isa(a,'double');if is ~= 1 b=cell2mat(a);mm=double(b); fidout1=fopen('密文1.txt','w');for i=1:length(mm)M=mm(i); setmaple('m',M); k=maple('rand(10^150)()');setmaple('k',k); U=maple('convert(2 &^ k mod p,binary)');v=maple('ha &^ k mod p');setmaple('v',v); V=maple('convert(m*v mod p,binary)');fprintf(fidout1,'%sn',char(U)); fprintf(fidout1,'%snn',char(V)); end msgbox('恭喜!你已成功加密,產(chǎn)生文件為“密文1.txt”','溫馨提示:');set(handles.Break_String,'Enable','on');end if is==1 msgbox('請選擇字符型文件!','警告:'); set(handles.Break_String,'Enable','off');end %---Executes on button press in Break_String.function Break_String_Callback(hObject, eventdata, handles) fidin=fopen('密文1.txt');fidout=fopen('明文1.txt','w'); while ~feof(fidin) % 判斷是否為文件末尾 tline=fgetl(fidin); % 從文件讀行 if isempty(tline)==0 %若該行非空 t1line=''; midvar=sscanf(tline,'%f'); t1line=tline; tline=fgetl(fidin); midvar=sscanf(tline,'%f'); setmaple('C1',t1line); setmaple('C2',tline); % m=maple('Power(convert(C2,decimal,binary),d)mod n'); m=maple('convert(convert(C2,decimal,binary)/convert(C1,decimal,binary)&^ xa, rational)mod p'); m=double(m); m=char(m); fprintf(fidout,'%s',m); end continue % 如果是非數(shù)字繼續(xù)下一次循環(huán) end fclose(fidout); msgbox('恭喜!你已成功解密,產(chǎn)生文件為“明文1.txt”','溫馨提示:');set(handles.Code_String,'Enable','off');set(handles.Break_String,'Enable','off'); %---Executes on button press in PrivateOut.function PrivateOut_Callback(hObject, eventdata, handles) global xa set(handles.Private_Key,'String',char(xa)); function Private_Key_Callback(hObject, eventdata, handles) function Private_Key_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end 附:RSA運行演示(ELG類似) 中小型單位網(wǎng)絡規(guī)劃方案 中小型單位網(wǎng)絡規(guī)劃方案...............................................................................................................1 一. 概述.........................................................................................................................................2 二. 設計目標.................................................................................................................................2 三. 設計原則.................................................................................................................................2 四.用戶需求分析............................................................................................................................3 五. 網(wǎng)絡規(guī)劃設計總體方案.........................................................................................................4 六. 設備數(shù)目與價格明細表.......................................................................................................12 七. 子網(wǎng)劃分...............................................................................................................................13 八.推薦教材及主要參考資料.....................................................................................................13 一. 概述 激烈的市場環(huán)境,尤其在我國加入WTO后使中國的中小企業(yè)日益暴露出自身的劣勢.除了資金、技術、人才、渠道建設、營銷等方面外,中小企業(yè)還存在經(jīng)營管理低效、信息獲取落后,IT應用程度普遍低下的現(xiàn)象,很難適應信息化社會的發(fā)展。為提高企業(yè)競爭力,需要實現(xiàn)企業(yè)信息化,中小型規(guī)模局域網(wǎng)建設的成了企業(yè)提高競爭力信息化工具。 面向21世紀計算機網(wǎng)絡發(fā)展的總體目標就是要在各個國家、進而在全球建立完善的信息基礎設施。信息基礎設施將改變?nèi)藗兊纳?、學習、工作、人際交往的方式,減輕人們的工作負擔,推動社會的進步。網(wǎng)絡體系結構是計算機之間相互通信的層次,各層中的協(xié)議以及層次之間接口的集合。網(wǎng)絡協(xié)議是計算機網(wǎng)絡和分布系統(tǒng)中相互通信的對等實體間交換信息所必須遵守的規(guī)則集合。采用TCP/IP協(xié)議集成的網(wǎng)絡體系結構是計算機網(wǎng)絡體系結構的主流,并在改進和發(fā)展中。協(xié)議工程是一門研究如何設計和構造協(xié)議規(guī)范,以及如何把所設計和構造的協(xié)議規(guī)范快速、準確、低成本地轉化為可執(zhí)行代碼的科學。1993年美國制定了信息高速公路(即國家信息基礎設施NII)后,各國都相繼規(guī)劃和實施NII計劃。計算機網(wǎng)絡發(fā)展有兩個重要的技術,即微電子技術和光技術。當前網(wǎng)絡發(fā)展的趨勢是電信網(wǎng)、電視網(wǎng)、計算機網(wǎng)三種網(wǎng)絡的合一。在三網(wǎng)合一中,采用Internet體系結構和IP協(xié)議時應提高網(wǎng)絡的可靠性,目前數(shù)據(jù)網(wǎng)的可靠性達99.996%。 二. 設計目標 1.配合當前的單位發(fā)展情況,完成單位內(nèi)部Internet的配套基礎建設,將單位的信息資源利用計算機網(wǎng)絡連接起來,形成一個流暢、合理、可靠、安全的單位網(wǎng)。2.通過網(wǎng)絡使單位人員能及時了解國內(nèi)外動態(tài),建立新的通訊方式和環(huán)境,提高工作效率。 三. 設計原則 1.單位需求為前提原則:堅持以單位具體需求為單位網(wǎng)信息系統(tǒng)方案設計的根本和前提,同時,也要注重源于需求又高于需求的原則,注意用專業(yè)化的技術思想來進行單位網(wǎng)的規(guī)劃與設計,確保單位網(wǎng)的實用性、先進性和便于擴展性。 2.設備選型兼顧原則:滿足單位對現(xiàn)代化管理手段的要求;滿足單位網(wǎng)建設及互聯(lián)網(wǎng)的要求;所選設備在國際上保持技術先進性;供應商有良好的商業(yè)信譽和優(yōu)質(zhì)的售后服務。3.堅持標準原則:一切單位網(wǎng)設計和施工,均要嚴格遵循國際和國家標準。統(tǒng)一規(guī)劃,分步實施。單位網(wǎng)的實現(xiàn)要求通訊協(xié)議、網(wǎng)絡平臺等應具有世界性的開放性和標準化的特點,并且應采用統(tǒng)一的網(wǎng)絡體系結構。 4.堅持先進的成熟的技術原則:采用通用的、成熟的技術方案可以降低建設成本、減小設計、施工和使用難度、縮短建設周期。有利于保護投資,并且有利于單位網(wǎng)的維護和升級。選擇品質(zhì)最好的設備不一定是最佳選擇,成本因素也是一個不容忽視的問題,將品質(zhì)與成本實現(xiàn)最佳匹配。 5.堅持規(guī)范布線,考慮長遠發(fā)展原則: 布線系統(tǒng)使網(wǎng)絡的重要基礎,布線系統(tǒng)的好壞是衡量一個網(wǎng)絡好壞的非常重要的標志。布線系統(tǒng)不合理將降低網(wǎng)絡的可靠性,使網(wǎng)絡難以管理和維護,所以必須采用標準的綜合布線系統(tǒng)。 6.堅持易于使用和管理原則: 單位網(wǎng)的各種軟件應用項目必須易于使用,對最終用戶的起點要求不能太高,一般以熟練使用操作系統(tǒng)、辦公軟件系統(tǒng)、瀏覽器和電子郵件系統(tǒng)為宜;系統(tǒng)的日常管理和維護工作要方便、簡易。網(wǎng)絡拓撲結構一經(jīng)配置確定,不應輕易更改。 7.堅持可擴展性原則:考慮現(xiàn)有網(wǎng)絡的平滑過度,使單位現(xiàn)有陳舊設備盡量保持較好的利用價值;選用產(chǎn)品應具有最佳性價比,又要應充分考慮未來可能的應用,具有高擴展性。 四.用戶需求分析 龍翔實業(yè)需要建立網(wǎng)絡以提高辦公效率,該單位共有7個部門,分別為:人事部,財務部,研發(fā)部,辦公室,后勤部,業(yè)務部,生產(chǎn)部。每個部門均需要建立內(nèi)部網(wǎng)絡,同時都需要和Internet相連。各部門對上網(wǎng)的計算機的需求如下: 生產(chǎn)部:60臺 研發(fā)部:50臺 其余5個部門均為30臺。 生產(chǎn)部主要使用內(nèi)網(wǎng);業(yè)務部主要使用外網(wǎng),要求上網(wǎng)速度快;財務部主要使用外網(wǎng),除要求上網(wǎng)速度快之外,還要求保密程度高;研發(fā)部主要使用內(nèi)網(wǎng),要求計算機工作速度快。其他各部門沒有特殊要求。 目前已經(jīng)申請到一個B類網(wǎng)絡:141.18.0.0/16。 請根據(jù)該單位的特點和要求,幫助該單位設計一個網(wǎng)絡,具體要求如下: 1、針對需求單位的特點,寫出可行性報告。 2、對目前廣泛流行的各種計算機網(wǎng)絡進行比較,根據(jù)單位的實際情況選出合理方案,給出拓撲圖,并力求做到最優(yōu)。 3、根據(jù)需要進行子網(wǎng)劃分,并為每一個部門分配IP地址段。 4、給出設備清單,做好預算。 5、要保證網(wǎng)絡的健壯性、可維護性、可擴展性,給出相應的措施。 五. 網(wǎng)絡規(guī)劃設計總體方案 (一)單位網(wǎng)絡拓撲圖 (二)設計方案 1.網(wǎng)絡層次結構 網(wǎng)絡結構采用分層式設計,共分三層:核心層,工作組層,桌面接入層。分層設計可以使整個網(wǎng)絡自上而下具有很大的彈性,便于策略的維護和實施。](1)核心設備 ①設備名稱:DCS-3926S可堆疊智能安全接入交換機 ②基本介紹: 3926S具有24個10/100Mbps自適應RJ-45端口和2個模塊擴展插槽(可選插百兆模塊和千兆模塊)可千兆或百兆聚合上聯(lián)至匯聚層交換機或者核心層交換機。 ③主要特征: ★高密度和靈活的堆疊 DCS-3900S系列的堆疊帶寬可支持2G到4G,并且支持簡單堆疊、標準堆疊、超級堆疊和混合堆疊。簡單堆疊成本最低。堆疊帶寬2G;標準堆疊使用堆疊模塊,其帶寬擴充至4G;還可以用千兆電口或千兆光口做超級堆疊,可避開堆疊線纜的限制,堆疊帶寬也是4G;同時DCS-3900S系列可以和DCRS-5600S系列、DCRS-5526S交換機做混合堆疊。 ★強大的ACL功能 作為新款的L2/4交換機,DCS-3926,S系列交換機提供了完整的ACL策略,可根據(jù)源/目的IP地址、源/目的MAC地址IP協(xié)議類型、TCP/UDP端口號、IP Precendence、時間范圍、ToS對數(shù)據(jù)進行分類,并進行不同的轉發(fā)策略。通過ACL策略的實施,用戶可以在接入層交換機過濾掉“沖擊波”、“震蕩波”、“紅色代碼”等病毒包,防止擴散和沖擊核心設備 ★卓越的安全特性 全面的受控組播方案DMCP,可以對源和目的進行安全控制,完整實現(xiàn)了在接入層網(wǎng)絡中基于IGMP源端口和目的端口的檢查技術,可完全限制合法組播在網(wǎng)絡中的穩(wěn)定傳輸,有效控制組播建立的整個過程,保障了正常合法的組播應用的穩(wěn)定運行;率先支持對特征復雜(64字節(jié))的應用流量的訪問控制,讓用戶可以在各種網(wǎng)絡的環(huán)境中應對出現(xiàn)復雜情況;監(jiān)控pingSweep等攻擊行為,安全防掃描,并采取防攻擊措施,全面保護交換機和服務器等網(wǎng)絡設施的安全。 ★更完美的性價比(DCS-3926S-G) 大多數(shù)接入交換機通過1個千兆光模塊上聯(lián),為了提高產(chǎn)品的性價比,DCS-3926S-G固化了一個千兆光模塊,可以為用戶節(jié)約開支。 ★豐富的QoS策略 DCS-3900S系列交換機為每個端口提供了4個優(yōu)先級隊列,可根據(jù)端口、802.1p、ToS、DSCP、TCP/UDP端口進行流量分類,并分配不同的服務級別,支持WRR/SP等調(diào)度方式,為語音/數(shù)據(jù)/視頻在同一網(wǎng)絡中傳輸提供所要求的不同服務質(zhì)量。 ④技術參數(shù) ★接口形式:24個10/100M端口+ 1個SFP千兆光口/堆疊口 ★可選擴展模塊:百兆電/光口模塊;千兆電/光口模塊;堆疊模塊 ★堆疊:支持標準堆疊,超級堆疊,混合堆疊。堆疊環(huán)境下,支持跨交換機的端口聚合、端口鏡像、QoS、ACL ★生成樹:802.1D(STP)、802.1w(RSTP)、802.1s(MSTP) ★組播協(xié)議:IGMP Snooping&Query ★QoS:每端口4個隊列,支持802.1p,ToS,應用端口號,DifferServ,支持WRR/SP等調(diào)度方式 ★ACL:支持標準ACL和擴展ACL,支持IP ACL、MAC ACL、IP-MAC ACL,支持基于源/目的IP地址、源/目的MAC地址、IP協(xié)議類型、TCP/UDP端口號、IP Precendence、時間范圍、ToS對數(shù)據(jù)進行過濾。 ★端口聚合:支持802.3ad,最大可支持6組trunk,每trunk可到8個端口,支持基于目的MAC的負載均衡。 ★IEEE802.1x:支持基于端口和MAC地址,支持神州數(shù)碼802.1x整體解決方案,可以實現(xiàn)按時長/流量計費,可以實現(xiàn)用戶帳號、密碼、IP、MAC、VLAN、端口、交換機的嚴格綁定,可以防止代理軟件,防止PC克隆,對客戶發(fā)送通知/廣告,上網(wǎng)時段控制,基于用戶動態(tài)實現(xiàn)VLAN授權和帶寬授權,可基于組策略實現(xiàn)動態(tài)IP地址分配而不必使用DHCP服務器等。 ★認證:支持RADIUS ★端口鏡象:支持。 ★支持的網(wǎng)絡標準:IEEE802.1D IEEE 802.3 IEEE 802.3u IEEE802.3ad IEEE 802.3x IEEE 802.3z IEEE802.1Q IEEE 802.1p IEEE 802.1x IEEE802.1w IEEE 802.1s等堆疊。 (2)工作組設備 ①設備名稱:DCS-3726S 24口+2槽可堆疊網(wǎng)管10/100/1000M以太網(wǎng)交換機 ②基本介紹:DCS-3726S是神州數(shù)碼網(wǎng)絡專為校園網(wǎng)互連設計的一款可網(wǎng)管交換機,可堆疊使用提供很高的端口密度,適用于企業(yè)大中型網(wǎng)絡組網(wǎng)。它具有24個10/100Mbps自適應RJ-45端口和2個模塊擴展插槽(可選插百兆光纖模塊或千兆模塊),可千兆或百兆上聯(lián)至骨干網(wǎng)。DCS-3726S提供有端口限速功能,使用靈活方便。該交換機還可以下接最多24臺其他交換機實現(xiàn)級聯(lián)以擴展端口數(shù)目。它還支持VLAN、組播、優(yōu)先級、端口聚合和端口鏡像等實用網(wǎng)絡功能,而且還提供了18Gbps的背板帶寬,實現(xiàn)了數(shù)據(jù)的全線速轉發(fā),消除了網(wǎng)絡瓶頸,為多用戶接入提供了高性能的網(wǎng)絡解決方案。 ③主要特征: ★24個10/100Base-TX端口 DCS-3726S具有24個固定的10/100Base-TX端口。這些端口均支持Nway標準,可支持10/100Base-TX自適應及全雙工/半雙工。 ★2個千兆端口 DCS-3726S交換機前面板具有2個插槽,可選插1口百兆模塊或千兆模塊,千兆模塊可支持1000Base-SX、1000Base-LX和1000Base-T標準。所有模塊支持流量控制和全雙工,可處理大量數(shù)據(jù)。千兆端口可將部門網(wǎng)絡與千兆主干網(wǎng)絡連接起來,也可以連接高性能服務器,使得更多用戶可以同時訪問。 ★100Base-FX模塊 DCS-3726S插槽可以選插1口100Base-FX(SC)短波或長波模塊,運行于全雙工模式下,可以應用于高電磁干擾或通信保密性要求高的場合,通常應用于遠距離傳輸。 ★大型堆疊,多達 192個10/100Base-TX端口 DCS-3726S交換機最多可以堆疊8臺設備,堆疊組最多可達192個10/100Base-TX端口,使得網(wǎng)絡可以靈活擴展,并能夠有效減少網(wǎng)絡層次,便于大型社區(qū)內(nèi)大量用戶的互聯(lián)接入。 ④技術參數(shù) ★端口聚合(Port Trunking) DCS-3726S支持端口聚合功能,同時支持802.3ad的標準。可將2/3/4個10/100Base-TX端口聚合成一條干路,每條干路支持全雙工模式,交換機最多支持6組端口聚合。 ★生成樹(Spanning Tree) DCS-3726S支持多種生成樹功能,如:802.1D、802.1w、802.1s。Spanning Tree協(xié)議可使LAN自動檢測并解決環(huán)路問題,可提供鏈路的備份。802.1D為基本的Spanning Tree協(xié)議,缺省操作模式是開啟狀態(tài)。DCS-3726S同時支持802.1w快速生成樹模式,可使收斂時間縮短至幾秒內(nèi)。IEEE 802.1s可使IEEE Std 802.1Q的VLAN加入到多個生成樹中,即提供spanning tree per VLAN的功能。 ★虛擬網(wǎng)絡(VLAN) 支持虛擬網(wǎng)絡(VLAN)標準來控制廣播域和網(wǎng)段流量,可以提高網(wǎng)絡性能、安全性和可管理性。DCS-3726S支持IEEE 802.1q VLAN標記,可基于端口地址來劃分VLAN,最多256個VLAN。通過控制口或網(wǎng)管工作站可以輕松完成結構和設備的添加、移動和更換??筛鶕?jù)最大網(wǎng)絡流量和網(wǎng)絡安全性來劃分虛擬網(wǎng)絡。DCS-3726S同時支持GVRP協(xié)議,可實現(xiàn)VLAN組成員動態(tài)注冊,支持基于端口的VLAN劃分管理方式,支持動態(tài)VLAN。生成樹:802.1D(STP)、802.1w(RSTP)、802.1s(MSTP) ★MAC地址過濾:自動學習; 動態(tài)和靜態(tài)地址過濾 ★管理功能 : 端口安全 ; Bootp、DHCP客戶 ; 配置文件上載 /下載 ; TFTP固件升級 (3)桌面接入層設備 ①設備名稱:神州數(shù)碼 DCS-1024普通交換機 ②技術參數(shù) ★交換機類型:普通交換機 ★傳輸速率(Mbps):10Mbps/100Mbps ★網(wǎng)絡標準:IEEE802.3 10BASE-T 以太網(wǎng);IEEE802.3u 100BASE-TX 快速以太網(wǎng);IEEE802.3x流量控制 ★網(wǎng)絡協(xié)議:CSMA/CD ★ 接口介質(zhì):10BASE-T: 2對3,4或5類非屏蔽雙絞線(UTP)(≤100m); EIA/TIA-568 100歐屏蔽雙絞線(STP)(≤100m)。100BASE-TX: 2對或4對5類非屏蔽雙絞線(UTP)(≤100m); EIA/TIA-568 100歐屏蔽雙絞線(STP)(≤100m) ★傳輸模式:全雙工/半雙工自適應 ★其他技術參數(shù):數(shù)據(jù)傳輸速率:以太網(wǎng):10Mbps(半雙工);20Mbps(全雙工)快速以太網(wǎng):100Mbps(半雙工);200Mbps(全雙工)拓撲結構:星型 MAC地址表:8K 最大包過濾/轉發(fā)率:每端口14,880pps(10Mbps);每端口148,800pps(100Mbps)RAM緩沖:2.5M 2.鏈路設計(包括綜合布線詳細說明) (1)財務部:核心交換機DCS-3926S通過一個千兆口有1000BASE-T4對超五類STP下連服務器,通過一個千兆口由1000BASE-SX多模光纖下連財務部各科室,管理人員辦公室的工作組交換機,通過一個千兆口由1000BASE-LX多模光纖下連業(yè)務部的工作組交換機,通過一個百兆端口由100BASE-FX多模光纖下連辦公室工作組交換機,通過一個百兆端口由100BASE-FX多模光纖下連教工宿舍區(qū)工作組交換機。 (2)業(yè)務部:工作組交換機DCS-3726S 通過超五類STP下連桌面接入交換機DCRS-1024。DCRS-1024通過超五類UTP接入PC。 (3)辦公室:工作組交換機DCS-3726S 通過100BASE-FX下連桌面接入交換機DCRS-1024。 DCRS-1024通過超五類UTP接入攝象機和投影儀。 (4)研發(fā)部:工作組交換機DCS-3726S 通過100BASE-FX下連桌面接入交換機DCRS-1024。DCRS-1024通過超五類UTP接入PC。 (5)后勤部:工作組交換機DCS-3726S 通過100BASE-FX下連桌面接入交換機DCRS-1024。DCRS-1024通過超五類UTP接入PC。(6)人事部:工作組交換機DCS-3726S 通過100BASE-FX下連桌面接入交換機DCRS-1024。DCRS-1024通過超五類UTP接入PC。(7)生產(chǎn)部:工作組交換機DCS-3726S 通過100BASE-FX下連桌面接入交換機DCRS-1024。DCRS-1024通過超五類UTP接入PC。3 路由設計 采用神州數(shù)碼DCR-2501V 多協(xié)議模塊化路由器,確保網(wǎng)絡的安全性和可靠性。 ①設備名稱:DCR-2501V 多協(xié)議模塊化路由器 ②基本介紹:神州數(shù)碼DCR-2501V路由器是神州數(shù)碼網(wǎng)絡推出的固定配置語音路由器,性能穩(wěn)定可靠。DCR-2501V提供了1個console端口,1個10Base-T以太網(wǎng)口,1個輔助(AUX)端口,2個高速廣域網(wǎng)串口,2路FXS語音端口;DCR-2501V路由器支持常用的廣域網(wǎng)協(xié)議和路由協(xié)議,支持VoIP協(xié)議,支持內(nèi)置強大的防火墻和NAT功能,為用戶提供了更加高速、安全、穩(wěn)定可靠、方便的網(wǎng)際互連設備,非常適用于中小企業(yè)、政府等遠程分支機構語音和數(shù)據(jù)互聯(lián)或Internet接入等。 ③主要特征: (DDR)功能;支持IP Unnumbered,從屬IP和ARP代理功能;支持多種隊列算法以保證服務質(zhì)量(QoS)的提供;支持Novell IPX路由協(xié)議;支持路由再分配功能;高穩(wěn)定性;提供背對背(Back-to-Back)連接方案,可用于檢測路由器的功能 ④技術參數(shù) ★標準配置 ▼ 1個10 Base-T以太網(wǎng)口 ▼2個高速串口,支持RS232、V.24、V.35、X.21、EIA530A等電氣標準 ▼ 2路FXS語音端口 ▼1個Console端口 ▼1個輔助(AUX)端口,可進行遠程配置和撥號備份 ▼內(nèi)存:DRAM 16 M,可擴充至32M;Flash Memory 2 M,可擴充至4M ▼CPU:32位RISC處理器(MPC860 50MHz) ★協(xié)議和標準 ▼以太網(wǎng)接口標準:IEEE802.3 10Base-T標準 ▼廣域網(wǎng)接口標準:RS232、V.24、V.35、X.21、EIA530A等電氣標準 ▼支持VoIP標準:支持H.323協(xié)議棧,支持 G.729、G.723.1、G.711等多種語音編碼壓縮標準,支持T.38傳真協(xié)議和Bypass方式的傳真應用。 ▼幀中繼標準:ITU-T Q933Annex A、ANSI T1.617Annex D、兼容CISCO標準 ▼廣域網(wǎng)協(xié)議:HDLC、PPP、MP、Frame-Relay(DTE/DCE)、X.25(DTE/DCE)▼路由協(xié)議:靜態(tài)路由、RIP(包括RIP v1、RIP v2)、OSPF、Novell IPX路由協(xié)議 ▼用戶安全認證協(xié)議:PAP、CHAP、MS-CHAP、RADIUS、TACACS+ ★管理維護 提供Show、Ping、TraceRoute、Debug等命令,用于察看、測試網(wǎng)絡的可達性,診斷網(wǎng)絡故障;支持Telnet遠程配置與管理;支持SNMP、RMON等網(wǎng)絡管理協(xié)議;支持HTTP協(xié)議,用戶可以通過Web界面對路由器進行配置、維護 4.安全設計 可啟用標準或擴展訪問控制列表進行數(shù)據(jù)報或數(shù)據(jù)段控制,在內(nèi)外網(wǎng)口設置一臺DCFW-1800S-L 小型企業(yè)級百兆防火墻保證整個網(wǎng)絡抵御來自內(nèi),外網(wǎng)的攻擊。 ①設備名稱:DCFW-1800S-L 小型企業(yè)級百兆防火墻 ②基本介紹:神州數(shù)碼DCFW-1800S-L防火墻專為中小企業(yè)分支機構、SOHO辦公、中小學校的網(wǎng)絡而設計,以功能實用、接入靈活、配置方便快捷、性能穩(wěn)定為設計原則,使復雜的網(wǎng)絡安全實施得以簡化。它充分考慮中小型用戶特點,支持VLAN環(huán)境、支持PPPOE與DHCP,集成防火墻、VPN,內(nèi)容過濾,為中小企業(yè)的網(wǎng)絡安全實現(xiàn)提供了經(jīng)濟的解決方案。 ③主要特征: ★讓中小型用戶、分支機構享受無以倫比的性價比 ★輕松部署,支持PPPoE協(xié)議,提供ADSL/ISDN接入方式 ★設置簡潔,通過瀏覽器可以輕松完成功能配置 ★支持DHCP服務器功能,節(jié)省用戶網(wǎng)絡管理投資,支持無地址接入 ★集成VPN,可以進行隧道認證及數(shù)據(jù)加密,保護了企業(yè)機密同時降低了溝通成本 ★集成內(nèi)容過濾、郵件過濾,防止非法信息、惡意腳本及垃圾郵件;集成防拒絕服務網(wǎng)關,提供攻擊檢測及攻擊抵御 ★支持用戶認證;支持應用層日志及加密日志存儲,有效審計進出網(wǎng)絡的敏感信息 ④技術參數(shù) ★工作模式:路由、透明、NAT ★內(nèi)容過濾:URL、郵件、指令、ActiveX/Java, 詭異木馬探測 ★支持:網(wǎng)絡安全域結構體系;PPPoE協(xié)議;DHCP Relay,DHCP Server;防拒絕服務網(wǎng)關;VPN功能 ★最大并發(fā)連接數(shù):300,000 ★網(wǎng)絡吞吐量:150M ★VPN隧道數(shù):10 ★VPN撥號用戶:10 ★策略數(shù):300 5.管理設計(包括詳細管理軟件說明) ①設備名稱:神州數(shù)碼LinkManager ②基本介紹:LinkManager 網(wǎng)管系統(tǒng)是一套基于Windows NT平臺的高度集成、功能較完善、實用性強、方便易用的全中文用戶界面網(wǎng)絡管理系統(tǒng)。它是神州數(shù)碼網(wǎng)絡有限公司根據(jù)中國用戶的實際需求,遵循ISO網(wǎng)絡管理模型的五大功能域(性能管理、配置管理、故障管理、計費管理及安全管理)的架構,自行組織研發(fā)出來的一套具有自有知識產(chǎn)權的網(wǎng)管系統(tǒng)。LinkManager 具有既面向指定設備,又支持通用網(wǎng)絡設備的“垂直+水平”的管理特性。也就是說,它能夠對神州數(shù)碼網(wǎng)絡有限公司推出的具有SNMP功能的網(wǎng)絡設備提供齊全的設備管理和功能管理,同時也能夠良好地支持其他任何具有通用SNMP功能的網(wǎng)絡設備,提供整個網(wǎng)絡的拓撲結構和常用網(wǎng)絡管理信息。 ③主要特征: ★提供兩套視圖-物理視圖及邏輯視圖,可滿足操作員的不同需求: ▼對于希望了解當前網(wǎng)絡拓撲邏輯結構的操作員,系統(tǒng)采用傻瓜方式,以默認形式為用戶自動繪制出整個網(wǎng)絡的邏輯視圖,不需用戶干預。 ▼對于只想掌控自己關心的網(wǎng)絡設備的操作員,系統(tǒng)采用DIY 方式,支持操作員按物理連接或自己隨意的自組物理視圖; ▼自動繪制出的網(wǎng)絡拓撲圖還可以通過另存為的方式供操作員修改; ★提供兩種設備添加方式,增強操作員在自組物理視圖時的DIY手段: ▼強大的自動發(fā)現(xiàn)功能,具有對第二層、第三層及應用層設備的自動識別能力,能準確定位神州數(shù)碼品牌的網(wǎng)絡設備; ▼按操作員興趣手動添加連入網(wǎng)絡的設備,支持操作員選擇不同的設備類型; ★提供兩種視圖的層次結構組織,紋理清晰: ▼ 在自動方式中,邏輯視圖的層次結構由各層子網(wǎng)、網(wǎng)絡設備及其設備特性構成; ▼ 在 DIY方式中,物理視圖的層次結構由子圖、網(wǎng)絡設備及其設備特性構成; ★提供網(wǎng)絡設備的圖形標記,用作設備的屬性、特征、狀態(tài)標識: ▼各被管設備類型在視圖中都擁有自己的屬性標志圖符; ▼ 各被管設備在視圖中都擁有自己的三色狀態(tài)標識; ▼ 各神州數(shù)碼品牌的網(wǎng)絡設備都擁有逼真的面板圖,真實反映接口狀況及實際連接; ▼ 在兩個視圖中,各設備的圖形標識具有一致性; ★友好的用戶界面 ▼周到的拓撲圖發(fā)現(xiàn)方式適合操作員的不同需求; ▼采用操作員熟悉的Windows界面風格及操作方式; ▼按照中國用戶的思維習慣組織的管理內(nèi)容; ▼適當?shù)漠a(chǎn)品定位,高度的集成化,將功能統(tǒng)一在同一界面內(nèi),可使操作員免于因功能模塊散亂而引起的無所適從。 ④技術參數(shù) ★硬件平臺 ▼ Intel Pentium或以上的處理器; ▼64M或以上的內(nèi)存; ▼帶有SVGA圖形卡的800*600顯示器,現(xiàn)僅支持小字體; ▼ 剩余磁盤空間:50MB以上; ▼網(wǎng)絡適配卡; ▼ 光驅。 ★網(wǎng)絡平臺 ▼安裝并配置了TCP/IP協(xié)議; ▼ 以神州數(shù)碼網(wǎng)絡有限公司的網(wǎng)絡設備為主,同時兼容其它廠家SNMP設備。▼ 能夠為下述神州數(shù)碼網(wǎng)絡有限公司的網(wǎng)絡設備提供齊全的設備管理和功能管理: 以太網(wǎng)交換機包括DCRS-7515、DCRS-7508、DCRS-7504、DCRS-6512、DCS-3652、DCS-3628S、DCS-3426、LRS-6706G/LRS-6626、DES-6000、DES-3326、DES-3624i、DES-3225G、DHS-3226;路由器包括DCR-3660、DCR-2650、DCR-2630、DCR-1750、DCR-1720、DCR-2511、DCR-2509、DCR-2501。 ★操作系統(tǒng)平臺 可選以下操作系統(tǒng)平臺: ▼ Microsoft Windows NT 4.0(Workstation或Server,Service Pack 6); ▼ Microsoft Windows 2000(Professional或Server)。 ★其它支持軟件 ▼Microsoft Internet Explorer 4.0版本或以上版本,必須預先安裝; ▼Acrobat Reader 4.0版本或以上版本,必須預先安裝。 6.其他設備 ①設備名稱:聯(lián)想萬全T168 G3 S930 512/73C服務器 ②基本介紹: ★采用新一代64位雙核技術的英特爾?奔騰?D處理器930, 3.0GHz主頻,2*2MB二級緩存,800MHz前端總線 ★512M ECC DDR2-667內(nèi)存 ★73G 易插拔U320 SCSI 硬盤 ★中文版系統(tǒng)安裝和故障排除指南 ★PS/2接口鍵盤和光電鼠標 7.可擴展性設計 核心,工作組,接入設備都預備有可擴展插槽和端口,方便日后系統(tǒng)升級;核心設備留有冗余電源,整個系統(tǒng)可提供不間斷的服務。 六. 設備數(shù)目與價格明細表 (一)線類價格表 設備名稱 設備數(shù)目 設備價格(/M) Commscope 12芯室外多模鎧裝光纜(62.5/125)750 m 49元/M 一舟 STP4對超五類(100米/箱)200M 430元/箱 一舟 UTP4對超五類(100米/箱)2500M 200元/箱 總計:--------42610元 (二)設備價格表 設備名稱 設備數(shù)目 設備價格(/臺) 神州數(shù)碼 DCS-3926S交換機 1臺 25000元 神州數(shù)碼 DCS-3726S交換機 5臺17800元 神州數(shù)碼 DCS-1024交換機 17臺930元 神州數(shù)碼DCR-2501V 多協(xié)議模塊化路由器 1臺23000元 神州數(shù)碼DCFW-1800S-L 小型企業(yè)級百兆防火墻 1臺11000元 聯(lián)想萬全T168 G3 S930 512/73C服務器 5臺11999元 總計: 89729元 (三)模塊等其他價格 設備名稱 設備數(shù)目 設備價格(/塊) MS-3926S-1GT 1口100/1000Base-T千兆模塊 1 4,950元 MS-3726S-1MFC 1口100Base-FX多模光纖模塊 4 3,750元 DCS-3726SGBIC-LX1000Base-LX GBIC接口卡模塊 3 9,950元 MS-3726-S堆疊模塊 1 2450元 LinkManager-30-250N(250節(jié)點,Windows NT/2000平臺,3.×版本)1 15600元 WINDOWS 2000 SEVER單擊版 3 5000元 總計: 82850元 工程總造價(不含施工費用) 總計:215189元 七. 子網(wǎng)劃分 八.推薦教材及主要參考資料 [1] [2] 謝希仁.計算機網(wǎng)絡(第五版).電子工業(yè)出版社,2008.1 Andrew S Tanebaun.Computer Networks(Fourth Edition).Pearson Education,2002.8 [3] Andrew S Tanebaun,熊桂喜等譯.Computer Networks(Third Edition).Prentice-Hall,1996.清華大學出版社,1998.7 [4] [5] [6] 謝希仁.TCP/IP協(xié)議族(第3版).清華大學出版社,2006.4 馬海軍.TCP/IP協(xié)議原理與應用.清華大學出版社,2005.3 Douglas E Comer.Internetworking with TCP/IP.Volume I: Principles, Protocols, and Architecture.1991 Volume II: Design, Implementation, and Internals.1991 Volume III: Client-Server Programming and Applications.1993 [7] James F Kurose and Keith W Ross.Computer Networking: A Top-Down Approach Featuring the Internet.Addison Wesley,2001 《計算機網(wǎng)絡課程設計報告》 學院:計算機科學學院 專業(yè):計算機科學與技術 班級: 姓名: 學號: 小組成員: 2011-7-13 項目內(nèi)容:基于Socket的文件傳輸服務設計與實現(xiàn) 實驗目的:基于Socket套接口,實現(xiàn)文件數(shù)據(jù)傳輸服務。目的使學生掌握網(wǎng)絡文件傳輸服務的設計方法。 實驗環(huán)境:操作系統(tǒng):windowsXP或windows7; 內(nèi)存:256M以上; Microsoft Visual C++ 6.0 設計方案:文件傳送是各種計算機網(wǎng)絡實現(xiàn)的基本功能,文件傳送協(xié)議是一種最基本的應用層協(xié)議按照客戶/服務器的模式進行工作,提供交互式的訪問,是INTERNET使用最廣泛的協(xié)議之一。文件傳輸協(xié)議的簡單設計與實現(xiàn)建立在計算機網(wǎng)絡實驗環(huán)境TCP/IP 網(wǎng)絡體系結構之上,使用socket 編程接口編寫兩個程序,分別為客戶程序(client.c)和服務器程序(server.c)首先,我們知道此應用軟件需實現(xiàn)網(wǎng)絡中多臺主機的信息互通,實現(xiàn)文件傳輸,因此涉及到主機網(wǎng)絡互聯(lián)的問題,所以必須會應用到網(wǎng)絡協(xié)議,可以用UDP或TCP。利用IP地址接受文件內(nèi)容。 實現(xiàn)流程: 啟動電腦,打開能運行該程序的環(huán)境,必須保證代碼的正確性; 進行窗體框架的設計,實現(xiàn)網(wǎng)絡連接,并達到文件傳輸?shù)墓δ埽?/p> 在以上步驟的成功進行下達到設計要求的基于Sockets的局域網(wǎng)內(nèi)文件傳輸?shù)暮瘮?shù)實現(xiàn)的目的。 源程序; 程序清單: 服務器: #include “stdafx.h” #include “Server.h” #include “ServerDlg.h” #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__;#endif ///////////////////////////////////////////////////////////////////////////// // CServerDlg dialog CServerDlg::CServerDlg(CWnd* pParent /*=NULL*/): CDialog(CServerDlg::IDD, pParent){ //{{AFX_DATA_INIT(CServerDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);} void CServerDlg::DoDataExchange(CDataExchange* pDX){ CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CServerDlg) // NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CServerDlg, CDialog)//{{AFX_MSG_MAP(CServerDlg)ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON_LICSEN, OnButtonLicsen)ON_BN_CLICKED(IDC_BUTTON1, OnButtonOK)//}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CServerDlg message handlers BOOL CServerDlg::OnInitDialog(){ CDialog::OnInitDialog();3 // Set the icon for this dialog.The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE);// Set big icon SetIcon(m_hIcon, FALSE);// Set small icon // TODO: Add extra initialization here return TRUE;// return TRUE unless you set the focus to a control } // If you add a minimize button to your dialog, you will need the code below // to draw the icon.For MFC applications using the document/view model, // this is automatically done for you by the framework.void CServerDlg::OnPaint(){ if(IsIconic()){ CPaintDC dc(this);// device context for painting SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x =(rect.Width()cyIcon + 1)/ 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon);} else { CDialog::OnPaint();} } // The system calls this to obtain the cursor to display while the user drags // the minimized window.HCURSOR CServerDlg::OnQueryDragIcon(){ 4 return(HCURSOR)m_hIcon;} void CServerDlg::OnButtonLicsen(){ // TODO: Add your control notification handler code here CFileDialog Dlg(TRUE);if(Dlg.DoModal()!=IDOK) return; CFile myFile;if(!myFile.Open(Dlg.GetPathName(), CFile::modeRead | CFile::typeBinary)){ AfxMessageBox(“文件不存在!”,MB_OK|MB_ICONERROR); return;} CSocket sockSrvr;sockSrvr.Create(800); sockSrvr.Listen();CSocket sockRecv;sockSrvr.Accept(sockRecv); SOCKET_STREAM_FILE_INFO StreamFileInfo;WIN32_FIND_DATA FindFileData; FindClose(FindFirstFile(Dlg.GetPathName(),&FindFileData));memset(&StreamFileInfo,0,sizeof(SOCKET_STREAM_FILE_INFO));strcpy(StreamFileInfo.szFileTitle,myFile.GetFileTitle()); StreamFileInfo.dwFileAttributes = FindFileData.dwFileAttributes;StreamFileInfo.ftCreationTime = FindFileData.ftCreationTime;StreamFileInfo.ftLastAccessTime = FindFileData.ftLastAccessTime;StreamFileInfo.ftLastWriteTime = FindFileData.ftLastWriteTime;StreamFileInfo.nFileSizeHigh = FindFileData.nFileSizeHigh;StreamFileInfo.nFileSizeLow = FindFileData.nFileSizeLow; sockRecv.Send(&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO)); UINT dwRead=0;while(dwRead byte* data = new byte[1024];5 UINT dw=myFile.Read(data, 1024); sockRecv.Send(data, dw); dwRead+=dw;} myFile.Close(); sockRecv.Close();AfxMessageBox(“發(fā)送完畢!”);} void CServerDlg::OnButtonOK(){ // TODO: Add your control notification handler code here OnOK(); } 客戶機: // ClientDlg.cpp : implementation file // Download by http://www.codefans.net #include “stdafx.h” #include “Client.h” #include “ClientDlg.h” #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__;#endif ///////////////////////////////////////////////////////////////////////////// // CClientDlg dialog CClientDlg::CClientDlg(CWnd* pParent /*=NULL*/)6 : CDialog(CClientDlg::IDD, pParent){ //{{AFX_DATA_INIT(CClientDlg)// NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);} void CClientDlg::DoDataExchange(CDataExchange* pDX){ CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CClientDlg)// NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CClientDlg, CDialog)//{{AFX_MSG_MAP(CClientDlg)ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON_SEND, OnButtonSend)ON_EN_CHANGE(IDC_EDIT_IPADDRESS, OnChangeEditIpaddress)ON_BN_CLICKED(IDC_BUTTON1, OnButtonOK)//}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CClientDlg message handlers BOOL CClientDlg::OnInitDialog(){ CDialog::OnInitDialog(); // Set the icon for this dialog.The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE);SetIcon(m_hIcon, FALSE); // TODO: Add extra initialization here return TRUE;// return TRUE unless you set the focus to a control } // If you add a minimize button to your dialog, you will need the code below // to draw the icon.For MFC applications using the document/view model, // this is automatically done for you by the framework.void CClientDlg::OnPaint(){ if(IsIconic()){ // Set big icon // Set small icon CPaintDC dc(this);// device context for painting SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(), 0);// Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON); } CRect rect;GetClientRect(&rect);int x =(rect.Width()cyIcon + 1)/ 2;// Draw the icon dc.DrawIcon(x, y, m_hIcon);else { } } // The system calls this to obtain the cursor to display while the user drags // the minimized window.HCURSOR CClientDlg::OnQueryDragIcon(){ return(HCURSOR)m_hIcon;} void CClientDlg::OnButtonSend(){ // TODO: Add your control notification handler code here AfxSocketInit(NULL);CSocket sockClient;sockClient.Create(); CString szIP;GetDlgItemText(IDC_EDIT_IPADDRESS,szIP);CDialog::OnPaint(); if(!sockClient.Connect((LPCTSTR)szIP, 800)){ AfxMessageBox(“連接到對方機器失敗!”); return;} SOCKET_STREAM_FILE_INFO StreamFileInfo;sockClient.Receive(&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO)); CFile destFile(StreamFileInfo.szFileTitle,CFile::modeCreate CFile::modeWrite | CFile::typeBinary); UINT dwRead = 0;while(dwRead byte* data = new byte[1024]; memset(data,0,1024); UINT dw=sockClient.Receive(data, 1024); destFile.Write(data, dw); dwRead+=dw;} SetFileTime((HANDLE)destFile.m_hFile,&StreamFileInfo.ftCreationTime,&StreamFileInfo.ftLastAccessTime,&StreamFileInfo.ftLastWriteTime);destFile.Close(); | SetFileAttributes(StreamFileInfo.szFileTitle,StreamFileInfo.dwFileAttributes);sockClient.Close();AfxMessageBox(“接收完畢!”);} void CClientDlg::OnChangeEditIpaddress(){ // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog()// function and call CRichEditCtrl().SetEventMask()// with the ENM_CHANGE flag ORed into the mask.// TODO: Add your control notification handler code here CString szIpAddress; GetDlgItemText(IDC_EDIT_IPADDRESS,szIpAddress);if(szIpAddress.IsEmpty())GetDlgItem(IDC_BUTTON_SEND)->EnableWindow(FALSE);else } void CClientDlg::OnButtonOK(){ // TODO: Add your control notification handler code here OnOK();} 安裝演示說明詳細步驟: GetDlgItem(IDC_BUTTON_SEND)->EnableWindow(TRUE);11 服務器向客戶機發(fā)送文件:效果如圖 客戶器輸入服務器的IP地址并選擇接受來自服務器發(fā)送的文件,選擇接受。效果如下圖: 輸入IP地址 如果地址有誤則顯示 : 實驗總結: 通過本次計算機網(wǎng)絡課程設計,我更加充分的理解了課本上的知識,并能夠加以擴展,從而應用于實踐當中,這幾天的課程設計令我受益匪淺,很多平時模棱兩可的知識點都認真復習并實踐了。我意識到我們所學的東西將來都是要付諸實踐的,所以一切要 12 從實際情況出發(fā),理論聯(lián)系實際,這樣才能真正發(fā)揮我們所具備的能力。經(jīng)過此次課程設計,我向我成功的目標又邁進了一步第二篇:網(wǎng)絡課程設計
第三篇:網(wǎng)絡課程設計
第四篇:網(wǎng)絡課程設計
第五篇:網(wǎng)絡課程設計報告