20155332 补交课后测试——ch11网络编程
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)位
用于表示此帧的源,和目的地址以及此帧的长度。
此后就是数据位的有效载荷。
每个主机适配器都能看到这个帧,但是只有目的主机实际读取它。
- 一台主机可以发送一段位,称为帧(frame),到这个网段内其他任何主机。

在层次的更高级别,多个不兼容的局域网可以通过叫做路由器(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_aton和inet_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网络编程的更多相关文章
- 【linux草鞋应用编程系列】_5_ Linux网络编程
一.网络通信简介 第一部分内容,暂时没法描述,内容实在太多,待后续专门的系列文章. 二.linux网络通信 在linux中继承了Unix下“一切皆文件”的思想, 在linux中要实现网 ...
- 《UNIX网络编程》daytimetcpcli测试
对于刚刚接触网络的人来说,<UNIX网络编程>中第一个例子(daytimetcpcli)可能就测试不通过.也许你试着继续向后读来,自己写一个服务程序来解决这个问题,但是daytime服务也 ...
- Linux网络编程组播测试代码
Linux网络编程组播测试代码 (转载) 组播客户端代码如下: #include <sys/types.h>#include <sys/socket.h>#include ...
- python渗透测试入门——基础的网络编程工具
<Python黑帽子--黑客与渗透测试编程之道学习>这本书是我在学习安全的过程中发现的在我看来十分优秀的一本书,业内也拥有很高的评价,所以在这里将自己的学习内容分享出来. 1.基础的网络编 ...
- Windows平台VC++ 6.0 下的网络编程学习 - 简单的测试winsock.h头文件
最近学习数据结构和算法学得有点累了(貌似也没那么累...)...找了本网络编程翻了翻当做打一个小基础吧,打算一边继续学习数据结构一边也看看网络编程相关的... 简单的第一次尝试,就大致梳理一下看书+自 ...
- 20155332 补交ch12课下作业
20155332 补交ch12课下作业 课下测试提交晚了,我课后补做了一遍,答对13题,答错3题. 试题内容如下所示: 课本内容 1.并发(Concurrency) 访问慢I/O设备:就像当应用程序等 ...
- Python3 与 C# 网络编程之~ 网络基础篇
最新版本查看:https://www.cnblogs.com/dotnetcrazy/p/9919202.html 入门篇 官方文档:https://docs.python.org/3/library ...
- 20155211 课下测试ch11补做
20155211 课下测试ch11补做 Web服务器的实现基于HTTP协议,有关HTTP协议,下面说法正确的是() A.可以用telnet充当Web服务器的客户端进行调试 B.HTTP请求的GET和P ...
- 20145207《Java程序设计》实验五(网络编程与安全)实验报告
<Java 程序设计>实验五(网络编程与安全)实验报告 目录 改变 网络编程与安全实验要求 实验成果 课后思考 改变 修改了之前仅仅是贴了图片,连代码都没粘的状态.不过这篇博客我只能做到写 ...
随机推荐
- 团队项目个人进展——Day01
一.昨天工作总结 冲刺第一天,昨天阅读了小程序官方文档关于对视图层和逻辑层的介绍 二.遇到的问题 对小程序的样式文件——WXML里的标签不太理解,相比之下,html的标签更能让人接受 三.今日工作规划 ...
- 使用SharpZipLib压缩与解压文件
using ICSharpCode.SharpZipLib.Zip; using System; using System.Collections.Generic; using System.IO; ...
- Win7系统安装 Photoshop CC 中文完全破解版
Win7系统安装 Photoshop CC 中文完全破解版 谨以此教程献给某位做UI设计的朋友^_^! 01. 确定自己的系统是32位的还是64位的,本人电脑是64位 02. 将 Photoshop_ ...
- mac 程序 Access-JSON-Data
mac 程序 Access-JSON-Data 说明 直接将JSON数据生成文件,便于调试. 效果图 源码 https://github.com/YouXianMing/Create-JSON-Mod ...
- UNIX高级环境编程(9)进程控制(Process Control)- fork,vfork,僵尸进程,wait和waitpid
本章包含内容有: 创建新进程 程序执行(program execution) 进程终止(process termination) 进程的各种ID 1 进程标识符(Process Identifie ...
- UNIX高级环境编程(7)标准IO函数库 - 二进制文件IO,流定位,创建临时文件和内存流
1 二进制IO(Binary IO) 在前一篇我们了解了逐字符读写和逐行读写函数. 如果我们在读写二进制文件,希望以此读写整个文件内容,这两个函数虽然可以实现,但是明显会很麻烦且多次循环明显效率很低. ...
- jetbrains全家桶永久激活大法
不得不说jetbrains的产品真的挺好用的,比如耳熟能详的idea和pycharm等等,但正版的费用真的非我等学生党所能承担,网上也有一些注册码的教程,原理是通过服务器进行注册认证,但貌似目前用的比 ...
- 面向对象程序设计_课堂作业_01_Circle
The 1st classwork of the C++ program 题目: Create a program that asks for the radius of a circle and p ...
- zookeeper for windows
1,安装java环境,安装完java之后,添加用户变量.并在命令行中测试 java -version . 2,下载zookeeper http://mirrors.shu.edu.cn/apache/ ...
- 关于Oracle11g R2的学习笔记
进来由于工作需要开始有SQLServer向Oracle转型学习,想把学习写到这里作为记录和备忘. Oracle 11g R2下面都简称:Oracle 第一:Oracle的安装 在安装过程没有 ...