版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、陈 兵 Email: cb_ 南京航空航天大学 计算机网络研究室 2008,网络通信实现技术,课程体系,计算机网络,通信基础,计算机,网络基础,TCP/IP,协议分析,网络与信息,安全,网络软件,通信技术,软件实验:停等协议ARQ实现、网络模拟器NS、SOCKET通信 硬件实验:网络工程,路由器和交换机,网络硬件,通信技术,教学目的及要求 掌握计算机网络通信编程技术 熟悉Unix/Linux环境的使用 教材 有关Socket编程技术 有关Unix/Linux使用手册 先修课程 计算机网络基础 TCPIP原理 评分标准 上机作业,Review,通信方式: 单播 unicast 组播 multic
2、ast 广播 broadcast 网络体系结构: 分层 服务、协议和接口 ISO/OSI TCP/IP TCPIP 地址:MAC/IP/域名 分层:网络层,传输层,应用层 协议:ARP/RARP IP ICMP TCP UDP 接口:SOCKET 传输层之上的接口,主要内容,计算模式简介 SOCKET编程技术 基本实验: 实验1:PING程序的实现 * 尾数0,1,2,9 实验2:TRACERT程序的实现 * 尾数3,4,5 实验3:SCANNER扫描程序实现* 尾数6,7,8, 高级实验 实验4:基于IP组播的通信实现 * 实验5:ARQ模拟程序实现 * 实验6:IP欺骗程序的实现 * 实验
3、7:Sniffer程序的实现* 实验8:HTTP代理程序的实现 * 实验9:简单FTP程序的实现 * DEMO,1 工作模式变迁,主机终端方式 一切由主机做主 文件服务器方式 磁盘共享 模式 减轻网络负载,查询 商业逻辑放到Client 和模式 改进信息表示方式 三层构架,将商业逻辑放到Server 减轻安装维护工作,特点: 一切由主机做主 终端不能独立工作,使用主机的CPU、MEM等 终端之间不能直接通信 普通终端不支持GUI,工作模式的变迁:主机终端,工作模式的变迁:文件服务器,特点: 文件服务器用来进行大容量数据存储和共享 各主机有自己的资源,同时可以访问服务器的共享资源 网络流量较大,
4、如从服务器查找一条记录 主机之间可以直接通信,工作模式的变迁:C/S模式,特点: 将应用分成两部分 服务端负责数据处理和查询 客户端负责结果表示GUI 减轻网络负载,查询 商业逻辑在Client,瓶颈,工作模式的变迁:B/S模式,特点: 改进信息表示方式 三层构架,将商业逻辑放到Server 减轻安装维护工作,2 SOCKET编程技术,什么是SOCKET SOCKET域、类型、协议 SOCKET提供的服务及工作流程 SOCKET常用函数,SOCKET简介,什么是SOCKET SOCKET类型 工作流程 常用函数,什么是SOCKET?,是TCP/IP传输层的接口 是BSD UNIX提供的网络应用
5、编程接口 采用客户机/服务器的通信机制,使网络客户机方和服务器方通过Socket实现网络之间的连接和数据交换 提供了一系列的系统调用,使用这些系统调用可以实现TCP,UDP,ICMP和IP等多种网络协议之间的通信 FTP,Telnet使用TCP协议 SNMP使用UDP协议 各种组播和广播使用何种协议? 可以构造典型的Client/Server模式应用,SOCKET应用,创建C/S方式的服务Service 如何决定一个服务? IP Address Port Port分类 Well-known port ( 01023) FTP:20/21 telnet:23 Pop3:110 SMTP:25 R
6、egistered port Oracle:1521,1526 Sybase:5000,SOCKET域,AF_UNIX Unix domain sockets AF_INET Internet IP Protocol AF_IPX Novell IPX AF_APPLETALK Appletalk DDP AF_X25 Reserved for X.25 project . .,SOCKET类型,SOCK_STREAM stream (connection) socket SOCK_DGRAM datagram (conn.less) socket SOCK_RAW raw socket,pr
7、otocol,IPPROTO_IP Internet Protocol IPPROTO_ICMP Internet Control Message Protocol IPPROTO_IGMP Internet Group Management Protocol IPPROTO_TCP Transmission Control Protocol IPPROTO_UDP UserDataGram Protocol . .,Service,面向连接 无连接,无连接工作流程,面向连接的工作流程,SOCKET基本函数,创建SOCKET( C/S ) 绑定SOCKET( C/S ) 连接(C) 设置请求队
8、列(S) 从队列取一个请求(S) 发送数据( C/S ) 接收数据( C/S ) 关闭SOCKET( C/S ),SOCKET基本函数(1),名称:SOCKET 功能:创建一个SOCKET标识 格式:socket( int family,int type,int protocol); 入口:family 可以选 AF_UNIX:UNIX 互连网协议; AF_INET:Internet 协议(常用); AF_NS : Xerox NS 协议; type可选: sock_STREAM:流管套 sock_DGRAM:数据报管套 sock_RAW:原始管套 protocol,一般为0 出口:0 soc
9、ket标识符,举例: STEP 1:通过vi创建一个test.c文件 #include #include main( ) int sd sd = socket( AF_INET,SOCK_STREAM ,0); printf( “ sd = %s n”, sd ); STEP 2:通过cc编译并生成可执行文件 cc -o test test.c STEP 3:执行test文件,查看运行结果,SOCKET基本函数(2),名称:BIND 功能:为一个没有名字的套接字指定一个名字 格式:bind(int sockfd, struct sockaddr *myaddr, int addrlen) 入口
10、: sockfd::已经创建的 socket标识符; myaddr:服务方地址,指明服务方的地址和服务端口号 addrlen:地址长度 出口:0 成功 #include,通用socket地址结构定义,struct sockaddr u_char sa_len; /*地址总长度*/ u_char sa_family; /*AF_INET:TCP/IP地址*/ char sa_data14; /*address*/ ,TCP/IP的socket地址结构定义,struct sockaddr_in u_char sin_len; /*地址总长度*/ u_char sin_family; u_short
11、 sin_port; /*协议端口号*/ struct in_addr sin_addr; /* IP addr*/ char sin_zero8; /*un_used*/ struct in_addr u_long s_addr; ,SOCKET基本函数(3),名称:CONNECT 功能:与服务器建立连接 格式:connect(int sockfd, struct sockaddr *servaddr, int addrlen); 入口: sockfd::已经绑定的 socket标识符; servaddr:服务方地址,指明服务方的地址和服务端口号 addrlen:地址长度 出口:0 成功 #
12、include 备注:仅适用于Client,SOCKET基本函数(4),名称:LISTEN 功能:服务器设置请求队列数 格式:listen( sockfd, max_numb ); 入口: sockfd::已经绑定的 socket标识符; max_numb:能同时处理的请求数 出口:0 成功 #include 备注:仅适用于 Server,SOCKET基本函数(5),名称:ACCEPT 功能:服务器从队列中取出一个请求进行处理 格式:new_sd = accept( sockfd ); 入口: sockfd:: socket标识符; 出口:0 新的socket标识符 #include 备注:仅
13、适用于 Server,以后客户方与服务方的通信均使用新的socket标识符,原标识符继续监听客户的请求,SOCKET基本函数(6),名称:SEND/RECV 功能:进行数据的发送和接收 格式: send(int sockfd, char *buff, int nbytes, int flag); recv(int sockfd, char *buff, int nbytes, int flags); 入口: sockfd:: socket标识符; buff:发送的内容或者接收缓冲区 nbytes:发送或者接收缓冲区的长度 flag:数据类型,缺省为0 MSG_OOB:发送或接收加急数据; MS
14、G_PEEK:观察输入报文; MSG_DONTROUTE:旁路路由选择; 出口:0 实际发送或接收的字符数,SOCKET基本函数(7),名称:CLOSE 功能:关闭Socket 格式:close( sockfd ); 入口: sockfd:: 欲关闭的socket标识符; 出口:0 成功 #include,基本函数综合举例 服务方,1)创建socket 2)绑定 3)设置监听队列 4)监听 5)接收一包数据,并显示 6)关闭socket,基本函数综合举例 客户方,1)创建socket 2)绑定 3)与服务方连接 4)发送一串信息Hello,World! 5)关闭socket,例:client端
15、,#include #include #include #include #include ,#include #include #define PROTOPORT 5193 /* default protocol port number */ extern int errno; char localhost = localhost; /* default host name */,main(argc, argv) int argc; char *argv ; struct hostent *ptrh; /* pointer to a host table entry */ struct pr
16、otoent *ptrp; /* pointer to a protocol table entry */ struct sockaddr_in sad; /* structure to hold an IP address */ int sd; /* socket descriptor */ int port; /* protocol port number */ char *host; /* pointer to host name */ int n; /* number of characters read */ char buf1000; /* buffer for data from
17、 the server */,memset(char *) ,/* Connect the socket to the specified server. */ if (connect(sd, (struct sockaddr *) /* Terminate the client program gracefully. */ ,例:server端,#include #include #include #include #include ,#include #include #define PROTOPORT 5193 /* default protocol port number */ #de
18、fine QLEN 6 /* 队列长 */ int visits = 0; /* 客户连接数 */,main(argc, argv) int argc; char *argv ; struct hostent *ptrh; /* pointer to a host table entry */ struct protoent *ptrp; /* pointer to a protocol table entry */ struct sockaddr_in sad; /* structure to hold servers address */ struct sockaddr_in cad; /
19、* structure to hold clients address */ int sd, sd2; /* socket descriptors */ int port; /* protocol port number */ int alen; /* length of address */ char buf1000; /* buffer for string the server sends */ Strcpy( buf, hello,world! ) ;,memset(char *) ,if (listen(sd, QLEN) 0) /* Specify size of request
20、queue */ fprintf(stderr,listen failedn); exit(1); while (1) /* Main server loop - accept and handle requests */ alen = sizeof(cad); if ( (sd2=accept(sd, (struct sockaddr *) ,实验:PING程序的实现,实验目的:理解ping程序的概念,熟练使用linux编程中的原始套接字 实验环境:linux,C语言 实验内容: 设计一个简单的PING程序,每隔1秒钟使用ICMP报文向目的IP地址发一个ICMP请求(长度由length指定)
21、,对方将返回一个ICMP应答,应答数据包通过循环调用函数recvfrom来接收。发送ICMP报文的次数由counts指定 Sping dstIP l length n counts,实验:TRACERT程序的实现,实验目的:理解tracert程序的概念,熟练使用linux编程中的原始套接字 实验环境:linux,C语言 实验内容: 设计一个简单的tracert程序。,实验:SCANNER简单网络扫描程序实现,实验目的:熟悉并实现网络扫描的基本原理。了解网络扫描的几种常用的方法。 实验环境:linux,C语言 实验内容: 用C语言编写一个在linux下扫描局域网内主机的程序。要求可以显示局域网内的主机名列表,IP地址列表,并可以显示哪些主机开放了哪些端口。,实验:基于IP组播的通信实现,实验目的:理解单播,广播,组播的基本原理。 实验环境:linux环境 C语言 实验内容: 由一个进程向一个组播组发送报文,组播组中的相关
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 加工用芒果-行业标准
- 报警器使用安全指南
- 广东省深圳市2026年九年级中考二模历史试卷附答案
- 暑期幼小衔接试题及答案
- 2026助理医师考试历年真题及答案
- 儿童偏头痛识别与家庭护理指导指南 (2026 版)
- 一级建造师考试(机电工程管理与实务)题库含答案(2025年广西钦州市)
- 2026年初级注册安全工程师《安全生产实务》模拟试题(安徽)
- 2026年二级注册消防工程师考前模拟试题(案例分析)
- 2026年资产评估师考试真题模拟卷
- 《焊条电弧焊》课件(共七章)
- 2026中远海运集团招聘考试参考题库及答案解析
- 高速路机电安全培训课件
- 医疗器械生产企业洁净区工作服管理规定
- 2025国铁集团考试题库及答案
- 老年健康饮食指导及食谱设计
- 中国科学院2025年科研项目聘用人员工作规范与考核协议
- 综合行政执法面试题及参考答案
- (高清版)DB42∕T 2012-2023 《土家族吊脚楼营造规程》
- 胎儿常见疾病的治疗:胎儿宫内治疗原则和治疗方法-医学课件
- DB32/T 4152-2021水利工程液化地基处理技术规范
评论
0/150
提交评论