Daftar isi
Pada wawancara teknologi atau lainnya, pertanyaan umum yang diajukan adalah apa yang terjadi ketika Anda mengetikkan URL ke browser? Apa yang terjadi di balik layar saat Anda menjelajahi situs web? Apa yang dimaksud dengan siklus hidup koneksi HTTP pada umumnya? Saya akan menjawab pertanyaan-pertanyaan ini sejauh pengetahuan saya.
Sebelum mendalami proses koneksi, mari kita bahas model dasar OSI (model Interkoneksi Sistem Terbuka). Model OSI adalah model konseptual yang menstandarkan komunikasi antara dua sistem - satu sistem dimana permintaan berasal (klien) dan satu lagi yang melayani permintaan dan mengirimkan respons kembali (server). Tabel di bawah ini menunjukkan beberapa karakteristik penting dari setiap lapisan.
TIDAK | Lapisan | Perangkat keras | Fungsi | Protokol/Aplikasi | Tambahan |
---|---|---|---|---|---|
7 | Aplikasi | Server/PC | Aplikasi, Antarmuka pengguna | HTTP, SMTP, DNS | L7 Tajuk |
6 | Presentasi | Server/PC | Menangani enkripsi dan perubahan sintaksis | JPEG, MP3 | L6 Tajuk |
5 | Sidang | Server/PC | Otentikasi, izin, sesi | SCP, penjadwalan OS | L5 Tajuk |
4 | Mengangkut | tembok api | Pengiriman ujung ke ujung, kontrol kesalahan | TCP, UDP | L4 Tajuk |
3 | Jaringan | Router | Pengalamatan jaringan, perutean, peralihan | AKU P | L3 Tajuk |
2 | Tautan data | Beralih | Alamat fisik, deteksi kesalahan, aliran | Ethernet, Relai bingkai | L2 Tajuk/Trailer |
1 | Fisik | Kabel | Bit ditransfer melalui jaringan fisik | AMDAL/TIA | L1 Tajuk |
Segera setelah Anda mengetikkan URL ke dalam browser dan menekan tombol enter/return, browser (atau klien mana pun) akan mengurai URL [1] untuk mengekstrak komponen penting darinya. Contoh URL diberikan di bawah ini:
https://www.google.com/search?q=cats
Di sini kami hanya mencari kucing di Google. Dari URL di atas, https://
adalah protokolnya, google.com
adalah host di www
(internet), /search
adalah parameter jalur dan ?q=cats
adalah parameter string kueri yang menunjukkan bahwa kita menanyakan Google untuk kucing [ 2].
Sekarang karena browser memiliki pengetahuan tentang host yang ingin dijangkau, dalam hal ini google.com
, browser akan mencoba mendapatkan alamat IP yang sesuai. Domain seperti ' .com' atau ' .org' dibuat agar kita dapat mengingatnya dengan mudah. Namun agar browser dapat mengirim permintaan sebenarnya ke misalnya google.com, diperlukan alamat IP host. Resolusi DNS membantu kita mendapatkan informasi alamat IP untuk nama domain tertentu. DNS berada pada lapisan Aplikasi (L7) dari tabel di atas.
Langkah-langkah dalam resolusi DNS:
$ ipconfig /displaydns
di windows atau $ log stream --predicate 'process == "mDNSResponder"' --info
di mac/linux..com
, .org
, dll. adalah nama domain tingkat atas. Nama TLD kemudian akan mengembalikan alamat IP dari server nama Resmi.$ dig google.com
; << >> DiG 9.10.6 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14345
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 180 IN A 172.217.164.174
;; AUTHORITY SECTION:
google.com. 60552 IN NS ns1.google.com.
google.com. 60552 IN NS ns2.google.com.
google.com. 60552 IN NS ns3.google.com.
google.com. 60552 IN NS ns4.google.com.
;; ADDITIONAL SECTION:
ns1.google.com. 60438 IN A 216.239.32.10
ns1.google.com. 58273 IN AAAA 2001:4860:4802:32::a
ns2.google.com. 60438 IN A 216.239.34.10
ns2.google.com. 131763 IN AAAA 2001:4860:4802:34::a
ns3.google.com. 163770 IN A 216.239.36.10
ns3.google.com. 60541 IN AAAA 2001:4860:4802:36::a
ns4.google.com. 75597 IN A 216.239.38.10
ns4.google.com. 60541 IN AAAA 2001:4860:4802:38::a
;; Query time: 13 msec
;; SERVER: 10.4.4.10#53(10.4.4.10)
;; WHEN: Mon Jun 24 12:20:50 PDT 2019
;; MSG SIZE rcvd: 303
Pada setiap lapisan model OSI, informasi disebut sebagai PDU (Packet Data Unit). Jadi informasi pada lapisan aplikasi disebut sebagai L7 PDU sedangkan informasi pada lapisan Jaringan disebut sebagai L3 PDU. Pada setiap lapisan, header lapisan yang sesuai ditambahkan. Header mendahului badannya dan berisi pengalamatan serta data lain yang diperlukan agar dapat mencapai tujuan yang diinginkan. Sebaliknya, data diteruskan dari lapisan paling atas ke bawah. Header L4, L3 dan L2 ditunjukkan di bawah ini:
Sebelum paket dikirim ke internet untuk akhirnya mencapai server domain google, paket tersebut harus dirutekan terlebih dahulu melalui router. Setiap kali perangkat perlu terhubung ke perangkat lain (dalam hal ini router lokal) secara fisik, perangkat tersebut memerlukan alamat MAC (alamat perangkat keras) perangkat tersebut. Tetapi bagaimana mesin lokal mengetahui bahwa router adalah rute keluar default? Informasi ini diperoleh melalui rute default yang diatur berdasarkan per antarmuka dalam mesin lokal. Anda dapat memeriksa rute default dengan menggunakan perintah $ ifconfig
.
Alamat IP digunakan untuk menemukan perangkat di jaringan sedangkan alamat MAC digunakan untuk mengidentifikasi perangkat sebenarnya. Protokol ARP digunakan untuk memperoleh alamat MAC perangkat, mengingat pengetahuan tentang alamat IP. Di sini kita akan berasumsi bahwa mesin yang meminta telah menerima alamat IP (baik secara statis atau melalui protokol DHCP).
ARP berada pada lapisan data link model OSI. Dalam hal ini web browser yang berjalan pada mesin lokal akan terhubung ke router yang merupakan pintu gerbang ke internet.
arp -a
.Paket-paket tersebut kemudian dialihkan ke rute default. Jika Anda tidak menetapkan rute default, rute tersebut akan dialihkan ke router. Anda dapat memeriksa rute default dengan menggunakan perintah
route get default | grep gateway
atau netstat -rn
di mac/linux atau ipconfig
di windows.
Misalnya jika Anda berada di jaringan 192.168.10.0/24 dan mencoba menjangkau jaringan Google di 172.217.164.174/24 misalnya ketika paket tiba di router, router akan memeriksa tabel perutean dan memutuskan cara merutekan lalu lintas ke mencapai jaringan tujuan. Oleh karena itu akan mengirim paket ke gateway yang ditentukan untuk mencapai tujuan 172.217.164.174/24
Koneksi antara klien dan server; dalam hal ini mesin lokal Anda ke server Google membutuhkan banyak lompatan. Setiap hop pada dasarnya adalah sebuah router sepanjang jalur menuju tujuan. Router di sini membantu permintaan berpindah dari satu jaringan ke jaringan lainnya. Setiap perangkat yang dikirimkan memiliki alamat MAC (alamat perangkat keras) yang unik secara global.
Sekarang mesin lokal membuat permintaan dengan header L7 (HTTP), header L4 (TCP), header L3 (IP), header L2 (ARP, alamat MAC), trailer L2 (urutan pemeriksaan bingkai) dan data aktual. Ketika router mendapatkan paketnya, ia mendekapsulasi, memodifikasi header/trailer L2 dan merangkum paket itu lagi.
Router sekarang menerimanya dan mulai melakukan dekapsulasi. Ia melihat ke dalam header L2 dan melihat sendiri mac tujuannya. Sekarang ia menghapus header L2 dan sekarang melihat ke header L3 dan memahami bahwa permintaan tersebut bukan untuk dirinya sendiri tetapi untuk server Google. Router kemudian mengurangi nilai TTL yang ada di dalam header L3. Router sekarang melihat ke dalam tabel routingnya untuk semua kemungkinan rute yang akan diiklankan oleh router lain ke router ini (melalui RIP atau IGP) tentang cara mencapai tujuan. Satu router kemudian melakukan ARP untuk mendapatkan alamat MAC dari router hop berikutnya jika tidak memiliki alamat MAC di cache-nya.
Router kemudian juga menambahkan CRC yang masuk ke trailer L2. Ini membantu router berikutnya mengetahui bahwa tidak ada masalah pada rute yang menyebabkan paket rusak di seluruh kabel. Jika rusak, framenya akan hilang.
Dalam hal ini, router memodifikasi header L2 dan trailer L2 tetapi tidak menyentuh header L3 dan karenanya tidak ada header di atasnya.
Port sumber no. akan menjadi nomor port sementara dan nomor port tujuan akan menjadi 80.
TCP - Layanan pesanan yang andal dan sama. Hal pertama yang akan dilakukan mesin lokal adalah menjalin jabat tangan tiga arah dengan server Google sekarang karena server tersebut mengetahui rute ke server. Pembuatan koneksi membantu menyelesaikan beberapa variabel status seperti ukuran MSS, nomor urut awal, tipe ACK, ukuran buffer, dll.
Dalam hal ini port sumber dan tujuan di header TCP adalah 16 bit jadi 2^16 adalah 65535. Port sumber digunakan untuk mengidentifikasi aplikasi klien sedangkan port tujuan digunakan untuk mengidentifikasi layanan atau iblis yang berjalan di server web.
Klien (browser web) mengambil port apa pun dari 49152 - 65535. Hal ini memastikan bahwa tidak ada 2 aplikasi yang menggunakan port yang sama. Alamat port bersama dengan alamat IP disebut sebagai soket TCP. Port tujuan adalah port 80 pada paket IP.
Mulai Komunikasi:
Dengan tiga langkah di atas, jabat tangan TCP berhasil antara klien dan server dan keduanya kini telah menyetujui aturan umum untuk transfer data.
Setelah jabat tangan TCP, jabat tangan TLS terjadi jika Anda terhubung ke situs web yang aman. Dengan jabat tangan TLS, klien dan server menyetujui persyaratan umum komunikasi yang aman.
Mulai sekarang sesi TLS mengirimkan data aplikasi (HTTP) yang dienkripsi dengan kunci simetris yang disepakati.
Server memproses permintaan dan mengirimkan kembali respons yang sesuai. Ketika permintaan datang ke server pada port 80 (HTTP) atau port 443 (HTTPS), server web seperti Apache atau Nginx mendengarkan port 443, menangani koneksi permintaan dan merutekannya ke port sementara lain tempat layanan web berada. berlari.
Klien HTTP, server, atau proksi apa pun dapat menutup koneksi transport TCP kapan saja. Misalnya ketika klien mendeteksi bahwa transfer data telah selesai dan saluran koneksi terbuka tidak lagi diperlukan, klien mengirimkan permintaan penutupan koneksi ke server. Saat berikutnya, klien ingin berkomunikasi dengan server, koneksi baru perlu dibuat antara kedua mesin.
[1] | Standar URL |
[2] | Komponen atau URL |