第三周作业

首先tcp三次握手是由客户机(图中1)主动向服务器(图中2)发起请求.其过程是a(SYN=1,seq=x)客户机向服务器发送数据报文 ,seq就是a发送的包数,这是第一次请求。

第一次请求到达服务器以后,服务器收到会立即回复一个请求,也就是b过程(SYN=1,ACK=1 seq=y ack=x+1)SYN与ACK=1表示客户端的数据报文服务器收到了。ack是确认号表示a过程的数据包服务器收到了,希望下次客户端发送x+1.b过程的seq是服务器自己的包数编号。这是第二次请求。

客户机收到请求后,还会发生一次请求(第三次请求) 最后确认一下 ACK=1,seq=x+1(第二次请求服务器希望发送的包数(ack=x+1)) ack=y+1(第二次请求服务器发送了向客户机seq=y,客户机回答ack=y+1,代表客户端收到了服务器的seq=y)。这是第三次请求。

在三次请求完成后客户端与服务器建立连接。这就是tcp的三次握手。

    

状态切换分析

在客户端发送第一次请求之前是关闭状态。而服务器要想接受客户端的请求必须处于监听状态(listen)一旦客户端发送第一次请求,服务器接受到后向客户端发送请求的这一阶段。客户端都处于SYN-SENT阶段。服务器在发送第二个请求到没有接受到第三个请求之前都处于SYN-RCVD阶段。然后客户端接受到服务器发送的请求,立即发送第三次请求之后就进入了ESTAB-LISHED(已建立连接状态)。而服务器收到第三次请求之后,也进入了ESTAB-LISHED状态。

tcp四次挥手

 tcp四次挥手(双方都可以主动发送关闭请求,下面以客户端发送关闭请求为例)

首先,客户端发送关闭请求FIN=1,seq=u(FIN是数据报文,seq是客户端的包号),然后服务器接受到后立即回复请求ACK=1,seq=v,ack=u+1(ACK=1表示收到信息,seq=v是服务器的包数,ack=u+1是代表收到信息,希望下次发u+1)。在客户端收到回复之后,会有一段时间发送遗留数据。数据发送完之后,服务器在发出请求FIN=1,ACK=1,seq=w,ack=u+1。客户端接受到请求后回复ACK=1,seq=u+1,ack=w+1。服务器接受到回复后。双方都已经关闭。完成四次挥手。 

补充在第二次挥手与第三次挥手中间的数据传输是单向的,因为被动接受的一方不知道这个请求就可能留有残留的数据,而主动发出请求的一方则没有数据残留的问题。

四次挥手的状态切换

在客户端发送关闭请求前,客户端与服务端都处于ESTAB-LISHED状态。客户端发送第一次请求后客户端立即进入FIN-WAIT-1(终止等待1)的状态。服务端接受请求并回复之后,立即进入CLOSE-WAIT(关闭等待)的状态。客户端收到回复之后会立即进入FIN-WAIT-2(终止等待2)的状态。服务器再次发出请求之后,服务端进入LAST-ACK状态(最后确认状态),服务端再次发送请求,客户端接受并回复,客户端同时进入TIME-WAIT(时间等待)状态,时间是2MSL(最大数据段生存时间)。TIME-WAIT结束后客户端关闭连接。而服务端收到回复之后断开连接。完成四次挥手。

静态配置网卡ip

ubuntu

首先先看一下ubuntu自带的网卡名与ip

这个ens33的网卡名在更换网卡的时候可能会被更换掉,因为我们要把他改成类似eth0这个样式的网卡名。 

进入文件配置网卡名的命令

vi  /etc/default/grub

  或者使用sed命令来修改

sed -i.bak '/^GRUB_CMDLINE_LINUX=/s#"$#net.ifnames=eth0"#' /etc/default/grub

然后生成新的grub.cfg文件

grub-mkconfig -o /boot/grub/grub.cfg,效果如图所示

或者使用以下命令

 update-grub

grep net.ifnames /boot/grub/grub.cfg

然后重启登录查看网卡名


 

改了网卡名,而配置里还是ens33导致配置和网卡名不匹配,所以eth0没有启动 。因此下面我们要配置ip,网关的配置。

网卡的相关配置必须使用yaml格式,必须以 /etc/yaml/netplan/xxx.yaml的文件名称来存放网卡的配置。程度

vim 00-installer-config.yaml


 

然后netplan apply生效。改完之后eth0就可以启动然后进行远程连接。

 可以根据自己的配置来自己改。

yum私有仓库的实现

首先要想建立私有仓库点配置好yum文件

安装httpd服务

yum install -y httpd

然后启动httpd服务

systemctl enable --now httpd
进入httpd的共享文件夹 /etc/www/html/

写一个共享文件测试httpd是否可以共享。

 测试成功

然后使用以下命令将epel源下载的东西存放在  /var/www/html下

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

然后就可以通过浏览器查看共享文件了

这样yum私有仓库就创建完成了。 

脚本实现ssh免密远程登录

#!/bin/bash
color () {
        RES_COL=60
        MOVE_TO_COL="echo -en \\033[${RES_COL}G"
        SETCOLOR_SUCCESS="echo -en \\033[1;32m"
        SETCOLOR_FAILURE="echo -en \\033[1;31m"
        SETCOLOR_WARNING="echo -en \\033[1;33m"
        SETCOLOR_NORMAL="echo -en \E[0m"
        echo -n "$1" && $MOVE_TO_COL
        echo -n "["
        if [ $2 = "success" -o $2 = 0 ] ;then
                ${SETCOLOR_SUCCESS}
                echo -n $" ok "
        elif [ $2 = "failure" -o $2 = "1" ] ;then
                ${SETCOLOR_FAILURE}
                echo -n $"FAILED"
        else
                ${SETCOLOR_WARNING}
        fi
        ${SETCOLOR_NORMAL}
        echo -n "]"
        echo
}
 
#实现ssh自动登录
ssh_host() {
USER=root
PASSWORD=123456
while true;do
    read -p "请输入ip(q退出):" IP
        [[ $IP =~ ^(q|Q)$  ]] && exit;
        [[ $IP =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]] || { echo "IP不合法,请重新输入";continue; }
        break;
done
#read -p "请输入用户名:" USER
#read -p "请输入密码:" PASSWORD
expect <<EOF
set timeout 20
spawn ssh-copy-id $IP
expect {
    "yes/no" { send "yes\n";exp_continue }
    "password" {send  "$PASSWORD\n" }
}
expect eof
EOF
 
#while true;do
    read -p "是否继续登录$IP(y/q):" Y
          [[ $Y =~ y|Y ]]    && ssh $IP || continue;
        [[ $Y =~ q|Q ]] && break
}
#菜单
menu() {
while true;do
    PS3="请输入指令(1-4):"
    select MENU in 安装mysql 安装apache 免密登录远程主机 退出脚本;do
        case $REPLY in
            1)
                install_mysql
                break
                ;;
            2)
                install_apache
                break
                ;;
            3)
                ssh_host
                break
                ;;
            4)
                echo 退出!
                exit
                ;;
    esac
    done
done
}
menu

效果如图所示

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值