我自考网( zikao5.com )

 找回密码
 注册

我自考论坛新人签到! 到各省圈子新人签到送奖励~ 进入自考圈子自考资料专题

历年自考试题和答案 集合2008年以来的自考试题及答案! 考必过一考通自考小抄 - 自考密卷

自考资料【注册网站】|论文指导QQ905363546 自考英语学习英语俚语学习自考公共课 自考专业课网站地图关于我自考网_zikao5.com

特别提醒:想登录了解网站可用临时帐号【加微信zikao99索取】
搜索
查看: 5632|回复: 3

[模拟试题] 电子商务安全导论试题 答案

[复制链接]
发表于 2008-10-17 10:23:24 | 显示全部楼层 |阅读模式
答题要求:将每一道题的答案保存到word文档中。



一、详细说明使用TCP SYN扫描的过程和结论。(20分)

答:TCP SYN扫描
  在这种技术中,扫描主机向目标主机的选择端口发送SYN数据段。如果应答是RST,那么说明端口是关闭的,按照设定就探听其它端口;如果应答中包含SYN和ACK,说明目标端口处于****状态。由于所有的扫描主机都需要知道这个信息,传送一个RST给目标机从而停止建立连接。由于在SYN扫描时,全连接尚未建立,所以这种技术通常被称为半打开扫描。SYN扫描的优点在于即使日志中对扫描有所记录,但是尝试进行连接的记录也要比全扫描少得多。缺点是在大部分操作系统下,发送主机需要构造适用于这种扫描的IP包,通常情况下,构造SYN数据包需要超级用户或者授权用户访问专门的系统调用。

二、数据结构sockaddr_in的详细构造如何?(20分)

答:struct sockaddr_in ("in" 代表 "Internet"。)

struct sockaddr_in {
   short int sin_family; /* 通信类型 */
   unsigned short int sin_port; /* 端口 */
   struct in_addr sin_addr; /* Internet 地址 */
   unsigned char sin_zero[8]; /* 与sockaddr结构的长度相同*/
   };



三、Internet Explore中的安全规定设置情况如何?(20分)

答:1、当你浏览网页的时候,开始打开浏览器IE。

2、从Tools(工具)菜单里选择Internet Options... (Internet选项。。。)项,之

  后会弹出Internet Options(Internet选项)对话框。

3、选择Security(安全)项,Security(安全)选项会出现。

4、点击Internet区域并选择它。

5、点击Custom Level... (自定义级别。。。),出现安全设置框。

6、从滚动菜单里选择High(高)级别。

7、点击 Reset(重置)项后,会有一个对话框出现,询问你是否确定要改变

  Internet区域中的安全设置。

8、点击Yes(是),接下来按照以下列出的步骤并且通过滑动设置菜单来进行设置。

9、在设置 Script ActiveX controls marked safe for Scripting(对标记为可安全

  执行ActiveX控件执行脚本)项的时候, 你根据你的信任级别来选择禁止或是提示。

10、如果你决定要禁用Java,那末在Java权限设置中, 单击禁用Java。(说明:如果你安

  装了Microsoft Virtual Machine(微软的虚拟机),那末这个设置将要在

  Microsoft VM(微软的虚拟机)环境中来设置。如果你没有设置Java 权限,那末

  Java已经被禁用了。)

11、要在脚本部分下设置Active scripting(活动脚本),则单击活动脚本下的禁用。

12、点击OK(确定),然后出现一个对话框,问你是否确定接受这个改变。

13、点击 Yes(是)。

14、在Internet选项对话框里,点击Advanced(高级)框,高级选项表框出现。

15、在Security(安全)设置里,点击Warn if changing between secure and

  insecure(在安全与非安全模式之间转换时发出警告)。

16、点击Apply(应用),保留你的设置。

17、点击OK(确定),关闭Internet选项对话框。



四、阅读程序段,解释每个程序语句。(40分)

byte=0x45;

memcpy(p_ptr,&byte,sizeof(u_char);

p_ptr+=2;

*((u_short*)p_ptr)=FIX(IPH+UDPH+PADDING);

p_ptr+=2;

*((u_short*)p_ptr)=htons(242);

p_ptr+=2;

*((u_short*)p_ptr)=FIX(IP_MF);

p_ptr+=2;

*((u_short*)p_ptr)=0x40;

byte=IPPROTO_UDP;

memcpy(p_ptr+1,&byte,sizeof(u_char));

p_ptr+=4;

*((u_long*)p_ptr)=src_ip;

p_ptr+=4;

*((u_long*)p_ptr)=dst_ip;

p_ptr+=4;

*((u_short*)p_ptr)=htons(src_prt);

p_ptr+=2;

*((u_short*)p_ptr)=htons(dst_prt);

p_ptr+=2;

*((u_short*)p_ptr)=htons(8+PADDING);

if(sendto(sock,packet, IPH+UDPH+PADDING,0,(struct sockaddr*)&sin,sizeof(struct sockaddr))= = -1){

            perror(“\nsendto”);

            free(packet);

            exit(1);

}

答:

byte=0x45;/*IP version and header length */  ip版本和头长
memcpy(p_ptr,&byte,sizeof(u_char));
p_ptr+=2;/*IP TOS(skipped)*/     ip的tos值
*((u_short*)_ptr)=FIX(IPH+UDPH+PADDING);/*total length*/  ip的长度
p_ptr+=2;
*((u_short*)_ptr)=htons(242);/*IP id */  ip的标识
p_ptr+=2;
*((u_short*)_ptr)=FIX(IP_MF);/*IP frag flags and offset */  ip的分段标识符
p_ptr+=2;
*((u_short*)_ptr)=0x40;/*IP TTL */    ip的生存时间
byte=IPPROTO_UDP;
memcpy(p_ptr+1,&byt,sizeof(u_char));
p_ptr+=4;/*IP checksum filled in by kernel */    ip的校验和
*((u_long *)p_ptr)=scr_ip;/* IP source address */  ip的源地址
p_ptr+=4;
*((u_long *)p_ptr)=dst_ip;/* IP destination address */  ip的目标地址
p_ptr+=4;
*((u_long *)p_ptr)=htons(scr_ptr);/* UDP source potr */  UDP的源地址
p_ptr+=2;
*((u_long *)p_ptr)=htons(dst_ptr);/* UDP destination */   UDP的目标地址
p_ptr+=2;
*((u_long *)p_ptr)=htons(8+PADDING);/*UDP total length */  ip的总长度
if(sendto(sock,packed,IPH+UDPH+PADDING,0,(struct sockadder *)&sin,sizeof(struct sockadder))==-1){
      perror("\nsendto");
      free(packet);
      exit(1);





答题要求:将每一道题的答案保存到word文档中。

一、              一个全相关需要由几个系统调用函数来完成,说明这几个函数的原型及参数的用法。(20分)

二、              数据结构ostent的详细构造如何?(20分)

三、              使用C语言写出TCP数据包的报头格式。(20分)

四、              四在windows 2000操作系统中,请说明目录WINNT/System32/etc下各种文件的作用。(40分)





                       





<书上题目>

1,创建套接口——Socket()
  应用程序在使用套接口前,首先必须创建一个套接口,其掉用格式如下;
int Socket(int af.int type,int protocol);
入口参数;af,type,protocol.参数af指定通信使用的区域,Unix系统支持AF?_Unix,AF_INET,AF?_NS等,而DOS,Windows中仅
支持AF_INET,他是网际网区域。参数type描述要建立的套接口的类型(,流式,数据报式和原始式套接口)。参数protocol说明
该套接口使用的协议(TCP,UDP,RAW),

2,指定本地地址——bind()
当一个套接口用Socket()创建后,存在一个名字空间(地址族0,但它没有被命名。bind()将套接口地址(包括本地主机地址和本
地端口地址)与所创建的套接口号联系起来,即将名字赋予套接口。一指定本地半相关,其调用格式如下:
int bind(SOCKETs,const struct sockaddr FAR*name,int namelen);
参数s是用Socket()调用返回的并未作连接的套用接口描述符(套接口号)。参数name是赋给套接口s的本地地址(名字)。其
长度可变,结构随通信域的不同而不同。namelen表明了name的长度。

3,建立套接口连接——connect()与accept()
这两个系统调用用于建立一个完整相关,其中connect()用于客户方建立连接。无连接的套接口进程也可以调用connect()
但这时在进程之见没有实际的报文交换,调用将从本地操作系统直接返回。

connect()的调用格式如下;
int connect(SOCKETs.const struct sockaddr FAR*name,int nameelen);
参数s是欲建立连接的本地套接口描述符。参数name指出说明对方套接口地址结构的指针。对方套接口地址长度由namelen说明。

accept()的调用格式如下;
int accept(SOCKETs,struct sockaddr FAR*addr,int FAR*addrlen);
参数s为本地套接口描述符,在用作accept()调用的参数前应该先调用过listen()。addr是指向客户方套接口地址结构的指针,
用来接收连接实体的地址。

四个套接口系统调用Socket(),bind(),connect(),accept(),可以完成一个完全五元相关的建立。Socket()指定
五元组中的协议元,它的用法与是否为客户或服务器,是否向连接无关。bind()指定五元组中的本地二元,即本地主机地址和
端口号,其用法与是否面向连接有关;在服务器方,无论是否面向连接,均要调用bind();在客户方。若采用面向连接则可以
不调用bind()而通过connect(),而通过connect()自动完成。若采用无连接。客户方必须使用bind()以获得而已唯一
的地址。

4,****连接——listen()

int listen (SOCKETs,int masQue);
参数s标识一个本地已建立,尚未连接的套接口号,服务器愿意从他上面接受请求。maxQue表示请求连接队列的最大长度,用于
限制排队请求的个数。如果没有错误发生,listen()返回0;否则他返回SOCKET_ERROR.

5,数据传输——send()与recv()
当一个连接建立以后,就可以进行数据传输。常用的系统调用有send()和recv()。
send()调用用于在参数s指定的已连接的数据报或流套接口上发送传输数据,格式如下:
int send(SOCKETs.const char FAR*buf,int len,int flags);
参数s为已连接的本地套接口描述符。buf指向存有发送数据的缓冲区的指针,其长度由len指定。flags指定传输控制方法,如是否
发送带外数据等。如果没有错误发生,send()返回总共发送的字节数。否则它返回SOCKET_ERROR.
recv()调用用于在参数s指定的已连接的数据报或流套接口上接收输入数据,格式如下:
int recv(SOCKETs,char FAR*buf,int len,int len,int flags);
参数s为已连接的套接口描述符。buf指向接收输入数据缓冲区的指针,其长度由len指定。flags指定传输控制方式,如是否接收
外带数据等。如果没有错误发生,recv()返回总共接收的字节数,如果连接被关闭,返回0。否则它返回SOCKET_ERROR.

6,关闭套接口——closeSocket()
closeSocket()关闭套接口s,并释放分配给该套接口的资源;如果s 涉及一个打开的TCP连接,则该连接被释放。closeSocket()
的调用格式如下:
int closeSocket(SOCKETs);
参数s是待关闭的套接口描述符。如果没有错误发生,closeSocket()返回0/否则返回值SOCKET_ERROR.

printff("sending to %s\n",inet_ntoa(ip→ip_dst));
ip→ip_v=4                  ip版本
ip→ip_hl=sizeof*ip>>2;     ip的头长
ip→ip_tos=0;               ip的tos值
ip→ip_len=FIX(sizeofbuf);  ip的长度
ip→ip_id=htons=(4321);     ip的标识
ip→ip_off=FIX(0);          ip的分段标识符
ip→ip_ttl=255;             ip的生存时间
ip→ip_p=1;
ip→ip_sum=0;               ip的总和数
ip→ip_src.s_addr=0;        ip的源地址

byte=0x;/*IP version and header length */  ip版本和头长
memcpy(p_ptr,&byte,sizeof(u_char));
p_ptr+=2;/*IP TOS(skipped)*/     ip的tos值
*((u_short*)_ptr)=FIX(IPH+UDPH+PADDING);/*total length*/  ip的长度
p_ptr+=2;
*((u_short*)_ptr)=htons(242);/*IP id */  ip的标识
p_ptr+=2;
*((u_short*)_ptr)=FIX(IP_MF);/*IP frag flags and offset */  ip的分段标识符
p_ptr+=2;
*((u_short*)_ptr)=0x40;/*IP TTL */    ip的生存时间
byte=IPPROTO_UDP;
memcpy(p_ptr+1,&byt,sizeof(u_char));
p_ptr+=4;/*IP checksum filled in by kernel */    ip的校验和
*((u_long *)p_ptr)=scr_ip;/* IP source address */  ip的源地址
p_ptr+=4;
*((u_long *)p_ptr)=dst_ip;/* IP destination address */  ip的目标地址
p_ptr+=4;
*((u_long *)p_ptr)=htons(scr_ptr);/* UDP source potr */  UDP的源地址
p_ptr+=2;
*((u_long *)p_ptr)=htons(dst_ptr);/* UDP destination */   UDP的目标地址
p_ptr+=2;
*((u_long *)p_ptr)=htons(8+PADDING);/*UDP total length */  ip的总长度
if(sendto(sock,packed,IPH+UDPH+PADDING,0,(struct sockadder *)&sin,sizeof(struct sockadder))==-1){
      perror("\nsendto");
      free(packet);
      exit(1);

<试卷题目>

BIND()函数
一旦你有一个套接字。你可能要将接字和机器上的一定的端口关联起来。如果你只想CONNECT()那么这个步骤没有必要。但无论如何,请下去一步
  这里是调用BIND()的大概
#INCLUDE〈SYS/TYPES。H〉
#INCLUDE〈SYS/SOCKET。H〉
INT BIND(INT SOCKFD STRUCT SOCKADDR MY ADDR。INTR ADDR,INT ADDRLEN)
  SOCKFD是调用SOCKFD返回的文件描述符 MY ADDR指向数据结构的指针它保存你的地址信息ADDRLEN设置为SIZEOF
  简单的很能不是吗
#INCLUDE〈STRING。H〉
#INCLUDE〈SYS/TYPE.H〉
#INCLUDE〈SYS/SOCKET.H〉
#DEFINE MYPORT 3490
MAIN()
    {
     INT SOCKFD;
     STRUCT SOCKADDR IN MY ADDR;
SOCKFD=SOCKET(AF INET,SOCK_STREAM,O);/*需要错误检测*/
MY_ADDR.SIN_FAMILY=AF_INET:/*HOST BYTEORDER*/
    MY_ADDR,SIN_PORT=HTONS(MYPORT);/*SHORT,NETWORK BYTE ORDER*/
    MY_ADDR.SIN_ADDR=INET_ADDR("132.241.5.10")
    BZERO(&( MY_ADDR,SIN_ZERO),;
    BIND(SOCKFD,(STRUCT SOCKADDR*)&MY_ADDR.SIZEOF(STRUCT SOCKADDR)
   .
   .
   .
这里也有要注意的几件事情.my_addr.sin_port是网络字节顺序,my_addr.sin_addr.s_addr也是的.另外要注意到的事情是因系统的不同,包含的头文件也不尽相同,请查阅本地的man帮助文件.
在bind()主题中最后要说的话是,在处理自己的IP地址和/或端口号的时候,有些工作是可以自动处理的.
my_addr.sin_port=0;/*随机选择一个没有使用的端口*/
my_addr.sin_addr.s_addr=INADDR_ANY;/*使用自己的IP地址
通过将0赋给my_addr.sin_port=,你告诉bind()自己选择合适的端口.
同样将my_addr.sin_addr.s_addr设置为INADDR_ANY,你告诉它自动填上它所运行的机器的IP地址.
如果你一向小心谨慎,那么你可能注意到我没有将INADDR_ANY转换为网络字节顺序!这是因为我知道内部的东西;INADDR_ANY实际上就是0!即使你改变字节的顺序,0依然是0.但是完美主义者说应该处处一致,INADDR_ANY或许是12呢?
你的代码就不能工作了,那么看下面的代码:
my_addr.sin_port=htons(0);/*随机选择一个没有使用的端口*/
my_addr.sin_addr.s_addr=htonl(INADDR_ANY);/*使用自己的IP 地址*/
你或许不相信,上面的代码将可以随便转移.我只是想指出,既然你所遇到的程序不会都运行使用htonl的INADDR_ANY.
bind() 在错误的时候依然是返回-1,并且设置全局错误变量errno.
在你调用bind 的时候,你要小心的另一件事情是:不要采用小于1024的端口号.所有小于1024的端口号都被系统保留!你可以选择从1024到65535的端口.
   在你调用BIND()的时侯,你在要小心另一件事情,不要采用小于1024的端口。所有小于1024的端口都会被系统保存,你可以选从1024-65535的端口
   你需要注意的另一个小事是;有时侯你跟本不需要他们,如果你使用CONNECT()来和远程机器进行通讯,你不需要关心你的本地端口号。你只要简单调用就可以了。它会检查是否绑定端口号,如果没有。它会自己绑定一个没有使用的本地端口。




connet()程序
现在我们假设你是个telnet程序.你的用户命令你得到套接字的文件描述符,你听从命令调用了socket().下一步,你的用户告诉你通过端口23连接到"132.241.5.10".你该怎么做呢?幸运的是,你正在阅读connet()--如何连接到远程主机这一章.你可不想让你的用户失望.
connet()系统调用是这样的:
#include
#include
int  connet(int sockfd,struck sockaddr*serv_addr,int addrlen);
sockfd 是系统调用socket()返回的套接字文件描述符.serv_addr 是保存着目的地端口和IP地址的数据结构 struck sockaddr .addrlen设置为sizeof(struck sockaddr).
想知道的更多吗  我们来看个例子:

#include
#include
#include
#define DEST_IP"132.241.5.10"
#define DEST_PORT 23
main()
     {
int sockfd:
struck sockaddr_in dest_addr:/*目的地址*/
sockfd=sockfd=socket(AF_INET,sock_stream, 0);/*错误检查*/
dest_addr.sin_family=AF_INET;/*host byte order */
dest_addr.sin_port=htons(DEST_PORT);/*short,network byte order*/
dest_addr.sin_addr.s_addr=inet_addr(DEST_IP);
bzero(&(dest_addr.sin_zero),;/*zero the rest of the struck*/
/*don't forget to error check the connect()!*/
connect(sockfd,(struck sockaddr*)&dest_addr,sizeof(struck sockaddr));
               .
               .
               .
   再一次,你应该检查connect()的返回值--它在错误的时候返回-1,并设置全局错误变量errno.
同时,你可能看到,我没有调用bind().因为我不在乎本地的端口号.我只关心我要去哪.内核将为我选择一个合适的端口号,而我们所连接的地方也自动地获得这些信息.一切都不用担心.



listen()函数
是换换内容的时候了.假如你不希望与远程的一个地址连接,后者说,仅仅是将它踢开,那你就需要等待接入请求并且用各种方法处理它们.处理过程分 两步: 首先,你听listen()<看下面的内容>
除了要一点解释外,系统调用listen也非常简单.
int listen(int sockfd ,int backlog);
         sockfd是调用socket()返回的套接字文件描述符.bacalog是在进入队列中允许的连接数目.什么意思呢?进入的连接是在队列中一直等待直到你接受(accept()请看下面)连接.它们的数目限制于队列的允许.大多数允许的数目是20.你也可以设置为5到10.
   和别的函数一样,在发生错误的时候返回-1,并设置全局错误变量errno.
你可能想象到了,在你调用listen()前你或者要调用bind()或者让内核随便选择一个端口.如果你想侦听进入的连接,那么系统调用的顺序是这样的:
sock();
   bind();
listen();
   /*accept()应该在这*/
因为他相当的明了,我将在这里不给出例子了.(在accept()那一章的代码更加完全)

accept()函数
准备好了,系统调用accept()会有点古怪的地方的!你可以想象发生这样的事情:有人从很远的地方通知一个你在侦听的端口连接到你的机器.他的连接将加入到等待接受的队列中.你调用accept() 告诉它你有空闲的连接.它将返回一个新的套接文件描述符!这样你就有两个套接字了,原来的一个还在侦听你的那个端口,新的在准备发送(send())和接受(recv())数据.这就是这个过程!
函数是这样定义的:
#include
int accept(int sockfd,void*addr,int*addrlen);
  sockfd相当简单,是和listen()中一样的套接字描述符.addr 是个指向局部的数据结构sockaddr_in的指针.这是要求接入的信息所要去的地方.在它的地址传递给accept之前,addrlen是个局部的整形变量,设置为sizeof(struck sockaddr_in).accept 将不会将多余的字节给addr.如果你防如的少些,那么他会通过改变addrlen的值反映出来.
同样在错误时返回-1,并设置全局错误变量errno.
现在是你应该熟悉的代码:
#include
#include
#include
#define MYPORT 3490/*用户接入端口*/
#define BACKLOG 10/*多少等待连接控制*/
main()
    {
    int sockfd,new_fd;/*listen on sock_fd, new connection on new_fd*/
struck sockaddr_in my_addr;/*地址信息*/
struck sockaddr_in sockaddr_in their_addr;/*connector's address information*/
int sin_size;
sockfd=socket(AF_INET,SOCK_STREAM,0);/*错误检查*/
my_addr.sin_family=AF_IENT;/*host byte order*/
my_addr.sin_port=htone(MYPORT);/*short,network byte order*/
my_addr.sin_addr.s_addr=INADDR_ANY;/*auto-fill with my IP*/
bzero($(my_addr.sin_zero),;/*zero the rest of the struck*/
/*don't forget your error checking for these calls:*/
bind(sockfd,(struck sockaddr*)&my_addr,sizeof(struck sockaddr));
listen(sockfd, BACKLOG);
sin_size=sizeof(struck sockaddr_in);
new_fd=accept(sockfd,&their_addr,&sin_size);
                   .
                   .
                   .
        注意,在系统调用 send()he  recv()中你应该使用新的套接字描述符new_fd.如果你只想让一个连接近来,那么你可以使用close()去关闭原来的文件描述符sockfd来避免同一个端口更多的连接.


send()andrecv()函数
这两个函数用于流式套接字或者数据报套接字的通讯.如果你喜欢使用无连接的数据报套接字,你应该看一看下面关于sendto()和recvfrom()的章节.
send()是这样的:
int send(int sockfd,conkfd,const void*msg,intlen,int flage):
sockfd是你想发送数据的套接字描述符,msg是指向你想发送的数据的指针.len是数据的长度.把flags设置为0就可以了.
这里是一些可能的例子:
char*msg="Beej was here !";
int len,bytes_sent;
len=strlen(msg);
byte_sent=send(sockfd,msg,len,0);
.
.
.
send()返回实际发送的数据字节数--它可能小于你要求发送的数目!注意,有时候你告诉它要发送一堆数据可是它不能处理成功.它只是发送它可能发送的数据,然后希望你能够发送其他
的数据.记住,如果send()返回的数据和len不匹配,你就应该发送其他的数据.但是这里也有个好消息:如果你要发送的包很小,它可能让数据一次发完.最后要说的就是,它在错误的时间返回-1,并设置errno.recv()函数很相似:
int recv(int sockfd,void*buf,int len,unsigned int flags);
    sockfd是要读的套接字描述符.buf是要读的信息的缓冲.len是缓冲的最大长度.flags可以设置为0.
recv()返回实际读入缓冲的数据的字节数.或者在错误的时候返回-1,同时设置errno.
1。getpeername()函数
#include
int getpeername(int sockfd,struct sockaddr*addr,int*addrlen);sockfd是连接的流式套接字的 描述符。addr是一个指向结构struct sockaddr的指针,它保存着连接的另一边的信息。addrlen是一个int型的指针,它初始化为sizeof.函数在错误的时候返回-1,设置相应的errno.
  一旦你获得它们的 地址,你可以使用inetntoa()或者gethostbyaddr()来打印或者获得更多的信息。但是你不能得到它的帐号。
2。gethostname()函数
#includeint.gethostname(char*hostname,size-t sizet);hostname是一 个字符数组指针,它将在函数返回时保存主机名。size是hostname数组的字节长度。函数调用成功时返回0,失败时返回-1,并设置errno.
3.域名服务(DNS)
它主要的功能是:你给它一个容易记忆的某站点的地址,它给你IP地址(然后你就可以使用bind(),connect(),sendto()或者其他函数)。当 一个人输入$telnet whitehouse.gov
telnet能知道它将连接(connect())到“198.137.240.100”
但是这是如何工作的呢?你可以调用函数gethostbyname():#include
struct hostent*gethostbyname(const char*name):很明白的 是,它返回一个指向struct hostent的指针,这个数据结构是这样 的:
struct hostent{
               char *h-name;
               char **h-aliases;
               int h-addrtype;
               int h-length;
               char **h-addr-list;
               };
               #define h-addr h-addr-list[0]



(3):  C:\Documents and Settings\creat>arp

            Displays and modifies the IP-to-Physical address translation tables used by
            address resolution protocol (ARP).

            ARP -s inet_addr eth_addr [if_addr]
            ARP -d inet_addr [if_addr]
            ARP -a [inet_addr] [-N if_addr]

            -a            Displays current ARP entries by interrogating the current
                          protocol data.  If inet_addr is specified, the IP and Physical
                          addresses for only the specified computer are displayed.  If
                          more than one network interface uses ARP, entries for each ARP
                          table are displayed.
            -g            Same as -a.
            inet_addr     Specifies an internet address.
            -N if_addr    Displays the ARP entries for the network interface specified
                          by if_addr.
            -d            Deletes the host specified by inet_addr. inet_addr may be
                          wildcarded with * to delete all hosts.
            -s            Adds the host and associates the Internet address inet_addr
                          with the Physical address eth_addr.  The Physical address is
                          given as 6 hexadecimal bytes separated by hyphens. The entry
                          is permanent.
            eth_addr      Specifies a physical address.
            if_addr       If present, this specifies the Internet address of the
                          interface whose address translation table should be modified.
                          If not present, the first applicable interface will be used.
            Example:
                          > arp -s 157.55.85.212   00-aa-00-62-c6-09  .... Adds a static entry.
                          > arp -a                                    .... Displays the arp table.
(4):net user C:\Documents and Settings\creat>net user

                \LEGEND-0SMWHAJ7 的用户帐户

                -----------------------------------------------------------------------------
                Administrator            creat                    Guest
                HelpAssistant            SUPPORT_388945a0
                命令成功完成。
(5)Net share C:\Documents and Settings\creat>net share

               共享名   资源                        注释

               -----------------------------------------------------------------------------
               IPC$                                         远程 IPC
               命令成功完成。


(6):ipconfig C:\Documents and Settings\creat>ipconfig
      
                Windows IP Configuration


                Ethernet adapter 本地连接:

                 Media State . . . . . . . . . . . : Media disconnected
2常用的服务(安全机制)
(1)out look express的安全机制
     打开out look express——工具——选项(弹出选项对话框)——安全
         开始设置:安全电子邮件;安全内容;数字标识(证书)
(2)IE的安全机制
     打开IE——工具——Internet选项(弹出选项对话框)——安全 or IE(右键)属性——安全
         开始设置:
请为不同区域的WEB内容指定安全设置;该区域的安全级别(自定义级别,默认级别)
(3)电子商务网站(eg:易趣,8848,dell)安全方面的设置
有连接和无连接的套口应用流程图
  服务器                        客户机                    服务器                                
  socket()                      socket()                  socket()
    |                             |                         |
  bind()                          |                       bind()
    |                             |                         |                           客户机
  readfrom()                    bind()                    listen()                     socket()  
    |                             |                         |                             |
阻塞,等待客户数据                |                       accept                          |
    |--------服务请求---------- sendto()                    |                             |
处理服务器请求                    |                   阻塞,等待客户请求                  |
    |                             |                         |-------建立连接--------- connect()|
                                                            |                             
  sendto() -----服务应答------- readfrom()                read()------请求数据--------  write()
    |                             |                         |                             |
  close()                       close()                 处理服务请求                      |
       无连接套接口应用流程图                               |                             |
                                                          write()-------应答数据-------read()
                                                            |                             |
                                                          close()                       close()
                                                            面向连接套接口应用流程图
3通过四个函数建立一个五元组:
四个套接口系统调用Socket(),bind(),connect(),accept(),listen(),可以完成一个完全五元组相关的建立。 Socket()指定五元组中的协议元。它的用法与是否为用户与服务器,是否面向连接无关。bind()指定五元组中的本地二元,即本地地址和端口号,其用法与是否面向连接有关:在服务器方,无论是否面向连接,均要调用bind();在客户方,若采用面向连接,则可以不调用bind(),而通过 connect()自动完成,若采用无连接,客户方必须采用bind(),以获得一个唯一的地址,listen()用来设置最大****队列(服务器用)。
分析源程序(编写端口扫描器程序)
4 #include
#include
#include#include
#include
#include

int main(int argc,char**argv)
{
int probeport=0;
struct hostent*host;
int err,i,net;
struct sockaddr_in sa;

if(argc !=2){
        printf("usage:%s hostname\n",argv[0]);
        exit(1);
}
/*扫描1——1024端口范围*/
for(i=1;i<1024;i++)
{
       strncpy((char*)&sa,"",sizeof sa);
       sa.sin_family=AF_INET;
       if(isdigit(*argv[1]))  /*如果是IP地址*/
       sa.sin_addr.s_addr=inet_addr(argv[1]);
       else if((host=gethostbyname(argv[1]))!=0)   /*如果是主机名,需要转换*/
       strncpy((char*)&sa.sin_addr,(char*)host->h_addr,sizeof sa.sin_addr);
       else{
       herror(argv[1]);
       exit(2);
      }
      sa.sin_port=htons(i);
      /*创建socket标识符*/
     net=socket(AF_INEF,SOCK_STREAM,O);
     if(net<0){
     perror("nsocket");
     exit(2);
    }
    /*与目的方连接*/
    err=connect(net,(stuct sockaddr*)*sa,sizeof sa);
    if(err<0){
      printf("%-5d%s\t",argv[1],i,strerror(errno));
      fflush(stdout);
    }else{
      /*如果连接成功,打印主机名(或地址)和成功连接的端口号*/
   printf("%s %-5d accepted.\n",argv(1),i);
   if(shutdown(net,2)<0{
    perror("\nshutdown");
    exit(2);
       }
      }
     \*关闭标误符*/
     close(net);
   }
  print("\r");
  fflush(stdout);
  return(0);
  }
发表于 2009-1-7 11:43:24 | 显示全部楼层
看不懂!!!!要考这些啊????
回复 支持 反对

使用道具 评分 举报

发表于 2011-4-15 11:06:11 | 显示全部楼层
对我很有帮助!
回复 支持 反对

使用道具 评分 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver| 2023年自考资料 ( 豫ICP备17027556号-1 )

GMT+8, 2024-4-20 01:39 , Processed in 0.079125 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表