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:
  1. Setiap TCP membentuk koneksi virtual di antara keduanya.
  2. Data dipertukarkan di kedua arah.
  3. 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).
  1. Denying a Connection
  2. Aborting a Connection
  3. 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.

  1. Connection Establishment and Half-Close Termination
  2. Client States
  3. Simultaneous Open
  4. Denying a Connection 
  5. 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
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

Postingan Populer