TRANSMISSION CONTROL PROTOCOL (TCP)
15.1 TCP Services
Gambar
15.1 menunjukkan hubungan TCP ke protokol lain dalam protokol TCP / IP
rangkaian. TCP terletak di antara lapisan aplikasi dan lapisan jaringan, dan
berfungsi sebagai perantara antara program aplikasi dan operasi jaringan.
Seperti
UDP, TCP menyediakan komunikasi proses-ke-proses menggunakan nomor port. Tabel
dibawah mencantumkan beberapa nomor port yang terkenal yang digunakan oleh TCP.
Port
|
Protocol
|
Description
|
7
|
Echo
|
Echoes menerima datagram kembali
ke pengirim.
|
9
|
Discard
|
Buang
datagram apa pun yang diterima
|
11
|
Users
|
Pengguna
aktif
|
13
|
Daytime
|
Mengembalikan
tanggal dan waktu
|
17
|
Quote
|
Mengembalikan
kutipan hari ini
|
19
|
Chargen
|
Mengembalikan
string karakter
|
20 and 21
|
FTP
|
File
Transfer Protocol (Data and Control)
|
23
|
TELNET
|
Terminal
Network
|
25
|
SMTP
|
Simple
Mail Transfer Protocol
|
53
|
DNS
|
Domain
Name Server
|
67
|
BOOTP
|
Bootstrap
Protocol
|
79
|
Finger
|
Finger
|
80
|
HTTP
|
Hypertext
Transfer Protocol
|
Stream Delivery Service
TCP, tidak
seperti UDP, adalah protokol berorientasi arus. Dalam UDP, sebuah proses
mengirim pesan dengan batas yang telah ditentukan ke UDP untuk pengiriman. UDP
menambahkan headernya sendiri ke masing-masing pesan ini dan mengirimkannya ke
IP untuk transmisi. Setiap pesan dari proses disebut datagram pengguna, dan
menjadi, akhirnya, satu datagram IP. Baik IP maupun UDP tidak memperhitungkan
hubungan antara datagrams. TCP, di sisi lain, memungkinkan proses pengiriman
mengirimkan data sebagai aliran byte dan memungkinkan proses penerimaan untuk
mendapatkan data sebagai aliran byte. TCP menciptakan lingkungan di mana kedua
proses tersebut tampaknya dihubungkan oleh "tabung" imajiner yang
membawa byte mereka di Internet. Lingkungan imajiner ini digambarkan pada
Gambar 15.2. Proses pengiriman menghasilkan (menulis ke) arus byte dan proses
penerimaan mengkonsumsi (dibaca dari) mereka.
Sending and Receiving Buffers
Karena
proses pengiriman dan penerimaan mungkin tidak perlu menulis atau membaca data
pada tingkat yang sama, TCP membutuhkan buffer untuk penyimpanan. Ada dua
buffer, buffer pengirim dan buffer penerima, satu untuk setiap arah. Kita akan
melihat nanti bahwa buff-ers ini juga diperlukan untuk mekanisme flow-and
error-control yang digunakan oleh TCP. Salah satu cara untuk menerapkan buffer
adalah dengan menggunakan array melingkar dari lokasi 1 byte seperti yang
ditunjukkan pada Gambar 15.3. Untuk kesederhanaan, kami telah menunjukkan dua
buffer masing-masing 20 byte; Biasanya buffer adalah ratusan atau ribuan byte,
tergantung pada implementasinya. Kami juga menunjukkan buffer sebagai ukuran
yang sama, yang tidak selalu demikian.
Angka tersebut menunjukkan pergerakan data dalam
satu arah. Pada pengirim, penyangga memiliki tiga jenis ruang. Bagian putih
berisi ruang kosong yang bisa diisi oleh proses pengiriman (produser). Area
berwarna menyimpan byte yang dikirim tapi belum diketahui. Pengirim TCP
menyimpan byte ini di buffer sampai menerima acknowledgment. Area teduh berisi
byte yang akan dikirim oleh pengirim TCP. Namun, seperti yang akan kita lihat
nanti di bab ini, TCP mungkin bisa langsung mengambil bagian dari bagian yang
teduh ini. Ini bisa jadi karena lambannya proses penerimaan, atau kemacetan di
jaringan. Perhatikan juga bahwa setelah byte di dalam kapak berwarna diakui,
biliknya didaur ulang dan tersedia untuk digunakan oleh proses pengiriman.
Inilah sebabnya mengapa kita menunjukkan buffer melingkar. Operasi buffer pada
receiver lebih sederhana. Penyangga melingkar dibagi menjadi dua area
(ditampilkan putih dan berwarna). Area putih berisi ruang kosong untuk diisi
oleh byte yang diterima dari jaringan. Bagian berwarna mengandung byte yang
diterima yang dapat dibaca oleh proses penerimaan. Ketika byte dibaca oleh
proses penerimaan, ruang tersebut didaur ulang dan ditambahkan ke kolam ruang
kosong.
Segments
Meskipun
penyangga menangani perbedaan antara kecepatan proses produksi dan
penghitungan, kita memerlukan satu langkah lagi sebelum kita dapat mengirim
data. Lapisan IP, sebagai penyedia layanan untuk TCP, perlu mengirim data ke
dalam paket, bukan sebagai aliran byte. Pada layer theportport, TCP
mengelompokkan sejumlah byte menjadi satu paket yang disebut segment.TCP
menambahkan header ke setiap segmen (untuk tujuan kontrol) dan mengirimkan
segmen ke lapisan IP untuk transmisi. Segmen dienkapsulasi dalam datagram IP
dan dikirim. Seluruh operasi ini transparan terhadap proses penerimaan.
Nantinya kita akan melihat bahwa segmen dapat diterima tanpa urutan, hilang,
atau rusak dan membenci. Semua ini ditangani oleh pengirim TCP dengan proses
aplikasi penerima yang tidak mengetahui aktivitas TCP. Gambar 15.4 menunjukkan
bagaimana segmen diciptakan dari byte di buffer. Perhatikan bahwa segmen tidak
harus berukuran sama. Pada gambar, untuk simpanan, kami menunjukkan satu segmen
yang membawa 3 byte dan yang lainnya membawa 5 byte. Pada kenyataannya, segmen
membawa ratusan, bahkan ribuan byte.
Full-Duplex Communication
TCP menawarkan layanan full-duplex,
dimana data dapat mengalir ke dua arah sekaligus. Setiap titik akhir TCP
kemudian memiliki buffer pengiriman dan penerimaannya sendiri, dan segmen
bergerak ke dua arah.
Multiplexing and Demultiplexing
Seperti UDP,
TCP melakukan multiplexing pada pengirim dan demultiplexing pada receiver.
Namun,
karena TCP adalah protokol connection-oriented, sebuah koneksi perlu dibangun-
Dicoba untuk
setiap pasangan proses. Ini akan lebih jelas saat kita membahas klien /
paradigma
server di Bab 17.
Connection-Oriented Service
TCP, tidak
seperti UDP, adalah protokol connection-oriented. Seperti ditunjukkan pada Bab
13, bila a
proses di
lokasi A ingin mengirim dan menerima data dari proses lain di situs B,
berikut tiga
fase terjadi:
- Setiap TCP membentuk koneksi virtual di antara keduanya.
- Data dipertukarkan di kedua arah.
- Sambungan dihentikan.
Perhatikan
bahwa ini adalah koneksi virtual, bukan koneksi fisik. Segmen TCP adalah Dienkapsulasi
dalam datagram IP dan dapat dikirim keluar dari urutan, atau hilang, atau
rusak, dan lalu
membenci. Masing-masing mungkin diarahkan melewati jalur yang berbeda untuk
mencapai tujuan. Ada tidak ada
koneksi fisik TCP menciptakan lingkungan yang berorientasi pada arus di mana ia
menerima tanggung
jawab mengantarkan byte ke situs lain.
Reliable Service
TCP adalah protokol transport yang
andal. Menggunakan mekanisme pengakuan untuk memeriksa Kedatangan data yang
aman dan masuk akal. Kami akan membahas fitur ini lebih lanjut di bagian ini kontrol
kesalahan
15.2 TCP Features
Untuk menyediakan layanan yang
disebutkan di bagian sebelumnya, TCP memiliki beberapa fitur yang dirangkum
singkat di bagian ini dan dibahas kemudian secara rinci.
Numbering
System
Meskipun perangkat lunak TCP melacak
segmen yang sedang dikirim atau diterima, tidak ada bidang untuk nilai segmen
segmen di header segmen. Sebagai gantinya, ada dua field yang disebut nomor
urut dan nomor acknowledgement. Kedua bidang ini mengacu pada nomor byte dan
bukan nomor segmen.
Byte Number
Nomor TCP
semua byte data (oktet) yang ditransmisikan dalam sebuah koneksi. Penomoran
adalah independen di setiap arah. Ketika TCP menerima byte data dari sebuah
proses, TCP menyimpannya ke buffer pengiriman dan memasukkannya ke dalam.
Penomoran tidak akan dimulai dari 0. Sebaliknya, TCP memilih nomor acak antara
0 dan 232 - 1 untuk jumlah byte pertama. Misalnya, jika jumlahnya mencapai
1.057 dan total data yang akan dikirim adalah 6.000 byte, byte diberi nomor
1.057 sampai 7.056. Kita akan melihat bahwa penomoran byte digunakan untuk flow
dan error control.
Byte data yang ditransfer di setiap
koneksi diberi nomor oleh TCP.
Penomoran dimulai dengan nomor yang
dibuat dengan sewenang-wenang.
Sequence Number
Setelah byte diberi nomor, TCP
menetapkan nomor urut ke setiap segmen yang sedang dikirim Nomor urutan untuk
setiap segmen adalah jumlah byte pertama data yang dibawa di segmen tersebut.
Nilai bidang pengakuan di segmen
mendefinisikan jumlah byte berikutnya
sebuah pesta mengharapkan untuk
menerima Nomor pengakuan bersifat kumulatif.
Flow Control
TCP, tidak
seperti UDP, menyediakan flow control. Pengirim TCP mengontrol berapa banyak
data yang bisa diterima
dari proses pengiriman; TCP menerima kontrol berapa banyak data yang bisa dikirim oleh
TCP pengirim (lihat Bab 13). Hal ini dilakukan untuk mencegah gagang telepon dari yang
kewalahan dengan data. Sistem penomoran memungkinkan TCP untuk menggunakan
byte-
kontrol
aliran yang berorientasi, seperti yang akan kita bahas nanti di bab ini.
Error
Control
Untuk
menyediakan layanan yang andal, TCP menerapkan mekanisme kontrol kesalahan.
Meskipun kontrol
kesalahan menganggap segmen sebagai unit data untuk deteksi kesalahan (loss or
cor-segmen yang
rusak), kontrol kesalahan berorientasi byte, seperti yang akan kita lihat nanti.
Congestion
Control
TCP, tidak
seperti UDP, memperhitungkan kemacetan dalam jaringan. Jumlah data dikirim oleh
pengirim tidak hanya dikendalikan oleh receiver (flow control), tapi juga
deter- ditambang oleh tingkat kemacetan, jika ada, di jaringan.
15.3 Segment
Format
Format
segmen ditunjukkan pada Gambar 15.5. Segmen ini terdiri dari sebuah header dari 20 sampai 60
bytes, diikuti oleh data dari program aplikasi. Headernya 20 byte jika tidak ada
pilihan dan sampai 60 byte jika berisi pilihan. Kita akan membahas beberapa kolom header
di bagian ini Makna dan tujuan ini akan menjadi lebih jelas saat kita
melanjutkan melalui bab ini.
-
Source port
address.
Ini adalah
bidang 16-bit yang mendefinisikan nomor port program
aplikasi di host yang sedang mengirim segmen. Ini melayani Tujuan yang
sama seperti alamat port sumber di header UDP yang dibahas di dalamnya Bab 14.
-
Destination
port address.
Ini adalah bidang 16-bit yang mendefinisikan nomor
port program aplikasi di host yang menerima segmen. Ini
juga sama tujuan sebagai alamat port tujuan di header UDP yang
dibahas di Bab 14.
- Sequence
number.
Bidang
32-bit ini mendefinisikan nomor yang ditugaskan ke data byte pertama yang
terdapat dalam segmen ini. Seperti yang kita katakan sebelumnya, TCP adalah
transportasi arus pro-tocol. Untuk memastikan konektivitas, setiap byte yang
akan dikirim diberi nomor. Nomor urut memberitahu tujuan byte mana dalam urutan
ini adalah byte pertama di segmen ini. Selama pembentukan koneksi (dibahas
kemudian) masing-masing pihak menggunakan generator bilangan acak untuk membuat
nomor urut awal (ISN), yang biasanya berbeda di setiap arah.
-
Acknowledgment
number.
Bidang 32-bit ini mendefinisikan nomor byte yang akan diterima penerima
dari pihak lain. Jika receiver dari segmen tersebut berhasil menerima nomor
byte x dari pihak lain, ia mengembalikan x + 1 sebagai nomor acknowledgment.
Pengakuan dan data bisa digandakan bersama.
-
Header
length.
Field 4-bit ini menunjukkan jumlah
kata-kata 4 byte pada header TCP. Panjang header bisa antara 20 dan 60 byte.
Oleh karena itu, nilai bidang ini selalu antara 5 (5 × 4 = 20) dan 15 (15 × 4 =
60).
-
Reserved.
Ini adalah
bidang 6-bit yang disediakan untuk penggunaan masa depan.
-
Control.
Bidang ini mendefinisikan 6 bit
kontrol atau flag yang berbeda seperti yang ditunjukkan pada Gambar 15.6. Satu
atau beberapa bit ini dapat disetel pada satu waktu. Bit-bit ini memungkinkan
kontrol aliran, pembentukan koneksi dan penghentian, aborsi koneksi, dan mode
transfer data di TCP.
-
Window size
Bidang ini mendefinisikan ukuran jendela dari
pengiriman TCP dalam satuan byte. Perhatikan bahwa panjang bidang ini adalah 16
bit, yang berarti bahwa ukuran maksimum jendela adalah 65.535 byte. Nilai ini
biasanya disebut sebagai jendela penerima (rwnd) dan ditentukan oleh receiver.
Pengirim harus mematuhi dikte penerima dalam kasus ini.
-
Checksum.
Bidang 16-bit ini berisi checksum. Perhitungan
check-sum untuk TCP mengikuti prosedur yang sama seperti yang dijelaskan untuk
UDP di Bab 14. Namun, penggunaan checksum di datagram UDP bersifat opsional,
sedangkan penggunaan checksum untuk TCP adalah wajib. Pseudoheader yang sama,
yang melayani tujuan yang sama, ditambahkan ke segmen ini. Untuk pseudoheader
TCP, nilai untuk bidang protokol adalah 6. Lihat Gambar 15.7
Urgent pointer.
Bidang 16-bit ini, yang hanya
berlaku jika flag mendesak diset, digunakan saat segmen berisi data mendesak.
Ini mendefinisikan nilai yang harus ditambahkan ke nomor urut untuk mendapatkan
jumlah byte urgen terakhir dalam pemisahan data segmen. Ini akan dibahas nanti
di bab ini.
Options.
Ada hingga 40 byte informasi opsional di header TCP. Kita akan membahas
berbagai opsi yang saat ini digunakan di header TCP nanti di bab ini.
Encapsulation
Segmen TCP
merangkum data yang diterima dari lapisan aplikasi. TCP Segmen dienkapsulasi
dalam datagram IP, yang pada gilirannya dienkapsulasi dalam bingkai di lapisan
data-link seperti ditunjukkan pada Gambar 15.8.
15.4 A TCP CONNECTION
TCP berorientasi
koneksi. Seperti yang dibahas di Bab 13, protokol transport berorientasi
koneksi menetapkan jalur virtual antara sumber dan tujuan. Semua segmen milik
sebuah pesan kemudian dikirim melalui jalur virtual ini. Menggunakan jalur
virtual tunggal untuk keseluruhan pesan memudahkan proses pengakuan serta
retrans-misi frame yang rusak atau hilang. Anda mungkin bertanya-tanya
bagaimana TCP, yang menggunakan layanan IP, sebuah protokol tanpa koneksi,
dapat berorientasi koneksi. Intinya adalah koneksi TCP bersifat virtual, bukan
fisik. TCP beroperasi pada tingkat yang lebih tinggi. TCP menggunakan layanan
IP untuk memberikan segmen individual ke receiver, namun mengendalikan koneksi
itu sendiri. Jika sebuah segmen hilang atau rusak, maka akan dipancarkan kembali.
Tidak seperti TCP, IP tidak sadar pengiriman ulang ini Jika segmen tidak
berfungsi, TCP menahannya sampai segmen yang hilang tiba; IP tidak menyadari
penataan ulang ini. Dalam TCP, transmisi berorientasi koneksi memerlukan tiga
tahap: pemantapan koneksi, transfer data, dan penghentian koneksi.
Connection Establishment
TCP
mentransmisikan data dalam mode full-duplex. Ketika dua TCP dalam dua mesin
terhubung, mereka dapat saling mengirim segmen satu sama lain secara bersamaan.
Ini menyiratkan bahwa setiap pihak harus menginisialisasi komunikasi dan
mendapat persetujuan dari pihak lain sebelum data dipindahkan.
- Three-Way Handshaking
Pendirian koneksi di TCP disebut handshaking tiga
arah. Dalam ujian kami, sebuah program aplikasi, yang disebut klien, ingin
membuat koneksi dengan program aplikasi lain, yang disebut server, menggunakan
protokol transport TCP sebagai protokol
- Simultaneous Open
Situasi yang jarang terjadi mungkin terjadi ketika
kedua proses mengeluarkan open active. Dalam kasus ini, kedua TCP mentransmisikan
segmen SYN + ACK satu sama lain dan satu koneksi tunggal terbentuk di antara
keduanya. Kami akan menunjukkan kasus ini saat kita membahas diagram transisi
di bagian selanjutnya.
- SYN Flooding Attack
Prosedur
pembentukan koneksi di TCP rentan terhadap masalah keamanan serius yang disebut
serangan banjir SYN. Hal ini terjadi ketika satu atau lebih penyerang berbahaya
mengirim sejumlah besar segmen SYN ke server yang berpura-pura bahwa
masing-masing berasal dari klien yang berbeda dengan memalsukan alamat IP
sumber di datagrams. Server, dengan asumsi bahwa klien mengeluarkan open aktif,
mengalokasikan sumber daya yang diperlukan, seperti membuat tabel kontrol
kontrol transfer (TCB) (dijelaskan nanti di bab ini) dan menetapkan penghitung
waktu. Server TCP kemudian mengirimkan segmen SYN + ACK ke klien palsu, yang
hilang. Ketika server menunggu proses handshaking ketiga, bagaimana pun, sumber
daya dialokasikan tanpa digunakan. Jika, selama periode singkat ini, jumlah
segmen SYN besar, server akhirnya kehabisan sumber daya dan mungkin tidak dapat
menerima permintaan koneksi dari klien yang valid. Serangan banjir SYN ini
termasuk dalam kelompok serangan keamanan yang dikenal sebagai serangan
penolakan layanan, di mana penyerang memonopoli sistem dengan begitu banyak
permintaan layanan sehingga sistem tersebut membebani dan menolak layanan
terhadap permintaan yang sah. Beberapa implementasi TCP memiliki strategi untuk
mengurangi efek serangan SYN.
Data
Transfer
Setelah
koneksi terbentuk, transfer data dua arah dapat dilakukan. Klien dan server
bisa mengirim data dan ucapan terima kasih di kedua arah. Kita akan mempelajari
peraturan pengakuan nanti di bab ini; Untuk saat ini, cukup untuk mengetahui
bahwa data berjalan ke arah yang sama dengan pengakuan dilakukan pada segmen
yang sama. Perhatikan nilai nomor urutan dan
acknowledgement. Segmen data yang dikirim oleh klien memiliki flag PSH (push)
sehingga server TCP mencoba untuk mengirim data ke proses server segera setelah
diterima. Kami membahas penggunaan segmen ACK ini, jika tidak membawa data,
tidak mengkonsumsi nomor urut.
Connection Termination
Salah satu
dari dua pihak yang terlibat dalam pertukaran data (client atau server) dapat
menutup kon-neksi, meski biasanya diprakarsai oleh klien. Sebagian besar
implementasi saat ini memungkinkan dua pilihan untuk penghentian koneksi:
handshaking tiga arah dan empat arah tangan-gemetar dengan pilihan setengah
tutup.
Connection
Reset
TCP pada
satu akhir mungkin menolak permintaan koneksi, dapat membatalkan koneksi yang
ada, atau dapat
menghentikan koneksi yang tidak berfungsi. Semua ini dilakukan dengan bendera
RST (reset).
- Denying a Connection
- Aborting a Connection
- Terminating an Idle Connection
15.5 STATE
TRANSITION DIAGRAM
Untuk melacak semua kejadian berbeda yang terjadi selama pembentukan
koneksi, penghentian koneksi, dan transfer data, TCP ditentukan sebagai mesin negara
yang berhingga ditunjukkan pada Gambar 15.13.
Angka
tersebut menunjukkan dua FSM yang digunakan oleh klien dan server TCP
digabungkan menjadi satu diagram. Oval mewakili negara bagian. Transisi dari
satu negara ke negara lain ditunjukkan dengan menggunakan garis terarah. Setiap
baris memiliki dua senar yang dipisahkan oleh garis miring. String pertama
adalah input, yang diterima TCP. Yang kedua adalah output, apa yang TCP kirim.
Garis hitam bertitik pada gambar mewakili transisi yang biasanya dialami
server; garis hitam solid menunjukkan transisi yang biasanya dialami klien.
Namun, dalam beberapa situasi, transisi server melalui jalur padat atau
transisi klien melalui garis putus-putus. Garis berwarna menunjukkan situasi
khusus. Perhatikan bahwa oval yang ditandai sebagai ESTABLISHED sebenarnya
adalah dua rangkaian negara, satu set untuk klien dan satu lagi untuk server,
yang digunakan untuk kontrol aliran dan kesalahan seperti yang dijelaskan nanti
di bab ini. Kami menggunakan beberapa skenario berdasarkan Gambar 15.13 dan
tunjukkan bagian dari gambar di setiap kasus.
- Connection Establishment and Half-Close Termination
- Client States
- Simultaneous Open
- Denying a Connection
- Aborting a Connection
![]() |
Add caption |
Send Window
Gambar 15.22
menunjukkan contoh jendela kirim. Jendela yang kita gunakan berukuran besar 100 byte
(biasanya ribuan byte), tapi nanti kita lihat bahwa ukuran jendela kirim didikte oleh
penerima (flow control) dan kemacetan di jaringan yang mendasarinya (congestion control). Angka tersebut menunjukkan
bagaimana jendela kirim dibuka, ditutup, atau menyusut.
Receive Window
Gambar 15.23
menunjukkan contoh jendela penerimaan. Jendela yang kita gunakan adalah Ukuran 100
byte (biasanya ribuan byte). Angka itu juga menunjukkan bagaimana menerima jendela
terbuka dan tertutup; Dalam prakteknya, jendela seharusnya tidak pernah
menyusut.
15.7 FLOW
CONTROL
1. Segmen pertama adalah dari client ke
server (segmen SYN) untuk meminta con- neksi Klien mengumumkan seqNo awal =
100. Saat segmen ini tiba di server, ia mengalokasikan ukuran buffer 800
(asumsi) dan mengatur jendela ke tutup seluruh buffer (rwnd = 800). Perhatikan
bahwa jumlah byte berikutnya ke tiba adalah 101
2. Segmen kedua adalah dari server ke
client. Ini adalah ACK + SYN seg-ment. Segmen ini menggunakan ackNo = 101 untuk
menunjukkan bahwa mereka mengharapkan untuk menerima byte mulai dari 101. Ini
juga mengumumkan bahwa klien dapat menetapkan ukuran buffer 800 byte.
3. Segmen ketiga adalah segmen ACK dari client ke server. Setelah client mengatur
window dengan ukuran (800) yang didikte oleh server, maka Proses mendorong 200
byte data. Nomor klien TCP ini byte 101 sampai 300. Kemudian membuat segmen dan
mengirimkannya ke server. Segmen menunjukkan awal nomor byte sebagai 101 dan
segmen membawa 200 byte. Jendela kliennya adalah kemudian disesuaikan untuk
menunjukkan 200 byte data dikirim tapi menunggu pengakuan.
4. Saat segmen ini diterima di server,
byte disimpan, dan receive window menutup untuk menunjukkan bahwa byte
berikutnya yang diharapkan adalah byte 301; byte yang tersimpan menempati 200
bytes buffer.
5. Segmen kelima adalah umpan balik dari server ke
client. Server mengetahui byte sampai dengan dan termasuk 300 (mengharapkan
untuk menerima byte 301). Segmen juga membawa ukuran jendela penerima setelah
turun (600). Klien, setelah menerima segmen ini, membersihkan byte yang
diketahui dari jendelanya dan menutup jendelanya untuk menunjukkan bahwa byte
berikutnya yang dikirim adalah byte 301. Namun, ukuran jendela turun menjadi
600 byte. Meski buffer yang dialokasikan bisa menyimpan 800 byte, jendela tidak
bisa dibuka (menggerakkan dinding kanan ke kanan) karena receiver tidak membiarkannya.
6. Segmen 6 dikirim oleh klien setelah
prosesnya mendorong 300 byte lagi. Seg-
ment mendefinisikan seqNo sebagai 301 dan berisi 300
byte. Saat segmen ini tiba di
server, server menyimpannya, tapi harus mengurangi
ukuran jendela. Setelah pro-
cess telah menarik 100 byte data, jendela ditutup dari
kiri untuk jumlah tersebut
dari 300 byte, tapi terbuka dari kanan untuk jumlah
100 byte. Hasilnya adalah
Ukurannya hanya berkurang 200 byte. Ukuran jendela
penerima sekarang 400 byte.
7. Pada segmen 7, server mengetahui
penerimaan data, dan mengumumkan bahwa
Ukuran jendela adalah 400. Bila segmen ini sampai di klien, klien tidak
memiliki pilihan tapi untuk
mengurangi jendelanya lagi dan atur ukuran jendela dengan nilai rwnd = 400 yang
diiklankan oleh server. Jendela kirim ditutup dari kiri hingga 300 byte, dan
dibuka dari kanan hingga 100 byte.
8. Segmen 8 juga dari server setelah prosesnya telah
menarik 200 byte lagi. Nya
ukuran
jendela meningkat Nilai rwnd baru sekarang 600. Segmen menginformasikan
klien yang
servernya masih mengharapkan byte 601, namun ukuran jendela server telah meluas ke 600. Kita perlu menyebutkan bahwa
pengiriman segmen ini tergantung pada kebijakannya diberlakukan oleh
pelaksanaannya. Beberapa implementasi mungkin tidak memungkinkan mengiklankan-dari
rwnd saat ini; server kemudian perlu menerima beberapa data sebelum melakukan begitu.
Setelah segmen ini tiba di klien, klien membuka jendela dengan 200 byte tanpa
menutupnya Hasilnya adalah bahwa ukuran jendela meningkat menjadi 600 byte.
15.8 ERROR CONTROL
TCP adalah
protokol lapisan transport yang andal. Artinya program aplikasi itu memberikan
aliran data ke TCP bergantung pada TCP untuk mengirimkan keseluruhan aliran ke
appli-program kation di ujung lain secara berurutan, tanpa kesalahan, dan tanpa
ada bagian yang hilang atau diduplikasi TCP memberikan kehandalan dengan
menggunakan error control.
Kontrol
kesalahan mencakup mekanisme untuk detecting and resending corrupted segments,
resending lost segments, storing out-of-order segments until missing segments
arrive, and detecting and discarding duplicated segments. Error control in TCP
is achieved through the use of three simple tools: checksum, acknowledgment,
and time-out.
Checksum
Setiap
segmen mencakup bidang checksum, yang digunakan untuk memeriksa segmen yang
rusak. Jika segmen rusak karena dihapus oleh checksum yang tidak valid, segmen
akan dibuang oleh tujuan TCP dan dianggap hilang. TCP menggunakan checksum 16
bit yang merupakan manda- di setiap segmen. Kami membahas bagaimana menghitung
checksum di awal bab ini.
Acknowledgment
TCP menggunakan acknowledgment untuk mengkonfirmasi penerimaan segmen data. Segmen kontrol yang tidak membawa data, namun mengkonsumsi nomor urut, juga diakui. ACK seg- tidak pernah diakui
TCP menggunakan acknowledgment untuk mengkonfirmasi penerimaan segmen data. Segmen kontrol yang tidak membawa data, namun mengkonsumsi nomor urut, juga diakui. ACK seg- tidak pernah diakui
Retransmission
Inti mekanisme
kontrol kesalahan adalah transmisi ulang segmen. Ketika sebuah Segmen dikirim,
disimpan dalam antrian sampai dikenali. Ketika retransmis-sion timer kadaluarsa
atau ketika pengirim menerima tiga ACK duplikat untuk seg-Dalam
antrian, segmen itu dipancarkan ulang.
Out-of-Order
Segments
Implementasi
TCP saat ini tidak membuang segmen out-of-order. Mereka menyimpannya sementara
dan bendera mereka sebagai segmen out-of-order sampai segmen yang hilang tiba. Namun,
perhatikan bahwa segmen yang tidak beroperasi tidak akan pernah dikirim ke
prosesnya. TCP menjamin bahwa data dikirimkan ke proses secara berurutan.
FSMs for
Data Transfer in TCP
Transfer
data di TCP dekat dengan protokol Selective Repeat (dibahas di Bab 13) dengan
sedikit kesamaan dengan GBN. Karena TCP menerima segmen out-of-order, TCP bisa dianggap
berperilaku seperti protokol SR, tapi sejak pengakuan asli kumulatif,
sepertinya GBN. Namun, jika implementasi TCP menggunakan SACK, seperti yang
dibahas nanti, maka TCP paling dekat dengan SR.
Some
Scenarios
Pada bagian ini kami memberikan beberapa contoh
skenario yang terjadi selama pengoperasian TCP, mengingat hanya masalah error
control. Dalam skenario ini, kami menunjukkan segmen dengan a empat persegi
panjang. Jika segmen membawa data, kita menunjukkan kisaran bilangan byte dan
nilainya
15.9 CONGESTION CONTROL
Kami secara
singkat membahas pengendalian kemacetan di Bab 13. Kontrol kongesti di TCP
adalah berdasarkan mekanisme loop terbuka dan loop tertutup. TCP menggunakan
jendela kemacetan dan kebijakan kemacetan yang menghindari kemacetan dan
mendeteksi dan meringankan kemacetan setelah itu telah terjadi.
Congestion
Window
Sebelumnya,
kami berbicara tentang flow control dan mencoba membahas solusi saat receiver
berada
kewalahan
dengan data Kami mengatakan bahwa ukuran jendela pengirim ditentukan oleh
avail-
ruang buffer
yang bisa di penerima (rwnd). Dengan kata lain, kita berasumsi bahwa itu hanya
itu
penerima
yang bisa mendikte pengirim ukuran jendela pengirim. Kami benar-benar diabaikan
entitas lain
disini, jaringan. Jika jaringan tidak bisa mengantarkan data secepat itu maka
cre-
Di tangan
oleh pengirim, ia harus memberitahu pengirim untuk melambat. Dengan kata lain,
di samping
penerima,
jaringan adalah entitas kedua yang menentukan ukuran jendela pengirim.
Pengirim
memiliki dua informasi: ukuran jendela yang diiklankan oleh penerima dan
ukuran
jendela kemacetan Ukuran sebenarnya dari jendela adalah minimum dari keduanya.
Actual window size = minimum (rwnd,
cwnd)
Congestion
Policy
Kebijakan
umum TCP untuk penanganan kemacetan didasarkan pada tiga tahap: slow start,
con-
penghindaran
gusi, dan deteksi kemacetan. Pada fase awal yang lambat, pengirimnya memulai
dengan laju
transmisi yang lambat, namun laju meningkat dengan cepat mencapai ambang batas.
Bila ambang
batas tercapai, tingkat kenaikannya akan berkurang. Akhirnya jika pernah
conges-
terdeteksi,
pengirim kembali ke tahap awal yang lambat atau fase penghentian kemacetan,
berdasarkan
bagaimana kemacetan terdeteksi.
15.10 TCP TIMERS
Retransmission
Timer
Untuk retransmit
segmen yang hilang, TCP menggunakan satu timer transmisi ulang (untuk
keseluruhan con-
periode
neksi) yang menangani waktu pengiriman ulang (RTO), waktu tunggu untuk
pengakuan
segmen. Kita dapat menentukan aturan berikut untuk pengiriman ulang
timer:
1. Ketika
TCP mengirimkan segmen di depan antrian pengiriman, ia akan memulai timer.
2. Saat
timer habis, TCP mengirim ulang segmen pertama di depan antrian, dan memulai
ulang timer.
3. Bila segmen (atau segmen) secara
kumulatif diakui, segmen (atau segmen) dibersihkan dari antrian.4. If the queue
is empty, TCP stops the timer; otherwise, TCP restarts the timer.
Persistence Timer
Untuk berurusan
dengan iklan berukuran nol-jendela, TCP membutuhkan timer lain. Jika menerima TCP
mengumumkan ukuran jendela nol, pengiriman TCP berhenti mentransmisikan segmen
sampai TCP penerima mengirimkan segmen ACK yang mengumumkan ukuran jendela
taknol. ACK ini segmen bisa hilang Ingat bahwa segmen ACK tidak diakui atau
mentransmisikan ulang- ted di TCP Jika pengakuan ini hilang, penerima TCP
menganggap telah melakukan tugasnya
dan menunggu
pengiriman TCP untuk mengirim lebih banyak segmen. Tidak ada timer pengiriman
ulang untuk segmen yang hanya berisi sebuah pengakuan. TCP pengirim belum
menerima pengakuan dan menunggu TCP lainnya mengirimkan iklan pengakuan ukuran
jendela Kedua TCP mungkin terus menunggu satu sama lain selamanya (deadlock).
Keepalive
Timer
Timer
keepalive digunakan dalam beberapa implementasi untuk mencegah koneksi yang
lama antara dua TCP. Misalkan klien membuka koneksi TCP ke server, transfer beberapa
data, dan menjadi sunyi. Mungkin klien telah jatuh. Dalam kasus ini, connec- tetap
terbuka untuk selamanya.TIME-WAIT Timer
15.11 OPTIONS
Header TCP
dapat memiliki hingga 40 byte informasi opsional. Pilihan untuk menambahkan
addi-
informasi ke
tujuan atau menyelaraskan pilihan lainnya. Kita bisa mendefinisikan dua
kategori-
ries of
options: pilihan 1-byte dan opsi multi-byte. Kategori pertama berisi
dua jenis
pilihan: akhir daftar pilihan dan tidak ada operasi. Kategori kedua, paling
banyak
Implementasi,
berisi lima jenis pilihan: ukuran segmen maksimum, skala jendela
faktor, timestamp, SACK-allowed, dan SACK (lihat
Gambar 15.41).
15.12 TCP
PACKAGE
TCP adalah
protokol yang kompleks. Ini adalah layanan streaming, protokol
connection-oriented dengan
melibatkan
diagram transisi negara. Menggunakan flow dan error control. Begitu kompleks
itu
Kode aktual
melibatkan puluhan ribu baris.
Pada bagian
ini, kami menyajikan paket TCP yang sederhana dan sederhana. Tujuan kami adalah
untuk
Tunjukkan
bagaimana kita bisa mensimulasikan jantung TCP, seperti yang ditunjukkan oleh
transisi negara
diagram.
Paket
melibatkan tabel yang disebut blok kontrol transmisi, satu set penghitung
waktu, dan
tiga modul
perangkat lunak: modul utama, modul pengolah masukan, dan keluaran
modul
pengolahan Gambar 15.52 menunjukkan lima komponen dan interaksinya.
Transmission
Control Blocks (TCBs)
TCP adalah protokol transport yang berorientasi
koneksi. Sambungan mungkin terbuka untuk waktu yang lama periode waktu. Untuk
mengendalikan koneksi, TCP menggunakan struktur untuk menyimpan informasi tentang
setiap koneksi Ini disebut a blok kontrol transmisi (TCB). Karena di Setiap
saat bisa ada beberapa koneksi, TCP menyimpan array dari TCBs dalam bentuk a meja.
Tabel biasanya disebut sebagai TCB (lihat Gambar 15.53).
- State.
Bidang ini mendefinisikan keadaan koneksi sesuai dengan transisi negara
diagram.
-
Process
Bidang ini
mendefinisikan proses menggunakan koneksi ini pada mesin ini sebagai a
klien atau
server
-
Alamat IP
lokal
Bidang ini
mendefinisikan alamat IP dari mesin lokal yang digunakan oleh
koneksi ini.
-
Local port
number.
Bidang ini
mendefinisikan nomor port lokal yang digunakan oleh koneksi ini.
-
Remote IP
address.
Bidang ini
mendefinisikan alamat IP dari mesin remote yang digunakan
dengan
koneksi ini
-
Remote port
number.
Bidang ini
mendefinisikan nomor port remote yang digunakan oleh ini
koneksi.
-
Interface.
Bidang ini
mendefinisikan antarmuka lokal.
-
Local
window.
Bidang ini, yang bisa terdiri dari beberapa subbidang, menyimpan informasi
tentang jendela di local TCP.
-
Remote
window.
Bidang ini, yang dapat terdiri dari beberapa subbidang, berisi informasi-
tentang jendela
di remote TCP.
-
Sending
sequence number.
Bidang ini menyimpan nomor urut pengiriman.
-
Receiving
sequence number.
Bidang ini memegang nomor urut penerima.
-
Sending ACK
number.
Bidang ini
menyimpan nilai nomor ACK yang dikirim.
-
Round-trip
time.
Beberapa
bidang dapat digunakan untuk menyimpan informasi tentang RTT.
-
Time-out
values.
Beberapa
bidang dapat digunakan untuk menyimpan nilai time-out yang berbeda
seperti
waktu pengiriman ulang, ketekunan time-out, timeout keepalive, dan
begitu
seterusnya
-
Buffer size.
Bidang ini
mendefinisikan ukuran buffer pada local TCP.
-
Buffer
pointer.
Bidang ini
adalah pointer ke buffer dimana data yang diterima disimpan
sampai
mereka dibaca oleh aplikasi.
Komentar
Posting Komentar