Mengapa browser saya hang ketika saya mengunjungi google.com:8000, tetapi error di google.com:443?

0

Saya belajar tentang pelabuhan dan mucking sekitar. Saya mengetahui bahwa ketika saya mengunjungi http://google.com:8000 (port yang saya pilih secara acak), browser saya mati setelah beberapa saat hang.

Tetapi ketika saya mengunjungi http://google.com:443 , saya langsung mendapatkan kesalahan. (Teks kesalahan tampaknya khusus untuk browser - Chrome mengatakan "Respons kosong", sedangkan Safari mengklaim server "tiba-tiba menjatuhkan koneksi".)

Saya tahu 443 adalah port default untuk protokol HTTPS, jadi saya kira itu mungkin ada hubungannya dengan itu, tapi saya tidak cukup akrab dengan konsep-konsep ini untuk menggoda itu. Secara khusus, bisakah seseorang memandu saya melalui apa yang terjadi ketika saya menentukan nomor port yang buruk dan browser saya hang (sekitar 1 menit) sebelum waktu habis?

Eli Rose
sumber

Jawaban:

3

Saat Anda pergi ke suatu tempat menggunakan browser dan menentukan port, Anda mencoba membuat koneksi (TCP) ke port tersebut.

Ketika Anda menjalankan suatu layanan (seperti server web misalnya), ia berjalan pada port tertentu. Jika Anda mencoba dan terhubung ke mesin dan tidak ada program yang berjalan terkait dengan port itu (istilah yang benar terikat ke port), atau firewall, maka akan habis waktu.

Ketika Anda pergi ke Google pada port 8000, tidak ada layanan yang berjalan di sana, jadi batas waktunya habis. (Ini benar-benar mencoba untuk menghubungkan beberapa kali jika ada kesalahan beberapa kali pertama untuk membuat hal-hal lebih kuat)

Ketika Anda pergi ke Google pada port 443, Anda berhasil membuat koneksi, karena 443 biasanya digunakan untuk HTTPS - yaitu koneksi aman. Karena Anda tidak memulai koneksi aman sesuai dengan protokol HTTPS, Anda memiliki Chrome dan Firefox berperilaku seperti itu.

Jawaban Lanjut

Saat membuat koneksi pada TCP, ada "jabat tangan 3 arah" - Klien mengirim paket "SYN" ke server. Server menerima ini, dan mereka menganggap ada program yang sedang berjalan, ia mengirimkan kembali pengakuan "SYN-ACK", kemudian klien mengirim paket "ACK" ke server - di mana sistem telah membuat koneksi.

Dalam kasus koneksi ke port 8000, klien tidak mendapatkan respons terhadap paket SYN, jadi itu mencoba beberapa kali, dan kemudian menyerah dan berhenti.

Dalam hal menghubungkan ke port 443, koneksi dibuat pada level TCP. Pada saat ini server berharap untuk menegosiasikan koneksi SSL untuk keamanan (karena dikonfigurasi untuk melakukannya pada port 443). Anda tidak tahu bagaimana berbicara SSL, jadi gagal.

Poin Bonus

Jika Anda telah menginstal TELNET - kebanyakan sistem melakukannya, Anda dapat berpura-pura menjadi browser (atau klien email atau apa pun jika Anda mengetahui protokolnya), dengan melakukan hal berikut.

1.  type "telnet www.google.com 80"
(wait for a few seconds)
2.  Type GET / HTTP/1.1<enter>
host www.google.com<enter><enter>

Langkah 1 memberi tahu Telnet untuk membuat koneksi TCP ke server Googles pada port 80, dan langkah 2 Mengatakan apa yang akan didapat (DAPATKAN / artinya dapatkan file root), dan baris "host" mengatakan server mana yang ingin Anda sambungkan - Anda memerlukan ini karena banyak situs web berbagi satu server - baris kedua memberi tahu server situs mana. Anda menekan enter dua kali untuk mengatakan Anda selesai mengirim tajuk Anda, dan kemudian kembali respon HTTP. (Jika Anda adalah browser web, Anda akan mengirim lebih banyak informasi, termasuk detail browser, cookie, dll - tetapi untuk tujuan penjelasan kami tidak melakukan ini.)

davidgo
sumber
Terima kasih atas tanggapannya. Jadi jika saya menentukan port yang tidak menjalankan layanan, apa yang terjadi pada tingkat perangkat keras di sisi server? Apakah paket dapat "dikirim", tetapi tidak diambil? Apakah konsep itu bahkan berlaku - Saya berpikir tentang port sebagai repositori paket, tapi mungkin saya benar-benar tidak aktif. Apakah lebih dari sekadar tag yang disertakan dengan setiap paket?
Eli Rose
Paket dikirimkan (ke server) tetapi tidak diambil (yaitu diabaikan oleh layanan). Perhatikan bahwa ini terjadi pada perangkat lunak, bukan perangkat keras. Komputer Anda memiliki tumpukan jaringan "tcp / ip". Pada dasarnya driver jaringan - yang berbicara dengan kartu jaringan Anda dan menyediakan protokol komunikasi yang mendasarinya.
davidgo