2011-07-09 23 views
16

Tôi tự hỏi các trình duyệt hoạt động như thế nào. Bây giờ, kết nối với các trang web khác nhau sử dụng 'Tabs' trong cùng một trình duyệt có thể được xử lý theo một trong hai cách sau: 1 - Sử dụng chủ đề 2 - Sử dụng Port Numbers Nguồn khác nhau cho mỗi tab mởTrình duyệt web có sử dụng các số cổng khác nhau cho các tab đang mở không?

Tôi biết có thể có không phải là một câu trả lời duy nhất cho câu hỏi này, và nó có thể khác với một trình duyệt khác, tuy nhiên tất cả các câu trả lời đều được đánh giá cao.

Cảm ơn


Cám ơn everyone.I thực sự đánh giá cao điều đó. Câu hỏi của tôi liên quan đến Cổng nguồn ở phía máy khách. Tôi hỏi liệu trình duyệt có sử dụng các cổng nguồn khác nhau cho mỗi tab nó mở hay cùng một cổng nguồn cho toàn bộ quá trình 'Tôi có nghĩa là cửa sổ bao gồm các tab khác nhau' hoặc cùng một cổng nguồn cho toàn bộ cửa sổ?

Hoặc, các trình duyệt web có sử dụng đề tài không?

+0

Chủ đề sẽ không giúp ích nhiều cho bản chất không đồng bộ của kết nối HTTP ... – mjv

Trả lời

0

Tùy thuộc vào trình duyệt, nó sử dụng các luồng khác nhau hoặc các quy trình khác nhau cho mỗi tab. Các cổng cục bộ được sử dụng có thể không có nhiều việc phải làm với các tab khác nhau.

-3

Bạn có nghĩa là Cổng TCP không? Không, Trình duyệt sử dụng cùng một cổng, thường là 80 hoặc 443 (đối với HTTPS).

HTTP là giao thức không trạng thái: Trình duyệt mở một kết nối, tải một trang, sau đó đóng lại. Nó không giữ kết nối. Nếu bạn tải nhiều hơn 1 trang thì nó sẽ tạo chủ đề cho mỗi trang (thông thường, Chrome tạo quy trình) nhưng ngay sau khi trang được tải thì kết nối sẽ bị đóng.

AJAX mở một kết nối mới cho mỗi yêu cầu và đóng nó sau đó.

Có một số Hacks có kết nối HTTP liên tục (Xem COMET), nhưng vì trình duyệt chạy nhiều luồng/quy trình mà chúng không xung đột thường.

+3

Trình duyệt gửi * đến * cùng một cổng. Tuy nhiên, chúng thường gửi * từ * một số cổng khác nhau. Mỗi kết nối mới từ một trình duyệt cụ thể sẽ khá nhiều phải đến từ một cổng khác, nếu không máy chủ không thể phân biệt chúng. – cHao

+2

Ồ, và HTTP 1.1 không cần đóng kết nối sau khi thực hiện yêu cầu. Trong thực tế, giữ nó mở cho một chút là mặc định. – cHao

-3

không! nó thường sử dụng cổng 80 theo mặc định trừ khi được chỉ định. ví dụ: www.someweb.com:8080.

Tabs trong trình duyệt tôi đang giả định ran về chủ đề khác nhau

+3

Các số cổng khác nhau được đề cập trong câu hỏi tham chiếu đến cổng _client-side_, những cổng này không liên quan đến cổng máy chủ như bạn nói là cổng 80 trong hầu hết các trường hợp. – mjv

4

Một kiểm tra nhanh chóng sử dụng netstat (hoặc sockstat trên máy BSD) tiết lộ rằng số cổng nguồn khác nhau được sử dụng cho các kết nối khác nhau. Về vấn đề đó, bạn nói đúng.

Firefox sử dụng ít nhất một chuỗi cho mỗi tab. Mỗi chuỗi có thể mở nhiều kết nối cho các dữ liệu khác nhau (ví dụ: tải hình ảnh từ máy chủ phương tiện và nội dung từ máy chủ web). Mỗi kết nối phải có cổng nguồn riêng.

15

Chủ đề và cổng là các khái niệm riêng biệt và hầu như không liên quan.

Chủ đề là bộ xử lý máy tính cục bộ xử lý các tính toán, chẳng hạn như vẽ lên màn hình hoặc chờ lưu lượng truy cập Internet. Có thể có một chuỗi riêng biệt (và nhiều hơn nữa) cho các hoạt động đó trong mỗi tab.

Cổng là những gì lưu lượng truy cập được xác định bởi (trong TCP và UDP). Để giao tiếp trình duyệt của bạn sẽ mở một cổng cục bộ (thường là một cái gì đó lớn như ~ 5000, và điều đó không quan trọng miễn là nó duy nhất) và kết nối với máy chủ thường là cổng 80 (máy chủ đang lắng nghe).Nếu máy tính của bạn không biết cổng từ xa mà nó không thể kết nối, nhưng tiêu chuẩn của nó để sử dụng 80 cho HTTP chẳng hạn.

Trình duyệt mở các tab trong các chuỗi riêng biệt (và các tab mới ngay cả trong các quy trình riêng biệt vì lý do bảo mật và độ tin cậy) và sử dụng các cổng riêng biệt ở phía máy khách. Vì vậy, có, câu trả lời là cả hai chủ đề và cổng. Họ luôn sử dụng cùng một cổng từ xa trừ khi bạn chỉ định khác (ví dụ: kết nối với trang web bằng cách sử dụng https: // thay vì http: // sử dụng cổng riêng vì đó là cách giao thức đó được thực hiện). Bạn có thể chỉ định một cổng để sử dụng trong các trình duyệt hiện đại với: # sau tên cũng vậy. (ví dụ: http://www.google.com:81/, tuy nhiên điều đó sẽ không thành công vì đó không phải là cổng mà họ nghe!)

Các vấn đề liên quan