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.
]]>
Can's Windows Server Blog
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=""ArraySort"" comment="""" color="ffffff" type="program" style="nice">
<children>
<instruction text=""dizi <- {2,5,-2,6,-3,8,0,-7,-9,4 }"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
<instruction text=""sortedArray <- {0,0,0,0,0,0,0,0,0,0}"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
<instruction text=""n1 <- length(dizi)"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
<instruction text=""n <- n1-1"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
<instruction text=""max <- -999"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
<instruction text=""indexHolder <- 0"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
<for text=""for k <- 0 to n"" comment="""" counterVar="k" startValue="0" endValue="n" stepConst="1" style="COUNTER" color="ffffff" disabled="0">
<qFor>
<for text=""for i <- 0 to n"" comment="""" counterVar="i" startValue="0" endValue="n" stepConst="1" style="COUNTER" color="ffffff" disabled="0">
<qFor>
<alternative text=""(dizi[i] > max)"" comment="""" color="ffffff" disabled="0">
<qTrue>
<instruction text=""max:= dizi[i]"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
<instruction text=""indexHolder := i"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
</qTrue>
<qFalse color="ffffff">
</qFalse>
</alternative>
</qFor>
</for>
<instruction text=""sortedArray[k] :=dizi[indexHolder]"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
<instruction text=""dizi[indexHolder] := -999"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
<instruction text=""max := -999"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
</qFor>
</for>
<for text=""for j <- 0 to n"" comment="""" counterVar="j" startValue="0" endValue="n" stepConst="1" style="COUNTER" color="ffffff" disabled="0">
<qFor>
<instruction text=""Output sortedArray[j]"" comment="""" 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.
]]>
Network Cisco Cheatsheet
Router#show interfaces ethernet 1/3
Ethernet1/3 is up, line protocol is up (connected)
.
.
Kapalıysa administratively down
*******************************************************************
Tanımlama
en-conf t-int ethernet 1/1
# description wan connection
Daha sonra
# sh run
interface Ethernet1/1
description WAN connection
ip address 210.10.10.2 255.255.255.252
duplex auto
speed auto
*******************************************************************
Temel yapılandırmanın doğrulanması
Router#sh ip int bri
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 unassigned YES unset administratively down down
FastEthernet0/1 unassigned YES unset administratively down down
Ethernet1/0 192.168.1.254 YES manual up up
Ethernet1/1 210.10.10.2 YES manual up up
Ethernet1/2 10.10.10.13 YES manual up up
Ethernet1/3 10.10.10.9 YES manual up up
Vlan1 unassigned YES unset administratively down down
*******************************************************************
Burda arayüzlerin status ve protokollerinin anlamları önemli
Status Protocol Olası Hatalar
administratively down down İnterface yönetici tarafından kapatılmıştır.
down down İnterface açık ama kablo takılı değil yada fiziksel problem var
up down Karşı cihaz ile protokol uyumsuzluğu mevcuttur
up up Herşey iyi güzel
*******************************************************************
]]>
Network Cisco Router ilk ip verme ve basic routing
Router(config)#int
Router(config)#interface et
Router(config)#interface ethernet 1/1
Router(config-if)#ip address 210.10.10.2 255.255.255.252
böylece 210.10.10.2/30 ip sini vermiş olduk
Bunu görmek için “conf t” den önce ki seviyeye çıkıp
“sh ru” diyerek gelen bilgileri istediğimizi görene kadar space ile kaydırıyoruz.
routing sağlamak içinde (ki bu routing tam olarak ne tip henüz bilmiyorum ama routerin her bacağının ucunda bir switch var. Yani router hiç direk diğer bir router a bağlı değil.
Router(config)#ip route 192.168.2.0 255.255.255.0 10.10.10.10
Router#sh ip rou
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is 0.0.0.0 to network 0.0.0.0
10.0.0.0/30 is subnetted, 2 subnets
C 10.10.10.8 is directly connected, Ethernet1/3
C 10.10.10.12 is directly connected, Ethernet1/2
C 192.168.1.0/24 is directly connected, Ethernet1/0
S 192.168.2.0/24 [1/0] via 10.10.10.10
S 192.168.3.0/24 [1/0] via 10.10.10.14
210.10.10.0/30 is subnetted, 1 subnets
C 210.10.10.0 is directly connected, Ethernet1/1
S* 0.0.0.0/0 is directly connected, Ethernet1/2
daha sonra doğruysa wr diyerek running-config i kaydediyoruz ki her hangi bir reboot durumunda geri gelsinler.]]>
Network Cisco Switch show mac-address-table
Switch>en Switch#show mac-address-table Mac Address Table ——————————————- Vlan Mac Address Type Ports —- ———– ——– —– 1 0000.0c78.2304 DYNAMIC Fa0/1 1 0030.a337.bb01 DYNAMIC Fa0/2 ]]>