Bagaimana Router tahu ke mana harus meneruskan paket

68

Jika beberapa komputer dengan alamat lokal (192.168.0. #) Terhubung ke router dan setiap komputer membuka browser web dan meminta halaman melalui HTTP, ketika paket TCP: 80 ini dikirim, router akan mengganti alamat lokal dengan IP statis router (mis. Penyedia diberi IP) sehingga server dapat membalas ke alamat yang sesuai.

Tetapi bagaimana router mengetahui komputer mana yang meneruskan HTTP reply, karena header TCP tidak mengandung alamat IP lokal (bukan?), Dan semua komputer menggunakan port 80?

Apakah ini ada hubungannya dengan alamat MAC?

Bagaimana tepatnya cara kerjanya?

Kornelije Petak
sumber

Jawaban:

78

Kebanyakan router rumah menggunakan case khusus NAT yang disebut PAT.

Anda juga akan melihatnya disebut sebagai NAPT, atau IP Masquerading. Ketiga istilah terakhir berarti hal yang sama dalam penggunaan umum. (Akronim - Terjemahan Alamat Jaringan / Terjemahan Alamat Port / Terjemahan Alamat Jaringan)

Ketika paket keluar dari mesin internal Anda, alamat sumber ditulis ulang seperti yang Anda ketahui. Port sumber juga diubah, biasanya ke nomor yang tinggi, dan router menyimpan tabel terjemahan alamat.

Misalnya, katakanlah Anda memiliki mesin klien yang masuk ke www.google.com. Komputer Anda (mis., 192.168.1.100) melihat alamat itu dan membuat koneksi TCP ke 72.14.204.147 pada port 80 dari alamat IP internal Anda, menggunakan port sumber acak.

Ke komputer Anda, koneksi terlihat seperti ini:

192.168.1.100:37641   <-->  72.14.204.147:80

Komputer Anda mengirimkan paket ke router, yang mengambil port acak tinggi baru dan menulis ulang paket. Setiap koneksi keluar mendapatkan port sendiri di router. Router kemudian meneruskan paket ke ISP Anda setelah menambahkannya ke tabel koneksinya:

PrivateIP        PrivatePort   PublicIP      PublicPort    Remote          RemotePort
-------------    ----------    -----------   -----------   ----------      -----------
192.168.1.100    37641         *10.6.23.5    59273         72.14.204.147   80

* Sebagai contoh, saya menggunakan alamat yang dimulai dengan 10, tetapi ini tidak dapat dirutekan secara publik. Tabel ini juga agak terlalu sederhana.

Untuk Google, koneksi terlihat seperti ini:

10.6.23.5:59273   <-->  72.14.204.147:80

Google akan mengirimkan tanggapannya ke 10.6.23.5 pada port 59273. Router Anda kemudian mencari informasi tersebut di tabel dan meneruskan paket ke 192.168.1.100:37641.

Paul
sumber
3
Jadi untuk meringkas, Router menggunakan nomor port untuk mengingat apa yang dari luar jaringan lokal pergi ke apa yang ada di dalam jaringan. Namun, ini tidak menjelaskan bagaimana www.google.commenemukan saya jika saya tidak mengirimkannya permintaan awal. Dengan kata lain, pesan hanya dapat mencapai saya melalui router jika saya awalnya mengirim permintaan melalui router
CodyBugstein
2
@Imray google.com (atau apa pun di Internet) tidak dapat menemukan komputer Anda jika komputer Anda tidak memulai permintaan. Inilah sebabnya mengapa memiliki router menambah banyak keamanan.
Jason
6
@ Alasan Itu mitos berbahaya. Memiliki firewall menambah keamanan. Pekerjaan router SoHo biasa adalah hanya untuk membuat sesuatu bekerja, bukan untuk menghentikan sesuatu dari bekerja. Lihat di sini untuk informasi lebih lanjut.
David Schwartz
1
@ Alasan Lebih baik tidak menghapus komentar Anda, itu membuat apa yang akan menjadi diskusi yang bermanfaat untuk dibaca, tidak mungkin untuk dibaca.
barlop
2
Contoh yang bagus, tetapi apakah ini berarti semua port angka tinggi selalu terbuka di router kami?
jiggunjer
1

Router antara jaringan lokal dan internet menggunakan teknik yang disebut NAT.

Hanya kutipan dari TCP / IP Illustrated Volume 1 tentang NAPT, dengan sepatah kata tentang kekurangan sepupunya yang sederhana, Basic NAT:

NAT Dasar melakukan penulisan ulang alamat IP saja. Pada dasarnya, alamat pribadi ditulis ulang menjadi alamat publik, seringkali dari kumpulan atau berbagai alamat publik yang disediakan oleh ISP. Jenis NAT ini bukan yang paling populer karena tidak membantu mengurangi kebutuhan alamat IP secara dramatis — jumlah alamat yang dapat dialihkan secara global harus sama atau melebihi jumlah host internal yang ingin mengakses Internet secara bersamaan. Pendekatan yang jauh lebih populer, NAPT melibatkan penggunaan pengidentifikasi lapisan transport (yaitu, port untuk TCP dan UDP, query identifiers untuk ICMP) untuk membedakan host mana di sisi pribadi NAT yang terkait dengan paket tertentu (lihat Gambar 7-7). 4). Ini memungkinkan sejumlah besar host internal (yaitu, beberapa ribu) untuk mengakses Internet secara bersamaan menggunakan sejumlah alamat publik yang terbatas, seringkali hanya satu. Kami biasanya akan menggunakan istilah NAT untuk memasukkan NAT tradisional dan NAPT kecuali perbedaannya penting dalam konteks tertentu.

CodyBugstein
sumber