2018-2019-2 20189206 《网络攻防实践》 第一周作业
预备知识学习
TCP/IP网络基础协议
TCP/IP简介
- TCP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议和网络协议的简称,它定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。 并不是一个协议,而是一个协议族的统称。
- TCP/IP 被分为 4 层,每层承担的任务不一样,各层的协议的工作方式也不一样,每层封装上层数据的方式也不一样。
- 在 TCP/IP 层次模型中,网络层管理 IP 地址,链路层则负责 MAC 地址。因此每个网络位置会有一个专属于它的 IP 地址,而每个主机会有一个专属于它 MAC 地址。
- 其中域名与IP地址相对应,便于记忆;MAC地址则一般固化在计算机硬件中,每台电脑有其对应的MAC地址。
- 端口号是每个IP地址中,不同程序间相互通信的端口号,一个IP地址的端口可以有 65536(即:2^16)个。
常用协议对应端口号:
SSH 22
FTP 20 和 21
Telnet 23
SMTP 25
TFTP 69
HTTP 80
SNMP 161
Ping 使用ICMP,无具体端口号
数据链路层
-
数据链路层的传输单位是帧
-
数据链路层将网络层传下来的IP数据报封装成帧,发送到链路上,并把在链路中接受到的帧中的数据取出交给上层网络层。
-
数据链路层的主要功能
- 差错控制:包括反馈重发、计时器、序号。
- 流量控制:流量控制实际上是对发送方数据流量的控制,使其发送速率不超过接收方的速率。
-
数据链路层中的协议
- SLIP协议:是一种对IP数据报进行简单封装的简单形式。
- PPP协议:是现在使用最广泛的数据链路协议
-
MTU最大传输单元:数据帧的长度都有一定的限制,当网络层传下来一个IP数据报,其长度都比链路层MTU大,网络层需要对数据报进行分片,使每一片都小于MTU。
网络层
- IP协议提供不可靠无连接的数据传送服务
tcpdump抓包工具:
sudo tcpdump -ntx -c 1
-n :显示 IP 地址而非域名地址
-t :不显示时间戳
-x :以十六进制显示包内内容
-c :tcpdump 将在接受到几个数据包后退出
- 网络层其他协议还包括
- ARP地址解析协议
- RARP逆向地址解析协议
- ICMP控制报文协议
- IGMP组管理协议
traceroute用于侦测主机到目的主机之间所经过的路由情况。
传输层
从传输层来看,是发送方主机中的一个进程与接收方主机中的一个进程在交换数据,因此严格地讲,通信双方不是主机,而是主机中的进程。
- UDP用户数据报协议
- 无连接
- 尽最大努力交付,不保证交付的可靠性
- 面向报文
- 没有拥塞控制
利用tcpdump抓取UDP数据包
首先向IP地址192.168.1.1的7777端口发送了一条hello的消息,接着运行抓包工具tcpdump
最后可以看到抓包结果
- TCP协议
- 提供可靠数据传输,面向连接
- 点对点
- 可靠传输、无差错、不丢失、不重复、按顺序
- 全双工通信
- 面向字节流
应用层
- Talent协议是远程登录服务的标准协议和主要方式,基于TCP协议,使用端口23。
终端使用者在本地电脑上使用 telnet 程序,用它连接到服务器,终端使用者可以在 telnet 程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。
作业问题
a. 你对师生关系的理解,希望是哪种关系?
答:师生关系应该是“教练与学生”的关系,以“学生为主体,老师为主导”。就像健身房或者是运动队的教练,他们是按照学员或队员的情况,量身定制符合学员实际情况的任务,而学员则是通过完成这些任务,并从中获取技能。
作为学生,我们通过学习这门课的目的是为了从中掌握技能,能够及时地掌握反馈学习中的问题,做到真正的“做中学 Learning by doing”。
做中学(Learning By Doing)从老师角度讲就是「项目驱动教学法」。学生在实践中发现问题,解决问题,在迭代中提升。
b.如何提问?
答:在提出问题之前,首先需要问问自己,自己所提出的问题是否逻辑清晰,这个问题是基于什么而提出的。
提问的目的绝不是为了轻而易举地获得答案,而是为了逐步培养自己的思考能力,去形成自己分析问题、解决问题的思路。
所以我认为提出问题的前提是自己已经为这个问题查阅了一定的资料,有自己的思考,有自己尝试解决问题的步骤,有了这些作为铺垫,那么再从中提出的问题也一定具有一定的深度,可以看出是经过思考后而提出的有意义的问题,不是不经思考单纯地提问。
c. 课下测试中有哪些题目做错了?改正后学到了哪些知识点。
sort命令是将文本文件内容加以排序,可以针对文本文件的内容以行为单位进行排序
参数:
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-k 以哪个区间 (field) 来进行排序
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o <输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t <分隔字符> 指定排序时所用的栏位分隔字符。
+ <起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
题目中 sort -t: -nk2 sort.txt
的意思是对文本文件中以“:”为分隔符,并对第2列按照数值排序,如果-nk2中,没有n这个参数,则对第2列按照ASCII字符进行排列。
od命令是输出文件的内容
参 数:
- A 指定地址(文件offset)用什么基数打印,包括:
d 十进制
o 八进制(系统默认值)
x 十六进制
n 不打印位移值(也就是不打印地址偏移部分)
-j[Bytes] 首先跳过Bytes的输入。
-S[Bytes] 输出至少Bytes的图形字符串,这里的缩减形式等价于--strings[=Bytes]。
-w[Bytes] 指定每行的输出字节数目。
-N[Bytes] 指定显示的输入限定为Bytes字节。
- t 指定数据的显示格式,主要的参数有:
c ASCII字符或反斜杠序列
d[SIZE] 有符号十进制数,每个整数SIZE字节。
f[SIZE] 浮点数,每个整数SIZE字节。
o[SIZE] 八进制(系统默认值为02),每个整数SIZE字节。
u[SIZE] 无符号十进制数,每个整数SIZE字节。
x[SIZE] 十六进制数,每个整数SIZE字节。
set命令:用于设置各种shell选项或者列出shell变量。
env命令:用于查询环境变量
export命令:用于设置或显示环境变量。
linux下的变量可分为两种:shell变量和环境变量
Shell变量:又称本地变量,包括私有变量以及用户变量,不同类的shell有不同的私有变量,bash,ksh,csh等,每种shell的私有变量都不一样
环境变量:又称用户变量,与shell无关