如來神掌第一式第一招----DHCP詳解

来源:http://www.cnblogs.com/Mahavairocana/archive/2017/05/29/6917902.html
-Advertisement-
Play Games

################################################################################ Name : Mahavairocana # Author : Mahavairocana # QQ : 10353512 # WeCha ...


###############################################################################
# Name : Mahavairocana                                                                                                                                           
# Author : Mahavairocana                                                                                                                                         
# QQ : 10353512                                                                                                                                                     
# WeChat : shenlan-qianlan                                                                                                                                       
# Blog : http://www.cnblogs.com/Mahavairocana/                                                                                                        
# Description : You are welcome to reprint, or hyperlinks to indicate the source of the article, as well as author information.
############################################################################### 

DHCP:Dynamic Host Configuration Protocol  區域網的網路協議,使用UDP協議工作,通常被應用在大型的區域網絡環境中,主要作用是集中的管理、分配IP地址,使網路環境中的主機動態的獲得IP地址、Gateway地址、DNS伺服器地址等信息,並能夠提升地址的使用率。在RFC 2131中有詳細的描述。DHCP有3個埠,其中UDP67和UDP68為正常的DHCP服務埠,分別作為DHCP Server和DHCP Client的服務埠;546號埠用於DHCPv6 Client,而不用於DHCPv4,是為DHCP failover服務,這是需要特別開啟的服務,DHCP failover是用來做“雙機熱備”的。


DHCP協議採用客戶端/伺服器模型,主機地址的動態分配任務由網路主機驅動。當DHCP伺服器接收到來自網路主機申請地址的信息時,才會向網路主機發送相關的地址配置等信息,以實現網路主機地址信息的動態配置。

DHCP具有以下功能:
1. 保證任何IP地址在同一時刻只能由一臺DHCP客戶機所使用。
2. DHCP應當可以給用戶分配永久固定的IP地址。
3. DHCP應當可以同用其他方法獲得IP地址的主機共存(如手工配置IP地址的主機)。
4. DHCP伺服器應當向現有的BOOTP客戶端提供服務。


DHCP有三種機制分配IP地址:(三種地址分配方式中,只有動態分配可以重覆使用客戶端不再需要的地址。)
1) 自動分配方式(Automatic Allocation),DHCP伺服器為主機指定一個永久性的IP地址,一旦DHCP客戶端第一次成功從DHCP伺服器端租用到IP地址後,就可以永久性的使用該地址。
2) 動態分配方式(Dynamic Allocation),DHCP伺服器給主機指定一個具有時間限制的IP地址,時間到期或主機明確表示放棄該地址時,該地址可以被其他主機使用。
3) 手工分配方式(Manual Allocation),客戶端的IP地址是由網路管理員指定的,DHCP伺服器只是將指定的IP地址告訴客戶端主機。

簡單來說下DHCP工作原理:
1)客戶機尋找伺服器:廣播發送discover包,尋找dhcp伺服器
2)伺服器響應請求:單播發送offer包,對客戶機做出響應。提供客戶端網路相關的租約以供選擇其中伺服器在收到客戶端的請求後,會針對客戶端的mac地址與本身的設定數據進行一下工作:
    a)到伺服器的登錄文件中尋找該用戶之前曾經使用過的ip,若有且該ip目前沒有人使用,這提供此ip為客戶機
    b)若配置文件中有針對該mac提供額外的固定ip,且該ip沒有被使用,則提供此ip給客戶機
    c)如果沒有符合以上兩個條件,則隨機取用目前沒有被使用的ip參數給客戶機並記錄到leases文件中。
3)客戶機發送ip請求:廣播request包,選擇一個伺服器提供的網路參數租約回報伺服器。此外,客戶機會發送一個廣播封包給區域網內的所有主機,告知自己已經接受伺服器的租約。
4)伺服器確認租約:單播Ack包,伺服器與客戶機確認租約關係並記錄到伺服器的leases文件中 。


接著說下DHCP幾個概念:
DHCP Client:DHCP客戶端,通過DHCP協議請求IP地址的客戶端。DHCP客戶端是介面級的概念,如果一個主機有多個以太介面,則該主機上的每個介面都可以配置成一個DHCP 客戶端。交換機上每個Vlan介面也可以配置成一個DHCP客戶端。
DHCP Server:DHCP 服務端,負責為DHCP客戶端提供IP地址,並且負責管理分配的IP地址。
DHCP Relay:DHCP中繼器,DHCP客戶端跨網段申請IP地址的時候,實現DHCP報文的轉發功能。
DHCP Security:DHCP安全特性,實現合法用戶IP地址表的管理功能
DHCP Snooping:DHCP監聽,記錄通過二層設備申請到IP地址的用戶信息

DHCP的封包格式如右圖所示,各欄位定義如下: 報文格式

報文中各欄位的描述如下:

    op,報文類型,1表示請求報文,2表示回應報文。
    htype,硬體地址類型,1表示10Mb/s的乙太網的硬體地址。
    hlen,硬體地址長度,乙太網中該值為6。
    hops,跳數。客戶端設置為0,也能被一個代理伺服器設置。
    xid,事務ID,由客戶端選擇的一個隨機數,被伺服器和客戶端用來在它們之間交流請求和響應,客戶端用它對請求和應答進行匹配。該ID由客戶端設置並由伺服器返回,為32位整數。
    secs,由客戶端填充,表示從客戶端開始獲得IP地址或IP地址續借後所使用了的秒數。
    flags,標誌欄位。這個16比特的欄位,目前只有最左邊的一個比特有用,該位為0,表示單播,為1表示廣播。
    ciaddr,客戶端的IP地址。只有客戶端是Bound、Renew、Rebinding狀態,並且能響應ARP請求時,才能被填充。
    yiaddr,"你自己的"或客戶端的IP地址。
    siaddr,表明DHCP協議流程的下一個階段要使用的伺服器的IP地址。
    giaddr,DHCP中繼器的IP地址。//註意:不是地址池中定義的網關
    chaddr,客戶端硬體地址。客戶端必須設置它的"chaddr"欄位。UDP數據包中的乙太網幀首部也有該欄位,但通常通過查看UDP數據包來確定乙太網幀首部中的該欄位獲取該值比較困難或者說不可能,而在UDP協議承載的DHCP報文中設置該欄位,用戶進程就可以很容易地獲取該值。
    sname,可選的伺服器主機名,該欄位是空結尾的字元串,由伺服器填寫。
    file,啟動文件名,是一個空結尾的字元串。DHCP Discover報文中是"generic"名字或空字元,DHCP Offer報文中提供有效的目錄路徑全名。
    options,可選參數域,格式為"代碼+長度+數據"
DHCP共有八種報文,分別為DHCP Discover、DHCP Offer、DHCP Request、DHCP ACK、DHCP NAK、DHCP Release、DHCP Decline、DHCP Inform。各報文類型功能如表1所述。


描述
DHCP Discover
DHCP客戶端請求地址時,並不知道DHCP伺服器的位置,因此DHCP客戶端會在本地網路內以廣播方式發送請求報文,這個報文成為Discover報文,目的是發現網路中的DHCP伺服器,所有收到Discover報文的DHCP伺服器都會發送回應報文,DHCP客戶端據此可以知道網路中存在的DHCP伺服器的位置。

DHCP Offer
DHCP伺服器收到Discover報文後,就會在所配置的地址池中查找一個合適的IP地址,加上相應的租約期限和其他配置信息(如網關、DNS伺服器等),構造一個Offer報文,發送給用戶,告知用戶本伺服器可以為其提供IP地址。< 只是告訴client可以提供,是預分配,還需要client通過ARP檢測該IP是否重覆>

DHCP Request DHCP客戶端可能會收到很多Offer,所以必須在這些回應中選擇一個。Client通常選擇第一個回應Offer報文的伺服器作為自己的目標伺服器,並回應一個廣播Request報文,通告選擇的伺服器。DHCP客戶端成功獲取IP地址後,在地址使用租期過去1/2時,會向DHCP伺服器發送單播Request報文續延租期,如果沒有收到DHCP ACK報文,在租期過去3/4時,發送廣播Request報文續延租期。 DHCP ACK DHCP伺服器收到Request報文後,根據Request報文中攜帶的用戶MAC來查找有沒有相應的租約記錄,如果有則發送ACK報文作為回應,通知用戶可以使用分配的IP地址。
DHCP NAK 如果DHCP伺服器收到Request報文後,沒有發現有相應的租約記錄或者由於某些原因無法正常分配IP地址,則發送NAK報文作為回應,通知用戶無法分配合適的IP地址。 DHCP Release 當用戶不再需要使用分配IP地址時,就會主動向DHCP伺服器發送Release報文,告知伺服器用戶不再需要分配IP地址,DHCP伺服器會釋放被綁定的租約。 DHCP Decline DHCP客戶端收到DHCP伺服器回應的ACK報文後,通過地址衝突檢測發現伺服器分配的地址衝突或者由於其他原因導致不能使用,則發送Decline報文,通知伺服器所分配的IP地址不可用。 DHCP Inform DHCP客戶端如果需要從DHCP伺服器端獲取更為詳細的配置信息,則發送Inform報文向伺服器進行請求,伺服器收到該報文後,將根據租約進行查找,找到相應的配置信息後,發送ACK報文回應DHCP客戶端。

 

1、搭建過程

yum -y install dhcp* 

(1/4): dhclient-4.1.1-53.P1.el6.centos.x86_64.rpm                       | 322 kB     00:00  

###  DHCP (Dynamic Host Configuration Protocol) is a protocol which allows
individual devices on an IP network to get their own network
configuration information (IP address, subnetmask, broadcast address,
etc.) from a DHCP server. The overall purpose of DHCP is to make it
easier to administer a large network.  The dhcp package includes the
ISC DHCP service and relay agent.


在ISC DHCP中繼代理和服務。
(2/4): dhcp-4.1.1-53.P1.el6.centos.x86_64.rpm                           | 823 kB     00:00    

###DHCP (Dynamic Host Configuration Protocol) is a protocol which allows
individual devices on an IP network to get their own network
configuration information (IP address, subnetmask, broadcast address,
etc.) from a DHCP server. The overall purpose of DHCP is to make it
easier to administer a large network.  The dhcp package includes the
ISC DHCP service and relay agent.

To use DHCP on your network, install a DHCP service (or relay agent),
and on clients run a DHCP client daemon.  The dhcp package provides
the ISC DHCP service and relay agent.
(3/4): dhcp-common-4.1.1-53.P1.el6.centos.x86_64.rpm                    | 144 kB     00:00 

    ###管理包DHCP (Dynamic Host Configuration Protocol) is a protocol which allows
individual devices on an IP network to get their own network
configuration information (IP address, subnetmask, broadcast address,
etc.) from a DHCP server. The overall purpose of DHCP is to make it
easier to administer a large network.
(4/4): dhcp-devel-4.1.1-53.P1.el6.centos.x86_64.rpm                     | 158 kB     00:00    
##Header files and API documentation for using the ISC DHCP libraries.  The
libdhcpctl and libomapi static libraries are also included in this package.

配置過程

1、查看dhcpd.conf 配置文件,提示需要參考模板配置文件。

 cat /etc/dhcp/dhcpd.conf

#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#   see 'man 5 dhcpd.conf'
#
cat /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample  > /etc/dhcp/dhcpd.conf

2、編輯配置文件

[root@dhcp dhcp]# cat /etc/dhcp/dhcpd.conf 
ddns-update-style interim;
ignore client-updates;

subnet 192.168.1.0 netmask 255.255.255.0 {

# --- default gateway
option routers                  192.168.1.0;
option subnet-mask              255.255.255.0;
option time-offset              -18000; # Eastern Standard Time
#       option ntp-servers              192.168.1.1;
#       option netbios-name-servers     192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change # -- you understand Netbios very well                        
#      option netbios-node-type 2;

range dynamic-bootp 192.168.1.200 192.168.1.230;
default-lease-time 21600;
max-lease-time 43200;

# we want the nameserver to appear at a fixed address
 }

3、啟動服務;service dhcpd restart

4、配置文件說明

dhcpd.conf參數說明

/etc/dhcpd.conf通常包括三部分:parameters、declarations 、option。

1.DHCP配置文件中的parameters(參數):表明如何執行任務,是否要執行任務,或將哪些網路配置選項發送給客戶


ddns-update-style               配置DHCP-DNS 互動更新模式。 
default-lease-time              指定確省租賃時間的長度,單位是秒。 
max-lease-time                  指定最大租賃時間長度,單位是秒。 
hardware                        指定網卡介面類型和MAC地址。 
server-name                     通知DHCP客戶伺服器名稱。 
get-lease-hostnames flag        檢查客戶端使用的IP地址。 
fixed-address ip                分配給客戶端一個固定的地址。 
authritative                    拒絕不正確的IP地址的要求。

2.DHCP配置文件中的declarations (聲明):用來描述網路佈局、提供客戶的IP地址等


shared-network                              用來告知是否一些子網路分享相同網路。 
subnet                                      描述一個IP地址是否屬於該子網。 
range                                       起始IP 終止IP 提供動態分配IP 的範圍。 
host                                        主機名稱 參考特別的主機。 
group                                       為一組參數提供聲明。 
allow unknown-clients;deny unknown-client   是否動態分配IP給未知的使用者。 
allow bootp;deny bootp                      是否響應激活查詢。 
allow booting;deny booting                  是否響應使用者查詢。 
filename                                    開始啟動文件的名稱. 應用於無盤工作站。 
next-server                                設置伺服器從引導文件中裝如主機名,應用於無盤工作站。

3. DHCP配置文件中的option(選項):用來配置DHCP可選參數,全部用option關鍵字作為開始

subnet-mask           為客戶端設定子網掩碼。 
domain-name           為客戶端指明DNS名字。 
domain-name-servers   為客戶端指明DNS伺服器IP地址。 
host-name             為客戶端指定主機名稱。 
routers               為客戶端設定預設網關。 
broadcast-address     為客戶端設定廣播地址。 
ntp-server            為客戶端設定網路時間伺服器IP地址。 
time-offset          為客戶端設定和格林威治時間的偏移時間,單位是秒。

註意:如果客戶端使用的是視窗操作系統,不要選擇"host-name"選項,即不要為其指定主機名稱

 

工作原理:

DHCP協議採用UDP作為傳輸協議,主機發送請求消息到DHCP伺服器的67號埠,DHCP伺服器回應應答消息給主機的68號埠。詳細的交互過程如下圖。  

 


 

 
  1. 即DHCP客戶端尋找DHCP服務端的過程,對應於客戶端發送DHCP Discovery,因為DHCP Server對應於DHCP客戶端是未知的,所以DHCP 客戶端發出的DHCP Discovery報文是廣播包,源地址為0.0.0.0目的地址為255.255.255.255。網路上的所有支持TCP/IP的主機都會收到該DHCP Discovery報文,但是只有DHCP Server會響應該報文。
    如果網路中存在多個DHCP Server,則多個DHCP Server均會回覆該DHCP Discovery報文。
    如果同一個vlan內沒有DHCP Server,而該VlanIf配置了DHCP Relay功能,則該Vlanif即為DHCP中繼,DHCP中繼會將該DHCP報文的源IP地址修改為該Vlanif的IP地址,而目的地址則為DHCP Relay配置的DHCP Server的IP地址。同時修改DHCP報文中,giaddress為VlanIf的IP地址。並以單播將DHCP Discovery發送到DHCP Server端。
  2. DHCP Server提供階段,即為DHCP Server響應DHCP Discovery所發的DHCP Offer階段
    DHCP Server收到DHCP Discovery報文後,解析該報文請求IP地址所屬的Subnet。並從dhcpd.conf文件中與之匹配的subnet中取出一個可用的IP地址(從可用地址段選擇一個IP地址後,首先發送ICMP報文來ping該IP地址,如果收到該IP地址的ICMP報文,則拋棄該IP地址,重新選擇IP地址繼續進行ICMP報文測試,直到找到一個網路中沒有人使用的IP地址,用以達到防治動態分配的IP地址與網路中其他設備IP地址衝突,這個IP地址衝突檢測機制,可配置),設置在DHCP Discovery報文中yiaddress欄位中,表示為該客戶端分配的IP地址,並且為該Lease設置該Subnet配置的Option,例如預設leases租期,最大租期,router等信息。
    DHCP從地址池中選擇IP地址,以如下優先順序進行選擇:
        1)當前已經存在的Ip Mac的對應關係
        2)Client以前的IP地址
        3)讀取Discovery報文中的Requested Ip Address Option的值,如果存在並且IP地址可用
        4)從配置的Subnet中選擇IP地址:
    DHCP Server解析DHCP Discovery請求的IP所屬的Subnet,首先看該DHCP Discovery報文中giaddress是否有DHCP Relay,如果有,則從giaddress所述的subnet中可用IP地址段中獲取,並分配IP。如果giaddress沒有IP地址,則從該DHCP Server綁定的介面的IP地址所屬的網段分配IP地址。
  3. DHCP Client收到若幹個DHCP Server響應的DHCP Offer報文後,選擇其中一個DHCP Server作為目標DHCP Server。選擇策略通常為選擇第一個響應的DHCP Offer報文所屬的DHCP Server。
    然後以廣播方式回答一個DHCP Request報文,該報文中包含向目標DHCP請求的IP地址等信息。之所以是以廣播方式發出的,是為了通知其他DHCP Server自己將選擇該DHCP Server所提供的IP地址。
  4. 當DHCP Server收到DHCP Client發送的DHCP Request後,確認要為該DHCP Client提供的IP地址後,便想該DHCP Client響應一個包含該IP地址以及其他Option的報文,來告訴DHCP Client可以使用該IP地址了。然後DHCP Client即可以將該IP地址與網卡綁定。另外其他DHCP Server都將收回自己之前為DHCP Client提供的IP地址。
  5. 當DHCP Client重新登錄後,發送一個以包含之前DHCP Server分配的IP地址信息的DHCP Request報文,當DHCP Server收到該請求後,會嘗試讓DHCP客戶端繼續使用該IP地址。並回答一個ACK報文。
    但是如果該IP地址無法再次分配給該DHCP Client後,DHCP回覆一個NAK報文,當DHCP Client收到該NAK報文後,會重新發送DHCP Discovery報文來重新獲取IP地址。
  6. DHCP獲取到的IP地址都有一個租約,租約過期後,DHCP Server將回收該IP地址,所以如果DHCP Client如果想繼續使用該IP地址,則必須更新器租約。更新的方式就是,噹噹前租約期限過了一半後,DHCP Client都會發送DHCP Renew報文來續約租期。
      在使用租期超過50%時刻處,DHCP Client會以單播形式向DHCP Server發送DHCPRequest報文來續租IP地址。如果DHCP Client成功收到DHCP Server發送的DHCP ACK報文,則按相應時間延長IP地址租期;如果沒有收到DHCP Server發送的DHCP ACK報文,則DHCP Client繼續使用這個IP地址。       在使用租期超過87.5%時刻處,DHCP Client會以廣播形式向DHCP Server發送DHCPRequest報文來續租IP地址。如果DHCP Client成功收到DHCP Server發送的DHCP ACK報文,則按相應時間延長IP地址租期;如果沒有收到DHCP Server發送的DHCP ACK報文,則DHCP Client繼續使用這個IP地址,直到IP地址使用租期到期時,DHCP Client才會向DHCP Server發送DHCP Release報文來釋放這個IP地址,並開始新的IP地址申請過程。 需要說明的是:DHCP客戶端可以接收到多個DHCP伺服器的DHCPOFFER數據包,然後可能接受任何一個DHCPOFFER數據包,但客戶端通常只接受收到的第一個DHCPOFFER數據包。另外,DHCP伺服器DHCPOFFER中指定[1]  的地址不一定為最終分配的地址,通常情況下,DHCP伺服器會保留該地址直到客戶端發出正式請求。       正式請求DHCP伺服器分配地址DHCPREQUEST採用廣播包,是為了讓其它所有發送DHCPOFFER數據包的DHCP伺服器也能夠接收到該數據包,然後釋放已經OFFER(預分配)給客戶端的IP地址。       如果發送給DHCP客戶端的地址已經被其他DHCP客戶端使用,客戶端會向伺服器發送DHCPDECLINE信息包拒絕接受已經分配的地址信息。       在協商過程中,如果DHCP客戶端發送的REQUEST消息中的地址信息不正確,如客戶端已經遷移到新的子網或者租約已經過期,DHCP伺服器會發送DHCPNAK消息給DHCP客戶 端,讓客戶端重新發起地址請求過程。

 獲取過程

 

 

1、查看客戶端message 日誌;

首次獲取
May 29 12:27:38 66 dhclient[26828]: DHCPDISCOVER on eth2 to 255.255.255.255 port 67 interval 8 (xid=0x3acc5b99) May 29 12:27:38 66 dhclient[26828]: DHCPOFFER from 192.168.1.2 May 29 12:27:38 66 dhclient[26828]: DHCPREQUEST on eth2 to 255.255.255.255 port 67 (xid=0x3acc5b99) May 29 12:27:38 66 dhclient[26828]: DHCPACK from 192.168.1.2 (xid=0x3acc5b99) May 29 12:27:40 66 NET[26875]: /sbin/dhclient-script : updated /etc/resolv.conf May 29 12:27:40 66 dhclient[26828]: bound to 192.168.1.47 -- renewal in 39792 seconds.

斷開後重新獲取 May 29 13:26:40 66 dhclient[41297]: DHCPREQUEST on eth3 to 255.255.255.255 port 67 (xid=0x207c094c) May 29 13:26:40 66 dhclient[41297]: DHCPACK from 192.168.1.2 (xid=0x207c094c) May 29 13:26:42 66 NET[41351]: /sbin/dhclient-script : updated /etc/resolv.conf May 29 13:26:42 66 dhclient[41297]: bound to 192.168.1.157 -- renewal in 38792 seconds.

2、抓包分析;

tcpdump -i any -w dhcp.pcap 'udp and port 67 and port 68'

首次獲取信息抓包;

 

1、Discover包分析

 

2、OFFER

 

(1)DHCP伺服器仍然使用廣播地址作為目的地址,因為此時請求分配IP的Client並沒有自己ip,而可能有多個Client在使用0.0.0.0這個IP作為源IP向DHCP伺服器發出IP分配請求,DHCP也不能使用0.0.0.0這個IP作為目的IP地址,於是依然採用廣播的方式,告訴正在請求的Client們,這是一臺可以使用的DHCP伺服器。

(2)DHCP伺服器提供了一個可用的IP,在數據包的Your (client) IP Address欄位可以看到DHCP伺服器提供的可用IP。

(3)除此之外,如圖中紅色矩形框的內容所示,伺服器還發送了子網掩碼,路由器,DNS,功能變數名稱,IP地址租用期等信息。

 

3 REQUEST包

 

4、ACK包

 

 

 

 在數據包中包含以下信息,表示將這些資源信息分配給Client.
  Your(client) IP address:分配給Client的可用IP。
  後面有許多項option信息,前兩項是DHCP伺服器發送的消息類型(ACK)和伺服器的身份標識,後面幾項是:
  Subnet Mask:Client端分配到的IP的子網掩碼;
  Router:路由器
  Domain Name Server:DNS,功能變數名稱伺服器
  Domain Name:功能變數名稱
  IP Address Lease Time:IP租用期。

 

 模擬重啟主機抓包

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. Oracle跟SQL Server 2005的區別? 巨集觀上: 1). 最大的區別在於平臺,oracle可以運行在不同的平臺上,sql server只能運行在windows平臺上,由於windows平臺的穩定性和安全性影響了sql server的穩定性和安全性 2). oracle使用的腳本語 ...
  • 下麵總結、整理一下RMAN異機恢復這方面的知識點,這篇筆記在個人筆記裡面躺了幾年了,直到最近偶然被翻看到,遂整理、總結一下。如下所示,個人將整個RMAN異機恢復分為準備工作和操作步驟兩大部分。當然,準備工作裡面,有些步驟不是必須的,可以跳過或忽略的。這個取決於你的實際環境和你對RMAN異機恢復的熟悉... ...
  • haproxy的記憶體管理中,通過pool_head free_list,存儲空閑記憶體塊,free_list是個二級指針,卻把空閑記憶體塊都串了起來,沒有用next,pre之類的指針。怎麼實現的?著實思考了半個小時才明白。 pool_head結構: 可知,free_list是個二級指針,二級指針是指向指 ...
  • vim: 移動游標至段首:^或者home鍵 移動游標至段尾:$或者end鍵 刪除游標位置到本行開頭:d0或者d^ 刪除游標位置到本行末尾:D或者d$ 撤銷操作:u 取消撤銷操作:ctrl+r ...
  • 1.使用xinput list查看與觸摸板相關的id,以下是本機的輸出,沒搞清楚為什麼是Mouse!!! jello@jello:~$ xinput list⎡ Virtual core pointer id=2 [master pointer (3)]⎜ ↳ Virtual core XTEST ...
  • SPI (Serial Peripheral interface),顧名思義就是串列外圍設備介面。SPI是一種高速的,全雙工,同步的通信匯流排,並且在晶元的管腳上只占用四根線,節約了晶元的管腳,同時為PCB的佈局上節省空間,提供方便,主要應用在 EEPROM,FLASH,實時時鐘,AD轉換器,還有數字 ...
  • 在FPGA里想寫順序執行的語句沒有C語言來的簡便花哨,比如for迴圈,或者再厲害點的來個嵌套迴圈。FPGA里要實現順序執行某個操作功能需要藉助狀態機實現。下麵比較了下兩種狀態機的寫法。 test_fsm和test_fsm2是兩個工程。 test_fsm是仿順序寫法,即數節拍的寫法,行數多,看著繞人, ...
  • 1、df -lh查看是否已經掛載2、fdisk -l 查看需要掛載的數據盤信息3、mount /dev/vdb /mntecho '/dev/vdb /mnt ext3 defaults 0 0' >> /etc/fstabdf -lhinit6//重啟服務df -lh查看是否掛載成功 伺服器為專有 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...