第四课 k8s网络基础学习-DNS和DHCP学习

tags:

  • k8s网络
  • DNS
  • DHCP

文章目录

  • 第四课 k8s网络基础学习-DNS和DHCP学习
    • 第一节 DNS介绍
    • 第二节 DNS的linux使用
    • 第三节 企业中的DNS proxy/Relay
    • 第四节 DHCP相关概念
    • 第五节 DHCP服务器
    • 第六节 Openstack下DHCP(了解)
    • 第七节 OVS DHCP Server实验

第一节 DNS介绍

  1. DNS的全称是Domain Name System,DNS负责主机名字之间和互联网络地址之间的映射,在我们上网或者发送电子邮件的时候,一般都会使用主机名而不是IР地址,因为前者更容易记忆,但是对于计算机,使用数字(IP地址)则更为方便。DNS能够帮助我们将主机名转换成计算机更容易识别的IP地址。从而完成主机之前通信。DNS是一个层级的分布式的数据库,以C/S架构工作,它将互联网名称(域名)和IP地址的对应关系记录下来,可以为客户端提供名称解析的功能。它允许对整个数据库各个部分进行本地控制,借助备份和缓存机制,DNS将有足够的强壮性。DNS 数据库以层级的树状结构组织,最顶级的服务器被称为「根」(root),以.表示,它是所有子树的根。root将自己划分为多个子域(subdomain),这些子域包括com,net,org, gov,net等等,这些子域被称为顶级域(TopLevel Domain,TDL)。再进一步,各顶级域再将自己划分成多个子域,子域还可以在划分子域,最后树的叶子节点就是某个域的主机名。
  2. 每个域的名称服务器仅负责本域内的主机的名称解析,如果需要解析子域的主机,就需要再向其子域的名称服务器查询。这样一来,无论主机在哪个域内,都可以从根开始一级一级的找到负责解析此主机名称的域,然后完成域名解析。
  3. 在网络通信中,域名的使用频率非常高,一个域名在某段时间内可能被反复的使用,如果每次使用都向DNS服务器查询,DNS服务器也向其他服务器发出查询请求的话,将会消耗大量的网络带宽,并且速度也会非常慢。因此,一般在DNS客户端和服务器端都会有缓存,负责某个域的DNS 服务器可以定义客户端缓存的时间。DNS TTL间接控制缓存,从而影响用户体验。


4. 在网络通中,更长的缓存对于权威DNS服务器上的DDoS攻击更健壮,DNS服务提供商上的DDoS攻击已损害了几个著名的网站。研究表明,DNS缓存可以大大降低DDoS对DNS的影响,前提是缓存的持续时间比攻击要长。

第二节 DNS的linux使用

  1. 安装bind。
yum -y install bind
yum -y install bind-utils
/etc/named.conf #主配置文件
/etc/named.rfc1912.zones #zone解析库
/var/named #zone解析库对应文件;NAPTR条目
scfcfpool05  NAPTR  50 50 "s" "SIP+D2U" "" _sip._udp.scscf01
scfcfpool05  NAPTR  50 50 "s" "SIP+D2U" "" _sip._udp.scscf02
scfcfpool05  NAPTR  50 50 "s" "SIP+D2U" "" _sip._tcp.scscf01
scfcfpool05  NAPTR  50 50 "s" "SIP+D2U" "" _sip._tcp.scscf02
;SRV条目
_sip._udp.scscf01   SRV    0 0 5070 scscf01
_sip._tcp.scscf01   SRV    0 0 5070 scscf01
_sip._udp.scscf02   SRV    0 0 5070 scscf02
_sip._tcp.scscf02   SRV    0 0 5070 scscf02
;A条目
scscf01  A 10.107.172.33
scscf02  A 10.107.172.35
scscf02  A 10.107.172.36
scscf02  A 10.107.172.37
scscf02  A 10.107.172.38nslookup -type=NAPTR scfcfpool05.ims.mnc001.mcc460.3gppnetwork.org
  1. 本地作为DNS服务器。
vi /etc/named.conf
listen-on port 53 { 192.168.44.128; };
forwarders {114.114.114.114;8.8.8.8;};allow-query     { any; }; # 本地查不到去外部查询# 重启服务
systemctl restart named
systemctl status named# 查询这个域名 肯定查不到 因为在互联网上没有这个域名
nslookup -type=NAPTR scfcfpool05.ims.mnc001.mcc460.3gppnetwork.org# 先加一个zone
vi /etc/named.rfc1912.zones
zone "ims.mnc001.mcc460.3gppnetwork.org" IN {type master;file "ims.mnc001.mcc460.3gppnetwork.org"; # 指定下面的文件allow-update { none; }; # 可有可无
};# 创建ims.mnc001.mcc460.3gppnetwork.org文件
cd /var/named
cp named.localhost ims.mnc001.mcc460.3gppnetwork.org
vi ims.mnc001.mcc460.3gppnetwork.org
# ;表示注释 添加
;
@       IN SOA  @ cc.top. (30      ; serial1M      ; refresh1M      ; retry1M      ; expire3M )    ; minimumNS      @admin              A    10.107.177.33
bak.admin          A    10.107.177.36;IMS测试案例:
;NAPTR条目
scfcfpool05  NAPTR  50 50 "s" "SIP+D2U" "" _sip._udp.scscf01
scfcfpool05  NAPTR  50 50 "s" "SIP+D2U" "" _sip._udp.scscf02
scfcfpool05  NAPTR  50 50 "s" "SIP+D2U" "" _sip._tcp.scscf01
scfcfpool05  NAPTR  50 50 "s" "SIP+D2U" "" _sip._tcp.scscf02
;SRV条目
_sip._udp.scscf01   SRV    0 0 5070 scscf01
_sip._tcp.scscf01   SRV    0 0 5070 scscf01
_sip._udp.scscf02   SRV    0 0 5070 scscf02
_sip._tcp.scscf02   SRV    0 0 5070 scscf02
;A条目
scscf01  A 10.107.172.33
scscf02  A 10.107.172.35
scscf02  A 10.107.172.36
scscf02  A 10.107.172.37
scscf02  A 10.107.172.38;逆向解析
@     A    10.107.172.33vi /etc/resolv.conf
# 修改
nameserver 192.168.44.128
systemctl restart named# 解析成功 本地
nslookup -type=NAPTR scfcfpool05.ims.mnc001.mcc460.3gppnetwork.org
nslookup -type=SRV _sip._udp.scscf02.ims.mnc001.mcc460.3gppnetwork.org.
nslookup -type=A scscf02.ims.mnc001.mcc460.3gppnetwork.org.
# 内网另一台机器 成功 第一台机器关闭防火墙
yum install -y bind-utils
vi /etc/resolv.conf
nameserver 192.168.44.128
nslookup -type=NAPTR scfcfpool05.ims.mnc001.mcc460.3gppnetwork.org
  1. 从抓包的角度介绍NAPTR
tcpdump -i any -w naptr.cap
# 另一个端口
# 抓一下NAPTR的
nslookup -type=NAPTR scfcfpool05.ims.mnc001.mcc460.3gppnetwork.org
# 在抓一下srv的
nslookup -type=SRV _sip._udp.scscf02.ims.mnc001.mcc460.3gppnetwork.org.
# A记录的 这个比较简单 只有重要的Address字段
nslookup -type=A scscf02.ims.mnc001.mcc460.3gppnetwork.org.
  1. DNS NAPTR资源记录的功能是能够将原来的域名映射成一个新的域名或者URI(Uniform Resource ldentfier),并通过flag域来指定这些新域名或URI在后继操作中的使用方法。

    1. Order,给出处理顺序,按照order从小到大顺序对记录搜索,搜索到匹配的记录后,就停止搜索order值更大的记录。
    2. Preference,给出在同一个order下各记录的偏好(或权重),值越小偏好越高,preference和order的不同之处在于,order具有唯一性,用户只可处理某一个order值,而preference表达的是偏好,用户可以对多个不同preference进行综合考虑。
    3. flags,为[A-Z0-9]中的一个字符,表达映射关系及记录本身的含义,目前有”U" “S”,“A"和”P"四个标志,其中”U”,"S°和”A"是终结标志,即下一步不需要再进行NAPTR查询,”A"表示下一步进行A,AAAA或者A6查询,”U"表示下一步不需要DNS查询,本次输出的是满足RFC2396要求的absolute URI,”S"表示下一步进行SRV查询,”P"表示由用户根据service定义自己的规则,所以既可以是终结标志,也可以是非终结标志,如果flags为空(即什么字符也没有),表示用户需要根据本次输出,再进行一次NAPTR查询。
    4. service,给出新目标(即映射后的新域名或URI)上的服务,以及和该服务交互所使用的协议,其形式为[protocol]*("+”service),如果flags中的标志为终结标志时,protocol就必须填写。
    5. regexp,给出根据原域名生成新域名或URI的规则。
    6. replacement,包含一个域名,根据flags给出进行下一次NAPTR、SRV、A或者AAAA查询所需要的域名,一般情况下,regexp和replacement两者用其一。

第三节 企业中的DNS proxy/Relay

  1. DNS Proxy/Relay工作原理

    • 在使用了DNS代理/中继(DNS Proxy/Relay)功能的组网中,DNS Client将DNS请求报文直接发送给DNS Proxy/Relay。DNS Proxy/Relay将收到的DNS请求报文转发至DNS Server,并在收到DNS Server的应答报文后将其返回给DNs Client,从而实现域名解析。由此,当DNS Server的地址发生变化时,只需改变DNSProxy/Relay上的配置,无需逐一改变局域网内每个DNS Client的配置,从而简化了网络管理。
  2. DNS Proxy与DNS Relay的功能实现差异
    • DNS Relay和DNS Proxy功能相同,二者的实现差异在于转发DNS请求报文前是否会先查询本地域名解析表〈包括静态域名解析表以及本地域名缓存表)。
    • DNS Proxy接收到DNS Client的DNS请求报文后会先查找本地域名解析表,如果未查询到对应的解析表项,才将DNS请求报文转发给DNS Server。
    • DNS Relay接收到DNS Client的DNS请求报文后不会查询本地域名解析表,而是直接将其转发给DNS Server进行解析。一方面节省了DNS Relay上的DNS缓存开销,另一方面,保证了DNS Client获取解析结果的实时性(如果DNs Server上域名与IP地址发生变化而DNS Proxy的缓存表未及时更新,会导致DNS Client获取的解析结果错误)。
  3. 设备使能DNS Proxy功能后,可用于转发内部的DNS客户端和外部DNS服务器之间的DNS请求和应答报文,当DNS服务器地址发生变化时,只需要在DNS Proxy进行配置,不需要在DNS客户端上进行逐一配置,便于网络的集中管理。
  4. DNS Relay和DNS Proxy功能相同,区别在于DNS Proxy接收到DNS客户端的DNS查询报文后会查找本地缓存,而DNS Relay不会查询本地缓存,而是直接转发给DNS服务器进行解析,从而节省了DNS Relay上的DNS缓存开销。
    ![请添加图片描述](https://img-blog.csdnimg.cn/11f0fa3845a449c4b272fa2de4d01aba.png
  5. DNS Proxy的工作过程如下:
    • DNS client将DNS请求报文发送给DNS Proxy,即请求报文的目的地址为DNS Proxy的IP地址。
    • DNS Proxy收到请求报文后,先查找本地静态域名解析表,再根据查询结果判断是否继续查找本地域名缓存表。
      • 如果查询到对应的解析表项,则DNS Proxy直接通过DNS应答报文将域名解析结果返回给DNS Client,
      • 如果查询不到对应的解析表项,则DNS Proxy将报文转发给DNS Server,通过DNS Server进行域名解析。DNS Proxy收到DNS Server的应答报文后,记录域名解析的结果,并将报文转发给DNS Client。
  6. Note:只有当DNS Proxy上存在DNS Server地址,且存在到达DNS Server的路由时,DNS Proxy才会向DNSServer发送域名解析请求。否则,DNS Proxy不会向DNS Server发送域名解析请求,也不应答DNS Client的请求。
  7. 实验配置。
# AR1
sysname AR1
dns resolve
dns server 10.1.1.2
dns proxy enableinterface GigabitEthernete 0/0/0
ip address 192.168.1.1 255.255.255.0
interface GigabitEthernet0/0/1
ip address 10.1.1.1 255.255.0.0
interface GigabitEthernet0/0/2
interface NULL0#
ip route-static 0.0.0.0 0.0.0.0 10.1.1.2
  1. DNS -IMS拓展:4G网络之后为什么可以一边打电话一边打游戏。(这个听不懂不要紧)

第四节 DHCP相关概念

  1. 动态主机配置协议DHCP (Dynamic Host Configuration Protocol)是一种用于集中对用户IP地址进行动态管理和配置的技术。即使规模较小的网络,通过DHCP也可以使后续增加网络设备变得简单快捷。
  2. DHCP是在BOOTP (Bootstrap Protocol)基础上发展而来,但BOOTP运行在相对静态(每台主机都有固定的网络连接)的环境中,管理员为每台主机配置专门的BOOTP参数文件,该文件会在相当长的时间内保持不变。DHCP从以下两方面对BOOTP进行了扩展:
    • DHCP允许计算机动态地获取IP地址,而不是静态为每台主机指定地址。
    • DHCP能够分配其他配置参数,例如客户端的启动配置文件,使客户端仅用一个消息就获取它所需要的所有配置信息。
  3. DHCP协议由RFC 2131定义,采用客户端/服务器通信模式,由客户端(DHCP Client)向服务器(DHCPServer)提出配置申请,服务器返回为客户端分配的配置信息。
  4. DHCP可以提供两种地址分配机制,网络管理员可以根据网络需求为不同的主机选择不同的分配策略。
  5. 第一动态分配机制:通过DHCP为主机分配一个有使用期限(这个使用期限通常叫做租期)的IP地址。
    • 这种分配机制适用于主机需要临时接入网络或者空闲地址数小于网络主机总数且主机不需要永久连接网络的场景。
  6. 第二静态分配机制:网络管理员通过DHCP为指定的主机分配固定的IP地址
    • 相比手工静态配置IP地址,通过DHCP方式静态分配机制避免人工配置发生错误,方便管理员统一维护管理。
  7. DHCP受益主要有以下两点:
    • 降低客户端的配置和维护成本。DHCP易配置部署,对于非技术用户,DHCP能够将客户端与配置相关的操作降至最低,并能够降低远程部署和维护成本。
    • 集中管理。DHCP服务器可以管理多个网段的配置信息,当某个网段的配置发生变化时,管理员只需要更新DHCP服务器上的相关配置即可。
  8. 租期
    • DHCP服务器给每个分配给客户端的IP地址定义一个使用期限,该使用期限被称为租期。在租期到期前,DHCP客户端如果仍需要使用该IP地址,可以请求延长租期;如果不需要,可以主动释放该IP地址。在没有其他空闲地址可用的情况下,DHCP服务器会把客户端主动释放的IP地址分配给其他客户端。
    • DHCP服务器动态分配的所有IP地址都受租期时长的限制,不同的DHCP服务器配置的租期时长可以不同。静态分配的IP地址不受租期时长的限制,使用期限为无限长
    • DHCP客户端不会等到租期到期后再申请IP地址,这样会导致IP地址被服务器回收,然后分配给其他客户端。为保证能够使用原来的IP地址,客户端会在租期到期前的某个时间点就开始申请延长租期。
  9. 地址池
    • 地址池指的是DHCP服务器可以为客户端分配的所有IP地址的集合。除IP地址外,地址池内还可以配置租期、子网掩码、默认网关等网络参数。在DHCP服务器为客户端分配IP地址时,这些网络参数也一并分配给客户端。根据创建方式的不同,地址池可以分为基于接口方式的地址池和基于全局方式的地址池
    • 基于接口方式的地址池:在DHCP服务器与客户端相连的接口上配置IP地址,地址池是跟此接口地址所属同一网段的IP地址,且地址池中地址只能分配给此接口下的客户端。这种配置方式简单,仅适用于DHCP服务器与客户端在同一个网段的场景。
    • 基于全局方式的地址池:在系统视图下创建指定网段的地址池,且地址池中地址可以分配给设备所有接口下的客户端。当DHCP服务器与客户端不在同一个网段时,需要部署DHCP中继
  10. DHCP服务器依据是否部署DHCP中继来选择地址池。无DHCP中继场景下,DHCP服务器选择与接收DHCP请求报文的接口IP地址处于同一网段的地址池。有DHCP中继场景下,DHCP服务器选择与DHCP请求报文中**giaddr字段(标识客户端所在网段)**位于同一网段的地址池。
  11. 根据客户端的数量和接入断开的时间、频率来确定地址池内需要部署的IP地址数量。
  12. 根据IP地址的使用情况,地址池中的IP地址可以分为多种状态。

第五节 DHCP服务器

  1. DHCP服务器

    • DHCP服务器负责从地址池中选择IP地址分配至DHCP客户端,还可以为DHCP客户端提供其他网络参数,如默认网关地址、DNS服务器地址和WINS服务器地址。DHCP服务器可以接收处理来自本网段或跨网段由DHCP中继转发的DHCP请求报文。
  2. DHCP客户端
    • DHCP客户端发送DHCP请求报文、通过BOOTP或DHCP协议请求获取IP地址等网络参数的设备。例如,IP电话、PC、手机、无盘工作站等。
  3. DHCP中继
    • DHCP中继负责转发DHCP服务器和DHCP客户端之间的DHCP报文,协助DHCP服务器向DHCP客户端动态分配网络参数的设备。DHCP客户端广播发送请求报文(即目的IP地址为255.255.255.255),位于同一网段内的DHCP服务器能够接收请求报文。如果DHCP客户端和DHCP服务器不在同一个网段,DHCP服务器无法接收来自客户端的请求报文,此时,需要通过DHCP中继来转发DHCP报文。不同于传统的IP报文转发,DHCP中继接收到DHCP请求或应答报文后,会重新修改报文格式并生成一个新的DHCP报文再进行转发。
  4. DHCP报文字段。
  5. DHCP报文中各个字段的含义:

第六节 Openstack下DHCP(了解)

![请添加图片描述](https://img-blog.csdnimg.cn/615b315466d14d0da12b17d065e8e10f.png

  1. 使用Dnsmasq进程实现DHCP
  2. #interface_driver =neutron.agent.linux.interface.OVSInterfaceDriver
  3. 使用ovs bridge 连接DHCP namespace interface。
  4. 当创建network 并在subnet 上enable DHCP时,网络节点上的DHCP agent会启动一个dnsmasq进程为该network提供DHCP服务。
ps -ef | grep dnsmasq # 查看Controller上的DHCP Agent进程
neutron subnet-list # 查看子网
ip netns
ip netns exec qdhcp-e2027b43-f621-4da7-ae24-fc59c5894ebe ip a # 查看DHCP Agent的TAP
ovs-vsctl show # 查看ovs bridge上的dhcp server tap设备
  1. 当虚机孵化完成以后,此时虚机开机发起dhcp的discover消息,位于同一个vlan的都可以收到此广播消息。

第七节 OVS DHCP Server实验

  1. ovs的交换机。交换机的端口是冲突域,路由器的端口才是广播域。
  2. vm1发送一个广播,vm0、vm2和DHCP server都能收到。
docker pull networkboot/dhcpd# 生成交换机s1、s2、s3
ovs-vsctl add-br s1
ovs-vsctl add-br s2
ovs-vsctl add-br s3# 创建veth pair  即 v1-v2
ip link add v1 type veth peer name v2
ip link set dev v1 up
ip link set dev v2 up# 给v1配置ip及子网掩码
ifconfig v1 192.168.1.254 netmask 255.255.255.0# 生成DHCP服务器,监听v1 ,挂载本地data文件夹,data里面中只有dhcpd.conf文件
docker run -it --rm --net host --init --privileged=true --name=dhcpServer1 -v /emxbook/docker-dhcpd/data:/data networkboot/dhcpd v1# vi dhcpd.conf
cd /emxbook/docker-dhcpd/data
vi dhcpd.confsubnet 192.168.1.0 netmask 255.255.255.0 {option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option domain-name "emx.local";
option domain-name-servers 8.8.8.8;
range 192.168.1.2 192.168.1.100;
}# 将v2连接到交换机上
ovs-vsctl add-port s1 v2# 交换机s1、s2、s3彼此相连
ovs-vsctl add-port s1 s1p1
ovs-vsctl set Interface s1p1 type=patch
ovs-vsctl set Interface s1p1 options:peer=s2p1ovs-vsctl add-port s2 s2p1
ovs-vsctl set Interface s2p1 type=patch
ovs-vsctl set Interface s2p1 options:peer=s1p1ovs-vsctl add-port s1 s1p2
ovs-vsctl set Interface s1p2 type=patch
ovs-vsctl set Interface s1p2 options:peer=s3p1ovs-vsctl add-port s3 s3p1
ovs-vsctl set Interface s3p1 type=patch
ovs-vsctl set Interface s3p1 options:peer=s1p2# 创建主机h1、h2、h3,并将其连接到交换机上,其中ubunut:5是添加了基本net-tools、isc-dhcp-client,创建的时候记得使用     --cap-add=NET_ADMIN
docker load < burly.tar # 使用提供的imagesdocker run -itd --network=none --name=h1 --cap-add=NET_ADMIN burlyluo/nettoolbox:v3
docker run -itd --network=none --name=h2 --cap-add=NET_ADMIN burlyluo/nettoolbox:v3
docker run -itd --network=none --name=h3 --cap-add=NET_ADMIN burlyluo/nettoolbox:v3# 为vm h1, h2,h3分别创建网卡eht1
# wget https: //raw.githubusercontent.com/openvswitch/ovs/master /utilities/ovs-docker
# chmod 777 ovs-docker && mv ovs-docker /usr/bin
ovs-docker add-port s1 eth1 h1
ovs-docker add-port s2 eth1 h2
ovs-docker add-port s3 eth1 h3# dhclient 命令已经有了
docker exec -it h1 sh # h1 h2机器都分配dchp的ip地址
ifconfig # 发现没有ip地址
dhclient eth1
ifconfig # 发现分配了ip地址
# 在h1上
ping 192.168.1.2 # h2访问h1的ip# 以使用floot-light控制交换机s1、s2、s3交换机(选择)
# ovs-vsctl set-controller s1 tcp:127.0.0.1:6653
# ovs-vsctl set-controller s2 tcp:127.0.0.1:6653
# ovs-vsctl set-controller s3 tcp:127.0.0.1:6653# 抓包去看下dhcp 分配ip的过程
tcpdump -i any -w dhcp.cap
# h3
ifconfig # 发现没有ip地址
dhclient eth1# 发现/emxbook/docker-dhcpd/data中多了两个文件记录了分配的ip的配置
cd /emxbook/docker-dhcpd/data
cat dhcpd.leases

第四课 k8s网络基础学习-DNS和DHCP学习相关推荐

  1. 第八课 k8s网络基础学习-VxLAN基础

    第八课 k8s网络基础学习-VxLAN基础 tags: k8s网络 eNSP wireshark VxLAN 文章目录 第八课 k8s网络基础学习-VxLAN基础 第一节 VxLAN 1.1 VxLA ...

  2. k8s网络基础学习-Calico网络插件

    第十课 k8s网络基础学习-Calico网络插件 tags: k8s网络 calico proxy arp bgp full mesh bgp RR 文章目录 第十课 k8s网络基础学习-Calico ...

  3. 第十四课 k8s源码学习和二次开发原理篇-调度器原理

    第十四课 k8s源码学习和二次开发原理篇-调度器原理 tags: k8s 源码学习 categories: 源码学习 二次开发 文章目录 第十四课 k8s源码学习和二次开发原理篇-调度器原理 第一节 ...

  4. 第四课 k8s源码学习和二次开发-DeltaFIFO和Indexer原理学习

    第四课 k8s源码学习和二次开发-DeltaFIFO和Indexer原理学习 tags: k8s 源码学习 categories: 源码学习 二次开发 文章目录 第四课 k8s源码学习和二次开发-De ...

  5. 网络基础之DNS、网关

    网络基础之DNS.网关 1.DNS DNS(Domain Name System)即域名系统的缩写,也称作名称解析. 在互联网中通过IP地址来进行通信 IP地址用数字表示,记忆困难 人对域名更为敏感, ...

  6. 【网络基础】DNS是什么

    本文不会直接引入复杂枯燥概念,用形象例子通俗讲解,旨在入门理解. DNS作用 DNS是用来做域名解析的. 相当于把网址翻译成实际ip地址,供其他设备访问. 一个例子 有一个网站的服务器IP地址为1.1 ...

  7. 【视频课】零基础免费38课时深度学习+超60小时CV核心算法+15大Pytorch CV实践案例助你攻略CV...

    计算机视觉中大大小小可以包括至少30个以上的方向,在基于深度学习的计算机视觉研究方向中,图像分类,图像分割,目标检测无疑是最基础最底层的任务,掌握好之后可以很快的迁移到其他方向,比如目标识别,目标跟踪 ...

  8. 网络营销第四课:网络营销需要掌握的网页代码(2)

    1.<hr>水平线标记:<HTML> <HEAD> <TITLE>HR的用法</TITLE> </HEAD> <BODY& ...

  9. 【Linux从青铜到王者】第十四篇:Linux网络基础第一篇

    系列文章目录 文章目录 系列文章目录 前言 一.计算机网络的发展过程 1.独立模式 2.网络互联模式 3.局域网LAN 4.广域网WAN 二.认识计算机网络协议 1.协议的概念 2.什么是网络协议 3 ...

最新文章

  1. RabbitMQ 入门系列(11)— RabbitMQ 常用的工作模式(simple模式、work模式、publish/subscribe模式、routing模式、topic模式)
  2. 某程序员误把7500枚比特币当垃圾扔掉,价值约2.4亿美元!
  3. 前Oracle首席工程师怒喷:MySQL 是“超烂的数据库”,建议考虑 PostgreSQL
  4. 过长内容分成了多次发送 问题 LengthFieldBasedFrameDecoder使用
  5. 第48课 加加乐 《小学生C++趣味编程》
  6. Linux下常用配置文件及常用命令介绍
  7. 使用GDAL打开裸数据(RAW)
  8. matlab输出n个a,输入a,n两个参数,要求输出aaa...a(共n个)的值
  9. SpringBoot+JSON+AJAX+ECharts+Fiddler实现前后端分离开发可视化(进阶篇)
  10. MyBatis笔记(一) 最简单的select
  11. 学习3 二维游戏动画合成(侠客行)
  12. Ionic3 Demo
  13. 大数据的核心价值是什么?
  14. 用python的matplotlib和numpy库绘制股票K线均线
  15. 二阶魔方万能还原公式_二阶魔方复原玩法
  16. 连接数据库超时设置autoReconnect=true,默认重试次数调整
  17. 阿里云账号实名认证解决方案
  18. MFC怎么封装CreateWindow
  19. 安装报错:TypeError: _classify_installed_files() got an unexpected keyword argument ‘cmake_install_dir‘
  20. Juniper模拟器使用指南

热门文章

  1. 欧拉定理学习20161004
  2. new BigDecimal比较大小
  3. 利用python画折线图
  4. VHDL脉冲激光测距
  5. EIE稀疏矩阵乘法硬件模拟
  6. [新手入门]微信公众号推文制作
  7. RTK计算参数为什么比例必须是0.999或1.000?
  8. 安装PS出现“由于找不到VCRUNTIME 140_1.dll”的解决方法
  9. qt编写网易云界面(3)----列表框的实现
  10. 计算机绘图图框实验报告,CAD实验报告DOC