---
title: 'Zaman ve Yönetim Protokolleri'
source: 'https://academia.sh/tr/kurslar/uygulama-protokolleri/zaman-ve-yonetim-protokolleri'
course: 'Uygulama Katmanı Protokolleri'
language: tr
updated: '2026-08-17T18:07:02+00:00'
license: 'CC BY-SA 4.0'
---

# Zaman ve Yönetim Protokolleri

Saat eşitlemenin tek varsayımı ve turun bakışımsızlığı: gidiş ile dönüş gecikmesi eşit değilse saat sapması doğrudan bu farktan doğar ve protokolün elinde farkı görecek hiçbir alan yoktur; yanında yoklayan ile bildiren yönetim modelinin tur ve karar dengesi.

Önceki iki ders aracının bir iletiden ne okuyabildiğini ölçtü. Okumanın sessiz bir önkoşulu
vardı: bir önbelleğin tazelik ömrü, bir sertifikanın geçerlilik aralığı, bir postanın `Date:`
alanı — hepsi iki ucun saatinin birbirine yakın olduğunu varsayar.

Saatleri yakınlaştıran protokol, kursun ölçü ekseninin en saf örneğidir: elinde **dört zaman
damgası** vardır ve tek bir turda saat sapmasını kestirir. Kestirim tek bir varsayıma dayanır —
**gidiş ile dönüş gecikmesinin eşit olduğuna.** Bu dersin sorusu, varsayım tutmazsa ne olduğu ve
protokolün tutmadığını görüp göremediğidir.

- **DG51.** Kurgu M04/K03'ün ortak kurgusudur: `istasyon.ornek` ve bir zaman kaynağı. Gerçek
  bir zaman sunucusu adı yazılmaz, gerçek bir ağ çağrısı yapılmaz.
- **DG52.** Ölçülen küme **40 tur**dur. Kâhin kurguyu biz ürettiğimiz için bilinir: sunucu saati
  istemciden **12,500 ms** ileridedir ve gidiş yolu dönüş yolundan **4,000 ms** uzundur. Yollar
  tur başına oynar ama bakışımsızlık sistematiktir; protokol bu iki sayıyı görmez, yalnız dört
  damgayı görür.
- **DG53.** Aygıt yönetimi tarafında küme **40 aygıt** ve **20 tiklik** bir penceredir. Her
  aygıtın durumu pencere içinde bir kez değişir; ölçü, pencere sonunda yöneticinin doğru durumu
  bilip bilmediğidir.
- **DG54.** M03'ün Sistem Yönetimi kursu saat kaymasının **günlüklerdeki belirtilerini** ölçmüştü;
  o ölçüm tekrarlanmaz. Buradaki ölçü eşitlemenin **kendi hatasıdır**.

## Dört Damga ve İki Hesap

Saat eşitlemesi tek bir alışverişle yapılır. Her uç, iletiye dokunduğu anda kendi saatini
yazar; NTP'nin taşıdığı dört damga budur.

```text
istemci                                  sunucu (zaman kaynağı)
   |                                        |
   |-- t1: istemcinin gönderme anı -------->|
   |                                        t2: sunucunun alma anı
   |                                        t3: sunucunun gönderme anı
   |<---------------------------------------|
   t4: istemcinin alma anı                  |

   t1, t4  istemcinin saatinde okunur
   t2, t3  sunucunun saatinde okunur
```

Bu döküm çalıştırılmadı; öğretilen biçimdir. İki hesap bu dört sayıdan çıkar:

$$
\hat{\theta} = \frac{(t_2 - t_1) + (t_3 - t_4)}{2}
\qquad
\delta = (t_4 - t_1) - (t_3 - t_2)
$$

Birincisi **saat sapması (clock offset)** kestirimidir, ikincisi turun toplam gecikmesi. İkinci
hesap saat sapmasından tümüyle bağımsızdır: sapma bir kez artı bir kez eksi girdiği için düşer.
Birinci hesap ise **gidiş ile dönüşün eşit olduğunu** varsayarak ikiye böler.

Varsayım tutmazsa hatanın kapalı biçimi vardır. Gidiş gecikmesi $d_g$, dönüş gecikmesi $d_d$
olsun; kestirim ile gerçek sapma arasındaki fark tam olarak şudur:

$$
\hat{\theta} - \theta = \frac{d_g - d_d}{2}
$$

Yani hata gürültüden değil, **turun bakışımsızlığından** doğar ve farkın yarısına eşittir.

## Ölçüm: Bakışımsızlık

```python
TOHUM = 20260809
SAPMA = 0.0125          # kâhin: sunucu saati istemciden bu kadar ileride (s)
BAKISIMSIZLIK = 0.0040  # kâhin: gidiş yolu dönüş yolundan bu kadar uzun (s)


def uretec(tohum):
    d = tohum % 2147483646 + 1

    def r(n):
        nonlocal d
        d = (d * 48271) % 2147483647
        return d % n
    return r


def turlar(sayi=40, tohum=TOHUM):
    r, liste = uretec(tohum), []
    for i in range(sayi):
        ortak = 0.0150 + 0.0001 * r(9)
        gidis = ortak + BAKISIMSIZLIK / 2 + 0.00002 * r(7)
        donus = ortak - BAKISIMSIZLIK / 2 + 0.00002 * r(7)
        t1 = 100.0 + i
        t2 = t1 + gidis + SAPMA
        t3 = t2 + 0.0002
        t4 = t3 + donus - SAPMA
        liste.append((t1, t2, t3, t4))
    return liste


def kestir(d):
    t1, t2, t3, t4 = d
    return ((t2 - t1) + (t3 - t4)) / 2, (t4 - t1) - (t3 - t2)


ol = turlar()
kestirimler = [kestir(d) for d in ol]
hatalar = [s - SAPMA for s, _ in kestirimler]
enaz = min(kestirimler, key=lambda x: x[1])
print(f"tur {len(ol)}, gerçek sapma {SAPMA * 1000:.3f} ms, "
      f"bakışımsızlık {BAKISIMSIZLIK * 1000:.3f} ms")
print(f"kestirim ortalaması {sum(s for s, _ in kestirimler) / len(ol) * 1000:.4f} ms")
print(f"hata: ortalama {sum(hatalar) / len(hatalar) * 1000:.4f}, "
      f"en küçük {min(hatalar) * 1000:.4f}, en büyük {max(hatalar) * 1000:.4f} ms")
print(f"bakışımsızlığın yarısı {BAKISIMSIZLIK / 2 * 1000:.4f} ms")
print(f"en küçük gecikmeli tur: kestirim {enaz[0] * 1000:.4f} ms, "
      f"hata {(enaz[0] - SAPMA) * 1000:.4f} ms")

fark = 0.0
for t1, t2, t3, t4 in ol:
    sapma_ikiz = ((t2 - t1) + (t3 - t4)) / 2
    yari = ((t4 - t1) - (t3 - t2)) / 2
    fark = max(fark, abs(t1 + yari + sapma_ikiz - t2),
               abs(t3 + yari - sapma_ikiz - t4))
print(f"ikiz dünyanın ürettiği damgaların en büyük farkı {fark:.3e} s")
```

```
tur 40, gerçek sapma 12.500 ms, bakışımsızlık 4.000 ms
kestirim ortalaması 14.4917 ms
hata: ortalama 1.9917, en küçük 1.9400, en büyük 2.0400 ms
bakışımsızlığın yarısı 2.0000 ms
en küçük gecikmeli tur: kestirim 14.4700 ms, hata 1.9700 ms
ikiz dünyanın ürettiği damgaların en büyük farkı 2.842e-14 s
```

## Protokolün Göremediği

Kestirimlerin ortalaması 14,4917 ms; gerçek sapma 12,500 ms; hata 1,9917 ms ve bakışımsızlığın
yarısı 2,0000 ms. En küçük hata 1,9400, en büyük hata 2,0400 — kırk turun tamamı **iki
milisaniyenin çevresinde dar bir bantta** duruyor. Hatanın rastgele olmadığının kanıtı budur:
gürültü olsaydı hatalar sıfırın iki yanına dağılırdı.

Standart iyileştirme çok tur ölçüp **en küçük gecikmeli** turu seçmektir; en az kuyruklanmış tur
en temiz ölçüm sayılır. O tur seçildiğinde hata 1,9917'den 1,9700 ms'ye iniyor. Süzme
**gürültüyü** azaltıyor, **bakışımsızlığı** azaltmıyor — çünkü bakışımsızlık gürültü değil,
yolun kendi özelliğidir.

Son satır işin özü. Aynı dört damgayı üreten **ikinci bir dünya** kuruldu: orada yol bakışımlı ve
sunucunun saati gerçekten 14,4917 ms ileride. İki dünyanın damgaları $2{,}842 \times 10^{-14}$
saniyeye kadar aynı — bu da kayan noktalı sayının kendi çözünürlüğü. Dört damga **iki farklı
gerçeği ayırt edemez**; kestirim yanlış hesaplanmış değildir, ikiz dünyada tam olarak doğrudur.

Bakışımsızlığı gösterecek bir alan olmadığı için bu bir tur borcu bile değil: kaç tur atılırsa
atılsın kapanmaz. Kapatmanın yolu protokolün dışındadır — yolun bakışımlı olduğunu başka bir
kaynaktan bilmek ya da damgaları yola girmeden önce koymak. Kursun dördüncü okuması burada en
keskin biçimini alır: **iletide yazanı doğrulayan hiçbir şey yoktur**; burada iletide yazan
doğrudur ve yine de yetmez.

## Yoklayan ile Bildiren

Aygıt yönetimi aynı ekseni başka bir soruyla sorar: bir yönetici kırk aygıtın durumunu nasıl
öğrenir. SNMP iki modeli birden tanımlar. **Yoklayan** modelde yönetici düzenli aralıklarla
sorar ve her soru bir gidiş–dönüştür. **Bildiren** modelde aygıt durumu değişince kendisi haber
verir; onaysız biçimi bir tur bile istemez, onaylı biçimi bir onay turu ister.

```python
TOHUM = 20260809
AYGIT, PENCERE = 40, 20


def uretec(tohum):
    d = tohum % 2147483646 + 1

    def r(n):
        nonlocal d
        d = (d * 48271) % 2147483647
        return d % n
    return r


def olaylar():
    r = uretec(TOHUM + 1)
    return [{"aygit": i + 1, "tik": 1 + r(19), "dustu": r(9) == 0}
            for i in range(AYGIT)]


def yoklama(aralik):
    tur = dogru = gecikme = 0
    for o in olaylar():
        tur += PENCERE // aralik
        gorulen = ((o["tik"] - 1) // aralik + 1) * aralik
        if gorulen <= PENCERE:
            dogru += 1
            gecikme += gorulen - o["tik"]
    return tur, dogru, gecikme / max(dogru, 1)


def bildirim(onayli):
    dusen = sum(x["dustu"] for x in olaylar())
    return (AYGIT, AYGIT, 0.0) if onayli else (0, AYGIT - dusen, 0.0)


print(f"{'model':<22s} {'tur':>5s} {'doğru':>6s} {'yanlış':>7s} {'gecikme':>9s}")
for ad, (t, d, g) in (("yoklama, aralık 5", yoklama(5)),
                      ("yoklama, aralık 10", yoklama(10)),
                      ("yoklama, aralık 20", yoklama(20)),
                      ("bildirim, onaysız", bildirim(False)),
                      ("bildirim, onaylı", bildirim(True))):
    print(f"{ad:<22s} {t:5d} {d:6d} {AYGIT - d:7d} {g:6.2f} tik")

print(f"\naygıt {AYGIT}, pencere {PENCERE} tik, "
      f"yolda düşen bildirim {sum(x['dustu'] for x in olaylar())}")
```

```
model                    tur  doğru  yanlış   gecikme
yoklama, aralık 5        160     40       0   2.08 tik
yoklama, aralık 10        80     40       0   4.95 tik
yoklama, aralık 20        40     40       0  10.95 tik
bildirim, onaysız          0     34       6   0.00 tik
bildirim, onaylı          40     40       0   0.00 tik

aygıt 40, pencere 20 tik, yolda düşen bildirim 6
```

Yoklayan modelde tur ile yakalama gecikmesi doğrudan takas edilir: aralık beşten yirmiye
çıkınca tur 160'tan 40'a iner, gecikme 2,08 tikten 10,95 tike çıkar. Doğru karar sayısı üçünde de
kırktır — yoklama geç öğrenir ama yanlış öğrenmez.

Bildiren model takası kırar. Onaylı biçim **en sık yoklamanın doğruluğunu 160 yerine 40 turla ve
sıfır gecikmeyle** veriyor. Onaysız biçim tur maliyetini sıfıra indiriyor ve altı aygıtta yanlış
karar doğuruyor. Bu altı yanlışın niteliği önemli: yönetici **sessizlik ile değişmemişlik
arasında ayrım yapamaz** ve yanıldığını da bilmez. Onay turu tam olarak bu ayrımı satın alır —
kursun kuralının bu derse düşen biçimi budur: **alınamayan karar bir tur borcudur, ve borç
ödenmediğinde kararın yerini bir varsayım alır.**

## Özet

- Saat eşitlemesi dört zaman damgasından iki hesap çıkarır: gecikme hesabı saat sapmasından
  bağımsızdır, sapma kestirimi ise gidiş ile dönüşün eşit olduğunu varsayar.
- Varsayım tutmazsa hata rastgele değildir: 40 turda gerçek sapma 12,500 ms iken kestirimlerin
  ortalaması 14,4917 ms, hata 1,9917 ms — bakışımsızlığın tam yarısı. En küçük gecikmeli turu
  seçmek hatayı ancak 1,9700 ms'ye indirir; süzme gürültüyü alır, bakışımsızlığı almaz.
- Aynı dört damgayı üreten bakışımlı bir ikiz dünya kurulabiliyor; damgalar kayan nokta
  çözünürlüğüne kadar aynı, dolayısıyla protokolün bakışımsızlığı görecek alanı yok ve bu eksik
  tur atarak kapanmıyor.
- Yönetimde yoklayan model turu gecikmeyle takas eder (160 tur ve 2,08 tik, 40 tur ve 10,95
  tik); onaylı bildiren model aynı doğruluğu 40 turla ve sıfır gecikmeyle verir.
- Onaysız bildirimde tur sıfırdır ama altı aygıtta karar yanlış çıkar; yönetici sessizlik ile
  değişmemişlik arasında ayrım yapamaz ve onay turu tam olarak bu ayrımı satın alır.

## Kurs Kapanışı

| ders | ölçülen karar | gidiş–dönüşsüz alınan | yanlış ya da alınamayan |
|---|---|---|---|
| HTTP 01 · Yöntemler | yöntemden `yinelenebilir`, `saklanabilir` | 195/200 doğru, 0 tur | 5 yanlış: 2 eksik im, 3 doğrulayıcı |
| HTTP 02 · Durum kodları | ilk basamaktan saklama ve yeniden deneme | satır rejimi 309 doğru, 4004 bayt | 11 yanlış; gövdenin 6 kararı 673,3 bayt/karar |
| HTTP 03 · Başlıklar ve pazarlık | çözülen alan ile taşınan alanın ayrımı | 195 doğru; tam imle 13/13 doğru kopya | 5 yanlış; imsiz 9 yanlış kopya; 2960 bayt sıfır karar |
| HTTP 04 · Çerezler | kapsam kuralı ve saklanan yanıtın alıcısı | 195 doğru; kapsamlar 11, 24, 40 ileti taşır | 2 yanlış; im zarfta 80 karar uçlara, 40 tur |
| HTTP 05 · Sürümler | çerçevelemenin aracıya kazandırdığı | aynı 195 doğru, 3524 yerine 427 bayt | bağlamsız aracıda 189 alınamayan, 39 tur |
| HTTP 06 · Önbellekleme | doğrulayıcının çözünürlüğü | damga rejimi 195 doğru, 12 bayattan 9'u yakalanır | 3 kopyada damga kaçar; her seferinde sormak 40 tur |
| TLS 01 · Simetrik ve asimetrik | rolün tura maliyeti | tek kalıcı bağlantıda 0,025 tur/alışveriş | her iletide kurulumda 1,000 tur |
| TLS 02 · Sertifika zinciri | zincirin yerel doğrulanması | 33/40 doğru, 0 gidiş–dönüş; zincir uzasa da 0 | 7 yanlış, tamamı iptalden; sormak 111 tur, aynı tablo |
| TLS 03 · El sıkışması | tur bütçesi ve zarfın ödettiği karar | zarfta 40 karar, hiçbiri yanlış değil | 160 alınamayan, 40 tur; bayt 3524'ten 920'ye |
| TLS 04 · Sertifika yaşam döngüsü | iptalin tur borcu olması | sormayan istemci 0 tur; ara üç seçeneğin de alışveriş başına turu 0 | sormayan 22,02/40 yanlış kabul; her alışverişte sormak 120 tur, 0 yanlış |
| DİĞER 01 · WebSocket | yükseltmenin bir rejim değişimi olması | yükseltme isteği 5 kararın 2'sini verir | tünelde 200 alınamayan, 40 tur, 0 yanlış |
| DİĞER 02 · Sunucu akışı | akışın HTTP içinde kalması | 1 karar noktası, 5 karar, 87 bayt | 195 alınamayan, 39 tur; kapsamda 73 yanlış |
| DİĞER 03 · Yoklama | karar başına tur maliyeti | dört yaklaşımda da 0,200 tur/karar | harcanan tur ile tur borcunun toplamı hepsinde 40 |
| DİĞER 04 · Dosya aktarımı | denetim ile veri kanalının eşleşmesi | tek kanal açık 195 doğru, 0 tur | iki kanalda 8 yanlış, 3'ü bölünmeden; veri zarflı 40 tur |
| DİĞER 05 · Posta | posta zarfı ile başlığın ayrılması | zarf 60, başlıkla 140, anahtarla 180 doğru | 7 yanlış iletmeden; alınamayan 133'ten 13'e |
| DİĞER 06 · Zaman ve yönetim | turun bakışımsızlığı ve yönetim modeli | onaylı bildirim 40 doğru, 40 tur, 0 gecikme | hata 1,9917 ms, tur atarak kapanmaz; onaysızda 6 yanlış |

Tablodaki her sayı, o satırın kendi dersinin ölçümünden okunmuştur; hiçbir satır ortak tanımdan
doldurulmamıştır.

Kursun tek bir cümlesi vardı ve on altı ders onu ölçtü: **iletide ne yazıyorsa aracı onu bilir;
yazmıyorsa bilmez; yanlış yazıyorsa yanlış bilir.** Ölçü hep aynı kaldı — bir protokolün sayısı
taşıdığı alan değil, alıcı tarafa fazladan bir gidiş–dönüş olmadan kaç kararı aldırdığıdır — ve
alınamayan her karar bir tur borcu olarak yazıldı.

Kapanışta üç sonuç durur. **Alan eklemek karar kazandırmaz:** bayt büyür, karar tablosu
değişmez; kazandıran şey baytın kendisi değil, adı ve anlamı sabitlenmiş bir alan olmasıdır.
**Gizlemenin bedeli bir kusur değil bir seçimdir:** taşıma zarfı kapandığında aracı kararların
çoğunu kaybeder, ama kalanların içinde yanlış yoktur. Ve **kararı doğrulayan hiçbir şey yoktur:**
protokol bildirime inanır, çünkü bildirimden başka elinde bir şey yoktur. Son ders bunun en uç
biçimini gösterdi — orada bildirim doğruydu ve yine de yetmedi, çünkü eksik olan bir alan değil
bir dünyaydı.

Bütün bu kararları alan aracı, kurs boyunca **iletiyi** okudu. Bir sonraki kurs, Anahtarlama ve
Yönlendirme, bir katman aşağı iner ve orada duran cihaza bakar: bir anahtarın çerçeveyi hangi
bacaktan çıkaracağını, bir yönlendiricinin paketi hangi komşuya vereceğini, ve bu kararların hangi
tablodan okunduğunu. Ölçü de yer değiştirir: burada aracı **ne bildiğine** göre sayılıyordu, orada
cihaz **ne kadar doğru ilettiğine** göre sayılacak. Kararı alan aracıdan, paketi ileten cihaza.
