首页 > 其他分享 >第三周

第三周

时间:2022-11-28 23:31:19浏览次数:36  
标签:第三周 ACK IP 报文 ping 序列号 客户端

  1. 使用函数重写,完成编程题,可以让用户选择当前主机的所有网卡,选中网卡后,获取ip,网段,掩码。通过ping命令检测在线的主机,打印在线的主机,写入一个文件中。当ip的结尾是奇数时,在目标主机或当前主机,批量添加user1到user100用户,否则添加group1到group100,并生成对应的用户user1到user100,让用户的过期时间在1天之后。 要求每个小功能均封装为函数,有详细的错误处理,确保任何条件均可以正常执行完脚本,可以重复执行。 可能会使用while循环
#!/bin/bash

#提取网卡
extract_eth () {
ifconfig | grep flags | tr ':' '\n' |sed -n '1~2p'
}

#提取IP及网段
extract_IP () {
ip a show | grep inet | head -1 | tr -s " " | cut -d " " -f3
}

#提取掩码
extract_mask () {
ifconfig | grep netmask | head -1 | tr -s " " ":" | cut -d ":" -f5
}

#选择网卡
select_eth () {
read -p "请选择网卡:" NAME
}

#打印选择的网卡IP、网段、掩码
print_eth () {
extract_IP
extract_mask
echo ${IP}${MASK}
}

extract_eth
select_eth
print_eth
#!/bin/bash

#打印在线主机
ping_online () {
P_online=`ping 10.0.0.$i -c1 -w2 | grep received | cut -d"," -f2`
if [ '$P_online' = "1 received" ]; then
echo "10.0.0.$i is online" &>> /data/ip-online
else
1>/dev/null 2>&1
echo "10.0.0.$i is offline"
fi
}

#通过ping命令检测在线的主机
ping_IP () {
i=1
ping_online
while ((i<254));do
let i++
ping 10.0.0.$i -c1 -w2 1>/dev/null 2>&1
ping_online
done
}

#批量添加user1到user100用户
add_users () {
a=1
useradd user$a
while ((a<100));do
let a++
useradd user$a
done
}


#添加group1到group100,并生成对应的用户user1到user100,让用户的过期时间在1天之后
add_groups () {
b=1
groupadd group$b
while ((b<100));do
let b++
groupadd group$b
useradd -g -e 'date -d day+1 +%F' user$b
done
}

#判断奇偶,生成用户或组
parity_create () {
IP=`cut -d" " -f1 /data/ip-online`
c=cut -d"." " " -f4 $IP
if [ $c%2=0 ]; then
add_users
echo "用户生成完成!"
else
add_groups
echo “用户和组生成完成!”
fi
}

ping_IP
parity_create
  1. 总结TCP/IP 三次握手,4次断开原理,重点是出现状态代表什么含义,需要画图


第三周_服务端

第一次握手:客户端给服务器发送一个SYN报文,并指明客户端并指明客户端的初始化序列号 ISN(c)。此时客户端处于 SYN_Send 状态。

第二次握手:服务器收到SYN报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s),同时会把客户端的 ISN+1作为 ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_REVD 的状态。

第三次握手:客户端收到SYN+ACK报文后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 establised 状态。

服务器收到 ACK 报文之后,也处于 establised 状态,此时,双方以建立起了链接。

第三周_服务端_02

第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于FIN_WAIT1状态。

第二次握手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值+1作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT状态。

第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于LAST_ACK 的状态。

第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值+1作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态

服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。​


  1. 总结OSI 7层模型及对应的协议,需要画图

第三周_序列号_03

第七层:应用层

应用层(Application Layer)提供为应用软件而设的接口,以设置与另一应用软件之间的通信。例如:HTTP、HTTPS、FTP、TELNET、SSH、SMTP、POP3、MySQL等。

第六层:表示层

表示层(Presentation Layer)把数据转换为能与接受者的系统格式兼容并适合传输的格式。

第五层:会话层

会话层(Session Layer)负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接。

第四层:传输层

传输层(Transport Layer)把传输表头(TH)加至数据以形成数据包。传输表头包含了所有使用的协议等发送信息。例如:传输控制协议(TCP)等。

第三层:网络层

网络层(Network Layer)决定数据路径的选择和转寄,将网络表头(NH)加至数据包,以形成报文。网络表头包含了网络数据。例如:互联网协议(IP)等。

第二层:数据链路层

数据链路层(Data Link Layer)负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成信息框(Data Frame)。数据表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。分为两个子层:逻辑链路控制(logical link control,LLC)子层和介质访问控制(Media access control,MAC)子层。

第一层:物理层

物理层(Physical Layer)在局部局域网上传送数据帧(Data Frame),它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、主机接口卡等。

  1. 搭建Yum/apt私服。
#安装htppd,打开httpd
[16:12:52 root@Rocky8] ~#yum -y install httpd
[16:52:26 root@Rocky8] ~#cd /var/www/html/
[16:52:45 root@Rocky8] /var/www/html#ls
[16:52:48 root@Rocky8] /var/www/html#systemctl enable --now httpd
#下载相关仓库包和元数据
[16:56:57 root@Rocky8] /var/www/html#yum reposync --repoid=epel --download-metadata -p /var/www/html/
#--download-metadata加此选项可以下载元数据

yum -y install httpd

第三周_序列号_04

cd /var/www/html/

第三周_客户端_05

systemctl enable --now httpd

第三周_客户端_06

yum reposync --repoid=epel --download-metadata -p /var/www/html/

第三周_服务端_07

第三周_服务端_08

标签:第三周,ACK,IP,报文,ping,序列号,客户端
From: https://blog.51cto.com/u_15748572/5893817

相关文章

  • 课设第三周
    本周计划完成的任务为继续寻找其他语言国密算法库。我们找到了go语言国密算法库tjfoc,Python语言国密算法库gmssl代码已上传至码云:https://gitee.com/Dragonsnow本......
  • 课设第三周进展
    课设第三周进展课设任务:进行C语言库的寻找1.tjfoc-gm算法库下载对应的安装包在官网找到对应的安装包(https://golang.google.cn/dl/)下好包之后直接unzip安装就好配置......
  • 课设第三周进度
    学习进展本周学习并安装配置了两个JavaScript语言下的密码算法库一、Node.js+gm-crypto博客链接Node.js+gm-crypto二、sm-crypto博客链接sm-crypto......
  • 第三周课程设计进展——基于java语言的国密算法库编译测试
    本周计划完成的任务本周实际完成情况(代码,文档,程序运行截图...),未完成计划的原因?如何改进?本周遇到的问题与解决过程(要详细)本周计划完成的任务给openeuler配置java......
  • Jenkins服务器的部署与简单使用(第三周)
    Jenkins安装安装依赖:https://www.jenkins.io/zh/doc/book/installing/    #CPU、内存、磁盘安装Java8、在2.361.1及以上版本开始要求Java11:aptinstallopenj......
  • 编程路-基础提升-第三周-01
    循环语句是编程类语言中不可缺少的部分,了解和熟悉循环语句,有利于快速编程。根据逻辑关系,调整循环嵌套同级的关系什么是循环:循环是重复发生的过程线性可变的是循环,否则就......
  • Leetcode刷题第三周
    字符串:反转字符串344classSolution{publicvoidreverseString(char[]s){//左右指针intleftNode=0;intrifhtNode=s.lengt......
  • 第三周总结
    WEEK8WEEK9CONCLUSION1CONCLUSION2......
  • 第三周
    标签选择器(分组选择器)div{}->选中所有的<div></di>标签使用:去掉某些标签的默认样式时复杂选择器中,如层次选择器群组选择器通过逗号的方式,给多个不同的选......
  • python第三周
    print("今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?\n")#输入一个数number=int(input("请输入您认为符合条件的数:"))#判断是否符合条......