操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    在應用開發中你是如何處理IP地址存儲的呢?是不是定義為:(15)呢?

    一、IPv4和IPv6(1)、IPv4介紹

    網際協議版本4,又稱互聯網通信協議第四版,是網際協議開發過程中的第四個修訂版本,也是此協議第一個被廣泛部署的版本。IPv4是互聯網的核心,也是使用最廣泛的網際協議版本。

    IPv4是一種無連接的協議,操作在使用分組交換的鏈路層(如以太網)上。此協議會盡最大努力交付數據包,意即它不保證任何數據包均能送達目的地,也不保證所有數據包均按照正確的順序無重復地到達。這些方面是由上層的傳輸協議(如傳輸控制協議)處理的。

    到2019年底,全球所有43億個IPv4地址已分配完畢,這意味著沒有更多的IPv4地址可以使用。

    格式

    從點分十進制轉換

    點分十進制

    192.0.2.235

    不適用

    點分十六進制

    0xC0.0x00.0x02.0xEB

    每個字節被單獨轉換為十六進制

    點分八進制

    0300.0000.0002.0353

    每個字節被單獨轉換為八進制

    十六進制

    將點分十六進制連在一起

    十進制

    用十進制寫出的32位整數

    八進制

    3

    用八進制寫出的32位整數

    (2)、IPv6介紹

    IPv6即互聯網協議第6版,是互聯網工程任務組(IETF)設計的用于替代IPv4的下一代IP協議,其地址數量號稱可以為全世界的每一粒沙子編上一個地址。IPv6的地址長度為128位,是IPv4地址長度的4倍。于是IPv4點分十進制格式不再適用ipv4地址的主要表示格式是,采用十六進制表示。

    IPv6表示方法1

    格式為X:X:X:X:X:X:X:X,其中每個X表示地址中的16b,以十六進制表示,例如:

    ABCD:EF01:2345:6789:ABCD:EF01:2345:6789

    這種表示法中,每個X的前導0是可以省略的,例如:

    2001:0DB8:0000:0023:0008:0800:200C:417A→ 2001:DB8:0:23:8:800:200C:417A

    IPv6標識方法2

    在某些情況下,一個IPv6地址中間可能包含很長的一段0,可以把連續的一段0壓縮為“::”。但為保證地址解析的唯一性,地址中”::”只能出現一次,例如:

    FF01:0:0:0:0:0:0:1101 → FF01::1101
    0:0:0:0:0:0:0:1 → ::1
    0:0:0:0:0:0:0:0 → ::

    IPv6標識方法3

    內嵌IPv4地址表示法,為了實現IPv4-IPv6互通,IPv4地址會嵌入IPv6地址中,此時地址常表示為:X:X:X:X:X:X:d.d.d.d,前96b采用冒分十六進制表示,而最后32b地址則使用IPv4的點分十進制表示,例如::192.168.0.1與::FFFF:192.168.0.1就是兩個典型的例子,注意在前96b中,壓縮0位的方法依舊適用 。

    二、Mysql中相關函數(1)、

    八點分十進制 ip地址 轉為無符號整型(4-8位)

    mysql> select inet_aton('0.0.0.0') ip1,inet_aton('255.255.255.255') ip2;
    +------+------------+
    | ip1  | ip2        |
    +------+------------+
    |    0 | 4294967295 |
    +------+------------+
    1 row in set (0.00 sec)

    (2)、

    該函數把整型的ip地址轉為點分十進制形式

    mysql> select inet_ntoa(0) ip1,inet_ntoa(4294967295) ip2;
    +---------+-----------------+
    | ip1     | ip2             |
    +---------+-----------------+
    | 0.0.0.0 | 255.255.255.255 |
    +---------+-----------------+
    1 row in set (0.00 sec)

    (3)、

    該函數把IPv6字符串地址轉換為無符號整型二進制數據

    mysql> select inet6_aton('ABCD:EF01:2345:6789:ABCD:EF01:2345:6789') as v6;
    +------------------+
    | v6               |
    +------------------+
    | ??#Eg壂惋#Eg? |
    +------------------+
    1 row in set (0.00 sec)

    (4)、

    把二進制形式的無符號整型(128位),轉換為字符串形式IPv6地址

    mysql> select inet6_aton('ABCD:EF01:2345:6789:ABCD:EF01:2345:6789') into @v6;
    Query OK, 1 row affected (0.00 sec)
    mysql> select inet6_ntoa(@v6) as v6s;
    +-----------------------------------------+
    | v6s                                     |
    +-----------------------------------------+
    | abcd:ef01:2345:6789:abcd:ef01:2345:6789 |
    +-----------------------------------------+
    1 row in set (0.00 sec)

    三、有效云平臺訪問日志處理方法

    在有效云系統開發中,訪問日志的處理非常簡單,只需要一行代碼即可實現:

    {{FUNC_SQLEXEC "sitedb" "insert into tb_visit_log(ip,domain,ua,refer_url) values (?,?,?,?)" IP DOMAIN USERAGENT REFER }}

    這樣代碼直接放到任何頁面中(一般在HTML內容末尾), 為數據庫執行函數, 為鏈接代號。

    其中參數 IP、、、REFER 均為系統上下文環境變量,直接引用。

    ● IP 客戶端訪問的IP地址

    ● 訪問的域名

    ● UA信息

    ● REFER 來源網址

    數據表結構

    CREATE TABLE `tb_visit_log` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `domain` varchar(255) DEFAULT '',
      `refer_url` varchar(500) DEFAULT '',
      `ua` varchar(500) DEFAULT '',
      `ip` varbinary(16) DEFAULT NULL,
      `logtime` datetime DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

    如果是IPv4 ip可定義為(4),IPv6定義為(16)。

    在顯示時, 或 轉換為字符串形式:

    select id,if(IS_IPV4(ip),inet_ntoa(ip),inet6_ntoa(ip)) as ip,domain,ua,logtime from tb_visit_log limit logtime desc limit 2000;

    這樣的定義可以很大程度節省數據庫的存儲空間和查詢效率。

    IPv4: (15) 和 (4) 所需存儲空間相差11字節*(表數據格式寬),當數據量巨大時ipv4地址的主要表示格式是,這個間距將被放大。

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有