.

Can's Windows Server Blog

Windows Nano Server Oluşturma

Bu kurulum maalesef Virtualbox içinde hyperV de ya mümkün değil yada aşırı derecede yavaş olacaktır. Bu nedenle mümkünse bağımsız ve hyperV kurulu tercihen en az bir windows10 makina gerekmektedir. Bana bu konuda destek olan ve bana bol bol zaman ayırarak windows öğreten hocam ve iş arkadaşım Olaf a burdan ayrıca teşekkür ederim.

Öncelikle indirdiğimiz Windows Server 2016 DVD(yada CD ben ISO kullandım) kök dizininde bulunan nanoServer klasörünün içinden bir klasörü kopyalayacağız bunun içinde aşağıda ki i,şlemleri yapıyoruz.

PS D:\nanoserver\NanoServerImageGenerator>mkdir c:\nano
PS D:\nanoserver\NanoServerImageGenerator>copy *.* C:\nano\
PS D:\nanoserver\NanoServerImageGenerator>Set-Location C:\nano\
PS C:\nano> Get-ChildItem
    Verzeichnis: C:\nano
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       16.07.2016     04:30         163433 Convert-WindowsImage.ps1
-a----       25.05.2016     23:42            478 NanoServerImageGenerator.psd1
-a----       14.07.2016     23:18         101216 NanoServerImageGenerator.psm1

böylece gerekli dosyaları kopyalamış olduk. Şimdi artık modulü import ederek devam edebiliriz. Eğer sistem hata verirse script çalıştırmaya izin verilmiyor diye aşağıda ki şekilde devam edin. Daha sonra “Restricted” olarak set edebilirsiniz.

PS C:\nano> Set-ExecutionPolicy unrestricted
PS C:\nano> Import-Module C:\nano\NanoServerImageGenerator.psm1

daha sonra hangi komutlar gelmiş görmek istersek

PS C:\nano> Get-Command -Module NanoServerImageGenerator
CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Edit-NanoServerImage                               0.0        NanoServerImageGenerator
Function        Get-NanoServerPackage                              0.0        NanoServerImageGenerator
Function        New-NanoServerImage                                0.0        NanoServerImageGenerator

Normalde DVDnin takılı olması lazım ancak ben farklı birşey yaptım ve iso image i 7zip ile açıp bir klasöre kaydettim. sonrada aşağıda ki komutta kullandım. Ayrıca nano server da kullanacağımız paketleride ekledim. Paket listesi nerede bende bilmiyorum.

PS C:\nano> New-NanoServerImage -Edition Standard -MediaPath 'C:\Users\olaf\SCP\Windows server 2016\' -BasePath C:\nano\ -TargetPath C:\nano\nan-svr.vhdx -DeploymentType Guest -ComputerName Nano-SVR1 -Storage -Package Microsoft-Nanoserver-IIS-Package                                                                                                            

Kurulum esnasında bize şifre soracak onu unutmayın.

Oluşan dosyaları görmek istersek.

PS C:\nano> Get-ChildItem
    Verzeichnis: C:\nano
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       23.12.2018     11:18                Logs
d-----       23.12.2018     11:18                Packages
-a----       16.07.2016     04:30         163433 Convert-WindowsImage.ps1
-a----       23.12.2018     11:22      569376768 nan-svr.vhdx
-a----       16.07.2016     19:12      172757121 NanoServer.wim
-a----       25.05.2016     23:42            478 NanoServerImageGenerator.psd1
-a----       14.07.2016     23:18         101216 NanoServerImageGenerator.psm1

Daha sonra Hyper-V manager dan yeni diyerek ekliyoruz. Aşağıda ki seçenekleri yapıyoruz.

Ram : 512 Mb , generation 2, var olan bir VM kullanı seçip (Use an existing virtual har disk) oluşturduğumuz VHDX dosyasını seçiyoruz.

Bunları CLI ile yapmak istersek


PS WIN-OLAF16@C:\nano> New-VM -name nano-svr02 -MemoryStartupBytes 512MB -BootDevice vhd -VHDPath C:\nano\nano-svr2.vhdx
 -Path c:\nano -Generation 2 -SwitchName extern
Name       State CPUUsage(%) MemoryAssigned(M) Uptime   Status             Version
----       ----- ----------- ----------------- ------   ------             -------
nano-svr02 Off   0           0                 00:00:00 Operating normally 8.0
PS WIN-OLAF16@C:\nano> Get-VM
Name       State CPUUsage(%) MemoryAssigned(M) Uptime   Status             Version
----       ----- ----------- ----------------- ------   ------             -------
Nano-Svr01 Off   0           0                 00:00:00 Operating normally 8.0
nano-svr02 Off   0           0                 00:00:00 Operating normally 8.0

Böylece iki şekilde de VM leri eklemiş olduk.

VM Hyper-V administration a eklendikten sonra başlatıyoruz. Username : administrator ve password ise NanoServer harddisk image ini oluştururken verdiğimiz şifre.

Şifreyi girdikten sonra recovery consola geleceğiz. Artık ayarlarımızı yapıp nano server i kullanabiliriz.

]]>

Windows2Windows SSH

Evet 2018 yılı itibariyle windows artık ssh ı destekliyor. Windows içinde bazı kabiliyetler (features) default olarak kurulu gelmiyorlar. Bu nedenle kurulması gerekiyor.

Administrator yetkisi ile POWERSHELL i başlatıyoruz. Bunun ssh bağlantısı kurulacak hemen her makinada yapılması uygun olacaktır.

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Set-Service sshd -StartupType Automatic
Set-Service ssh-agent -StartupType Automatic
Start-Service sshd
Start-Service ssh-agent
ssh-keygen

Bu komutları ardı ardına girin ve artık SSH servisiniz çalışmaya başlamıştır. Ancak ssh-keygen komutunda enter enter enter diyip hızlıca geçin böylece “c:/user/cb/.ssh ” klasörü oluşur. Daha sonra “New-Item authorized_keys” ile authorized keys dosyasını da oluşturmalıyız.

SSH ile bağlantı önce CMD’ye oluyor powershell e geçmek için powershell komutunu kullanmayı unutmayın.

İlerde istediğimiz public keyi buraya ekleyip bağlantıya şifresiz güvenli olarak izin verebiliriz.

Tabii ssh ın amacına tamamen ters olarak maaaaaaaaaalesef POWERSHELL de console test file editör yok. Yani bir Vi Nano vs yok. Hala notepad kullanmak zorundayız. Birtek Nano server da gelen PSedit var ancak onunda kurulumunu henüz bulamadım.

Kurulan SSH dosyaları ve loglar :
C:\Windows\System32\OpenSSH

Ayrıca ssh-keygen komutundan sonra oluşturulan private ve public keyleri ile daha sonra oluştracağımız authorized_keys dosyası “c:\User\Can\.ssh\” içinde

]]>

Oracle VirtualBox içinde WindowsServer 2016 üzerinde Hyper-V ile VM oluşturmak

Yani VM içinde VM oluşturmak. Zamanında biri sormuştu çok saçma gelmişti şimdi ihtiyacım oldu 🙂

neyse  tabii ki ilk başta mümkün olmadı. Çünkü sanallaştırma ile ilgili kısımlar aslında virtualbox tarafından kullanılıyordu ancak bir şekilde windows VM in buna takılmamasını sağlayan bir yol buldum. (google sağolsun) (Orjinali : https://www.baswijdenes.com/portfolio/hyper-v-in-virtualbox-guide/)

Şimdi önce . Not bir arada copy paste yapmayın. sakin ve sabırlı olun. Linux te de windows tada kıdemli adminlerin hep söylediği birşey vardır. Acele etmeyeceksin!!!

Öncelikle ilgili VM in sistem ayarlarında “VT-x/AMD-V ” in seçili olduğunu mutlaka görün.

Sonra windows VM i başlatın ve 
powershell i admisinstrator olarak açıp aşağıda ki komutları tek tek girin.
Not bir arada copy paste yapmayın. sakin ve sabırlı olun. Linux te de windows tada kıdemli adminlerin hep söylediği birşey vardır. Acele etmeyeceksin!!!

Enable-WindowsOptionalFeature –Online -FeatureName Microsoft-Hyper-V –All -NoRestart
***********************************************
Install-WindowsFeature RSAT-Hyper-V-Tools -IncludeAllSubFeature

***********************************************
Install-WindowsFeature RSAT-Clustering -IncludeAllSubFeature

***********************************************
Install-WindowsFeature Multipath-IORestart-Computer
***********************************************
restart-computer

Sonra yeniden başlattıktan sonra Hyper-V çalışıyor. Hayırlı olsun 🙂

]]>

Virtualbox Does not match UUID

VM sistemi mi çalıştırmak istediğimde şöyle bir hata aldım.

Parent UUID {00000000-0000-0000-0000-000000000000} of the medium 'C:\Users\can\VirtualBox VMs\Winserver2016 Datacenter\Snapshots\{6b423c3e-47a0-4b0e-a054-6059bedd3aa5}.vhd' does not match UUID {8575610c-960f-4c67-9153-44677e79e201} of its parent medium stored in the media registry ('C:\Users\can\.VirtualBox\VirtualBox.xml').

Neyse sinir bozucu bu saçma sorunun giderilmesi aşağıda ki gibiymiş.

PS C:\WINDOWS\system32> cd '..\..\Program Files\Oracle\VirtualBox\'
PS C:\Program Files\Oracle\VirtualBox> .\VBoxManage.exe internalcommands dumphdinfo D:\Centos_VM\Winserver2016_Datacente
r.vhd
--- Dumping VD Disk, Images=1
Dumping VD image "D:\Centos_VM\Winserver2016_Datacenter.vhd" (Backend=VHD)
Header: Geometry PCHS=25700/16/255 LCHS=0/0/0 cbSector=512
Header: uuidCreation={8575610c-960f-4c67-9153-44677e79e201}
Header: uuidParent={00000000-0000-0000-0000-000000000000}

Burada önemli olan uuidCreation değeri.

Sonra Snapshot in değerine bakıyoruz.

PS C:\Program Files\Oracle\VirtualBox> .\VBoxManage.exe internalcommands dumphdinfo "C:\Users\can\VirtualBox VMs\Winserv
er2016 Datacenter\Snapshots\{6b423c3e-47a0-4b0e-a054-6059bedd3aa5}.vhd"
--- Dumping VD Disk, Images=1
Dumping VD image "C:\Users\can\VirtualBox VMs\Winserver2016 Datacenter\Snapshots\{6b423c3e-47a0-4b0e-a054-6059bedd3aa5}.vhd" (Backend=VHD)
Header: Geometry PCHS=25700/16/255 LCHS=0/0/0 cbSector=512
Header: uuidCreation={6b423c3e-47a0-4b0e-a054-6059bedd3aa5}
Header: uuidParent={00000000-0000-0000-0000-000000000000}

İkisini karşılaştırınca snapshot in UUidCreation  değerlerinin kaynağını göstermediğini görüyoruz.

PS C:\Program Files\Oracle\VirtualBox> .\VBoxManage.exe internalcommands sethdparentuuid "C:\Users\can\VirtualBox VMs\Wi
nserver2016 Datacenter\Snapshots\{6b423c3e-47a0-4b0e-a054-6059bedd3aa5}.vhd" "{8575610c-960f-4c67-9153-44677e79e201}"
UUID changed to: 8575610c-960f-4c67-9153-44677e79e201

Bu komutlada hızla düzeltiyoruz.

]]>

Windows Nano Server creation

Server 2016 kurulumundan sonra ISO image veya CD hala takılıyken powershell (PS) e administrator olarak geçip.

Winserver 2016 ISO su takılı iken d: ye geçerek bakıyoruz.
PS C:\Users\Administrator> d:
PS D:> Get-ChildItem
Directory: D:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d-r--- 9/12/2016 9:52 PM NanoServer
d-r--- 10/13/2016 1:13 PM boot
d-r--- 10/13/2016 1:13 PM efi
d-r--- 1/10/2017 9:08 AM sources
d-r--- 10/13/2016 1:13 PM support
--r--- 5/25/2016 2:52 PM 128 autorun.inf
--r--- 7/15/2016 11:23 PM 386976 bootmgr
--r--- 7/15/2016 8:06 PM 1168736 bootmgr.efi
--r--- 7/15/2016 7:52 PM 80576 setup.exe



Burada gödrüğünüz NanoServer klasörünün içinde ki bazı şeyleri C nin içinde nano diye oluşturduğum klasöre kopyalacağım.

PS D:\NanoServer\NanoServerImageGenerator> Get-ChildItem
    Directory: D:\NanoServer\NanoServerImageGenerator
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-r---        9/12/2016   9:52 PM                en-US
--r---        7/15/2016   7:30 PM         163433 Convert-WindowsImage.ps1
--r---        5/25/2016   2:42 PM            478 NanoServerImageGenerator.psd1
--r---        7/14/2016   2:18 PM         101216 NanoServerImageGenerator.psm1

Buraya Kopyaladım ve şimdi nano serveri oluşturmak için bazı komutları gireceğiz.

PS C:\Users\Administrator> cd C:\nano2\
PS C:\nano2> Get-ChildItem
    Directory: C:\nano2
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-ar---        7/15/2016   7:30 PM         163433 Convert-WindowsImage.ps1
-ar---        5/25/2016   2:42 PM            478 NanoServerImageGenerator.psd1
-ar---        7/14/2016   2:18 PM         101216 NanoServerImageGenerator.psm1

Önce gerekli modulü import ediyoruz ve bu modülün bize getirdiği komutları inceliyoruz.

PS C:\nano2> Import-Module .\NanoServerImageGenerator.psm1
PS C:\nano2> Get-Command -Module NanoServerImageGenerator
CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Edit-NanoServerImage                               0.0        NanoServerImageGenerator
Function        Get-NanoServerPackage                              0.0        NanoServerImageGenerator
Function        New-NanoServerImage                                0.0        NanoServerImageGenerator

Artık nano-serveri oluşturabiliriz.

PS C:\nano2> New-NanoServerImage -Edition standard -MediaPath d:\ -BasePath C:\nano2\ -TargetPath C:\nano2\nano-svr.vhdx
 -DeploymentType Guest -ComputerName Nano-SVR1 -Storage -Package Microsoft-Nanoserver-IIS-Package

bittikten sonra folder içeriği aşağıda ki gibi oluyor

PS C:\nano2> Get-ChildItem
    Directory: C:\nano2
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       12/13/2018   9:43 PM                Logs
d-----       12/13/2018   9:43 PM                Packages
-ar---        7/15/2016   7:30 PM         163433 Convert-WindowsImage.ps1
-a----       12/13/2018   9:50 PM      569376768 nano-svr.vhdx
-ar---        7/16/2016  10:12 AM      172757121 NanoServer.wim
-ar---        5/25/2016   2:42 PM            478 NanoServerImageGenerator.psd1
-ar---        7/14/2016   2:18 PM         101216 NanoServerImageGenerator.psm1
]]>

Windows administration what the ……….. :)

Şirketim windowsa geçmemi istedi. Sonuçta profesyonel bir bilişim şirketi ve marka şovenliği yapmaktansa ihtiyaca yönelik ürünler ile profesyonel çözümler üreten bir şirket. Personel ihtiyacınıda one göre düzenliyor. Linux dünyasına gönül bağı ile bağlanmış olan ben yine de şirketim gelip windowsa geçer misin dediğinde hayır demedim. Çünkü bende verilen ve verilecek sorumluluklardan hiçbir zaman kaçmadım. Kimi zaman amele gibi çalışsamda bu her zaman bana bilgi ve saygınlık olarak geri döndü.

Bu nedenle evet dedim ve Windows Server dünyasını hiç bir deneyimim olmamasına rağmen öğrenmeye başladım. Her IT cinin yaptığı gibi google ve youtube ikilisi ile baya uğraştım ama hintli ingilizcesi ile daha fazla ilerleyemeyeceğime karar verdim. 🙂

Şanslıyım ki yılların deneyimli windows admini bir iş arkadaşım var ve bana baya zaman ayırıyor. Ondan çok şey öğreniyorum üstelik canlı sistemlerde bu böyle.


Şu bir gerçek öğrendikçe Windows dünyasına da ayrı bir saygı duyuyorum.Üstelik giderek artan şekilde CLI kullanmaları beni rahatlatıyor.

Şimdilik yazacak çok birşey yok ama gelecekte eminim bu konuda da çok şey paylaşırım.

]]>

DHCP Protocol ve ilginç özellikleri

Sisteme yeni bağlanan client içinde bazı önceden mevcut olan konfigürasyonlar ile DHCPDISCOVER mesajı gönderiyor. IP si olmadığından ve DHCP serveri bilmediğinden bunu broadcast olarak yapıyor. Server bu discover mesajını alıp inceliyor olması gereken konfigürasyonlar ile DHCPOFFER mesajını gönderiyor. Client OFFER mesajını alıp kabul ederek DHCPREQUEST gönderiyor. Yani bu ayarları bana reserver et kullanacağım diyor. Daha sonra server DHCPACK yani anlaşıldı mesajı gönderiyor böylece o IP o clienta atanmış oluyor ve server bunu başkasına önermiyor. Aynı IP isteği ile gelen başka DHCPDISCOVER mesajlarına başka IP tahsis ediyor. Normal kapanan bilgisayar IPyi kullanmayacağını bildiren DHCPRELEASE emsajını gönderiyor. Anormal kapanmalarda IP timeout olduğu için release oluyor. DHCPNAK mesajını gönderen client başlangıç konumuna dönüp yeniden bağlantı ile yeni IP isteği gönderir. Genel algoritma akışı aşaığıda ki gibidir. Şimdilik biraz ip ucu gibi 2_ DHCP ile gönderilebilecek ayarların listesi 3_ çalışma mantığı şeması 4_ örnek hazırlama linux2linux with wireshark Linkler https://tools.ietf.org/html/rfc2131 — DHCP RFC si http://www.networksorcery.com/enp/rfc/rfc4388.txt — alakalı bir konu http://www.networksorcery.com/enp/rfc/rfc1533.txt — extensions Eski versiyonu 1993 http://www.networksorcery.com/enp/rfc/rfc2132.txt — extensions Son versiyonu 1997 4_ http://www.networksorcery.com/enp/rfc/rfc3203.txt ]]>

TCP Protocol Sayaçları

192.168.0.1 yazıp enter a bastım. Sonrada ip.addr == 192.168.0.1 ile filtreleyerek sadece bu iletişimin görünmesini sağladım. Kullandığım sistem virtualbox ta “NAT” bağlantısı bu nedenle modemin IPsi 192 grubunda iken sistemin IPsi 10 grubunda. ama buna takılmayın. sonuçta aşağıda ki resim ortaya çıktı. Burada incelediğimiz TCP pakette ki sayaçlar SEQ ve ACK numaralarının nasıl oluştuğudur. Wireshark ile diğer pek çok detay görülebilmekte ancak konumuz bunlar değil. SEQ gönderilen paketin sıra numarası ACK bir önce gönderdiğini aldım (SEQ+ Payload) bir sonra beklediğim (Payload+1) Şimdi daha detaylı adım adım inceleyelim. Resimde en sol sütunda paket numaraları ve o numaralara göre adım adım gideceğiz. TCP’de 3-way handshake denilen işlem en önce yapılır. 1nci paket –> istemci(client 10.0.2.15) sunucuya(server 192.168.0.1) e bir istek gönderir. Bu gönderdiği ilk pakettir ve TCP standartlarında tanımlanmış olan SYN bitini set etmiştir. SEQ numarasıda ilk paket olduğu için 0 dır. 2nci paket –> Server client in isteğini alır ve yine TCp standardında belirtildiği gibi SYN ve ACK bitlerini set eder. Kendi gönderdiği ilk paket olduğu için SEQ=0 ancak ilkini aldım bir sonra beklediğim 1 anlamında ACK 1 gönderir. NOT : ilerde göreceğiz SYN biti her zaman 1 payload olarak hesaplanıyor. Yani aslında burada olan Payload+1 gibidir. 3üncü paket –> client server ACK ine ACK ile cevap veriyor. gönderdiği ikinci paket olduğu için SEQ = 1 ve aldığını beklediğini göstermek için ACK 1 gönderiyor. yani ilk paketini aldım bir sonra beklediğim SEQ = 1 Ve böylece Handshake işlemi tamamlanmış oluyor. 4ncü paket –> Client handshake tamamlandığı için yapması gereken HTTP istediğini gönderiyor. şimdi bu noktada resmi incelerseniz üstte (açık yeşil bölümde) 4 nolu paketin seçilmiş olduğu altta ise detaylarını göreceksiniz. Burada önemli olan LEN değeridir. TCP Segment Len= 319 Server a gönderdiği ACK a ACK beklemediğinden paketin SEQ numarası halen 1 dir ve Server a bir önce gönderdiğinden sonra birşey gelmediğinden ACK numarası da halen 1 dir ve değişmemiştir. 5inci paket –> Şimdi server 319 byte lık HTTP/GET istediğini almıştır ve buna ACK gönderecektir. SEQ halen 1 dir çünkü gelen HTTP isteğinde öyle belirtilmiş (ACK 1). Ancak şimdi ACK gönderirken 320 olmuştur. payload+1 –> 319+1 yani diyor ki 319 byte lık paketi aldım bir sonra beklediğim SEQ nosu 320. ACK 320 6ıncı paket –> Ve server hemen ardından HTTP cevabını gönderiyor. SEQ ve ACK numaraları değişmedi çünkü karşıdan birşey gelmedi (server beklemedi gerek olmadığı için) Ayrıca bu pakette ki LEN değeride 225. 7inci paket –> Client ACK gönderir. SEQ 320 ve ACK 226 (225+1). Eh buraya kadar client istedi server gönderdi iş bitti artık iletişimi kapatma zamanı. Bu nedenle 8inci paket –> Server FIN,ACK bitleri set edilmiş paketi gönderir. SEQ 226 ve ACK 320 9uncu paket –> Client da serverın kapatma isteğini alır SEQ 320 ACK 227 gönderir (FIN = payload 1) 10uncu paket –> Server Clientin paketi aldığını ack eder SEQ 227 ACK 321 (FIN = payload 1) Artık başka iletişim olmaz. ]]>

Yazılım düşünmeyi öğrenmek

Aşağıda ki codu ArraySort.nsd olarak notepad ile (veya linux te vi/nano/gedit…) kaydederseniz programa atıp çalıştırabilirsiniz. Basit bir dizi sıralama algoritmasının çalışması. <?xml version="1.0" encoding="UTF-8"?> <root xmlns:nsd="https://structorizer.fisch.lu" version="3.28-09" preRepeat="until " postFor="to" preReturn="return" postForIn="in" preWhile="while " output="OUTPUT" input="INPUT" preFor="for" preExit="exit" preLeave="leave" ignoreCase="true" preForIn="foreach" stepFor="by" author="can" created="2018-10-07" changedby="can" changed="2018-10-07" origin="Structorizer 3.28-09" text="&#34;ArraySort&#34;" comment="&#34;&#34;" color="ffffff" type="program" style="nice"> <children> <instruction text="&#34;dizi &#60;- {2,5,-2,6,-3,8,0,-7,-9,4 }&#34;" comment="&#34;&#34;" color="ffffff" rotated="0" disabled="0"></instruction> <instruction text="&#34;sortedArray &#60;- {0,0,0,0,0,0,0,0,0,0}&#34;" comment="&#34;&#34;" color="ffffff" rotated="0" disabled="0"></instruction> <instruction text="&#34;n1 &#60;- length(dizi)&#34;" comment="&#34;&#34;" color="ffffff" rotated="0" disabled="0"></instruction> <instruction text="&#34;n &#60;- n1-1&#34;" comment="&#34;&#34;" color="ffffff" rotated="0" disabled="0"></instruction> <instruction text="&#34;max &#60;- -999&#34;" comment="&#34;&#34;" color="ffffff" rotated="0" disabled="0"></instruction> <instruction text="&#34;indexHolder &#60;- 0&#34;" comment="&#34;&#34;" color="ffffff" rotated="0" disabled="0"></instruction> <for text="&#34;for k &#60;- 0 to n&#34;" comment="&#34;&#34;" counterVar="k" startValue="0" endValue="n" stepConst="1" style="COUNTER" color="ffffff" disabled="0"> <qFor> <for text="&#34;for i &#60;- 0 to n&#34;" comment="&#34;&#34;" counterVar="i" startValue="0" endValue="n" stepConst="1" style="COUNTER" color="ffffff" disabled="0"> <qFor> <alternative text="&#34;(dizi[i] &#62; max)&#34;" comment="&#34;&#34;" color="ffffff" disabled="0"> <qTrue> <instruction text="&#34;max:= dizi[i]&#34;" comment="&#34;&#34;" color="ffffff" rotated="0" disabled="0"></instruction> <instruction text="&#34;indexHolder := i&#34;" comment="&#34;&#34;" color="ffffff" rotated="0" disabled="0"></instruction> </qTrue> <qFalse color="ffffff"> </qFalse> </alternative> </qFor> </for> <instruction text="&#34;sortedArray[k] :=dizi[indexHolder]&#34;" comment="&#34;&#34;" color="ffffff" rotated="0" disabled="0"></instruction> <instruction text="&#34;dizi[indexHolder] := -999&#34;" comment="&#34;&#34;" color="ffffff" rotated="0" disabled="0"></instruction> <instruction text="&#34;max := -999&#34;" comment="&#34;&#34;" color="ffffff" rotated="0" disabled="0"></instruction> </qFor> </for> <for text="&#34;for j &#60;- 0 to n&#34;" comment="&#34;&#34;" counterVar="j" startValue="0" endValue="n" stepConst="1" style="COUNTER" color="ffffff" disabled="0"> <qFor> <instruction text="&#34;Output sortedArray[j]&#34;" comment="&#34;&#34;" color="ffffff" rotated="0" disabled="0"></instruction> </qFor> </for> </children> </root>  ]]>

Network Subnetting

Subnetler 2 nin katları olarak hesaplanır yani bir subnete ya 8 bilgisayar ya 16 bilgisayar koyabilirsiniz. Bu nedenle 40 bilgisayar ihtiyacı olan yere uyan en küçük subnette 64 adet IP olacaktır. Ancak 64 IP nin ilk ve son IP leri sistemlere verilemez. İlk IP network adı diğeride o networkun broadcast IP sidir. Bu nedenle kullanılabilir IP örneğin 64-2 dir. Bu nedenle 63 sistemlik subnette 128 IP lik bir subnettir. 64 Ip nin olduğu en küçük subnet CIDR notasyonunda /26 olarak gösterilir ve subnetmask ı 255.255.255.192 dir. (sütunlar D ve E) Diğer IP aralıklarıda gösterilmiştir. 10.1.2.0/23 networkünde 512 IP vardır. Tüm bunları deli patrona uygun yerleştirince Böyle oluyor. ]]>