首页 > 其他分享 >第三周

第三周

时间:2023-07-24 15:47:59浏览次数:31  
标签:10.0 服务器端 seq ACK 第三周 root 客户端

1、yum私有仓库的实现及博客输出

基于eple的私有yum源

(1)在10.0.0.8主机上配置好yum仓库

pC7aS10.png

pC7dXzq.png

(2)安装httpd,并开启httpd服务

[root@rocky9 ~]#dnf -y install httpd
#(输出结果省略…)
[root@rocky9 ~]#systemctl enable --now httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
#访问游览器地址:
http://10.0.0.8/

pC7d1MV.png

(3)下载软件包到/var/www/html/路径下

[root@rocky9 ~]#dnf reposync --repoid=epel --download-metadata -p /var/www/html/
#(输出结果省略…)
[root@rocky9 html]#ls
epel
[root@rocky9 html]#ls epel/
Packages  repodata
#访问游览器地址:
http://10.0.0.8/epel/

pC70uj0.png

(4)在另一台主机(10.0.0.130)yum仓库配置为:http://10.0.0.8/epel/

pC7wq0O.png

总结:

1、(10.0.0.8)配置好yum仓库
2、安装httpd,并开启httpd服务
3、下载软件包到指定的路径
4、(10.0.0.130)yum仓库配置为http://10.0.0.8/epel/

2、阅读《图解TCP/IP》一书,地址:https://leon-wtf.github.io/doc/图解TCPIP.pdf

3、画图 TCP协议和三次握手及四次挥手

TCP三次握手

TCP是一种面向连接的协议,它在数据传输前会先建立连接,这个过程就叫三次握手。三次握手是指在建立TCP连接时,客户端和服务器之间需要进行三次数据交换来确认彼此的身份和同步连接状态。下面是三次握手的详细过程:

pCHcV7q.png

#第一次握手(SYN=1,seq=x)
客户端发送一个TCP的SYN标志位置1的包,指明客户端打算连接的服务器的端口(请求同步),并选择序号seq=x,表明传送数据是的第一个数据字节的序号是x。(seq是个随机值)。
发送完毕后,客户端进入SYN_SEND状态。
#第二次握手(SYN=1,ACK=1,seq=y,ack=x+1)
服务器的TCP收到连接请求报文段后,如同意,则发回确认包(ack)应答。即SYN标志位和ACK标志位均为1。服务器端选择自己ISN序列号(随机值y),放到seq域里,同时将确认序列号ack设置为客户的ISN加1,即x+1(即回复对方确认收到了序列号为x开始的包,且希望下次的数据从x+1的位置开始)。
发送完毕后,服务器端进入SYN_RCVD状态。
#第三次握手(ACK=1,ack=y+1,seq=x+1)
客户端收到此报文段后再次发送确认包(ACK),SYN标志位为0,ACK标志位为1,并且把服务器发来ACK的序列号字段+1,放在确认字段ack中发送给对方,并且告诉服务器直接的seq=x+1。
发送完毕后,客户端进入ESTABLISHED状态,当服务器端接收到这个包时,也进入ESTABLISHED状态,TCP握手结束。

TCP四次握手

TCP的四此握手是指在断开连接时,客户端和服务器之间需要进行四次数据交换来确认彼此的身份和同步连接状态。下面是四次握手的详细过程。

pCHceA0.png

#第一次握手(FIN=1,seq=u)
假设客户端想要关闭连接,客户端发送一个FIN标志位置为 1 的包,表示自己已经没有数据可以发送了,但是仍然可以接受数据。因为有可能服务器还要发送数据,所以发送自己的序列号seq=u,等待服务器确认。
发送完毕后,客户端进入FIN_WAIT_1状态。
#第二次握手(ACK=1,seq=v,ack=u+1)
服务器端确认客户端的FIN包,发送一个确认包(ACK=1(确认),seq=v(自己的序列号),ack=u+1(确认收到序列号u以前的包,并希望下次发送数据从u+1开始),表明自己接受到了客户端关闭连接的请求,但还没有准备好关闭连接(可能有数据发送)。
发送完毕后,服务器端进入CLOSE_WAIT状态,客户端接收到这个确认包之后,进入FIN_WAIT_2状态,等待服务器端关闭连接。
在这过程中TCP服务器进程会通知高层应用进程。然后从客户端到服务器这个方向的连接就释放了,TCP连接处于半关闭状态。但是服务器若发送数据,客户端仍要接收。
#第三次握手(FIN=1,ACK=1,seq=w,ack=u+1)
若服务器已经没有要向客户端发送的数据,其应用进程就通知TCP释放连接。
服务器端准备好关闭连接时,向客户端发送结束连接请求FIN置为 1,ACK=1,seq=w(有数据发送过),ack=u+1。
发送完毕后,服务器端进入LAST_ACK状态,等待来自客户端的最后一个ACK。
#第四次握手(ACK=1,seq=u+1,ack=w+1)
客户端接收到来自服务器端的关闭请求,发送一个确认包(在确认报文段中ACK=1,确认号ack=w+1,自己的序号seq=u+1),并进入TIME_WAIT状态,等待可能出现的要求重传的ACK包。(这个确认包是内核进行发送的,上面不能发数据的是客户端的send函数)
服务器端接收到这个确认包之后,关闭连接,进入CLOSED状态。
客户端等待了某个固定时间(两个最大段生命周期,2MSL,2 Maximum Segment Lifetime)之后,没有收到服务器端的ACK,认为服务器端已经正常关闭连接,于是自己也关闭连接,进入CLOSED状态。

4、静态配置网卡IP,centos/ubuntu实现

(1)修改网卡名

#CentOS6修改网卡名
[root@CentOS6 ~]# vim /etc/udev/rules.d/70-persistent-net.rules
[root@CentOS6 ~]#reboot
#Ubuntu修改网卡名
root@Ubuntu2204:~# vim /etc/default/grub	
> GRUB_CMDLINE_LINUX=net.ifnames=0
root@Ubuntu2204:~# grub-mkconfig -o /boot/grub/grub.cfg
root@Ubuntu2204:~# reboot
#Rocky修改网卡名
[root@rocky9 ~]#vim /etc/default/grub
> GRUB_CMDLINE_LINUX=net.ifnames=0
[root@rocky9 ~]#grub2-mkconfig -o /boot/grub2/grub.cfg
[root@rocky9 ~]#reboot

(2)网卡配置启用

#CentOS/Rocky网卡配置启用
[root@rocky9 ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
BOOTPROTO=static
IPADDR=10.0.0.8
PREFIX=24
GATEWAY=10.0.0.2
DNS1=10.0.0.2
DNS2=180.76.76.76
[root@rocky9 ~]#nmcli connection reload 
[root@rocky9 ~]#nmcli connection up eth0
#Ubuntu网卡配置启用
root@Ubuntu2204 netplan]#vim 00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
  renderer: networkd
  ethernets:
    eth0:
      addresses: [10.0.0.10/24]
      gateway4: 10.0.0.2
      nameservers:
        addresses:
        - 114.114.114.114
        - 223.5.5.5
          
  version: 2
  root@Ubuntu2204 netplan]#netplan apply
#CentOS网卡配置各参数说明
TYPE:			接口类型,常见有Ethernet,Bridge
BOOTPROTO:		激活设备时使用的配置协议,常见有dhcp,static,none
NAME:			此配置文件应用到的设备
UUID:			设备的唯一标识
DEVICE:			设备名
ONBOOT:			系统引导时是否激活设备
IPADDR:			IP地址
PREFIX:			子网掩码
GATEWAY:		网关
DNS1:			第一个DNS服务器地址
DNS2:			第二个DNS服务器地址

#Ubuntu网卡配置各参数说明
network:		表示一下配置是网络配置
renderer:		这是拥于应用配置的后端。可以是networkd(适用于服务器)或者Network Manager(适用于桌面)
ethernets:		表示一下内容是以太网接口的配置
eth0:			网络接口名称
addresses:		IP地址和子网掩码
gateway4:		IPV4的默认网关
nameservers:	表示一下内容是DNS配置
addresses:		NDS服务器地址
version:		这是Netplan配置的版本。当前可用的版本有1和2

(3)各版本修改网卡生效命令

#CentOS6
service network restart 
#CentOS7
systemctl restart network
#CentOS8/Rocky
nmcli connection reload
nmcli connection up eth0
#Ubuntu
netplan apply

#通用
reboot

5、实现免密登陆脚本, expect登陆远程主机,将生成的密钥写入到目标主机, expect测试远程登陆。

1)通过shift读取脚本参数
2)通过select来选择功能.例如功能有

  • 安装mysql
  • 安装apache
  • 免密钥登陆主机
    当前我们只实现免密钥登陆主机
    3)通过函数封装每个功能
    4)将免密钥登陆的过程可以重复进行, while 循环实现重复,需要有退出过程。当用户输入exit时,退出免密钥功能。
    5)支持输入一批主机免密钥,使用数组 实现
#!/bin/bash
#
#********************************************************************
#Author:            lushun
#WeChat:            _lushun
#Date:              2023-07-24
#FileName:          expect8.sh
#URL:               https://www.cnblogs.com/lu-shun/
#Description:       The test script
#Copyright (C):     2023 All rights reserved
#********************************************************************
ssh_keygen(){
USER=root
PASSWORD=lushun
NET=10.0.0.
ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa
for i in {1..254};do
    {
    hosts[$i]=$NET$i
        expect <<EOF
                set timeout 20
                spawn ssh-copy-id ${hosts[$i]}
                expect {
                        "yes/no" { send "yes\n" ; exp_continue }
                        "password" { send "$PASSWORD\n" }
                }
                expect eof
EOF
}&
done

}
ssh_host(){
while true;do
    read -p "请输入要远程的主机IP地址,退出请输入exit " SELECT
    if [[ $SELECT =~ ^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]];then
        ssh root@$SELECT
    elif [[ $SELECT = "exit" ]];then
        exit
    else
        echo "请重新输入"
    fi
done
}

install_mysql(){
    . /etc/os-release
    if [ $ID="rocky" -a $ID="centos" ];then
    yum install -y mysqld
    elif [ $ID="ubuntu" ];then
    apt install -y httpd
    else
    echo "不支持的系统"
    fi
}

install_apache(){
    . /etc/os-release
    if [ $ID="rocky" -a $ID="centos" ];then
    yum install -y apache
    elif [ $ID="ubuntu" ];then
    apt install -y apache
    else
    echo "不支持的系统"
    fi
}

ps3="请输入你的选择(1-4)"{
select MENU in 安装mysql 安装apache 密钥推送 远程主机 退出;do
case $REPLY in
1)
    install_mysql
;;
2)
    install_apache
;;
4)
    ssh_host
;;
3)
    ssh_keygen
;;
5)
    break
;;
esac
done
}
menu

标签:10.0,服务器端,seq,ACK,第三周,root,客户端
From: https://www.cnblogs.com/lu-shun/p/17577367.html

相关文章

  • 第三周
    作业yum私有仓库的实现及博客输出服务端配置:[MIDP-PUB-VM-E2-YUM001~]#yuminstall-yhttpd[MIDP-PUB-VM-E2-YUM001~]#systemctlenable--nowhttpd#挂载光盘,创建Base仓库目录并将光盘中的软件包复制到Base仓库目录中[MIDP-PUB-VM-E2-YUM001~]#mount/dev/sr0/mnt[M......
  • 7.22第三周总结
    这个星期,做了一下小活动。月底开始了我的暑期实践活动。最大的感受是,这个社会上有不少人有很大的毛病,但是与人为善的人要更多写。一些公司的白领,住在高档小区的剧名,素质都很高,餐品送达后会道谢,但是在住在路边简陋的屋子了的人对配送员的态度就不好,总是挑三拣四,可见人之间的距离还......
  • 暑假第三周总结
    交代一下最近的动态,今天是回家的第二周了,我找到了一份暑假工,开始一边打工赚钱,一边减肥的生活。在回家的这段时间里面,我重新学习了一下尚硅谷的javaweb教程,在视频讲解中,我学习到了很多之前不会的内容,也开始逐渐减少对jsp文件的依赖,开始学习servlt的相关内容(之前对于这方面的认知仅......
  • 第三周总结
      这周去青岛旅游了。。。^.^ ......
  • 暑假第三周
    [湖湘杯2018]Replace先脱壳直接定位到加密函数提取byte_40150,byte_402151和byte_4021A0数据,照着写解密脚本,直接爆破expdata=[0x32,0x61,0x34,0x39,0x66,0x36,0x39,0x63,0x33,0x38,0x33,0x39,0x35,0x63,0x64,0x65,0x39,0x36,0x64,0x36,0x64......
  • 省选计划(第三周)
    知识回顾:巩固:概率DP,错排,组合数深入研究:组合数,后缀数组,tarjan,2-SAT简单了解/没学明白:练题:[ABC280F]PayorReceive概率DP。定义\(f_i\)为把怪物打成i滴血的期望攻击次数。令\(p=\frac{p}{100}\)。则\(f_i=f_{i+2}\cdotp+f_{i+1}\cdot(1-p)+1\)。最终......
  • 第三周 七月十三日
    今天是当家教的第一天4,5,6,7年纪表现良好,和我保持了很好的互动性8年纪的同学是不是有点太腼腆了,怎么没有人和我说话啊???好压抑中午就我蒸的一锅米饭熟了一锅还有好多水另一锅米饭夹生我炒了炒夹生的米饭结果米饭糊了幸好我们未雨绸缪提前买了很多馒头而且家长也过来帮忙......
  • 第三周 七月十四日
    今天是当家教的第二天先说总结中午因为家长的无私奉献午饭没有出任何差错了哎你大爷还是你大爷其他年级还是表现很好我教的数学完全没有问题初二的也因为关系熟了上课也不是太压抑了都说物理数学讲的快  理科的东西太简单了完全没有难度学会了就开下一节了讲物理......
  • 第三周 七月十五日
    今天是当家教的第三天家长还是发挥稳定中午饭菜没有出现任何问题今天算了一下饭费一个月一个学生150感觉要的太少了我们每天吃饭的成本和收的钱几乎一样但是由于是家长做饭没有要人工费所以实际收费应该更高所以又草率了麻烦家长啦今天讲物理物态变化好简单啊家长......
  • 第三周 七月十一日
    今天在咸鱼上买的桌子到了,将所有的桌子擦洗干净,将屋子彻底腾出来按照年级摆放好中午在菜市场买的一次性筷子和饭盒晚上自己用高压锅学着蒸米饭,为接下来的做饭做好准备暑假家教生活马上就要开始了......