微型计算机通信与接口技术(第二版)教学课件刘兵第7章

上传人:E**** 文档编号:94557375 上传时间:2019-08-08 格式:PPT 页数:49 大小:395.50KB
返回 下载 相关 举报
微型计算机通信与接口技术(第二版)教学课件刘兵第7章_第1页
第1页 / 共49页
微型计算机通信与接口技术(第二版)教学课件刘兵第7章_第2页
第2页 / 共49页
微型计算机通信与接口技术(第二版)教学课件刘兵第7章_第3页
第3页 / 共49页
微型计算机通信与接口技术(第二版)教学课件刘兵第7章_第4页
第4页 / 共49页
微型计算机通信与接口技术(第二版)教学课件刘兵第7章_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《微型计算机通信与接口技术(第二版)教学课件刘兵第7章》由会员分享,可在线阅读,更多相关《微型计算机通信与接口技术(第二版)教学课件刘兵第7章(49页珍藏版)》请在金锄头文库上搜索。

1、第7章 网络编程接口,本章重点: 套接口编程原理 C#中与套接口有关类的使用 网络监听的原理 网络数据捕获工具SharpPcap,7.1 Winsock网络接口编程,7.1.1 Winsock接口概述 Windows Sockets规范的本意在于提供给应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守,同时在一个特定版本的Windows上定义了一个二进制接口,以此来保证Windows Sockets API的应用程序能够在任何符合Windows Sockets协议的网络软件上进行工作。因此这份规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。,

2、套接口,套接口包括一个IP地址(32bit)和一个端口号(16bit)共48bit,用来指明是某个网络中的某台计算机下的某个进程。套接口是指通信的一端,套接口可以根据通信性质分类,这种性质对于用户是可见的,且应用程序一般仅在同一类的套接口间进行通信。套接口分为三种类型: 流式套接口 数据报套接口 原始套接口。,2套接口网络编程原理,7.1.2 与套接口相关的类简介,2Sockets类的常用方法,(1)Accept 方法 protected void AcceptMethod(Socket listeningSocket) Socket mySocket = listeningSocket.Ac

3、cept(); ,try aSocket.Bind(anEndPoint); catch (Exception e) Console.WriteLine(“Winsock 出现的错误原因: “ + e.ToString(); ,(2)Bind 方法,/创建一个socket Socket listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); /绑定一个套接口 IPAddress hostIP = (Dns.Resolve(IPAddress.Any.ToString(

4、).AddressList0; IPEndPoint ep = new IPEndPoint(hostIP, port); listenSocket.Bind(ep); / 启动监听接口 listenSocket.Listen(backlog);,(3)Listen方法,connect方法重载列表,send方法,(6)shutdown方法,成员名称说明Both为发送和接收禁用Socket。此字段为常数。Receive禁用接收的Socket。此字段为常数。Send禁用发送的Socket。此字段为常数。,(7)close方法,2. 套接口编程示例,public Socket(AddressFami

5、ly addressFamily, SocketType socketType,ProtocolType protocolType); Socket temp = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Socket temp = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);,(1)IPAddress类:IPAddress 类包含计算机在 IP 网络上的地址。其Parse方法可

6、将 IP 地址字符串转换为 IPAddress 实例。下面的语句创建一个 IPAddress 实例: IPAddress myIP = IPAddress.Parse(“192.168.0.1“); (2)Dns 类:向使用 TCP/IP Internet 服务的应用程序提供域名服务。 IPHostEntry ipHostInfo = Dns.Resolve(“ “); IPAddress ipAddress = ipHostInfo.AddressList0;,try temp.Connect(ipe); /尝试连接 /处理参数为空引用异常 catch MessageBox.Show(“连接

7、出错!“); ,(1)服务器端源代码:,using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Net.Sockets; using System.Net; namespace Windowchatserver public partial class Form1 : Form public For

8、m1() InitializeComponent(); ,private void button1_Click(object sender, EventArgs e) try int port = 2000; string host = “127.0.0.1“; IPAddress ip = IPAddress.Parse(host); IPEndPoint ipe = new IPEndPoint(ip, port); Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

9、 s.Bind(ipe); s.Listen(0); Socket temp = s.Accept(); string recvStr = “;,byte recvBytes = new byte1024; int bytes; bytes = temp.Receive(recvBytes, recvBytes.Length, 0); recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes); textBox3.Text = recvStr; string sendStr = “Ok!Sucess!“; byte bs = Encodin

10、g.ASCII.GetBytes(sendStr); temp.Send(bs, bs.Length, 0); temp.Shutdown(SocketShutdown.Both); temp.Close(); s.Shutdown(SocketShutdown.Both); s.Close(); catch MessageBox.Show(“连接出错!“); ,(2)客户端源代码:,using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using Syst

11、em.Drawing; using System.Text; using System.Windows.Forms; using System.Net.Sockets; using System.Net; namespace Windowschatclient public partial class Form1 : Form public Form1() InitializeComponent(); ,private void button1_Click(object sender, EventArgs e) try int port = 2000; string host = “127.0

12、.0.1“; IPAddress ip = IPAddress.Parse(host); IPEndPoint ipe = new IPEndPoint(ip, port); Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); c.Connect(ipe); string sendStr = “hello!This is a socket test“; byte bs = Encoding.ASCII.GetBytes(sendStr); c.Send(bs, bs.Le

13、ngth, 0); string recvStr = “; byte recvBytes = new byte1024; int bytes; bytes = c.Receive(recvBytes, recvBytes.Length, 0); recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes); Console.WriteLine(recvStr); c.Close(); catch MessageBox.Show(“连接还没建立,断开无效!“); ,7.2 网络数据分析,7.2.1 网络监听的原理,在正常的情况下,一个网络接口应

14、该只响应这样的两种数据帧: (1)与自己硬件地址相匹配的数据帧。 (2)发向所有机器的广播数据帧。,2. 网卡的工作原理,对于网卡一般有四种接收模式: (1)广播方式:该模式下的网卡能够接收网络中的广播信息。 (2)组播方式:设置在该模式下的网卡能够接收组播数据。 (3)直接方式:在这种模式下,只有目的网卡才能接收该数据。 (4)混杂模式:在这种模式下的网卡能够接收一切通过它的数据,而不管该数据是否是发送给它的。,3. 网络监听的工作原理,(1)在以太网中是基于广播方式传送数据的,也就是说,所有的物理信号都要经过同一网段的所有网络设备。 (2)网卡可以设置成混杂模式(promiscuous m

15、ode),在这种模式下工作的网卡能够接收到一切通过它的数据,而不管实际上数据的目的地址是不是它。,4. 网络监听软件的设计实现,设计网络监听软件可分为以下几个步骤: (1)把网卡设置为混杂模式 (2)捕获数据包 (3)分析数据包,5. 分析数据包,其中协议字段的取值如下: 当协议字段=1时,IP数据包的数据部分是表示ICMP协议的协议数据单元; 当协议字段=2时,IP数据包的数据部分是表示IGMP协议的协议数据单元; 当协议字段=6时,IP数据包的数据部分是表示TCP协议的协议数据单元; 当协议字段=17时,IP数据包的数据部分是表示UDP协议的协议数据单元。,7.2.2 数据捕获工具,Win

16、Pcap是用于捕获网络数据包并进行分析的开源库,其产生的目的是为Win32应用程序提供这种访问方式。WinPcap提供以下主要功能: 捕获原始数据包,无论该数据包是否是发往本机的; 在数据包发送给某应用程序前,根据用户指定的规则过滤数据包; 将原始数据包通过网络发送出去; 收集并统计网络流量信息,2 WinPcap主要功能,网络与协议分析器 (network and protocol analyzers) 网络监视器 (network monitors) 网络流量记录器 (traffic loggers) 网络流量发生器 (traffic generators) 用户级网桥及路由 (user-level bridges and routers) 网络入侵检测系统 (networ

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号