顯示具有 Computer Network 標籤的文章。 顯示所有文章
顯示具有 Computer Network 標籤的文章。 顯示所有文章

2012年2月23日 星期四

DHCP Snooping

DHCP
DHCP (Dynamic Host Configuration Protocol)
是用來自動取得IP的一種通訊協定,定義在RFC2131 & RFC2132
最主要有兩個角色:Clinet以及Server。
Clinet就是要需要取得IP的裝置,Server則是配有很多IP Pool可以assign
Switch上則多「Relay」的角色(意即對接host端Switch扮演著類似server;對server則扮演host)

常見跟DHCP有關的功能
DHCP Snooping
switch在經過它的DHCP packet中偷偷去紀錄一些資訊,主要是為了security issue.
主要設定會有設定所謂的Trust port,這通常是接到DHCP server
透過Snooping可以建立binding table,也可以說是白名單,這原本是用於IP Source Guard,當有packet進來的時候會去check packet的一些欄位資訊看是不是合法的;如果不是合法的就會被drop掉。這可以配合ARP INSPECTION來使用,當DHCP完成 host要發出arp時也會確認binding table來確認是不是合法的user

/* 註記 */
binding table除了自己learn到外也可以用自己設定的,所謂的static binding,自己建立白名單
所以當default的config,只開arp inspection的話,當有arp packet進來,查白名單裡面是空白的,那就全部進去filter名單,全部被drop,那網路就不通了


DHCP Relay
剛提到的DHCP Snooping只做到偷看,不影響原本的行為;但今天如果DHCP Server剛好不在同一個domain/vlan的話該怎麼辦?
switch上有這個relay的功能,可以代替
OPTION 82

DHCP Relay可以分成Global Relay(Smart-Relay)以及VLAN Relay

DHCP Relay

Global Relay透過config設定可以把不同vlan的dhcp packet都forward相同的vlan上的「同一台」dhcp server;
VLAN Relay則是透過設定,可以把不同vlan的dhcp packet forward「相同」vlan上的「不同」dhcp server去

Global and VLAN Relay

DHCP Relay-Broadcast:
這不是standard有的行為。是個功能的開關。通常會有DHCP Relay都是access switch(Layer 2)為主,那Relay就是switch幫忙把原本client的DHCP broadcast給包成unicast往已知的server丟。那原本DHCP Broadcast的packet呢? 要繼續做broadcast嘛? 所以才會有這個小功能。但這樣也會有缺點就是說當原本 broadcast VLAN上有多個DHCP server的時候,client就會收到多台server給他的DHCP offer,至於client挑選哪台DHCP server回的packet就是網卡來決定。與switch就無關


DHCP Database
DHCP snooping主要是為了建立binding table,建立binding table有手動(static binding)以及dynamic learn(開DHCP Snooping,等DHCP完成後自動建立),如果今天是因為自動建立的話如果重開機的話是不是就要重新DHCP一次create binding table很麻煩?  dynamic的binding table有沒有辦法做備份!?   DHCP Database就是為了解決這個問題而產生。使用TFTP的方式將binding table做備份在外部的TFTP server上以及support restore的功能,在下次重開機的時候可以快速把binding table給restore回去


DHCP-VLAN
DHCP VLAN OVERWRITE

2012年2月8日 星期三

Multicast (IGMP Snooping)

Multicast, 有別於broadcast(一送全部收)及unicast(一送一個人收).只讓特定的user可以接收到packet,好比一送多個人收。其中主要的protocol為IGMP

IGMP
IGMP, Internet Group Management Protocol. based on network layer的feature。是用來支援主機和路由器之間的Multicast封包的管理協定


IGMP是指router在layer3進行Multicast。但是實際上在layer2時是進行Broadcast。如果switch有支援
IGMP Snooping的話,就會在layer2建立和維護MAC 的Multicast地址表,以達到在layer2也進行Mutlicast,這樣最主要就是為了節省封包流量。


也因為是network layer的feature,所以他的multicast address會帶有特定IP的information. 其中class D(224.0.0.0~239.255.255.255)是用來做multicast group的multicast address

而IGMP目前有三種版本 v1,v2,v3 其中有些許的差別,分別define於RFC 1112, RFC 2236 and RFC 3376.
IGMP-v1:只有query和report的封包,要等到timeout才會leave
IGMP-v2:加入了leave的packet
IGMP-v3:加入了source filter的功能,host端可以決定要收到來自哪些source來的IGMP packet


在Layer 2 switch上跟IGMP有關的功能主要是IGMP Snooping. snooping可以當作是偷看偷學的意思。這feature最主要的用意就是要減少packet的流量。
比方說port 3送了一個Join multicast 224.0.0.1的封包到switch,這時候switch就偷偷地學起來,等到從port 5收到multicast 224.0.0.1的封包時,就知道只要傳給port 3就好了,不用傳給別的port,達到減少流量的優點。

此外,每個VLAN都可以有自己的multicast group,IGMP snooping最多可以support到16個VLAN
所以VLAN 100有multicast group 224.0.0.100
VLAN 200也可以有multicast group 224.0.0.100


在L2 switch上除了減少流量外還可以做到其他setting來做控管。可分成per system及per port的設定,包含了
1)group limit以及max group number /* per port */
2)igmp snooping filtering /* per port */
3)Host Timeout /* per system */
4)replace 802.1p Priority tag /* per system */
5)Unknown Multicast Frame drop or flooding /* per system */
6)reserved multicast group drop of flooding /* per system */
7)report-proxy /* per system */
分簡述如下:

1)group limit abd max group number:
限制per port可以加入幾個multicast group. if 超過設定的group number,則用throttling來設定,可以設定當超過的時候是要把新的group給drop掉還是replace原本最舊的group

2)IGMP Snooping Filtering:
我們可以設定per port可以允許加入的multicast group,如果multicast group不屬於IGMP Filtering Profile,就不會進到此port

3)Host timeout
當開snooping時候可以決定per system多久沒收到report packet的時候就把這個port從那個multicast group給remove. default是260 second

4)replace 802.1p Priority tag
可以決定 pass through switch的IGMP的control packet其中的priority tag被換成多少(0~7 可自行設定)

5)Unknown Multicast Frame drop or flooding
對於這台switch沒有learning到的multicast group pakcet是會被drop還是flooding

6)Reserved Mulitcast Group是指224.0.0.0 ~ 224.0.0.255這段multicast address,這是local network所使用的multicast group
可以設定這個multicast group的packet是會被drop還是flooding

ex. 224.0.0.251, MAC address of 01:00:5E:00:00:FB for IPv4; FF02::FB for IPv6. multicast DNS
224.0.0.252, MAC address of 01-00-5E-00-00-FC for IPv4; FF02::1:3 for IPv6, Link Local Multicast Name Resolution (LLMNR), Windows vista, windows server 2008, windows 7才有

7)report-proxy
用於簡化packet的流量。當有多條IGMP join/report的packet時可以把它整合成一個packet送給multicast router

multicast另外個重要應用為跨VLAN的功能,這主要是用在MoD(Media-on-Demand)之類的應用上。可稱為Multicast VLAN or Multicast VLAN Registration(MVR)

MVR主要會針對IGMP join與leave封包進行處理, IGMP report的封包則是交給IGMP snooping. 這部分可以再另外開個topic來討論...

Reference:
[1] http://guiderworld.blogspot.com/2009/03/multicastigmp.html
[2] http://tw.myblog.yahoo.com/hughes-blog/article?mid=64&prev=66&next=61

2011年12月28日 星期三

DLF (Destination Lookup Failure)

DLF (Destination Lookup Failure)
也就是目的地位置查詢失敗的封包,會在同一個VLAN裡面做flooding

為了預防大量的flooding packet把device打死,所以有Broadcast Storm Control這個feature。不過這feature也可以限制multicast、一般broadcast每秒通過的數量,是per port的設定。


DLF...之前常聽到這名字,但現在終於知道是指什麼

2011年12月27日 星期二

Port authenticator

Port authenticator
IEEE 802.1X有規範。per port的設定。認證過的合法使用者(PC、NB,...etc)可以透過這個port來存取網路。
透過使用者輸入的帳號密碼可以動態決定這個port要加入哪個VLAN(edgeBOX, ex. RADIUS server. 回的packet會帶有這個帳號密碼給它多少VLAN ID的information)

反之如果是認證失敗的話,則會丟入Guest VLAN(至於Guest VLAN是多少可以per port去做個別設定)

至於Guest VLAN有兩種mode可以做設定。分別是port-base還有mac-based mode。port-based mode是指當這個port有第一個人認證成功後,所有經過這個port的packet都assign給它edgeBOX回的VLAN ID(Multi-host);
mac-based mode的話則是per host來看(Multi-secure),當有不同的MAC的裝置連上都個別需要去做認證。


Note:
port authenticator是指認證pass的user可以透過這個port來存取「網路」;AAA的第一個A, Authentication則是透過認證後看user可不可以存取「Switch」。兩者用途跟意義不同。

2011年10月12日 星期三

Flow-control

Flow-control use pause packet in full-duplex operation; back-pressure in half-duplex

/* pause packet */
00 00 00 00 00 02 00 00 00 00
00 01 88 08 00 01 03 E8 00 00
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00

Reference:
[1]IEEE-802.3x
[2]http://www.pcdvd.com.tw/showthread.php?t=582735

2011年10月6日 星期四

Reserved Multicast MAC Address

From IEEE 802.1ad-2005

spanning tree's reserved multicast address為01-80-C2-00-00-00
LACP為採用slow-protocol的一種feature,故其reserved multicast address為01-80-C2-00-00-02


延伸閱讀:
IEEE Std 802.1D and IEEE Std 802.1Q Reserved Addresses

Reference: IEEE 802.1ad-2005

2011年9月29日 星期四

L2PT (Layer 2 Protocol Tunneling)

L2PT

Layer 2 Protocol Tunneling

這其實是為了解決edge端switch在跑Layer 2 protocol時候發出很多BPDU的同時,在Service Provider的core-network也會有對應的Layer 2 protocol在run,為了不讓彼此互相干擾所衍生的tunneling feature
Layer 2 Protocol Tunneling Network Configuration, from Reference[1]
以這圖而言,Switch 1 2 3 以及4 5 的Layer 2 protocol就可以互通,然後不影響Service Provider的Layer 2 protocol

port role可分成access port以及tunnel port

access port代表接edge switch的port,當這個port收到特定BPDU時會把它封裝成帶特定MAC(user可自己設定)然後送往tunnel port往core-network丟

tunnel port代表接core-network的port,當這個port收到帶特定MAC的packet會把它解封裝然後丟回access port


目前常見support的Layer 2 feature有STP, CDP, VTP, PAgP, and UDLD
扣除STP (Spanning Tree Protocol)外,CDP (Cisco Discovery Protocol), VTP (VLAN Trunking Protocol), PAgP (Port Aggregation Protocol), UDLD (Uni-Directional Link Direction)都是CISCO自己提出的protocol

2011年9月14日 星期三

Snooping

在switch上另個常見的功能就是Snooping
Snooping的定義是「偷看」,switch偷看後記下來,然後有個別的應用,但重點是不影響原本的行為,意即是if沒開Snooping也可以正常運作
開啟Snooping後在switch上會「自動學習」跟他有關的infomation
這樣之後有packet進來的時候switch就可以直接把Packet送到適合的port

常見的包含IGMP SnoopingDHCP Snooping

2011年9月9日 星期五

GVRP

GVRP
VLAN的port可以手動也可以自動學習,手動設定的可以稱作Static VLAN;自動學習的可以稱作Dynamic VLAN。
其中自動學習的VLAN是使用GVRP, 也是個送出特定的BPDU(dst MAC = 0180C2000021)來完成的功能

GVRP的BPDU會夾帶VLAN的information,接收到後會自動"建立起"這個對應的VLAN



Here is an example of GVRP BPDU with JoinIn event for VID=100.
GVRP BPDU  /* VLAN 100 */
01 80 C2 00 00 21 00 00 00 00 00 02 00 0C 42 42 03
00 01 01 04 02 00 64 00 00

04: Length
02: JoinIn
00 64: VID 100
GVRP BPDU


Reference:
[1]http://support.dell.com/support/edocs/network/pc5212/tc/ug/pc5212ce.htm
[2]http://www.furukawa.com.br/pls/portal/docs/PAGE/PORTAL/DRTECH/PRODUTOS%20FORA%20DE%20LINHA/SWITCH/SW_5109/MANU_GERENCIAM_5109.PDF
[3]http://guiderworld.blogspot.com/2008/11/8021q-vlan.html


2011年9月8日 星期四

sFlow

sFlow, defined in RFC 3176。提供一個monitor整個network的solution,讓網管人員可以了解到目前整個網路環境的資訊(好比port上統計資料、收送的packets)
sFlow,s是sampled的意思,我認為叫做「取樣」還蠻恰當的

sFlow的架構中主要有兩個角色:Collector以及Agent。如下圖
sFlow架構圖
一般的switch/router大多扮演Agent角色。Agent在間隔一段時間後取得sample的data或者counter去傳送sFlow packet給Collector,Collector再根據收到的sFlow packet去做些分析,sFlow packet採用UDP的方式來送

sFlow sampling包含了兩部份:Flow sample以及counter sample;Flow sample就是 packet,counter sample就是port上的counter統計資料。這兩種都可以被包含在sFlow的datagram中。在sFlow的datagram中最多可以一次夾帶4個sample的data,包含了3個counter sample以及1個flow sample


在switch端扮演Agent的角色,設定包含了Collector的IP位置,UDP socket number,counter sample的interval(20~120秒)以及sample rate(每隔幾個packet sample一次)

Reference:
sFlow verion 5

switch....

/* 工作快兩年,我想我該整理一下碰到的東西跟自己的想法,持續update這篇, 2011-09-08 */


先了解一下hub vs switch的差別

Switch
不外乎就是當有packet從一個port進去的時候要forward到正確的port,至於如何正確的forward就是一門很大的學問


Switch在網路傳輸過程不外乎做幾件事情
其中最主要的減少流量增加網路效能 (這也是為什麼要用Switch不用hub的主因)

其中,為了減少一些不必要的資料在網路上傳送
於是產生了切割網段的方式,也就是所謂的VLAN(IEEE 802.1Q)

VLAN Tag format

而也因為有切割不同的VLAN,在packet就會因此受到限制,so 會為了解決VLAN跨domain的問題去做出相對應的feature


以Virtual LAN而言依據不同的切割方式衍生了幾種VLAN:
Protocol based VLAN (根據protocol來切VLAN)
Port based VLAN (根據對應的port來區分traffic)
Subnet based VLAN (根據IP range來切VLAN)



以Subnet based VLAN而言,使用者可以設定packet的source-ip + mask-bits來判斷符合條件的packet就送到哪個VLAN去。另外也可以根據不同的VLAN設定不同的priority,值越大代表權限越高

Protocol based VLAN則是去parse 進來packet的protocol 欄位是什麼(ex. IP、IPX、ARP、RARP、Apple Talk、DECNet),然後使用這自己決定符合這條件的packet要送到哪個VLAN去。

特別一提的是,上述兩種VLAN環境中,在進來的packet是有帶VLAN tag的時候還是按照原本的VLAN去forward;上述提的兩種進階的VLAN都是適用於進來的packet不帶VLAN tag的情況

最後,Port based VLAN 就是以port當VLAN切割的依據,可以設定哪些port是在同個VLAN底下。

802.1p除了define優先權的概念,包含八種不同的priority外,另外定義了GARP-Generic Attribute Registration Protocol。GARP定義了Ethernet switch間交換不同特性訊息的方法,定義了Multicast(GMRP)、和VLAN(GVRP, in 802.1q)等的屬性。GARP定義了這些如何發送/處理feature的封包等

在VLAN中......可探討幾個常見的VLAN功能:
VLAN  port的設定可分成手動 / 自動  GVRP
Ingress filtering
   這概念很簡單,當這功能打開,從port進來的packet如果帶的VLAN TAG的VLAN「不存在」or和這個port join的VLAN不同的話就會直接被drop掉。不同的model這實現的方式不同,但不外乎是per port去做filtering或者total system去做filtering

VLAN Mapping
把進來packet的VLAN ID給換掉,可用於在Service Provider Network中和edge端的private network下用到相同VLAN ID但有不同用途的情況下。除了換VID也可以換priority,這是per port設定的feature


VLAN Stacking
VLAN Stacking 簡單講就是在原本的VLAN TAG前面再加一個TAG,有兩層TAG的意思。也稱做Q-in-Q, double tagged好處是在原本的4094的VLAN可以double加到4094*2個VLAN可以用。其實是為了解決ISP業者為了個別用戶都個別去設定VLAN導致VLAN不夠用的問題。

原本的VLAN稱為INNER TAG (CVID),多加的那一層稱為OUTER TAG (SVID)

Note: VLAN Stacking和VLAN Mapping不能同時使用


Reference:
[1]http://blog.xuite.net/ahdeng/life/16396680
[2]http://guiderworld.blogspot.com/2008/12/vlan-stacking.html


VLAN Trunking
VTP(VLAN TRUNKING PROTOCOL),cisco提出的protocol,不過大多數交換器產品都支援此protocol。

這功能主要是要讓「不存在」於這台Device的vlan tag packet可以pass through這個port。優點是在end-device設定好對應的vlan group時,當彼此間要溝通的時候,中間經過的device也都要有對應的vlan group設定才可以通,否則它們會看到這些packet都會把它drop。而這些packet會forward到同台的有開vlan trunking的port去

Reference:
[1]http://support.dell.com/support/edocs/network/pc5212/tc/ug/pc5212ce.htm


port-security - 主要用於限制per port可以讓幾台host(認幾個MAC)連上去,包含動態學習以及手動設定


Security有關的feature可以包括幾項,主要規範於IEEE 802.1X:

Multicast: IGMP Snooping


for Layer 2 redundant mechanism: Spanning tree(STP, RSTP, MSTP..)
spanning tree收斂速度太慢(300ms !?) Extreme Network提出 EAPS,Ethernet Automatic Protection Switching, 可以在30ms的時間內完成

to be continued...

2011年9月7日 星期三

Loop guard

Loop guard用於解決edge端loop的問題,而對應的應用在core-network避免loop的則是STP

Loop guard得作法其實就是送一個probe packet出去,當在同一個port收到這個flooding回來的probe packet則表示有loop發生 -> 關port避免loop

當switch收到probe packet,會確認dst mac是不是特定的(01a0c5aaaaab),以及src mac是不是自己的mac,如果是的話表示有loop情形發生 -> 關port; 反之則flooding到其他port

當loop guard開始作用,port會被disable掉。當loop排除,可以用err-disable的recovery自動enable回來;或者手動在port上先關掉,再打開一次回復forwarding state


延伸閱讀:http://guiderworld.blogspot.com/2009/02/loop-guard.html


/* loopguard probe packet(dst mac = 01a0c5aaaaab, source mac = 0019cb000001) */
01 a0 c5 aa aa ab 00 19 cb 00 00 01 90 00 01 00
27 bf 06 01 06 00 19 cb 00 00 01 02 02 00 00 03
06 47 53 32 32 30 30 04 04 00 40 cb 3a 05 06 47
53 32 32 30 30 00 00 00 00 00 00 00

2011年7月4日 星期一

SNMP SMIv2

§
SMIv2Structure of Management Information Version 2

The STATUS clause in indicates whether this definition is current or historic. 
  • current" means that the definition is current and valid. 
  • "obsolete" means the definition is obsolete and should not be implemented and/or can be removed if previously implemented. 
  • "deprecated" also indicates an obsolete definition, it permits new/continued implementation in order to foster interoperability with older/existing implementations.

Reference:
RFC2578 SMIv2, section6.1

2011年5月17日 星期二

新增/修改XP網卡IPv6 config

安裝IPv6功能:
dos>ipv6 install

移除:
dos>ipv6 uninstall


修改網卡的IPv6 address: /* 假定網卡的name為RealTek,要把它address手動設成2100::5 */
dos> netsh>interface>ipv6>set address interface=RealTek address=2100::5


刪除IPv6的address:
dos> netsh>interface>ipv6>delete address interface=RealTek address=2100::5

2011年2月10日 星期四

LACP timeout value problem? 改成short timeout為什麼反而是收到對方的LACPDU的timeout變短?

在LACP中timeout value只有兩種mode可以選,long以及short。long是30秒而short則是1秒。timeout value影響的是不同台間在維持LACP link時多久會去發一個packet去「確認」這條連線還是不是存在,如果不存在則在3倍timeout value後把這個port移出trunk group,而確認連線是否活著的packet通稱為LACPDU。

而目前有個問題意思是說當兩台DUT對接,當A台的timeout 設成1 sec而另外一台B維持default 30sec,去抓封包會發現B台會每隔1 sec發一次LACPDUPACKET
反而A台還是原本的30sec去發LACPDU packet,好像有點怪怪的!?

經過查證後我們得到spec是寫說送LACPDU PACKETtimeout 時間是參考「對方的timeout 時間,也意思是說當對方timeout設為1秒時候我們才會每1秒去發packet;反之則不會。

可以翻閱802.3ad-2000 p.133頁關於LACPTx state machine的描述:
LACP Periodic Tx Machine[1]
可以看到標紅色的部份,當我們要送LACPDU的時候會根據Partnertimeout value
/* specactor代表的是自己;partner代表的是另外一台 */

另外,如果接DUT去接host,改了TIMEOUT1sec後也是30sec才會收到LACPDU也是因為這個緣故。(partnertimeout value default都是30sec,當收到對方LACPDU時候跟現在timeout value不同才會去update)

Reference:
[1] IEEE 802.3ad-2000

2011年1月27日 星期四

IPv6入門

IPv6的初步認識

IPv6採用128個bits來定義一個位址,所以在理論值上可以有2的128次方個IP位址可以用,天啊!!那是一個多大的天文數字!! IPv6基本上把前面64個bits當成網段ID,後面64個bits當成Interface ID。有幾個和IPv4不一樣的重點要記住
  • IPv6沒有遮罩值(Submask)
  • IPv6沒有廣播(Broadcast)
  • IPv6不用網路位址轉譯器(NAT)

IPv6設定

128 Bits被分成8個區塊,每一個區塊為16個Bits(即2個Bytes),使用16進位來表示,而且每個區塊之間使用:(冒號)隔開,所以看起來如下
2010: 0000: 0000: 00A2: 0000: AB01: 813D: 01AF
每一個區塊中,前面如果是0可以省略,例如:00A2 可以寫成 A2
如果是連續區塊皆為0,則可以使用::(連續兩個冒號)來表示,例如上面的:0000:0000:可以寫成::。但是這種::(連續兩個冒號)之表示方法在一個位址中只能出現一次。

IPv6首碼(Prefix)

IPv6位址需要定義一個首碼,例如 /3,表示前面3個bits,是固定不變的。很像IPv4的遮罩,但它是不同的意義。

IPv6的位址分類

IPv6分成unicast Address, multicast address, anycast address(取代了broadcast廣播) 這些位址在一台電腦中,是可以同時存在。
  • anycast--可以指派給多個網路卡,每個網路卡傳送anycast時,只傳給距離最近的一個節點。
  • multicast--和IPv4 multicast作用相同,基本定義為 1111 1111 /8,即前面8個bits皆為1,所以看起來以 FF 開頭之位址即是 multicast address。
  • unicast又分成link-local, site-local及Global。
Global unicast是由IANA統一分配,是用來連上Internet的位址,基本定義為 001 /3。意思就是最前面的3個bits固定是001不變,也就是說,以二進位而言,看起來就是如下
0010 0000 0000 0000:(後面7個區塊就省略不列出來囉)
一直到
0011 1111 1111 1111:(後面7個區塊就省略不列出來囉)
所以用16進位表示,看起來就會像 2000:....一直到 3FFF:....。也就是說當你看到只要是 2 或 3 開頭的IPv6位址,是IANA分配的,可以用此位址直接連上Internet。
另一種比較常見的是 link-local address,它很像IPv4的APIPA,但不相同的是,APIPA位址的產生是因為設定DHCP Client(自動取得IP Address),但並沒有被分配到IP Address時,電腦才會產生APIPA位址(例如:169.254.23.3 /16)。IPv6的link-local address則是在網路卡上會自動產生出來,基本定義為 FE80:/10,意思即前面的10個bits要固定為 1111 1110 10,而且其實後面是連接54個0,所以看其來會是 FE80::例如下圖


link-local address 的特性跟APIPA幾乎一樣,只能用在和本身電腦所處的區段之其他電腦相互溝通之用,不可以跨Router,意即不可能用此種位址連上Internet。


轉貼自: http://www.uuu.com.tw/public/content/article/100927tips.htm

忘光光..真頭大...

2011年1月24日 星期一

使DHCP 重新取得IP

開個.bat檔,把這段貼入,之後點選執行這個bat檔就可以重新向DHCP server註冊個IP


@echo 重新向dhcp的取得ip
ipconfig /release
ipconfig /flushdns
ipconfig /renew
pause


Reference:
http://forum.icst.org.tw/phpbb/viewtopic.php?f=24&t=13340

2011年1月20日 星期四

Non-block Socket:select()

  • What 's socket
    • §Socket is a file descriptor associated with an opened file.
  • Blocking or non-blocking socket:
    • Blocking socket
      • The program is "blocked" until the request for data has been satisfied Socket default behavior
§
    • Non-blocking socket
      • Synchronous I/O Multiplexing
        • select() 




  • Select()
    • select() monitor readfds, writefds, and exceptfds.
    • fd: file descriptor
    • Use socket descriptor for file descriptor.
    • Provide the ability to monitor a set of sockets at the same time
      • Which socket is ready for read
      • Which socket is ready for write
    • Provide multiple sessions 
      • Several clients can access server at the same time
    • Non-blocking
      • Return to process if timer expires

  • Parameters in select()
int select(

int nfds, 

fd_set_t *readSet, 

fd_set_t *writeSet, 
fd_set_t *exSet, 
timeval_t *timeVal



  • nfds
    • Be the highest file descriptor plus one
  • readSet
    • Reflect which file descriptor your selected is ready for reading.
  • writeSet
    • Reflect which file descriptor your selected is ready for writing.
  • exSet
  • timeVal




  • Macro for select()
    • Bind() : FD_ZERO(), FD_SET()
    • Select(): FD_ISSET()
    • Close(): FD_CLR()
  • Sample code for select()


Reference:


2011年1月17日 星期一

FTP port 20 ? port 21?

TCP 的連線中在 Client 及 Server 端各會有一個 Port Number
在 Client 端一般是隨機指定的,而 Server 端則看服務而定,一般不會變動

FTP 的通訊協定比較複雜一點,詳細資料可以參考 http://rfc.giga.net.tw/rfc959

我這邊簡單解釋一下:

FTP 通訊協定在伺服器端可能會使用到 TCP Port 20 及 TCP Port 21 (這可以改的)
TCP Port 21 主要用來傳送命令,TCP Port 20 則用來傳送檔案/資料
如果你的 FTP Server 不是跑在 Port 21,
那麼 Data Port 一般會跑在 command port 減 1 的位置

FTP 有兩種運作模式,一個是 active (主動) 一個是 passive (被動)
這裡的主動與被動的定義是相對於伺服器的角色而言的

而 Port 20 只會用在主動模式下

在主動模式狀況下
Client 首先連接到 FTP Server 的 TCP Port 21,
告訴 FTP Server 他要抓一個檔案,然後這時候 Client 要送出一個訊息,
告訴伺服器他會在那個 TCP Port (隨機指定)等著接收這個檔案,
然後伺服器會經由自己的 Port 20 主動建立一條連線到 Client 端的這個 Port 上面,
藉由此連線把檔案傳送給 Client 端

在被動模式狀況下
Client 首先連接到 FTP Server 的 TCP Port 21,並指明要採用 Passive 模式,
接著告訴 FTP Server 他要抓一個檔案,
這時候伺服器會送出一個訊息,告訴 Client 說已經把檔案準備好放在某個 TCP Port (隨機指定) 上面,
由 Client 端自行建立一條連線到 Server 的這個 TCP Port 來把檔案傳送回去

綜合以上所述,如果你的服務是跑在 TCP port 21,且使用主動模式,
那麼照道理來講,伺服器端連接出去送資料應該要使用 Port 20 才對

你要不要說明一下伺服器端的環境,
然後看看能不能把 Client 端的連線過程記錄貼上來看看
(例如 CuteFTP 連線時會有個小視窗看到一堆命令)

有一個可能是因為伺服器的設定問題導致的

這邊有一份文件詳細說明 FTP data-port 的運作模式,很值得你參考 (英文的)

http://slacksite.com/other/ftp.html







轉貼自: http://www.pczone.com.tw/vbb3/thread/47/117740/

FTP 指令 (DOS)

FTP 命令: (後面有詳細說明內容) 
ftp的命令行格式為:
ftp -v -d -i -n -g[主機名] -v 顯示遠程服務器的所有響應信息。
-d 使用調試方式。 
-n 限制ftp的自動登錄,即不使用.netrc文件。
-g 取消全局文件名。 
help [命令] 或 ?[命令] 查看命令說明 
bye 或 quit 終止主機FTP進程,並退出FTP管理方式. 
pwd 列出當前遠端主機目錄 
put 或 send 本地文件名 [上傳到主機上的文件名] 將本地一個文件傳送至遠端主機中 
get 或 recv [遠程主機文件名] [下載到本地後的文件名] 從遠端主機中傳送至本地主機中 
mget [remote-files] 從遠端主機接收一批文件至本地主機 
mput local-files 將本地主機中一批文件傳送至遠端主機 
dir 或 ls [remote-directory] [local-file] 列出當前遠端主機目錄中的文件.如果有本地文件,就將結果寫至本地文件 
ascii 設定以ASCII方式傳送文件(缺省值) 
bin 或 image 設定以二進制方式傳送文件 
bell 每完成一次文件傳送,報警提示 
cdup 返回上一級目錄 
close 中斷與遠程服務器的ftp會話(與open對應) 
open host[port] 建立指定ftp服務器連接,可指定連接端口 
delete 刪除遠端主機中的文件 
mdelete [remote-files] 刪除一批文件 
mkdir directory-name 在遠端主機中建立目錄 
rename [from] [to] 改變遠端主機中的文件名 
rmdir directory-name 刪除遠端主機中的目錄 
status 顯示當前FTP的狀態 
system 顯示遠端主機系統類型 
user user-name [password] [account] 重新以別的用戶名登錄遠端主機 
open host [port] 重新建立一個新的連接 
prompt 交互提示模式 
macdef 定義宏命令 
lcd 改變當前本地主機的工作目錄,如果缺省,就轉到當前用戶的HOME目錄 
chmod 改變遠端主機的文件權限 
case 當為ON時,用MGET命令拷貝的文件名到本地機器中,全部轉換為小寫字母 
cd remote-dir 進入遠程主機目錄 
cdup 進入遠程主機目錄的父目錄 





Reference:
http://hack.org.tw/isfourm/viewthread.php?tid=58