<del id="d4fwx"><form id="d4fwx"></form></del>
      <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

            <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
          • IPv6的NAT原理是什么-創(chuàng)新互聯(lián)

            IPv6的NAT原理是什么,針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

            創(chuàng)新互聯(lián)是專業(yè)的景德鎮(zhèn)網(wǎng)站建設(shè)公司,景德鎮(zhèn)接單;提供成都做網(wǎng)站、網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行景德鎮(zhèn)網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

            在億萬互聯(lián)網(wǎng)用戶享受著Internet帶來便利的同時(shí),IPv4地址即將耗盡的問題卻早在20年前就被網(wǎng)絡(luò)專家們意識(shí)到了,并采取了措施延緩IPv4的消耗,這項(xiàng)措施就是NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)技術(shù)。NAT主要作用在于節(jié)約IP地址,而非所謂的增加IP的方向性以及隱藏私有IP,且IPv4的NAT打破了互聯(lián)網(wǎng)本身的“互聯(lián)”特性,使得一部分IP地址不再雙向可達(dá),NAT為無方向的IP協(xié)議增加了一個(gè)方向,特別是stateful的NAT類型。此時(shí),IPv6時(shí)代已逐漸到來。

            而IPv6的標(biāo)準(zhǔn)中不建議使用NAT,這是何緣由呢?我們已知IPv6地址數(shù)量巨大,只要在地球上,都可為螞蟻配置IP設(shè)備,因此IPv4的一些修補(bǔ)手段將不再需要,為了保持協(xié)議本身以及相關(guān)標(biāo)準(zhǔn)的純潔性,在IPv6中幾乎不再建議使用NAT。雖然不再建議使用,但在某些必要情況下,還是可能需要實(shí)現(xiàn)IPv6的NAT。在RFC6296的標(biāo)題是IPv6-to-IPv6 Network Prefix Translation中,描述了IPv6下的NAT的實(shí)現(xiàn)要點(diǎn),給出了一個(gè)合理的建議,既保持了IP的無方向性,又可以滿足NAT的語義,這就是IPv6之NAT stateless的緣由。

            IPv6地址有將近128個(gè)可隨意調(diào)配的位,其龐大的地址空間,一般的單位都會(huì)被分配到一個(gè)擁有很大量地址的網(wǎng)段,此網(wǎng)段擁有足夠多的地址來和內(nèi)網(wǎng)主機(jī)進(jìn)行映射,即可用于映射的IP地址池容量巨大,且既然不想再使用非IP層的信息來保持信息,又要保持映射,那就要用純IP層的信息,這樣對上層影響最小。對于IPv6而言,NAT利用checksum算法來保持流標(biāo)識(shí)信息,絲毫不管這個(gè)checksum是誰的checksum,因?yàn)樗揪筒桓淖償?shù)據(jù)包的checksum...

            接下來給大家講解一下checksum無關(guān)性和自動(dòng)轉(zhuǎn)換,就是考慮a+b+c+d=X。其中X就是checksum,我們把a(bǔ),b當(dāng)成源IP地址的兩部分,c,d當(dāng)成目的IP地址的兩部分,我們作源地址轉(zhuǎn)換,將a和b都改變,比如a改變成了A,那么將b改成多少才能保持checksum的值X不變,求解即可。IPv6的建議NAT實(shí)現(xiàn)亦是上文這個(gè)原理,只是將其換為計(jì)算機(jī)布爾數(shù)域求解。既然可以不觸動(dòng)第四層的checksum值,那么NAT對第四層協(xié)議的影響也就減小了,雖然它還是解決不了諸如ESP/AH等穿越NAT的問題。基于以上算法,IPv6在做NAT的時(shí)候,在給定的子網(wǎng)網(wǎng)段內(nèi),可以自動(dòng)生成一個(gè)新的IP地址供映射之用,從算法本身來看,沖突的可能性非常之小致于0。

            既然IPv6的NAT機(jī)制“自動(dòng)”為一個(gè)連接選擇了一個(gè)IP地址,那么當(dāng)返回包到來的時(shí)候,如何把地址轉(zhuǎn)換為原地址呢?IPv6的NAT把地址“轉(zhuǎn)換回去”這件事完全靠算法本身,而算法本身就能將轉(zhuǎn)換后的地址再轉(zhuǎn)回原來的,具有解的唯一性,在IPv6的NAT實(shí)現(xiàn)中,算法只針對IP地址中16位的地址信息進(jìn)行自動(dòng)生成,而其它的則需要手工顯式配置,由于內(nèi)網(wǎng)IPv6地址可以使用MAC地址映射成唯一的地址,且轉(zhuǎn)換后的地址是唯一的,將這一切反過來,最后還是能映射回原始的IP地址的。

            如果拋開地址轉(zhuǎn)換這一說,僅僅考慮算法本身,那還是可以給出一個(gè)實(shí)際可以運(yùn)行的代碼的,該代碼使用了計(jì)算checksum的算法:

            #include <stdio.h>

            #include <stdlib.h>

            #include <string.h>

            //以下2個(gè)函數(shù)就是計(jì)算校驗(yàn)碼的,具體的原理請參RFC1071/RFC1624/RFC1141。

            static inline u_int16_t add16(

                u_int16_t a,

                u_int16_t b)

            {

                a += b;

                return a + (a < b);

            }

            static inline u_int16_t csum16(const u_int16_t *buf, int len)

            {

                u_int16_t csum = 0;

                while(len--) csum = add16(csum, *buf++);

                return csum;

            }

            int main(int argc, char **argv)

            {

                u_int16_t buf[18] = {0};

                int i = 0;

                memcpy(buf, "efghhijk", 8);

                memcpy(buf+4, "12345678", 8);

                memcpy(buf+8, "xxyywert", 8);

                memcpy(buf+12, "zxcvkljh", 8);

                //正確做法是打印16進(jìn)制數(shù)據(jù),此處為了簡單,打印了字符串

                printf("原始數(shù)據(jù):%s  長度:%d\n", (char*)buf, strlen((char*)buf));    

                printf("原始數(shù)據(jù)的校驗(yàn)碼:%X\n", csum16(buf, 16));    

                u_int16_t tip[3] = {0};

                memcpy(tip, "#$!%", 4);

                u_int16_t tip_sum = csum16(tip, 2);

                printf("\nNAT規(guī)則: efghhijk1234/12 -〉efghhijk#$!%/12\n\n");

                printf("固定從第9個(gè)字節(jié)開始修改4個(gè)字節(jié)為:%s 其校驗(yàn)碼為:%X\n", (char*)tip, tip_sum);

                //定位固定修改后的動(dòng)態(tài)修改的初始地址,注意,我們僅僅修改16位信息

                u_int16_t* pcsum = buf + 4+2;  

                //計(jì)算動(dòng)態(tài)修改的值

                *pcsum = ~add16(

                    add16(

                        ~(*pcsum),

                        ~csum16(buf+4, 2)

                    ),

                    tip_sum

                );

                printf("動(dòng)態(tài)修改的值為:%X\n", *pcsum);

                memcpy(buf+4, tip, 4); //完成修改

                printf("當(dāng)前數(shù)據(jù):%s  長度:%d\n", buf, strlen((char*)buf));    

                printf("當(dāng)前校驗(yàn)碼:%X\n", csum16(buf, 16));    

                printf("-------------以下是還原操作-------------\n");

                printf("\n反向NAT規(guī)則: efghhijk#$!%/12 -〉efghhijk1234/12\n\n");

                u_int16_t tip2[3] = {0};

                    memcpy(tip2, "1234", 4);

                printf("我們只需要記住原始數(shù)據(jù)被固定修改前的:%s\n", tip2);

                u_int16_t tip_sum2 = csum16(tip2, 2);

                u_int16_t* pcsum2 = buf+6;

                *pcsum2 = ~add16(

                    add16(

                        ~(*pcsum2),

                        ~csum16(buf+4, 2)

                    ),

                    tip_sum2

                );

                //還原

                memcpy(buf+4, tip2, 4);

                printf("原始數(shù)據(jù):%s\n", (char *)buf);

                printf("原始校驗(yàn)碼:%X\n", csum16(buf, 16));    

            }

            運(yùn)行結(jié)果如下:

            IPv6的NAT原理是什么

            把以上的原理套用在IPv6的NAT上,就是一種實(shí)現(xiàn)。

            關(guān)于IPv6的NAT原理是什么問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

            網(wǎng)站標(biāo)題:IPv6的NAT原理是什么-創(chuàng)新互聯(lián)
            分享鏈接:http://www.jbt999.com/article6/doohog.html

            成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版網(wǎng)站內(nèi)鏈、營銷型網(wǎng)站建設(shè)網(wǎng)站收錄、用戶體驗(yàn)、品牌網(wǎng)站制作

            廣告

            聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

            網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司

              <del id="d4fwx"><form id="d4fwx"></form></del>
              <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

                    <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
                  • 亚洲日本在线播放 | 国产 —一级a毛一级a看免费 | 婷婷色五月激情强奸 | 看日韩的黄色片 | 玖玖成人免费视频 |