第3次作业

尝试基于gcc命令说明 c语言编译过程。

   对hello.c进行预处理,生成hello.i文件
   gcc -E hello.c -o hello.i  
   对预处理文件进行编译,生成汇编文件
   gcc -S hello.i -o hello.s
   对汇编文件进行编译,生成目标文件
   gcc -C hello.s -o hello.o
   对目标文件进行链接,生成可执行文件
   gcc hello.o -o hello

也可直接编译链接生成可执行文件

   gcc hello.c -o hello

总结程序包管理器有哪些,以及包中包含什么内容的文件,尝试这些文件如何获取命令获取?

主流程序包管理器

redhat:rpm文件、rpm包管理器

debian:deb文件、dpkg包管理器

程序包管理器包内文件

1、二进制文件 2、库文件 3、配置文件 4、帮助文件

总结程序包获取途径,以及rpm, yum, apt命令选项示例。

程序包只要是来自国内的镜像源,比如阿里,清华等镜像源。在本地机器上配置了仓库之后,就直接可以通过,yum/dnf/apt命令对所需要的程序包进行下载安装。

rpm常用选项
rpm -ivh //显示安装进度
-q 查看安装的包名
-ql 详细显示安装的包的list
-qi 查看包的版本、包名、版本、安装时间、发行者、功能
-qf 反向查询文件来自哪个包
例如:rpm -qf /etc/passwd
-K 检查包
-e 卸载

yum常用选项
yum provides */route 已知文件名路径,查找出对应的软件仓库
yum [options] [command] [package …]
yum -y 忽略询问安装进度
yum install 安装软件工具
yum info 查询软件详细信息
yum remove 卸载程序包
yum -y install --downloadonly --downloaddir=/data/httpd httpd 只下载相关依赖包不安装
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] 清除缓存
yum makecache 构建缓存
yum history 安装历史

yum包索引配置文件路径 /etc/yum.repos.d/

apt常用选项
apt install 安装
apt show 显示安装细节
apt list 列出包含条件的包
apt remove/purge 卸载(推荐使用purge卸载,可移除软件包和配置文件)
apt update 刷新存储库索引
apt upgrade 升级所有可升级的软件包
apt full-upgrade 在升级软件包时自动处理依赖关系
apt search 搜索应用程序
apt-cache stats 查看包相关信息
dpkg -S filename 查找存在的文件来自于哪个包

apt包索引配置文件路径
/etc/apt/source.list
/etc/apt/source.list.d

简要总结yum/dnf工作原理。并搭建私有yum仓库(base, epel源)给另一个虚拟机使用。

yum服务器存放rpm包和相关包的元数据库

yum客户端访问yum服务器进行安装和查询等

在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装包时,会自动下载repodata中的元数据,查询元数据是否存在相关的包及依赖关系,自动从仓库中找到相关的包下载并安装。

私有yum配置仓库

[BaseOS]
name=BaseOS
baseurl=file:///misc/cd/BaseOS
        https://mirror.tuna.tsinghua.edu.cn/centos/8/BaseOS/x86_64/os/
        https://mirrors.huaweicloud.com/centos/8/BaseOS/x86_64/os/
        https://mirrors.cloud.tencent.com/centos/8/BaseOS/x86_64/os/
        https://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/
gpgcheck=0

[AppStream]
name=AppStream
baseurl=file:///misc/cd/AppStream
        https://mirror.tuna.tsinghua.edu.cn/centos/8/AppStream/x86_64/os/
        https://mirrors.huaweicloud.com/centos/8/AppStream/x86_64/os/
        https://mirrors.cloud.tencent.com/centos/8/AppStream/x86_64/os/
        https://mirrors.aliyun.com/centos/8/AppStream/x86_64/os/
gpgcheck=0


[epel]
name=EPEL
baseurl=https://mirror.tuna.tsinghua.edu.cn/epel/$releasever/Everything/$basearch
        https://mirrors.cloud.tencent.com/epel/$releasever/Everything/$basearch
        https://mirrors.huaweicloud.com/epel/$releasever/Everything/$basearch
        https://mirrors.aliyun.com/epel/$releasever/Everything/$basearch
gpgcheck=0
enabled=1
 

总结系统安装之后的常用初始化步骤。rocky/ubuntu

rocky常用初始化步骤:

关闭SELinux
关闭防火墙
修改网卡名称为 eth0
配置仓库,系统源和epel源
安装常用软件


Ubuntu常用初始化步骤

添加root用户
修改ssh配置文件,允许ssh连接
关闭SELinux
关闭防火墙
修改网卡名称为 eth0
配置仓库,系统源和epel源
安装常用软件
 

解读一键安装httpd脚本,并自行实现一个一键安装脚本,要求

1.物理层
    物理层用于建立维护断开物理连接,主要是网线,中继器,调制解调器等。
2.数据链路层
    数据链路层的主要功能就是合成数据块,封装成帧与其他计算机进行通信的APP应用程序,支持APP应用程序的通信服务,同时通过端口与端口之间连接,进行物理寻址。寻找MAC地址。数据链路层主要设备是交换机。
3.网络层
   网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向传输层提供最基本的端到端的数据传送服务,网络层进行逻辑地址寻址,实现在不同网络的选择。主要的设备是路由器。
4.传输层
    传输层位于网络层与会话层之间,传输层在终端用户之间提供透明的数据传输,向上层提供可靠的数据传输服务。传输层在给定的链路上通过流量控制、分段/重组和差错控制来保证数据传输的可靠性。里面有TCP协议,保证传输的稳定安全,UDP协议,保证传输的速度。主要的设备是防火墙。
5.会话层
     位于传输层与表示层之间,主要的功能是对话管理,数据流同步和重新同步。主要的工具像QQ,微信。
6.表示层
     位于会话层与应用层之间,表示层向上对应用层服务,向下接受来自会话层的服务。表示层为在应用过程之间传送的信息提供表示方法的服务,它只关心信息发出的语法和语义。 
7.应用层
    应用层其功能为“处理”,即通过云计算平台进行信息处理。应用层与最低端的感知层一起,是物联网的显著特征和核心所在,应用层可以对感知层采集数据进行计算、处理和知识挖掘,从而实现对物理世界的实时控制、精确管理和科学决策。

调整动态端口范围为20000-60000

临时改变端口的范围

echo 20000 60000 > /proc/sys/net/ipv4/ip_local_port_range

永久性改变端口的范围

vim /etc/sysctl.conf

net.ipv4.ip_local_port_range=20000 60000

总结TCP包头结构,TCP三次握手,4次挥手。

TCP包头结构

源端口(16位):标识发送方主机中的应用程序使用的端口号;
目的端口(16位):标识接收方主机中的应用程序使用的端口号;
序列号(32位):标识本次连接中,发送方发送的第一个数据包的编号;
确认号(32位):标识本次连接中,接收方期望接收的下一个数据包的编号;
段头长度(4位):指示TCP头部数据的长度,用于确定数据位置;
确认ACK(1位):表示ACK确认字段是否有效;
同步SYN(1位):表示序列号字段是否有效;
终止FIN(1位):表示请求终止TCP连接;
紧急URG(1位):表示指示是否有紧急数据;
窗口大小(16位):用于流量控制,标识接收方当前可接收数据的缓冲区大小;
校验和(16位):包头和数据的检验和;
紧急指针(16位):表示需要被优先处理的紧急数据的位置。

TCP三次握手

第一次握手:
客户端将TCP报文标志位SYN置为1,随机产生一个序号值seq=J,保存在TCP首部的序列号(Sequence Number)字段里,指明客户端打算连接的服务器的端口,并将该数据包发送给服务器端,发送完毕后,客户端进入SYN_SENT状态,等待服务器端确认。

第二次握手:
服务器端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务器端将TCP报文标志位SYN和ACK都置为1,ack=J+1,随机产生一个序号值seq=K,并将该数据包发送给客户端以确认连接请求,服务器端进入SYN_RCVD状态。

第三次握手:
客户端收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给服务器端,服务器端检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,客户端和服务器端进入ESTABLISHED状态,完成三次握手,随后客户端与服务器端之间可以开始传输数据了。

四次挥手

第一次挥手:
Client端发起挥手请求,向Server端发送标志位是FIN报文段,设置序列号seq,此时,Client端进入FIN_WAIT_1状态,这表示Client端没有数据要发送给Server端了。

第二次分手:
Server端收到了Client端发送的FIN报文段,向Client端返回一个标志位是ACK的报文段,ack设为seq加1,Client端进入FIN_WAIT_2状态,Server端告诉Client端,我确认并同意你的关闭请求。

第三次分手:
Server端向Client端发送标志位是FIN的报文段,请求关闭连接,同时Client端进入LAST_ACK状态。

第四次分手:
Client端收到Server端发送的FIN报文段,向Server端发送标志位是ACK的报文段,然后Client端进入TIME_WAIT状态。Server端收到Client端的ACK报文段以后,就关闭连接。此时,Client端等待2MSL的时间后依然没有收到回复,则证明Server端已正常关闭,那好,Client端也可以关闭连接了。

解析/etc/sysconfig/network-scripts/ifcfg-eth0配置格式。

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=192.168.10.10
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
DNS1=8.8.8.8
DNS2=8.8.4.4

DEVICE:网卡的设备名(接口名称),比如 eth0、enp3s0 等;
TYPE:网卡类型,通常指 Ethernet;
ONBOOT:开机是否启用该网络接口,值为 yes 或 no;
NM_CONTROLLED:是否使用 NetworkManager 管理网络连接,值为 yes(使用)或 no(不使用);
BOOTPROTO:引导时是否自动配置网络,值可以为 static(静态 IP)、dhcp(动态 IP)或 none(不自动配置);
IPADDR:静态 IP 地址;
PREFIX:子网掩码二进制位数,如 /24(等价于子网掩码为 255.255.255.0);
NETMASK:子网掩码,比如 255.255.255.0;
GATEWAY:默认网关;
DNS1 和 DNS2:首选和备选 DNS 服务器 IP 地址。
 

基于配置文件或命令完成bond0配置

编辑 /etc/sysconfig/network-scripts/ifcfg-bond0 文件

DEVICE=bond0
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
BONDING_OPTS="mode=1 miimon=100"
ONBOOT=yes

然后配置eth0,eth1配置文件

DEVICE=eth0
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

DEVICE=eth1
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

 通过ifconfig命令结果找到ip地址


使用脚本判断 你主机所在网络内在线的主机IP有哪些? ping通则在线。

使用while read line和/etc/passwd,计算用户id总和。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值