CH1 网络编程基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

授课教师李平勇成都大学信息科学与技术学院第1章网络编程基础网络操作系统(NetworkOperatingSystem,NOS)网络操作系统是使网络上的计算机能方便而有效地共享网络资源,为网络用户提供所需的各种服务软件和有关规程的集合。它除了具有一般桌面操作系统的全部功能外,还应该满足用户使用网络的需要,尤其要提供数据在网上的安全传输,管理网络中的共享资源,实现用户通信以及方便用户使用网络。网络操作系统是作为网络用户与网络系统之间的接口。网络操作系统的任务有两项:(1)常规任务,主要负责文件管理、存储管理、进程管理、任务管理、I/O管理、CPU调度等;(2)网络任务,主要功能为资源共享(文件、设备、数据)、安全管理、远程过程调用、网络I/O等。1.1网络操作系统网络操作系统目前主流的四种主要网络操作系统是:UNIX或Linux。其中,UNIX操作系统主要有SUN公司的Solaris,IBM公司的AIX等。Linux操作系统主要有Redhat,红旗Linux等。Windows操作系统:Microsoft公司的Windows系列,如Microsoft的NT或Windows2003AdvancedServer等。Novell公司的Novell网(NetWare)SantaCruzOperation公司(SCO)的UnixWareUNIXUNIX是一个多用户、多任务的分时操作系统,在计算机网络尤其是Internet的发展中发挥了极其重要的作用。在Internet中提供服务的各类节点计算机中,90%以上都使用UNIX或类UNIX操作系统。UNIX系统结构图UNIXUNIX系统主要由以下4个部分组成:内核。是组成操作系统的核心,它控制任务的调度运行,管理计算机存储器,维护文件系统,并在用户中分配计算机资源。它对用户是透明的。外壳(Shell)。Shell是一个程序(类似于DOS中的COMMAND.COM),它解释用户所提交的命令并把该命令提交给内核执行,执行结果再返回给用户。Shell也是一种程序设计语言,用户可以使用Shell命令来设计程序(类似于DOS中的batch命令)。文件系统。文件系统是指在用户终端上可为用户所用的全部文件的集合,它使信息的存储和检索更为容易。命令。命令是一组实用程序的名称。UNIX系统提供的命令包括:文本编辑、文件管理、软件开发工具、系统配置、通信等。UNIXUNIX中包含3个主要的网络包:TCP/IP包括TCP、UDP、IP、DNS等标准协议。基本网络实用程序(BNU)提供UUCP、远程登录、远程执行、发送邮件、连接远地终端、串行通信等功能。网络文件系统(NetworkFileSystem,NFS)实现不同系统间文件和目录的透明访问,这种文件共享方式独立于计算机、操作系统和网络体系结构。LinuxUNIX系统是一个非常成熟的网络操作系统,但对计算机硬件的要求比较高,对于一般的个人用户来说,想要在PC机上运行UNIX是比较困难的。Linux是按照UNIX风格设计的操作系统,所以在源代码级上兼容绝大部分的UNIX标准。相当多的网络安全人员在自己的机器上运行的正是Linux。LinuxLinux是一个充满生机的操作系统,具有巨大的用户群和广泛的应用领域,在软件业中有着重要地位,是惟一能与UNIX和Windows较量和抗衡的操作系统。从技术上讲,Linux有如下特点:(1)继承了UNIX的优点,又有了许多更好的改进,其开放、协的开发模式是集体智慧的结晶,能紧跟技术发展潮流,具有极强的生命力;(2)是通用的操作系统,可用于各种PC机和工作站;(3)内置通信联网功能,可让异种机联网;(4)具有开放的源代码,有利于发展各种特色的操作系统;(5)符合POSIX标准,各种UNIX应用可方便地移植到Linux下;(6)提供庞大的管理功能和远程管理功能;(7)支持大量外部设备;(8)支持32种文件系统;(9)提供GUI;(10)支持并行处理和实时处理,能充分发挥硬件性能;(11)在Linux平台上软件开发成本低。WindowsMicrosoft(微软)公司的Windows系统不仅在个人操作系统中占有绝对优势,它在网络操作系统中也具有非常强劲的竞争力。Windows操作系统配置在整个局域网配置中是最常见的,但由于它对服务器的硬件要求较高,且稳定性能不是很高,所以Windows网络操作系统一般只是用在中低档服务器中,高端服务器通常采用UNIX、Linux或Solaris等非Windows操作系统。在局域网中,Windows网络操作系统主要有:WindowsNT4.0Server、Windows2000Server/AdvanceServer,以及Windows2003Server/AdvanceServer等。工作站系统可以采用任何Windows或非Windows操作系统,包括个人操作系统,如Windows9x/ME/XP等。WindowsNT系统结构WindowsWindowsNT作为一款成功的网络操作系统,其网络功能强大,采用OSI/RM网络体系结构,在多个层次之间提供接口规范,如NDIS、TDI、ProviderInterface、Socket、NETBIOS等,支持TCP/IP、IPX/SPX、NETBEUI等网络协议,如下页图中所示。WindowsNT网络体系结构WindowsAPI函数WIN32API是MicrosoftWindows32位平台的应用程序编程接口。WIN32API函数是构筑Windows应用框架的基石,在它的下面是Windows的操作系统核心,上面则是所有的Windows应用程序,如下图所示。WindowsAPI函数WindowsAPI函数根据功能不同,分为很多种类,具体如下:网络函数消息函数文件处理函数打印函数文本和字体函数菜单函数位图、图标和光栅运算函数绘图函数设备场景函数硬件与系统函数进程和线程函数控件与消息函数WindowsAPI函数目前常用的可视化编程环境(如VB、VC++、DELPHI等)中提供了大量的类库和各种控件,它们替代了API的神秘功能,事实上这些类库和控件都是构架在WIN32API函数基础之上的,是封装了的API函数的集合。它们把常用的API函数组合在一起成为一个控件或类库,并赋予其方便的使用方法,极大地加速了Windows应用程序开发的过程。实际上如果要开发出更灵活、更实用、更具效率的应用程序,必然要涉及到直接使用API函数,虽然类库和控件使应用程序的开发简单的多,但它们只提供WINDOWS的一般功能,对于比较复杂和特殊的功能来说,使用类库和控件是非常难以实现的,这时就需要采用API函数来实现。1.2文件系统在网络通信中,许多通信方式(如Socket通信、管道通信、邮路通信等)的基本原理都与UNIX/Linux的文件操作相同,所以,了解UNIX/Linux下的文件操作是学习网络通信的基础。Linux支持多种文件系统,如ext2、ext3、minix、iso9660、fat、vfat、nfs等。在这些具体文件系统的上层,Linux提供了虚拟文件系统(VFS)来隐藏各种文件系统的具体细节,为访问它们提供统一的接口。1.2文件系统文件系统虚拟文件系统应用程序Ext2设备文件FATNFS文件编程Linux中对文件编程可以使用两类函数:Linux系统调用C语言库函数前者依赖于Linux系统,后者与操作系统是独立的,在任何操作系统下,使用C语言库函数操作文件的方法都是相同的。系统调用-创建intcreat(constchar*filename,mode_tmode)Filename:要创建的文件名(包含路径,缺省为当前路径)Mode:创建模式系统调用-创建Mode含义S_IRUSR可读S_IWUSR可写S_IXUSR可执行S_IRWXU可读、写、执行S_IRGRP组可以读S_IWGRP组可以写S_IXGRP组可以执行系统调用-创建Mode含义S_IRWXG组可以读写执行S_IROTH其他人可以读S_IWOTH其他人可以写S_IXOTH其他人可以执行S_IRWXO其他人可以读、写、执行S_ISUID设置用户执行IDS_ISGID设置组的执行ID系统调用-创建除了可以通过上述宏进行标志以外,也可以用数字来表示,Linux共用5个数字来表示文件的各种权限:第一位:用户ID;第二位:组ID;第三位:用户自己的权限;第四位:组的权限;第五位:其他人的权限。系统调用-创建每个数字可以取1(执行权限)、2(写权限)、4(读权限)、0(无任何权限)或者这些值的和。例:要创建一个用户可读、可写、可执行,但是组没有权限,其他人可以读、可以执行的文件,并设置用户ID位。10705:1(用户ID)、0(不设置组ID)、7(1+2+4,读、写、执行)、0(没有权限)、5(1+4,读、执行)系统调用-创建实例文件描述在Linux系统中,所有打开的文件都对应一个文件描述符。文件描述符是一个非负整数。当打开一个文件时,内核向进程返回一个文件描述符。文件描述符的范围是0-OPEN_MAX。早期的UNIX版本OPEN_MAX=19,即允许每个进程同时打开20个文件,现在很多系统则将其增加至1024。系统调用-打开intopen(constchar*pathname,intflags)intopen(constchar*pathname,intflags,mode_tmode)Pathname:要打开的文件名(包含路径,缺省为当前路径)Flags:打开标志系统调用-打开Flags含义O_RDONLY只读方式打开O_WRONLY只写方式打开O_RDWR读写方式打开O_APPEND追加方式打开O_CREAT创建一个文件系统调用-打开Flags含义O_NOBLOCK非阻塞方式打开O_TRUNC如果文件已经存在,则删除文件的内容O_EXEC如果使用了O_CREAT,且文件已存在,则报错系统调用-打开O_RDONLY、O_WRONLY、O_RDWR三个标志不能同时使用。如果使用了O_CREATE标志,则使用的函数是intopen(constchar*pathname,intflags,mode_tmode);这时还要指定mode来表示文件的访问权限。系统调用-打开实例系统调用-关闭当我们操作完文件以后,需要关闭文件:intclose(intfd)Fd:文件描述符,来源?系统调用-读intread(intfd,constvoid*buf,size_tlength)功能:从文件描述符fd所指定的文件中读取length个字节到buf所指向的缓冲区中,返回值为实际读取的字节数。系统调用-写intwrite(intfd,constvoid*buf,size_tlength)功能:把length个字节从buf指向的缓冲区中写到文件描述符fd所指向的文件中,返回值为实际写入的字节数。系统调用-定位intlseek(intfd,offset_toffset,intwhence)功能:将文件读写指针相对whence移动offset个字节。操作成功时,返回文件指针相对于文件头的位置。系统调用-定位whence可使用下述值:SEEK_SET:相对文件开头SEEK_CUR:相对文件读写指针的当前位置SEEK_END:相对文件末尾offset可取负值,例如下述调用可将文件指针相对当前位置向前移动5个字节:lseek(fd,-5,SEEK_CUR)系统调用-定位如何利用lseek来计算文件长度?系统调用-定位由于lseek函数的返回值为文件指针相对于文件头的位置,因此下列调用的返回值就是文件的长度:lseek(fd,0,SEEK_END)系统调用-访问判断有时侯我们要判断文件是否可以进行某种操作(读,写等),这个时候我们可以使用access函数。intaccess(constchar*pathname,intmode)Pathname:文件名称Mode:要判断的

1 / 167
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功