网络基础和 Linux
一、网络基础
1.网络的基本概念
(1)OSI七层模型和 TCP/IP的五层模型 (掌握)
物理层
物理网络传输的介质 网线 、modem、 光纤等
数据链路层
打包数据 bit组成byte,byte组成帧,Mac地址(每台网络设备网卡-全球唯一的地址) ARP RARP协议
网络层
通过IP地址进行寻址,通过路由找到目标地址
传输层
知道ip和mac就可以传输数据,TCP和UDP,建立一个连接
会话层
建立、管理和维护会话 session
表示层
数据格式转换、数据加密
应用层
为应用提供的服务 App
(2) mac地址-物理地址(了解)
mac地址与ip地址的区别?
mac地址设备的物理地址,是全球唯一的
ip地址外网ip地址不能冲突,不同的局域网中ip可能会重复
(3)三层设备路由器和二层设备交换机的区别?(了解)
三层设备 网络层
二层设备 数据链路层
交换机构建一个局域网,不能保证上外网
路由器(都有交换器的功能LAN口),可以上外网
(4) IP地址一些概念(了解)
a、IPV4和IPV6的区别?
ipv4 0-255由4段组成一个数 212.12.45.128 42亿
ipv6 16位的16进制数8段构成 aaab:1999:0f4f:aaaa:bbbb:cccc:dddd:1111
b、ip地址的分类
ip构成: 212.12.45.128 网络地址+主机地址
A类地址 网络地址最高位必须是0 00000001 - 01111111 1-126
123.4.5.6
子网掩码 255.0.0.0 (通过ip判断是否在同一个网络中)
123.0.3.5 123.6.18.222
==》123.0.0.0 123.0.0.0 一个网络容纳1600多万主机
B 一个b类的地址有2个字节表示网络地址,2个字节表示主机地址, 网络地址最高位10开头
默认的子网掩码 255.255.0.0
C 3个字节网络+1个字节的主机地址 255.255.255.0
D 广播地址 1110开头
E 保留地址 11110开头
2.网络的协议(掌握)
(1)什么叫网络协议?
在网络通讯中,通讯的双方约定一种数据定义和解析方式
(2)有哪些网络协议
HTTP、 HTTPS、 FTP、TCP 、UDP、SMTP/POP3、DNS 、DHCP、ARP、IP等
(3)网络协议在osi模型中的位置(重点)
应用层 – http telnet ftp dns smtp/pop3、dhcp
传输层 — tcp udp
网络层 — ip icmp(ping)
数据链路层 – arp 、 rarp
物理层 – pam5协议
(4)网络协议的功能(重点)
-
http协议特点
无状态 服务器默认不会存储http请求的状态信息,开发中使用session或者token
session创建完成后,服务器需要使用资源维护该session
而token创建完服务器不需要维护,从客户端返回只需要按照一定的算法对token进行解密,发现token是合法的,就代表该用户是登录用户,可以进行相应的操作
无连接 http1.0
-
http1.0 1.1 2.0等区别
http1.0 使用了短链接 ,传输是文本形式
http1.1 默认使用长连接,传输也是二进制形式
http2.0默认使用长连接,传输使用二进制形式,可以异步分段传输
-
tcp长连接和短链接
tcp长连接就是在三次握手之后传输数据后不断开,可以继续传输数据
短链接 在传输数据之后立即断开连接,再次传输的时候需要再一次三次握手
长连接和短链接的优缺点
在只需要传输一次的时候,使用短链接,不会占用网络或者服务器的资源
长连接的省略了每次的三次握手四次挥手,省了时间占用了资源
-
http和https协议
https使用ssl ,使用安全证书(需要购买的),使用公钥和私钥,非对称密码
http 80端口 https 443端口
http 不安全 https相对安全
http相对效率高一些,https相对效率低一些
-
tcp的三次握手和四次挥手(重点)
tcp协议执行过程
建立连接(三次握手)
为什么是三次连接而不是二次连接?
避免由于网络问题造成的重复连接
传输数据
断开连接
-
tcp和udp协议的区别
tcp 基于可靠连接 ,保证数据的准确性和完整性
三次握手和四次挥手
效率低一些
主要的应用: 文件的传输、 聊天、网页浏览
udp 不可靠连接,不能保证数据的准确性和完整性
直接传输连接
效率高一些
主要的应用: 视频通话,浏览视频,语音通话
-
ftp 文件传输协议
-
smtp/pop3 邮件发送/接收 javamail
-
dns
域名解析协议 在网络访问中,是不能通过域名直接访问到服务器,真正访问服务器只能通过ip地址
在通过域名进行访问时,首先把请求发送给dns服务器(域名—ip地址),把IP地址返回,再一次通过ip地址发送请求
-
dhcp
动态分配ip地址
-
arp协议
ip地址===》mac地址
arp攻击
- ip协议
3.网络常用的命令
ping命令 ping + ip地址或域名 测试是否联通
ipconfig /ifconfig 查看本机的网络基本信息
netstat 查看网络状态
mysql 3306
tomcat 8080
telnet 远程登录
二、Linux
1.linux基本简介(了解)
linux操作系统,类似windows ,作者linus,开发linux基于unix,基于GPL,开源免费软件, git
unix linux windows solaris mac os 操作系统
基于linux开发 (使用多些)
centos7 开源免费
debian
ubuntu
red hat linux 商用版 ,收费(服务费)
android
基于windows
windows server2008 2016 (使用量不是太多)
为什么在桌面服务端使用linux比windows多?
(1)收费
(2)linux无UI,windows有UI,会占用服务器资源
(3)linux比windows更加安全
linux平台的安装
(1)云服务器安装 阿里云、腾讯云、华为云、网易云等
(2)虚拟机安装 vmware
linux是承担的角色是服务器,自带操作界面(命令模式窗口非常难用,不支持复制粘贴等,没有一些颜色提示等)
使用第三方的客户端远程连接工具
xshell secureCRT putty
linux主要是干什么?
linux主要承担一些服务器的作用, web服务器,数据库服务器,存储服务器,负载均衡器,网关服务器等
2.linux的基本目录结构
windows目录结构是多根的 比如C D E F等
linux目录结构是单根的,没有盘符概念,一切皆文件 根目录就是 /
- 系统启动需要的目录:
boot: 存放的启动linux的使用的内核文件,包括一些连接文件和镜像文件
lib/lib64: 存放基本代码库(c/c++库),类似windows里的dll文件。几乎所有的应用程序都会依赖这些共享库
sys:linux2.6内核存放一些新的文件系统sysfs
etc
: 存放所有系统需要的配置文件和子目录列表,修改文件可能会造成有些软件或系统不能正常启动
- 指令(命令)
bin
: 存放最常用的程序和命令
sbin
: 只能是超级管理员root可以使用的程序或命令
- 外部设备
dev
: /device(设备) 存放的linux的外部设备 光驱、硬盘、u盘、打印机等等,设备《==》文件,不能直接访问
media
: 挂设外设,自动挂载,需改对应配置,把挂载的命令放在一个启动的配置文件中
mnt
: 挂载外设,手动挂载,设备挂载以后可以通过这个目录进行访问,u盘可以进行读写,系统重启后挂载失效
-
账户有关
root
: 类似于home,主要存放是超级管理员的家目录
home
: 用户的家目录,没创建一个新用户都会有自己的home目录
usr
: 用户默认安装的应用程序或文件都放在这个目录下,类似windows中 program files
- 临时文件
lost+found :是空的,系统非正常关机存一些临时的文件
tmp:临时文件夹,可以存放一些用户的临时数据,缓存,可以删除的
run: 是一个临时的文件系统,存放系统启动以来的一些信息,当系统重启时,这个目录有可能被清空
- 运行过程中需要
var
: 存放一些经常修改的数据,比如程序运行时的日志文件,也可以放一些网站html页面等等 var/www/html/index.html
proc:管理内存空间,虚拟的目录,系统内存内容的映射,可以通过访问这个目录来获取系统信息
- 扩展的目录
opt
:可以安装一些软件的目录
srv:存放自己去安装的服务程序启动需要的数据 ,linux新内核版本使用目录,不习惯使用这个目录
3.linux常用命令(重点掌握)
可以通过2种方式查看命令详细解释
man ls
ls --help
掌握方式:
1.必须动手练
2.通过思维导图加强记忆
面试官会问题:
1.用过linux没有?
2.你能说几个linux的常用命令吗
3.比如删除一个文件使用什么命令?
4.tar命令是什么意思?
(1) 目录或文件相关的命令
cd
pwd
ls
ll
mkdir
touch rm
cp
mv
rm -rf r是递归删除,f是强制删除(不需要询问)
rm -rf / 删库跑路
more和less的区别
head和tail的区别
硬链接和软连接的区别
硬链接只能用在文件上,不能用在目录上,
ln aa.txt bb 创建一个硬链接bb类似于克隆aa.txt,当aa.txt被删除后,bb仍然可以使用,aa.txt bb是使用的同一个id
软连接可以用在文件上,也可以用在目录上 ,可以方便的创建一个软连接代表一个比较深的目录,使用上更方便
ln -s aa.txt bb 创建一个软链接bb指向aa.txt,当aa.txt被删除后,bb失效
(2)用户和用户组(用户或权限的集合)
useradd 添加一个新的用户,默认不会创建新的目录,密码等,需要加参数
adduser 添加一个新的用户,会创建新的目录,设置密码,配置一些信息等
userdel
usermod
passwd 用户名 密码 给当前用户设置密码
/etc/passwd 记录了所有的用户
groupadd
groupdel
/etc/group 记录了所有的组
sudo命令 让普通用户可以操作root用户命令(默认是不能操作)
/etc/sudoers
root ALL=(ALL) ALL
lanqiao ALL=(ALL) ALL
让用户lanqiao可以使用root用户才能使用的命令
比如启动防火墙
systemctl start firewalld //启动防火墙 ,root可以直接执行,但普通用户不能直接执行
在lanqiao用户下 使用sudo systemctl start firewalld (就可以执行)
su lanqiao 切换用户 su(switch user)
(3)文本编辑器 vi vim(类似windows的记事本,可以编辑修改等文本内容)
-
命令模式
进入的时候默认就是命令模式, 通过一些快捷方式进行一些操作
dd 删除当前行
-
编辑模式
可以通过a i o等进入编辑模式,就可以修改文本内容
-
底行模式
在编辑模式中按esc键退出,再按: 进入底行模式
:wq 保存退出
:q 不保存退出
:q! 强制退出
:wq!保存强制退出
:/find +要搜索的内容
:set nu 显示行号
(4)权限
dr-xr-xr-x
d表示文件类型 d指的文件夹 -指的是文件 l指的是连接
rwxr-xr-x是由9个字符构成 ,3个是一组 由rwx-4种组成 , r可读 w可写 x可执行 -无权限
头3个 rwx 代表当前用户可读可写可执行
中间3个 r-x 代表当前用户所在的组的其他用户 可读不可写可执行
最后3个r-x 代表其他用户组的用户所拥有的权限 可读不可写可执行
linux设计的权限的时候可以用1-7的数字来表示各种权限的集合
1 --x
2 -w-
3 -wx
4 r–
5 r-x
6 rw-
7 rwx
chmod rwxrwxrwx aa.txt
chmod 777 aa.txt
chmod 457 aa.txt
chown 更改所有者
chgrp 修改文件所属的组
(5)解压缩
tar.gz压缩文件类似于windows的zip文件
tar -czvf 压缩文件
tar -xzvf 解压文件
-c 压缩
-x 解压
-z gzip格式压缩
-v 显示详细的信息
-f 指定文件
(6)查找文件
find *.java
(7) 进程管理
ps -ef | grep redis
ps -aux|grep redis
强制关闭进程
kill -9 进程的id
4.linux安装软件
安装jdk
安装tomcat
安装mysql
安装oracle(太复杂)
(1)安装方式
- 压缩包 下载压缩包后解压即可使用 tomcat
- rpm安装 类似windows软件的安装程序 jdk
- yum源安装 在线安装
wget
rpm -h xxxx.rpm
yum list installed | grep java
yum -y install java-1.8.0-openjdk.x86_64
5.linux集群和负载均衡(偏运维)
负载均衡:
硬件方式 :F5(负载均衡设备,性能很好,但很贵)
软件方式: linux自带lvs (linux visual server) ,nginx实现负载均衡
lvs实现负载均衡方式:
nat方式
ip管道方式
dr直连方式
6.Docker容器(偏运维)
什么是docker ,理解是一个小型的vm,可以在一个服务器上部署多个
微服务–》docker上,可以独立运行
在docker安装mysql,几分钟就可以搞定
使用镜像安装,类似用ghost文件安装系统
(1)安装
yum -y install docker
(2) 查看docker版本
docker -v
(3)启动docker
systemctl start docker
(4)查看docker的镜像
docker images
(5)查找镜像
docker search mysql
(6)下载镜像
docker pull mysql:5.7下载5.7版本
docker pull mysql 下载最新版本
(7)运行镜像
docker run -d --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 mysql5.7
(8) 查看docker中运行的进程
docker ps -a
(9)删除进程
docker rm 进程id
(10)重启docker
systemctl restart docker
docker的编排
docker compose
k8s kubernates 统一管理docker 让docker启动,监控docker,关闭等等