TCP的三次握手和四次挥手
TCP的三次握手和四次挥手1.常见的网络概念MTU:maximum transmission unit,数据链路协议所使用的最大传输单元。
2.TCP的三次握手所有基于TCP的通信都需要以两台主机的握手开始,这个握手过程主要希望能达到以下不同的目的:
保证源主机确定目的主机在线,并且可以进行通信。
让源主机检查它是否正在监听试图去连接的端口。
允许源主机向接收者发送它的起始序列号,使得两台主机可以将数据包流保持有序。
TCP握手分为三个步骤:
第一步,主动发起通信的设备(假设它为主机A)向目标(假设它为主机B)发送了一个TCP数据包。这个数据包的TCP头设置了SYN标志,并包含了在通信过程中会用到的初始序列号和最大分段大小。
第二步,主机B对于这个数据包回复一个类似于设置了SYN和ACK标志以及包含了它初始序列号的数据包。
第三步,主机A向主机B发送最后一个仅设置了ACK标志的数据包。
这个过程完成后,双方设备就具备了正常通信所需的信息。
3.TCP的四次挥手在TCP中,每次握手后也会有终止。TCP终止用来在两台设备完成通信后正常地结束连接。这个过程包含4个数据包,并且用一个FIN ...
七层OSI模型
七层OSI模型七层OSI模型有应用层、表示层、会话层、传输层、网络层、数据链路层、物理层;各个层次上的典型网络协议如下:
层次
协议
应用层
HTTP、SMTP、FTP、Telnet
表示层
ASCII、MPEG、JPEG、MIDI
会话层
NetBIOS、SAP、SDP、NWLink
传输层
TCP、UDP、SPX
网络层
IP、IPX
数据链路层
Ethernet、Token Ring、FDDI、AppleTalk
k8s apiserver证书添加新地址
k8s apiserver证书添加新地址1.环境基础
集群版本
安装环境
v1.26.3
kubeadm安装的集群
2.查看当前证书中的可信地址123# k8s证书目录: /etc/kubernetes/pkiopenssl x509 -in apiserver.crt -noout -text
3.给证书添加新地址3.1.修改kubeadm-config.yaml ,在certSANs中添加要加入的地址123apiServer: certSANs: - xx.xx.xx.xx
3.2.删除k8s证书目录中的apiserver.crt 、apiserver.key123# k8s证书目录: /etc/kubernetes/pkirm -f apiserver.*
3.3.根据kubeadm配置文件生成新的证书1kubeadm init phase certs apiserver --config ./kubeadm-config.yaml
3.4.查看新生成证书中的可信地址123# k8s证书目录: /etc/kubernetes/pkiopenssl x ...
12.centos系统安装containerd
centos系统安装containerd1.背景Kubernetes 的早期版本仅适用于特定的容器运行时:Docker Engine。 后来,Kubernetes 增加了对使用其他容器运行时的支持。创建CRI 标准 是为了实现编排器(如 Kubernetes)和许多不同的容器运行时之间交互操作。 Docker Engine 没有实现(CRI)接口,因此 Kubernetes 项目创建了特殊代码来帮助过渡, 并使 dockershim 代码成为 Kubernetes 的一部分。
dockershim 代码一直是一个临时解决方案(因此得名:shim)。 你可以阅读 Kubernetes 移除 Dockershim 增强方案 以了解相关的社区讨论和计划。 事实上,维护 dockershim 已经成为 Kubernetes 维护者的沉重负担。
此外,在较新的 CRI 运行时中实现了与 dockershim 不兼容的功能,例如 cgroups v2 和用户命名空间。 从 Kubernetes 中移除 dockershim 允许在这些领域进行进一步的开发。
Kubernetes 在 v1.24 版 ...
11.使用kubeadm搭建k8s集群
使用kubeadm搭建k8s集群1.安装环境准备1.1.云服务器准备
IP地址
节点角色
CPU
Memory
Hostname
10.0.1.9
master and etcd
>=2c
>=2G
master
10.0.1.5
node
>=2c
>=2G
node1
1.2.软件版本
系统类型
Kubernetes版本
docker版本
kubeadm版本
kubectl版本
kubelet版本
CentOS 7.6
v1.17.4
19.03.8-ce
v1.17.4
v1.17.4
v1.17.4
1.3.云服务器环境初始化操作1.3.1.设置主机名12#master是设置名称 2台设备分别是 master node1hostnamectl set-hostname master
1.3.2.修改host文件12345vim /etc/hosts#添加10.0.1.9 master10.0.1.5 node1
1.3.3.关闭selinux12345#实时动态关闭setenforce 0 #禁止重启后自动开启s ...
多重背包问题(go实现)
多重背包问题1.问题有 N 种物品和一个容量是 V 的背包。
第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。
求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。
输入格式
第一行两个整数,N,V;N,V,用空格隔开,分别表示物品种数和背包容积。
接下来有 N 行,每行三个整数 vi,wi,si;vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。
输出格式
输出一个整数,表示最大价值。
数据范围
0<N,V≤1000<N,V≤100 0<vi,wi,si≤100
2.解题思路及代码实现
完全背包问题(go实现)
完全背包问题(go实现)1.题目有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。
第 i 种物品的体积是 vi,价值是 wi。
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。
输出最大价值。
输入格式:
第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。
接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 种物品的体积和价值。
输出格式:
输出一个整数,表示最大价值。
数据范围:
0<N,V≤1000
0<vi,wi≤1000
2.解题思路及代码实现123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 ...
01背包问题(go实现)
01背包问题(go实现)1.问题有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。
第 i 件物品的体积是 vi,价值是 wi。
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。
输出最大价值。
输入格式
第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。
接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。
输出格式
输出一个整数,表示最大价值。
数据范围
0<N,V≤1000
0<vi,wi≤1000
2.解题思路及代码实现1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041 ...
dd大牛的《背包九讲》
dd大牛的《背包九讲》1.01背包问题1.1.题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。
1.2.基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。
用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:
f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}。
这个方程非常重要,基本上所有跟背包相关的问题的方程都是由它衍生出来的。所以有必要将它详细解释一下:“将前i件物品放入容量为v的背包中”这个子问题,若只考虑第i件物品的策略(放或不放),那么就可以转化为一个只牵扯前i-1件物品的问题。如果不放第i件物品,那么问题就转化为“前i-1件物品放入容量为v的背包中”;如果放第i件物品,那么问题就转化为“前i-1件物品放入剩下的容量为v-c[i]的背包中”,此时能获得的最大价值就是f [i-1][v-c[i]]再加上通过放入第i件物品获得的价 ...
go交叉编译(Mac/Linux/Windows)
go交叉编译(Mac/Linux/Windows)1、MAC 下编译 Linux 、Windows123#linuxCGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o name main.go
123#windowsCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o name main.go
2、Linux 下编译 Mac、 Windows123#MacCGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o name main.go
123#WindowsCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o name main.go
3、Windows 下编译 Mac 、Linux123456789#MacSET CGO_ENABLED=0SET GOOS=darwinSET GOARCH=amd64go build -o name main.g ...