Tại sao trình duyệt của tôi bị treo khi tôi truy cập google.com:8000, nhưng lỗi tại google.com:443?


0

Tôi đang tìm hiểu về các cổng và đang tìm kiếm xung quanh. Tôi phát hiện ra rằng khi tôi truy cập http://google.com:8000 (một cổng tôi chọn ngẫu nhiên), trình duyệt của tôi sẽ hết thời gian sau khi treo một lúc.

Nhưng khi tôi truy cập http://google.com:443 , tôi gặp lỗi ngay lập tức. (Văn bản của lỗi dường như là dành riêng cho trình duyệt - Chrome nói "Phản hồi trống", trong khi Safari tuyên bố máy chủ "bất ngờ ngắt kết nối".)

Tôi biết rằng 443 là cổng mặc định cho giao thức HTTPS, vì vậy tôi đoán rằng có thể có liên quan đến nó, nhưng tôi không đủ quen thuộc với các khái niệm này để trêu chọc nó. Cụ thể, ai đó có thể dẫn tôi đi qua những gì đang xảy ra khi tôi chỉ định số cổng xấu và trình duyệt của tôi bị treo (trong khoảng 1 phút) trước khi hết thời gian không?

Câu trả lời:


3

Khi bạn đang đi đến một nơi nào đó bằng trình duyệt và chỉ định một cổng, bạn đang cố gắng thực hiện kết nối (TCP) đến cổng đó.

Khi bạn chạy một dịch vụ (ví dụ như máy chủ web), nó sẽ chạy trên một cổng cụ thể. Nếu bạn thử và kết nối với một máy và không có chương trình nào được chạy cùng với cổng đó (thuật ngữ chính xác được liên kết với cổng) hoặc nó được tường lửa, thì nó sẽ hết thời gian.

Khi bạn truy cập Google trên cổng 8000, không có dịch vụ nào chạy trên đó, vì vậy nó đã hết thời gian. (Nó thực sự cố gắng kết nối một vài lần trong trường hợp có lỗi trong vài lần đầu tiên để làm cho mọi thứ mạnh mẽ hơn)

Khi bạn truy cập Google trên cổng 443, bạn đã thực hiện kết nối thành công, vì 443 thường được sử dụng cho HTTPS - tức là kết nối an toàn. Vì bạn không bắt đầu kết nối an toàn theo giao thức HTTPS, nên Chrome và Firefox hoạt động theo cách đó.

Trả lời nâng cao

Khi thực hiện kết nối trên TCP, có "bắt tay 3 chiều" - Máy khách sẽ gửi gói "SYN" đến máy chủ. Máy chủ nhận được điều này và họ cho rằng có một chương trình đang chạy, nó sẽ gửi lại một xác nhận "SYN-ACK", sau đó máy khách sẽ gửi một gói "ACK" đến máy chủ - lúc đó các hệ thống đã thiết lập kết nối.

Trong trường hợp kết nối với cổng 8000, máy khách không nhận được phản hồi cho gói SYN, do đó, nó sẽ thử một vài lần, sau đó bỏ cuộc và hết thời gian.

Trong trường hợp kết nối với cổng 443, kết nối được thiết lập ở cấp TCP. Tại thời điểm này, máy chủ dự kiến ​​sẽ đàm phán kết nối SSL để bảo mật (vì cấu hình của nó được thực hiện trên cổng 443). Bạn không biết cách nói SSL, vì vậy nó đã thất bại.

Điểm thưởng

Nếu bạn đã cài đặt TELNET - hầu hết các hệ thống đều làm như vậy, bạn có thể giả vờ là một trình duyệt (hoặc ứng dụng thư khách hoặc bất cứ điều gì nếu bạn biết giao thức), bằng cách thực hiện như sau.

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>

Bước 1 yêu cầu Telnet tạo kết nối TCP đến máy chủ Googles trên cổng 80 và bước 2 Nói những gì cần nhận (GET / có nghĩa là lấy tệp gốc) và dòng "máy chủ" cho biết máy chủ nào bạn muốn kết nối với - bạn cần điều này bởi vì rất nhiều trang web chia sẻ một máy chủ - dòng thứ hai cho máy chủ biết trang web nào. Bạn nhấn enter hai lần để nói rằng bạn đã hoàn tất việc gửi tiêu đề của mình và sau đó nhận lại phản hồi HTTP. (Nếu bạn là một trình duyệt web, bạn sẽ gửi thêm nhiều thông tin, bao gồm các chi tiết về trình duyệt, cookie, v.v. - nhưng với mục đích giải thích, chúng tôi đã không làm điều này.)


Cảm ơn đã phản hồi kỹ lưỡng. Vì vậy, nếu tôi chỉ định một cổng mà không có dịch vụ nào đang chạy, điều gì đang xảy ra ở cấp độ phần cứng ở phía máy chủ? Các gói có được "giao", nhưng không được chọn không? Liệu khái niệm đó có áp dụng được không - tôi đang nghĩ về một cổng như một kho lưu trữ các gói, nhưng có lẽ tôi hoàn toàn tắt. Có phải nó chỉ là một thẻ đi kèm với mỗi gói?
Eli Rose

Các gói được phân phối (đến máy chủ) nhưng không được nhận (tức là bị bỏ qua bởi dịch vụ). Lưu ý rằng điều này xảy ra trong phần mềm, không phải phần cứng. Máy tính của bạn có một ngăn xếp mạng tcp / ip.
davidgo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.