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

这章的课后测试忘了提交,我课后补做了这章的测试题目,并将知识点和自己的错题汇总如下:

本章知识点总结

11.1 客户端-- 服务器模型

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

  • 服务器管理某种资源,并且通过操作这种资源为它的客户端提供某种服务。

    • 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)。

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

在层次的更高级别,多个不兼容的局域网可以通过叫做路由器(router)的特殊计算机连接起来,组成一个internet(互联网络)

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

  • 互联网至关重要的特性是:它能由采用完全不同和不兼容技术的各种局域网和广域网组成。

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。

20155332 补交课后测试——ch11网络编程的更多相关文章

  1. 【linux草鞋应用编程系列】_5_ Linux网络编程

    一.网络通信简介   第一部分内容,暂时没法描述,内容实在太多,待后续专门的系列文章.   二.linux网络通信     在linux中继承了Unix下“一切皆文件”的思想, 在linux中要实现网 ...

  2. 《UNIX网络编程》daytimetcpcli测试

    对于刚刚接触网络的人来说,<UNIX网络编程>中第一个例子(daytimetcpcli)可能就测试不通过.也许你试着继续向后读来,自己写一个服务程序来解决这个问题,但是daytime服务也 ...

  3. Linux网络编程组播测试代码

    Linux网络编程组播测试代码 (转载)   组播客户端代码如下: #include <sys/types.h>#include <sys/socket.h>#include ...

  4. python渗透测试入门——基础的网络编程工具

    <Python黑帽子--黑客与渗透测试编程之道学习>这本书是我在学习安全的过程中发现的在我看来十分优秀的一本书,业内也拥有很高的评价,所以在这里将自己的学习内容分享出来. 1.基础的网络编 ...

  5. Windows平台VC++ 6.0 下的网络编程学习 - 简单的测试winsock.h头文件

    最近学习数据结构和算法学得有点累了(貌似也没那么累...)...找了本网络编程翻了翻当做打一个小基础吧,打算一边继续学习数据结构一边也看看网络编程相关的... 简单的第一次尝试,就大致梳理一下看书+自 ...

  6. 20155332 补交ch12课下作业

    20155332 补交ch12课下作业 课下测试提交晚了,我课后补做了一遍,答对13题,答错3题. 试题内容如下所示: 课本内容 1.并发(Concurrency) 访问慢I/O设备:就像当应用程序等 ...

  7. Python3 与 C# 网络编程之~ 网络基础篇

    最新版本查看:https://www.cnblogs.com/dotnetcrazy/p/9919202.html 入门篇 官方文档:https://docs.python.org/3/library ...

  8. 20155211 课下测试ch11补做

    20155211 课下测试ch11补做 Web服务器的实现基于HTTP协议,有关HTTP协议,下面说法正确的是() A.可以用telnet充当Web服务器的客户端进行调试 B.HTTP请求的GET和P ...

  9. 20145207《Java程序设计》实验五(网络编程与安全)实验报告

    <Java 程序设计>实验五(网络编程与安全)实验报告 目录 改变 网络编程与安全实验要求 实验成果 课后思考 改变 修改了之前仅仅是贴了图片,连代码都没粘的状态.不过这篇博客我只能做到写 ...

随机推荐

  1. 回归JavaScript基础(四)

    主题:JavaScript变量.作用域和内存问题 JavaScript的变量和别的语言比起来是与众不同的.说道变量,不得不谈他的作用域.同很多语言一样,JavaScript开发者也不用担心开发中内存的 ...

  2. hdfs操作手册

    hdfscli 命令行 # hdfscli --help HdfsCLI: a command line interface for HDFS. Usage: hdfscli [interactive ...

  3. docker如何创建支持SSH服务的镜像

    一般情况下,Linux系统管理员通过SSH服务来管理操作系统,但Docker的很多镜像是不带SSH服务的,那么我们怎样才能管理操作系统呢?在第一部分中我们介绍了一些进入容器的办法,比如用attach. ...

  4. GreenPlum 5.0的安装

    基本环境: server IP MDW 172.16.16.31 SDW1 172.16.16.34 SDW2 172.16.16.35 1:检查操作系统是否符合要求,以及系统设置. 我这里使用的系统 ...

  5. C语言占位符

    占位符就是先占住一个固定的位置,等着你再往里面添加内容的符号,广泛用于计算机中各类文档的编辑. 格式占位符(%)是在C/C++语言中格式输入函数,如 scanf.printf 等函数中使用.其意义就是 ...

  6. Azure Document DB 存储过程、触发器、自定义函数的实现

    阅读 大约需要 4 分钟 在上一篇随笔中记录的是关于Azure Cosmos DB 中SQL API (DocumentDB) 的简介和Repository 的实现.本随笔是Document DB 中 ...

  7. python SQLAlchemy复习

    下面的代码主要使用SQLAlchemy的ORM思想实现查询单词的功能: 实现输入一个单词,查询出与输入单词接近的单词以及单词的意思. 主要有以下三步: 1.创建数据表 2.插入数据 3.查询数据 1. ...

  8. 页面中图片以背景图形式展示好还是以img标签形式展示

    img和background-image的异同: img是网页结构层面上的标签,页面中多一个img标签就会多一次http请求,且当我们浏览页面时,img标签作为网页结构的一部分,会在浏览器加载结构的过 ...

  9. 51nod 1443 路径和树(最短路)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1443 1443 路径和树 题目来源: CodeForces ...

  10. RLE Iterator LT900

    Write an iterator that iterates through a run-length encoded sequence. The iterator is initialized b ...