area29ff.com
29ff.com 时间:2021-03-20 阅读:(
)
CopyrightIBMCorporation2001TrademarksWritingasimpleIPv6programPage1of11WritingasimpleIPv6programConfiguringanIPv6addressandportinganIPv4applicationtoIPv6SenthilSundaramSeptember01,2001ThisarticlediscussestheconceptsbehindasimpleIPv6program--specifically,howIPv6solvestheproblemsofaddressspaceandlargeroutingtables.
AprogrammerfamiliarwithIPv4willbeabletorecogniseanIPv6addressandconfigureoneforhismachine.
Thearticlealsocoverstunneling,mappedaddresses,andportingIPv4toIPv6applications,aswellasthelogicofenablinganIPv4clienttohandleIPv6addresses.
Intoday'snetworkingworld,IPv4isthefoundationofnetworking,butinthelast10years,questionshavecomeupdueto:FearofrunningoutofIPv4addressspaceassoonas2002FearofrunningoutofcapacityinglobalroutingtablesNetworkAddressTranslation(NAT)andClasslessInter-DomainRouting(CIDR)(seeRelevantconcepts)havebeenusedasstopgapmeasuresforthesesimplebutseriousproblems.
IPv6--alsocalledIPng(IPnewgeneration)--hasbeenviewedasthelong-termsolution.
ThefollowingenhancementstoIPv4havealsobeenplanned:SimplifiedheaderprocessingSupportforextendedoptionsEnhancementslikequality-of-servicecapabilities,authenticationandprivacycapabilities,flowcontrolcapabilities,andautoconfigurationThekeyrulebehindallthischangeisthatIPv6applicationsshouldcontinuetolivewithIPv4applications.
ThebottomlineisthatIPv6shouldsupportamixedIPv6andIPv4environment.
ThisarticlewillhelpyouquicklyunderstandtheconceptsbehindIPv6andwriteasimpleprograminit.
Let'sstartwithIPv6addressing.
developerWorksibm.
com/developerWorks/WritingasimpleIPv6programPage2of11IPv6addressingTypesofaddressesinIPv6:AnycastisthenewbabyInIPv6,therearethreetypesofaddresses--unicast,multicast,andanycast.
WehadunicastaddressesinIPv4,andmanysystemssupportmulticast,aswell.
AnycastisanewtypeofaddressdefinedbyIPv6.
1.
Unicast:ThisislikeanynormalIPaddressonasingleinterface(forexample,theIPv4address9.
185.
101.
1onen0).
2.
Multicast:Apacketsenttoamulticastaddressisdeliveredtoallinterfacesidentifiedbythataddress.
Thereisnobroadcastaddresstypesincethemulticasttypecantakecareofit.
3.
Anycast:Apacketsenttoananycastaddressisdeliveredtooneoftheinterfacesidentifiedbythataddress(the"nearest"one,accordingtotheroutingprotocols'measureofdistance).
Let'sconsiderasituationwhereanycastaddressescanbeused--connectingtoaserviceprovider'srouter.
Assumethattheserviceprovidercangiveyouasetofaddressestoconnectto,andyouchooseoneoftheseaddresses.
WithIPv6,theserviceprovidercangiveyouananycastaddress,whichyouwillusetoautomaticallyconnecttothe"nearest"address.
ThisisanewfeatureinIPv6andthereisstillalotofdebategoingonaboutitsimplementation.
HowIPv6addressesarewritten:WhatachangeTherearethreeconventionalformsforrepresentingIPv6addressesastextstrings:1.
Theprimaryform:Thepreferredformisx:x:x:x:x:x:x:x,wherethe"x"sarethehexadecimalvalueoftheeight16-bitpiecesoftheaddress.
Twoexamples:fe80:0:0:0:207:30ee:edcb:d05d1080:0:0:0:1:700:200B:417CThereareeighthexfieldsinthefirstaddress:1.
fe802.
03.
04.
05.
2076.
30ee7.
edcb8.
d05dInIPv6,wedonotwritetheleadingzerosinafield.
Thatis,thesecondfieldaboveisjustwrittenas"0"ratherthan"0000.
"Notethatthereare4hexdigitsineachfield.
Eachhexdigitis4bits(andcanrepresentahexvalueof0-F).
Thismeansthatthereare16bitsineachfield(4hexdigitsx4bitsperdigit).
ThetotalsizeofanIPv6addressis128bits(8hexfieldsx16bitsperfield).
2.
Adifferentrepresentationoftheaboveaddress:DuetosomemethodsofallocatingcertainstylesofIPv6addresses,itiscommonforaddressestocontainlongstringsofzerobits.
Inordertomakeiteasiertowriteaddressescontainingzerobits,aspecialsyntaxisavailabletocompressibm.
com/developerWorks/developerWorksWritingasimpleIPv6programPage3of11thezeros.
Theuseof::indicatesmultiplegroupsof16-bitsofzeros.
The::canonlyappearonceinanaddress,andcanalsobeusedtocompresstheleadingzerosinanaddress.
Forexample:FF01:0:0:0:0:0:0:101isamulticastaddressthatcanbewrittenasFF01::101.
0:0:0:0:0:0:0:1isaloopbackaddressthatcanbewrittenas::1.
3.
Fordualenvironments:AnalternativeformthatissometimesmoreconvenientwhendealingwithamixedenvironmentofIPv4andIPv6nodesisx:x:x:x:x:x:d.
d.
d.
d,wherethe"x"sarethehexadecimalvaluesofthesixhigh-order16-bitpiecesoftheaddress,andthe"d"sarethedecimalvaluesofthefourlow-order8-bitpiecesoftheaddress(standardIPv4representation)--thatis,thefirst96bitsarerepresentedas6-x16-bithexfieldsandthelast32bitsare4-x8-bitdecimaldigits.
Forexample:::9.
184.
201.
1::ffff:9.
184.
209.
2IPv6addressprefixTheIPv6addressprefixdenotesthenetworkpartofanaddressandisrepresentedbythenotationipv6-address/prefix-length.
Takethisexample:fe80::206:29ff:fedc:e06e/64Inthisinstance,fe80::206:29ff:fedc:e06eistheaddressand64istheprefixlength.
Thesetwotogethergiveustheaddressprefix.
Intheexample,specifying64meansthatwetakethefirst64bitsoftheabove128-bitaddresstoidentifythenetworkpartoftheaddress.
RelevantconceptsNetworkAddressTranslation(NAT):AnInternetstandardthatenablesalocal-areanetwork(LAN)touseonesetofIPaddressesforinternaltrafficandasecondsetofaddressesforexternaltraffic.
ANATboxlocatedwheretheLANmeetstheInternetmakesallnecessaryIPaddresstranslations.
NATservesthreemainpurposes:ProvidesatypeoffirewallbyhidinginternalIPaddressesEnablesacompanytousemoreinternalIPaddresses;sincethey'reonlyusedinternally,there'snopossibilityofconflictwithIPaddressesusedbyothercompaniesandorganizationsAllowsacompanytocombinemultipleISDNconnectionsintoasingleInternetconnection(SeeRFC1631,"Hide&SeekwithGateways&Translators"inRelatedtopics.
)ClasslessInter-DomainRouting(CIDR):ClasslessInter-DomainRouting.
AnewIPaddressingschemethatreplacestheoldersystembasedonclassesA,B,andC.
WithCIDR,asingleIPaddresscanbeusedtodesignatemanyuniqueIPaddresses.
ACIDRIPaddresslookslikeanormalIPaddressexceptthatitendswithaslashfollowedbyanumber,calledtheIPprefix.
Forexample:172.
200.
0.
0/16TheIPprefixspecifieshowmanyaddressesarecoveredbytheCIDRaddress,withlowernumberscoveringmoreaddresses.
AnIPprefixof/12,forexample,canbeusedtoaddressdeveloperWorksibm.
com/developerWorks/WritingasimpleIPv6programPage4of114,096formerClassCaddresses.
CIDRaddressesreducethesizeofroutingtablesandmakemoreIPaddressesavailablewithinorganizations.
(SeeRelatedtopicsforRFC1517,1518,1519,1520.
)Thisraisesseveralquestions:1.
Howdoestheaboverepresentationsolvethetwoprimaryproblemswearetryingtoaddress:ThefiniteamountofavailableaddressspaceLargeglobalroutingtables2.
HowisthenetworkidentifiedinanIPv4address3.
WhyshouldtheprefixlengthbeallowedtobespecifiedinanIPv6address4.
HowistheprefixspecifiedinanIPv4address5.
WhataretheproblemscausedbythisAndherearetheanswers:Addressspace:Regardingtheaddressspacequestion,RobertMHinden,oneofthekeyfiguresinIPv6efforts,explains:IPV6supportsaddressesthatarefourtimesthenumberofbitsasIPv4addresses(128vs.
32).
Thisis4billiontimes4billiontimes4billion(2^96)timesthesizeoftheIPv4addressspace(2^32).
Thisworksouttobe:340,282,366,920,938,463,463,374,607,431,768,211,456Thisisanextremelylargeaddressspace.
Inatheoreticalsensethisisapproximately665,570,793,348,866,943,898,599addressespersquaremeterofthesurfaceoftheplanetEarth(assumingtheearthsurfaceis511,263,971,197,990squaremeters).
Theclassenemy:Nowlet'stakeupthequestionsregardingaddressprefixinIPv4andIPv6.
ThedivisionofIPv4addressspaceintoClassA,B,C,andDnetworkshascausedsomeproblems.
InIPv4,thenetworkpartwasfixedbytheclassoftheaddress.
Let'sillustrateourpointwithanexample.
ClassAaddressescansupport16millionhostsoneachoftheir128networks(becauseinaclassAaddress,thehighest-orderbitissetto0;thenext7bitsareusedforthenetworkpart;andtheremaining24bitsareusedforthelocaladdress).
Now,ifanorganisationweregivenaClassAaddress,anditdidn'thave16millionhosts,thentheremainingaddressspacewouldgotowaste.
AlsonotethateveryonecannotbegivenaClassAaddressasthereareonly127.
CIDRhadtobeintroducedtosolvethisproblemandprolongthelifeofIP.
Thismeansthatthenetworkpartofanaddressshouldnotbefixed.
Thereisaclearneedforanorganisation-specificnetworksize.
Thismeansthatthenetworkpartofanaddressshouldnotbefixed.
ThisvariableprefixlengthisimplementedinIPv6byallowingtheusertospecifythenetworkbitsintheaddressprefix.
Forexample,intheaddressfe80::206:29ff:fedc:e06e/64-,thenumeral64denotesthenetworkpart,andthiscouldbechanged.
Herewehavetheoptionofchoosingthenetworkpart.
Thisisflexible,unlikeIPv4whereithasalwaysbeenfixed.
Routingtables:TheroutesintheInternetgrewintime.
Backbonerouterswereapproachingtheirlimitin1984.
IfCIDRwerenotintroducedtosolvetheproblemofspaceinglobalbackbonerouters,theywouldhavejustcometoahalt.
ibm.
com/developerWorks/developerWorksWritingasimpleIPv6programPage5of11CIDRtechnique:SohowdoesIPv6solvethisproblemThetechniqueforstoppingthisproblemistoallowforaddressprefixesthatfitspecificorganisationalneeds.
ThistechniquewasbasicallyintroducedinCIDR.
InIPv6theprefixorthenetworkpartisalsospecifiedbyauser-specifiednetworkprefix.
ThishelpstoaggregatealargenumberofIPaddressesandspecifyasingleroutefortheorganisation.
Ifanorganisationhasmanynetworks,theninthecaseofIPv4,manynetworkprefixesaretobespecifiedintheglobalroutingtable.
InthecaseofIPv6,wecansimplygiveonehigherlevelroutetorepresentthewholeorganisation,aswecanshrinkandexpandthenetworkprefixbyvaryingit.
Thishelpstheglobaltablestoremainsmall.
ThiskindofsetupdidnotexistinIPv4.
(FormoreonCIDR,refertoRelevantconcepts).
AutoconfigurationinIPv6:PlugandplayWhatisautoconfigurationThefirstthingoneshoulddoistosetupamachinewithanIPv6address.
ThereisaninterestingfeatureinIPv6calledstatelessautoconfigurationthat'sdefinedbyRFC2462(seeRelatedtopics).
ThisRFCstatesthatyourhostshouldbeabletogiveyouanautomatic,globallyuniqueIPv6address.
Forexample,InAIX,yousimplybootupyourmachineandtypeautoconf6-vfromthe#prompt,andyouwillseeyourmachineautomaticallydetectingthesubnetandassigningyouavalidIPngaddress.
IranifconfigtoseetheIPv6address.
Hereisapartialoutputofifconfig-aonmyAIXmachine:inet9.
184.
209.
3netmask0xffffff00broadcast9.
184.
209.
255inet6fe80::207:30ee:edcb:d05d/64Igottheinet6addresswhenIranautoconf-v6(inet6isdefinedonen0).
ThismachinenowhasbothanIPv6andIPv4onthesamephysicalethernetinterface.
HowisthisdoneInverysimpleterms,thelink-layeraddressisusedasabasetogettheIPv6addressandthehostandroutertocommunicate,sothatthehostcangetanideaaboutthesubnet.
(RefertotheRFCforamoredetaileddiscussion.
)HowaboutotheroperatingsystemsTheotherUNIXimplementationshavesimilarIPv6autconfigurationcommandslikeAIX.
Thereisalsoavarietyoffree-softimplementationsofIPv6(seeRelatedtopics).
CanImanuallyconfigureYes.
YoucanalsoconfigureanIPv6addressusingifconfig.
It'simportanttoplanyournetworktoassignthenetworkprefix.
TunnelingandmappedIPngaddresses:ThetransitionshouldbesmoothExampleofatransitionproblemConsiderthissituation.
WehaveanexistingIPv4environmentwithIPv4-onlyhostsandrouters.
Nowlet'ssayweaddafewIPv6routersandhoststoournetwork.
SomeofthesehostshavethecapabilitytohandlebothIPv6andIPv4addresses,andsomeofthemarepureIPv6orpureIPv4.
Ifwehavetowriteanapplicationthatrunsinthisenvironment,thentheapplication'sclientanddeveloperWorksibm.
com/developerWorks/WritingasimpleIPv6programPage6of11servershouldbeabletohandleallpossibleclient-serverpairs.
Thatis,aclientorservercanbepurelyIPv4,purelyIPv6,orbothIPv6-andIPv4-enabled.
(Foradetailedexplanation,readRFC2893:"Transitionmechanismsforhostsandrouters"--seeRelatedtopics.
)WhatisthetunnelingtechniqueAgain,let'stakeanexamplesituation.
WeneedtocarryanIPv6packetoveranIPv4network.
HowdoweproceedSimple--wejustencapsulatetheIPv6packetinanIPv4packetandsenditacrosstheIPv4network.
Thisiscalledtunneling.
Configuredtunneling:WeneedtoconfigurethehostthatisattheentrypointoftheIPv4networksothatitcanconverttheIPv6packetintoanIPv4packet.
Also,thenodethatistheexitpointoftheIPv4networkneedstobeconfiguredsothatitcanconvertthepacketbacktoanIPv6packet.
Thisiscalledconfiguredtunneling.
Automatictunneling:Ifahosthasthecapabilitytodothisconversiondynamicallythenit'scalledautomatictunneling.
SupportforAutomatictunnelingintheprotocol:ThenodesthatutilizethistechniqueareassignedspecialIPv6unicastaddresses.
TheseaddressescarryanIPv4addressinthelow-order32-bits.
ThistypeofaddressistermedanIPv4-compatibleIPv6addressandhasthefollowingformat:|80bits|16|32bits||0000.
0000|0000|IPV4ADDRESS|AsecondtypeofIPv6addressthatholdsanembeddedIPv4addressisalsodefined.
ThisaddressisusedtorepresenttheaddressesofIPv4-onlynodes(thosethatdonotsupportIPv6)asIPv6addresses.
Thistypeofaddressistermedan"IPv4-mappedIPv6address"andhastheformat:|80bits|16|32bits||0000.
0000|FFFF|IPV4ADDRESS|UsageofmappedaddressesIfyouarewritinganIPv6-enabledclient,you'refacedwiththisquestion:DoyousendoutanIPv6packetordoyousendoutanIPv4packetYouaregivennoguaranteeabouttheunderlyingnetwork.
ThenextmachineyoucontacttogetthisconnectioncanbeanIPv6machine,anIPv4machine,oradualhost.
Let'sassumethattheapplicationsresponsibleforroutingtheconnectionsarecapableofknowingwhetherthenextmachineisanIPv6machineoranIPv4machine.
Inthiscase,itwouldbereallyhelpfulifwecouldhaveIPv6addressesthatcancontainIPv4addressesinsidethem.
Itwouldbegoodtohaveamechanism(theffff.
inmappedv4addresses)totellusiftheaddressisreferringtoapureIPv4node;thiswouldhelpusmakeappropriatedecisionsastowhichtypeofpacketistobesent.
Ourdiscussioninthefinalsectionshouldmakethisclearer.
ibm.
com/developerWorks/developerWorksWritingasimpleIPv6programPage7of11PortingIPv4applicationstoIPv6HerearesomethingstoconsiderwhenportinganIPv4applicationtoIPv6:Thesockaddr_in6structureandthein6_addrstructure,whichcanhold128bitaddresses,havebeendefined.
CheckifyouareusingtherelevantIPv6structure.
INADDR_ANYandINADDR_LOOPBACKmustbemodifiedtoin6addr_anyorin6addr_loopbackforassignments.
TheIN6ADDR_ANY_INITorIN6ADDR_LOOPBACK_INITmacroscanbehelpful.
UseAF_INET6insteadofAF_INET.
NotetherearestructuresandprogramsthatwillworkforIPv6andIPv4.
Oneofthelinkspointstoportingexamplesandthislinkcanbereferredto(see"MovingtoIPv6"inRelatedtopics).
NotethatnochangeinthesyntaxisnecessarywhenusingcertainfunctionsforIPv6.
Theonlydifferencewhenusingthesefunctionsisthatyoumustcastsockaddr_in6tostructsockaddr*.
ThefollowingmacrosandfunctionsareusedtowriteIPv6-enabledapplications:TheIN6_IS_ADDR_V4MAPPEDcanbeusedtodeterminewhetheranIPv6addressisanIPv4-mappedaddress.
gethostbynameretrievesanetworkhostentryviaitsnameandaddressfamily.
getaddrinforeturnsaddressinformationrelatedtoaspecifiedservicelocation.
getnameinforeturnsthetextstringsassociatedwiththesuppliedIPaddressandportnumber.
inet_ptonconvertsthespecifiedaddressintextformtoitsbinaryequivalent.
inet_ntopconvertsthespecifiedbinaryaddressintoatextequivalentthat'ssuitableforpresentation.
getaddrinfoandgetnameinfocanbothbeusedtoretrieveinformationrelatedtoIPv4andIPv6addresses.
inet_ptonandinet_ntopcanbothconvertIPv4andIPv6addresses.
Thismeansthatin"IPv6-ready"applications,youdonotneedtouseeitherinet_addrorinet_ntoa.
ThefollowingfunctionsdonotrequireachangeinsyntaxwhenusedforIPv6:bind,connect,sendmsg,sendto,accept,recvfrom,recvmsg,getpeername,andgetsockname,althoughthecodeforthesefunctionshasbeenmodified.
WritingasimpleIPv6clientLet'snowtakealookatthelogicbehindwritinganIPv6-enabledclient.
Ibelieveweareequippedwiththebasics.
WeknowaboutIPv6addresses.
Wewillbeabletorecognisethemifweseethemindifferentrepresentations.
WewillbeabletoautoconfigureanIPv6addressonourmachineusingautoconf.
Wealsoknowaboutthemappedaddresstransitionmechanismandhaveanideaofthefunctionstouse.
ConsiderthefollowingIPv4client:#include#include#include#include#include.
.
.
developerWorksibm.
com/developerWorks/WritingasimpleIPv6programPage8of11main(argc,argv)/*clientside*/intargc;char*argv[];{structsockaddr_inserver;structservent*sp;structhostent*hp;ints;.
.
.
sp=getservbyname("login","tcp");if(sp==NULL){fprintf(stderr,"rlogin:tcp/login:unknownservice\n");exit(1);}hp=gethostbyname(argv[1]);if(hp==NULL){fprintf(stderr,"rlogin:%s:unknownhost\n",argv[1]);exit(2);}memset((char*)&server,0,sizeof(server));memcpy((char*)&server.
sin_addr,hp->h_addr,hp->h_length);server.
sin_len=sizeof(server);server.
sin_family=hp->h_addrtype;server.
sin_port=sp->s_port;s=socket(AF_INET,SOCK_STREAM,0);if(s0){//noteinet_ptonwilltakecareofsettingtheaddress.
.
.
.
.
ip6.
sin6_family=AF_INET6;ip6.
sin6_len=sizeof(structsockaddr_in6);.
.
.
.
.
developerWorksibm.
com/developerWorks/WritingasimpleIPv6programPage10of11}else{//nowitsnotav6addressorav4addresssoitshouldbehostname//doav6lookup,notethatav6lookupwilllookforav6addressifnot//presentitcanpickupav4address//resinitisdefinedinresolv.
hres_init();_res.
options|=RES_USE_INET6;hptr=gethostbyname(name);.
.
.
.
.
//checkhptr->h_addrtypeifitsAF_INET6youcancopytheaddressdirectly//ifnotyouneedtomapit.
.
.
.
.
.
.
.
.
.
.
if(connect(sd,&ip6,sizeof(ip6<0){//connectfailure.
.
.
.
}else{//continuewiththeprogram.
}SummaryoftheabovelogicTosummarizethelogic,wechecktoseeifwegotadottedIPv4addresstohandle.
Ifso,wegoaheadandmapitandfillinanIPv6structure,tobeusedbytheconnectcalllater.
Ifit'sanIPv6address,wecopyitdirectlytotheIPv6structure.
Ifit'sahostname,wetryanddoanIPv6lookup.
WecangetanIPv4oranIPv6address.
Weknowthisfromthefamilyfield.
Accordingly,weeithermapitorcopyit,thendoasingleconnectcallregardlessofwhetherit'sanIPv4oranIPv6address,andproceedwithourprogram.
ConclusionWehavelookedonlyattheconceptsweneedtowritetheaboveprogram.
Therearemanymoreinterestingconceptsthatwillsoonbecomepartofeverydaylife.
TherearecontroversiesandconstructivedebatesaboutthingslikeDNSforIPv6andstatefulautoconfigurationforIPv6(DHCP).
Thesetopics,alongwithothers,suchasimplementationofotherlayers,howroutingwillbedone,andhowautoconfigurationwillbeimplemented,willmakeforinterestingdiscussion.
IhopetoseeyousooninamoreexcitingIPv6world!
ibm.
com/developerWorks/developerWorksWritingasimpleIPv6programPage11of11RelatedtopicsIPNextGenerationOverview,byRobertMHinden,givesabriefoverviewofalltheIPngconcepts.
KameprojectisajointeffortofsevencompaniesinJapanthatprovideafreeIPv6andIPsec(forbothIPv4andIPv6)stackforBSDvariants.
6boneisanIPv6testbedtoassistintheevolutionanddeploymentofIPv6.
IPv6draftsandRFCscanbefoundinIPngCurrentSpecifications.
Theygivealltherequireddetailsinaclearandlogicalorder.
StatelessautoconfigurationisdefinedinRFC2462:IPv6StatelessAddressAutoconfiguration.
RFC2893,TransitionMechanismsforIPv6HostsandRouters,specifiesIPv4compatibilitymechanismsthatcanbeimplementedbyIPv6hostsandrouters.
AdditionalinformationonNATcanbefoundinRFC1631,TheIPNetworkAddressTranslator(NAT).
Formorein-depthoverviewsofCIDR,readRFC1517,RFC1518,RFC1519,andRFC1520.
FindouthowIPv6forOS/390providesanimplementationofIPv4andIPv6forOS/390.
Planningforgrowth,fromIBM'sHighVolumeWebSiteTeam,canshowyouhowyourWebsitecansatisfyfuturedemandsandevaluatepotentialworkloadandinfrastructurechanges.
IBM'sPatternsfore-businesssitefeaturesanumberofreusableassetsthatcanhelpspeedtheprocessofdevelopingapplications.
BrowsemoreWebarchitectureresourcesondeveloperWorks.
CopyrightIBMCorporation2001(www.
ibm.
com/legal/copytrade.
shtml)Trademarks(www.
ibm.
com/developerworks/ibm/trademarks/)
官方网站:点击访问华纳云活动官网活动方案:一、香港云服务器此次推出八种配置的香港云服务器,满足不同行业不同业务规模的客户需求,同时每种配置的云服务都有不同的带宽选择,灵活性更高,可用性更强,性价比更优质。配置带宽月付6折季付5.5折半年付5折年付4.5折2年付4折3年付3折购买1H1G2M/99180324576648直达购买5M/17331556710081134直达购买2H2G2M892444...
妮妮云的来历妮妮云是 789 陈总 张总 三方共同投资建立的网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑妮妮云的市场定位妮妮云主要代理市场稳定速度的云服务器产品,避免新手购买云服务器的时候众多商家不知道如何选择,妮妮云就帮你选择好了产品,无需承担购买风险,不用担心出现被跑路 被诈骗的情况。妮妮云的售后保证妮妮云退款 通过于合作商的友好协商,云服务器提供2天内全额退款,超过2天不退款 物...
数脉科技(shuhost)8月促销:香港独立服务器,自营BGP、CN2+BGP、阿里云线路,新客立减400港币/月,老用户按照优惠码减免!香港服务器带宽可选10Mbps、30Mbps、50Mbps、100Mbps带宽,支持中文本Windows、Linux等系统。官方网站:https://www.shuhost.com* 更大带宽可在选购时选择同样享受优惠。* 目前仅提供HKBGP、阿里云产品,香港...
29ff.com为你推荐
futureshop在加拿大买电脑的注意事项是什么?硬盘工作原理高人指点:电子存储器(U盘,储存卡,硬盘等)的工作原理安徽汽车网合肥汽车站网上售票同ip域名同IP网站具体是什么意思,能换独立的吗同一服务器网站同一服务器上可以存放多个网站吗?www.haole012.com012qq.com真的假的www.7788dy.comwww.tom365.com这个免费的电影网站有毒吗?www.bbb551.combbb是什么意思33tutu.com33gan.com改成什么了5566.com5566网址大全
域名服务dns的主要功能为 域名停靠一青草视频 瓦工 香港加速器 息壤备案 分销主机 免费主机 php主机 国外bt ibox官网 php空间申请 bgp双线 申请免费空间和域名 上海电信测速 我的世界服务器ip lamp架构 阿里dns 中国电信宽带测速 512内存 zcloud 更多