検索
連載

第17回 LLCとNetBEUIプロトコル基礎から学ぶWindowsネットワーク(1/3 ページ)

NetBEUIとLLCは初期のWinネットワークを支えた核心プロトコルだ。これらの知識は現在のWinネットワークの理解にも欠かせない。

Share
Tweet
LINE
Hatena
連載 基礎から学ぶWindowsネットワーク ―― Windowsネットワーク管理者への道 ―― 
Windows Server Insider

 

「連載 基礎から学ぶWindowsネットワーク ―― Windowsネットワーク管理者への道 ―― 」のインデックス

連載目次


 前回まではNetBIOSのサービスの概要とTCP/IPプロトコルの詳細について解説してきた。今回からは、いよいよWindowsネットワーク・プロトコルの核心であるNetBIOSや、ファイル共有サービスのためのSMBプロトコルなどについて見ていくことにする。今回は、一番基本的なプロトコルであるNetBEUIプロトコルと、それに関連するLLCプロトコルについて解説する。

 Windowsネットワークにおける基本は「NetBIOS」というAPIであることはすでに何度も述べた。NetBIOSはプログラミングのためのインターフェイス(サービス)であり、実際にはNetBEUIやTCP/IPといったプロトコルの上に構築されている。このため、ネットワークのパケットを調べてみると、次の図のような構造になっていることが分かる。図の中にある「NetBIOSデータ」となっている部分がファイル共有のためのプロトコル(SMBプロトコル)やユーザー・データであり、これは下位プロトコルによらず(ほぼ)同じ内容となっている。今回はこのうち、1のNetBEUIプロトコルの構造についてみてみよう。同時に、NetBEUIとともに使われるLLCについても解説しておく。


Windowsネットワークにおけるパケットの構造


Copyright© Digital Advantage Corp. All Rights Reserved.

       | 次のページへ
PREVIEW
'; }else{ mask.innerHTML = '
画像をご覧いただくには会員登録が必要です
' + btn_txt + '
'; } if((_preview && location.hash.indexOf('maskoff') !== -1) || (typeof itmIdLogin !== 'undefined' && itmIdLogin == 1)){ img.style.visibility = 'visible'; }else{ nxt.parentNode.insertBefore(mask,nxt); } } } }; /** * mask_leadin : subscription マスクの実行 * @param {Object} マスク用パラメータ(sc,lc,ac,bc)と記事の状態(subscription_exist,subscription_objects,preview)を持った Object */ function mask_leadin(_p){ if(!_p.subscription_exist) return false; addCSS('/css/spv/cmsInput.niche.css?date=202507011053'); let d = document; let description = createElementWithAttribute('div',{"class":"colBoxDescription"},function(div){ div.appendChild(createElementWithAttribute('p','',function(p){ p.innerText = '続きを読むには、[続きを読む] ボタンを押して会員登録あるいはログインしてください。'; })); }); let button = {}; if(_p.preview){ button.link = 'javascript:void(0)'; button.text = '続きを読む(TestMode)'; button.func = 'if(window.confirm(¥'マスクを解除しますか?¥')){location.href = ¥'#maskoff¥';location.reload();}else{return false;}'; } else { button.link = 'https://id.itmedia.co.jp/isentry/contents?sc=' + _p.sc + '&lc=' + _p.lc + '&ac=' + _p.ac + '&cr=' + _p.cr + '&bc=' + _p.bc + '&return_url=' + encodeURIComponent(d.URL) + '&pnp=1&encoding=shiftjis'; button.text = '続きを読む'; button.func = 'cx_itm_mask_button();'; } button.elem = createElementWithAttribute('div',{"class":"colBoxButton"},function(div){ div.appendChild(createElementWithAttribute('a',{"href":button.link,"onclick":button.func},function(a){ a.innerText = button.text; })); }); let mask = createElementWithAttribute('div',{"class":"mask_leadin"},function(div){ div.innerHTML = '
'; }); mask.querySelector('.colBoxIndex').appendChild(description); mask.querySelector('.colBoxIndex').appendChild(button.elem); let subscription = _p.subscription_objects[0]; subscription.classList.add( 'is-' + _p.subscription_type ); if((_p.preview && location.hash.indexOf('maskoff') !== -1) || (typeof itmIdLogin !== 'undefined' && itmIdLogin == 1)){ subscription.style.display = 'block'; }else{ subscription.parentNode.insertBefore(mask,subscription); } }; /*IMAGE MASK & Lead-in*/ (function(d){ let membersControl = searchMembersControl(); // %メンバー用マスクの存在チェックと対象要素取得 let imageMask = searchImageMask(); // 画像マスクの存在チェックと対象要素取得 let subscription = searchSubscription(); // subscription マスクの存在チェックと対象要素取得 let isPreview = d.domain.match(/(preview|broom|localhost)/); let param ={ isLoginURL:'//status.itmedia.co.jp/isLoginAIT.cgi', sc:'0c1c43111448b131d65b3b380041de26f2edd6264ee1c371184f54d26ab53365', lc:'7d7179c146d0d6af4ebd304ab799a718fe949a8dcd660cd6d12fb97915f9ab0a', ac:'1a599d548ac1cb9a50f16ce3ba121520c8ab7e05d54e097bfa5b82cb5a328a0f', bc:1, members_control_exist:membersControl.exist, image_mask_exist:imageMask.exist, image_mask_objects:imageMask.Objects, subscription_exist:subscription.exist, subscription_objects:subscription.Objects, subscription_type:subscription.type, preview:isPreview }; let setExtraMask = function(){ if (d.getElementById('isLogin') || isPreview) { // isLogin 呼び出し済みであれば各マスク処理を実行 if (imageMask.exist) { param.cr = '2c93f81754142e105c8bca17824745d14c8c4d69e9d7ede513e5530546e97641'; mask_images(param); } if (subscription.exist) { param.cr = '90cfa6d666682f8b5dc3c798020e432fc294ef430deb069008d4f8bceeb02418'; mask_leadin(param); } } else { // isLogin がなければ、呼び出した後で再実行 let js = mask_images.setISLOGIN(param.isLoginURL,param.sc); js.addEventListener('load',function(){ setExtraMask(); }); } }; if( subscription.type != 'force' ) { //強制 subscription ではない場合のみ実行 if (imageMask.exist || subscription.exist) { setExtraMask(); } } })(document);
LOADING
'; w.removeEventListener('scroll',arguments.callee,false); htmlRequest(_xhrfile,_idname); elem.setAttribute('data-status','true'); console.log('finished : ' + _idname); }else{ // console.log('retry : ' + _idname); } }else{ e_loader.innerHTML = '
LOADING
'; w.removeEventListener('scroll',arguments.callee,false); htmlRequest(_xhrfile,_idname); elem.setAttribute('data-status','true'); console.log('finished : ' + _idname); } } }; w.addEventListener('scroll',scrolling,false); // スクロールイベント scrolling(); // スクロールイベント(閲覧位置が半端な場合のために 1 回実行させる) }; w.addEventListener('load',loading,false); // LOAD 後に実装 };