20155332 补交课后测试——ch11网络编程

20155332 补交课后测试——ch11网络编程

这章的课后测试忘了提交,我课后补作了这章的测试题目,并将知识点和本身的错题汇总以下:html

本章知识点总结

11.1 客户端-- 服务器模型

  • 每一个网络应用程序都是基于客户端 - 服务器模型的,
    采用这种模型,一个应用是由一个服务器进程 和一个或多个客户端进程组成。程序员

  • 服务器管理某种资源,而且经过操做这种资源为它的客户端提供某种服务。web

    • WEB服务器,表明客户端检索,执行磁盘内容。
    • FTP服务器,为客户端进行存储和检索。
    • 电子邮件服务器,为客户端进行读和更新。
    • 客户端-服务器模型中的基本操做是事务(transaction).
  • 一个客户端-服务器事务由四步组成
    • 客户端须要服务的时候,向服务器发送请求,发送一个事务。
    • 服务器收到请求后,解释它,并以适当方式操做它的资源。
    • 服务器给客户端发送一个响应,并等待下一个请求。
    • 客户端收到响应并处理它。编程

      11.2 网络

      客户端和服务端一般运行在不一样的主机上,而且经过计算机网络的硬件和软件资源来通讯。服务器

  • 对于一个主机而言,网络只是又一种I/O设备,做为数据源和数据接收方。
  • 对于物理上而言,网络是一个按照地理远近组成的层次系统。网络

    • 最低层是LAN(Local Area Network,局域网):在一个建筑或校园范围内。
    • 今为止,最流行的LAN技术是以太网(Ethernet),由Xerox PARC公司在20世纪70年代中期提出。以太网被证实是适应力极强的,从3 MB/s到10 GB/s
  • 每一个以太网适配器(网卡)都有一个全球惟一的48位地址,它存储在这个适配器的ROM上(MAC)。app

    • 一台主机能够发送一段位,称为帧(frame),到这个网段内其余任何主机。
      每一个帧包括一些固定数量的头部(header)位
      用于表示此帧的源,和目的地址以及此帧的长度。
      此后就是数据位的有效载荷。
      每一个主机适配器都能看到这个帧,可是只有目的主机实际读取它。

在层次的更高级别,多个不兼容的局域网能够经过叫作路由器(router)的特殊计算机链接起来,组成一个internet(互联网络)dom

  • WAN(Wide-Area Network,广域网)socket

  • 互联网相当重要的特性是:它能由采用彻底不一样和不兼容技术的各类局域网和广域网组成。ide

11.3 全球IP 因特网

  • 每台因特网主机都运行实现TCP/IP协议 (Transmission Control Protocol/Intelnet Protocol,传输控制协议/互联网络协议)的软件,几乎全部计算机系统都支持这个协议

  • TCP/IP协议实际上一个协议族,每个协议提供不一样的功能。

  • 从程序员的角度,咱们能够把因特网看做世界范围内主机的集合,知足一下特性。

    • 主机集合被映射为一组32位的IP地址。
    • 这组IP地址能够被映射为一组称为因特网域名(Internet domain name)的标示符。
    • 因特网主机上的进程可以经过链接和任何其余主机上的进程通讯。
  • 一个IP地址就是一个32位无符号整数。网络程序将IP地址存放在一个IP地址结构中。
  • 主机字节序,和网络字节序,之间可使用inet_atoninet_ntoa函数来实现二者之间互相转换。
  • 因特网域名

叶子结点反向到根的路径就是域名。
层次结构第一层 : 未命名的根结点
层次结构第二层 : 一级域名(first-level domain name)
由非盈利组织ICANN(Internet Corporation for Assigned Names and Numbers,因特尔分配名字数字协会)定义。
常见的一级域名:com,edu,gov,org和net。
层次结构第三层: 二级域名(second-level)
例如:cmu.edu。

  • 这些域名是由ICANN的各个受权代理按照先到先服务的基础分配的。

11.4 套接字接口

套接字接口(socket interface)是一组函数,他们和Unix I/O函数结合起来,用以建立网络应用。

给出一个典型的客户端-服务器事务的上下文中套接字接口概述,以此导向。

  • 从Unix内核角度来看,一个套接字就是通讯的一个端点。
  • 从Unix程序来看,套接字就是一个有相应描述符的打开文件。

sin_family成员是AF_INET,ipv4仍是ipv6。
sin_port成员是一个16位的端口号。
sin_addr成员就是一个32位的IP地址。
IP地址和端口号老是以网络字节顺序(大端法)存放的。
sockaddr_in给程序员操做的,sockaddr交由套接字函数使用的,二者能够直接强制转换。

  • socket函数
  • connect函数
  • open_clientfd函数
  • bind函数
  • listen函数(主动套接字->监听套接字)
  • open_listenfd函数
  • accept函数

    个人错题

2.有关Web服务器的说法,正确的是()

  • A.Web服务器能够提供静态和动态内容
  • B.Web服务器返回的静态内容由URL标识
  • C./.../app?150&21传递的内容由app可执行文件产生,150和21是调用参数
  • D.最小的URL后缀“/”,会被扩展成相似“/index.html”的默认主页

错误缘由

我选了ACD,没有选B.课本上P666页写,可执行文件的URL能够在文件名后包括程序参数。“?”字符分隔文件名和参数,并且每一个参数都用“&”隔开。课本没有说这两个参数是可执行文件产生的,因此我没有选。
查阅资料后,这两个参数确实是由可执行文件产生的,因此答案为ABCD。

9.如图关于struct sockaddr_in和struct sockaddr,下面说法正确的是()

  • A .sa_family能够是AF_INET,AF_INET6和AF_UNSPEC
  • B .sa_family若是指定AF_INET,那么函数就不能返回任何IPV6相关的地址信息;若是仅指定了AF_INET6却能够返回IPV4地址信息。
  • C .套接字接口中的地址类型是sturct sockaddr
  • D .套接字接口中的地址类型是sturct sockaddr_in

    我选的是ABC,答案是AC。
    对于A选项,AF_INET(又称 PF_INET)是 IPv4 网络协议的套接字类型,AF_INET6 则是 IPv6 的;而 AF_UNIX 则是 Unix 系统本地通讯。因此A是对的。

对于B选项,sin_family参数指定调用者期待返回的套接口地址结构的类型。它的值包括三种:AF_INET,AF_INET6和AF_UNSPEC。若是指定AF_INET,那么函数就不能返回任何IPV6相关的地址信息;若是仅指定了AF_INET6,则就不能返回任何IPV4地址信息。AF_UNSPEC则意味着函数返回的是适用于指定主机名和服务名且适合任何协议族的地址。
故B错误。

对于C ,课本P653页有,因此C选项是正确的。

10.有关Socket端口和Linux命令,下面说法正确的是()

  • A .能够用 echo /etc/services查看
  • B .使用 netstat -pan|grep 80能够查看哪些进程占用了80端口
  • C .可使用lsof -i:80查看哪里些进程占用了80端口
  • D .能够用sudo /etc/init.d/service start|stop|restart 启动|中止|重启系统服务
  • E .能够用netstat -pa 查看全部的服务端口(LISTEN,ESTABLISHED)
  • F .ps -aux | grep pid 能够查看绑定某端口的进程号为pid的进程的详细状况

    我选的是BCEF,正确答案:ABCDEF
    我在终端输入这些命令,eco /etc/services没有显示端口状况。
    lsof -i:80也没有任何输出。因此选错了。




因此我很疑惑,但愿老师可以解答。

11.知名端口号(well-known port numbers)就是那些由互联网名称与数字地址分配机构(ICANN)预留给传输控制协议(TCP)和用户数据包协议(UDP)使用的端口号。下面有关知名端口号的说法正确的是()

  • A .echo 服务的端口号是7
  • B .ftp 文件传输协议(FTP)端口号是23
  • C .请求主机发送日期和时间的daytime服务的端口号是13
  • D .web服务器的端口号是80
  • E .telnet服务的端口号是21
  • F .SMTP服务的端口号是25
  • G .tftp服务的端口号是69
  • H .HTTPS服务的端口号是443
  • I .rsync服务的端口号是873
  • J .pop3服务的端口号是110
  • K .auth服务的端口号是113

    正确答案:ACDFGHIJK
    B选项,FTP的端口号是20和21
    E选项,telnet的端口号是23

18( 多选题 | 1 分)
有关域名和IP地址的说法,正确的是()
A .
1988年前,域名和IP地址的映射经过HOST.txt来完成
B .
1988年后,域名和IP地址的映射经过DNS来完成
C .
Linux中可使用hostname(1)来展现和某个IP对应的域名
D .
域名和IP地址的映射必须是1对1 的

我选的是ABC 对于C选项,hostname只能显示或者设置主机名,不能展现某个IP对应的域名。 对于D选项,在最简单的状况下,域名和IP是一一对应的。可是,一个域名能够对应多个IP,一个ip也能够对应多个域名。 因此正确答案为AB。

相关文章
相关标签/搜索