Cần câu trả lời kỹ thuật hơn cho câu hỏi phỏng vấn về cách thức hoạt động của internet từ đầu đến cuối [đóng]


13

Tôi đã có cuộc phỏng vấn với 5 người riêng biệt trong hai tuần qua và ba trong số năm người đó đã hỏi tôi câu hỏi này: Giải thích điều gì xảy ra giữa việc nhấn "Google.com" và trang sắp xuất hiện trên màn hình. Về cơ bản, làm thế nào Internet hoạt động. Tôi nghĩ rằng sau ba lần tôi nên chuẩn bị tốt hơn nếu tôi lại nhận được câu hỏi này.

Tôi biết một số điều, nhưng tôi không hoàn toàn tin rằng câu trả lời của tôi là đủ tốt. Về cơ bản, tôi đề cập rằng máy chủ DNS dịch "google.com" thành địa chỉ IP. Tôi hơi chú ý đến TCP / IP, sau đó nói về máy chủ web theo nghĩa đen phục vụ các trang được yêu cầu được gửi trở lại trình duyệt mà trình duyệt sau đó diễn giải và hiển thị.

Như tôi đã nói trước đây, tôi không tin rằng câu trả lời của tôi đủ kỹ thuật. Các bước mà tôi đang rời khỏi là gì?

Đối với những gì nó có giá trị, hai trong số ba lần đó đã ở cùng một công ty và tôi được gọi lại cho cuộc phỏng vấn thứ ba với họ, vì vậy tôi không thể đánh bom nó quá khó.


1
Bản chất của các vị trí bạn đã phỏng vấn là gì?
smp7d

3
Nếu ba trong số năm người phỏng vấn hỏi câu hỏi này, thì đã đến lúc bạn thực hiện một số nghiên cứu / nghiên cứu và nhận được câu trả lời tốt chứng tỏ rằng bạn hoàn toàn hiểu nó. Nếu bạn đang được gọi cho một cuộc phỏng vấn thứ ba tại cùng một công ty và bạn được hỏi lại câu hỏi, bạn sẽ chứng minh rằng bạn quan tâm đủ để nâng cao kiến ​​thức của bạn, hoặc bạn đã không làm thế.
Robert Harvey

1
Ngoài ra, tôi sẽ cố gắng thu hẹp phạm vi câu hỏi bằng cách hỏi phần nào của quy trình mà họ quan tâm nhất. Họ có thể không quan tâm rằng bạn biết sâu về những thứ như bảy lớp của mô hình OSI , nhưng bạn vẫn nên có kiến ​​thức làm việc
Robert Harvey

1
Mặt khác, có thể câu trả lời là quá kỹ thuật. Có lẽ họ đang muốn xem làm thế nào bạn có thể liên hệ thông tin với mọi người một cách phi kỹ thuật?
Matt

1
Nếu câu hỏi được hỏi để xem bạn giao tiếp tốt như thế nào, thì có lẽ tốt hơn là bạn nên hỏi lại câu hỏi liên quan đến câu hỏi thay vì chỉ đưa ra câu trả lời cho một câu hỏi rất rộng. Bạn có thể đưa ra một câu trả lời kỹ thuật rất chi tiết và mất cả ngày để giải thích nó. Tôi không nghĩ đó là mục đích của câu hỏi.
Matt

Câu trả lời:


29
  1. Trình duyệt của bạn trước tiên có giao diện hệ điều hành trong tệp "máy chủ" của nó cho một mục sẽ dịch tên miền sang địa chỉ IP. Đây là một tính năng cũ được kế thừa từ ARPANET, khi một tệp văn bản có thể chứa các tên dễ hiểu cho mọi máy tính có thể truy cập thông qua ARPANET và cho mỗi máy tính được kết nối với nó có một bản sao tương đối gần đây. Nó từng có một số giá trị còn lại trong các mạng máy tính nhỏ không có NetBIOS hoặc các giao thức đặt tên nút tương tự, nhưng ngày nay nó có thể là mục tiêu của tin tặc (những người có thể sử dụng nó để vượt qua DNS và hướng máy tính của bạn đến các trang web họ kiểm soát) như có bất kỳ việc sử dụng hợp pháp nào cho máy khách hoặc người dùng / chủ sở hữu của nó.
  2. Giả sử máy tính của bạn không có mục HOSTS cho tên miền này, trình duyệt của bạn sẽ gửi yêu cầu UDP đến máy chủ DNS được định cấu hình trong cài đặt Internet của HĐH để sử dụng kết nối, chuyển "tên máy chủ" hay tên miền của yêu cầu (mọi thứ giữa "http: //" và dấu hai chấm đầu tiên hoặc dấu gạch chéo tiếp theo sau những gì tiếp theo; tức là "www.google.com"). Máy chủ DNS này thường thuộc về công ty của bạn hoặc Nhà cung cấp dịch vụ Internet địa phương của bạn.
    • UDP là viết tắt của "Universal Datagram Protocol" và là giao thức "tầng vận chuyển" trong cùng lớp với TCP (bên trên giao thức IP "lớp mạng", bên dưới các giao thức "lớp ứng dụng" như HTTP, FTP, SMTP, v.v. ). Trong khi TCP cung cấp rất nhiều khả năng kiểm tra lỗi và khả năng chịu lỗi (thêm dữ liệu bổ sung và do đó tăng chi phí), UDP có cách tiếp cận nhẹ hơn nhiều, tăng băng thông dữ liệu ròng; sự đánh đổi là giao thức không hỗ trợ các tính năng có sẵn trong TCP như chia nhỏ dữ liệu lớn thành nhiều gói (vì vậy các tin nhắn phải nhỏ) hoặc gửi lại các gói bị mất trong quá trình vận chuyển. Nó tốt cho các tin nhắn nhỏ, đơn giản (như DNS) và phát trực tuyến, dữ liệu từ xa trong trường hợp không có vấn đề gì nếu một gói bị mất.
  3. Máy chủ DNS này sẽ biết một trong ba điều sau: làm thế nào để dịch trực tiếp tên miền đó thành địa chỉ IP (nghĩa là "máy chủ tên có thẩm quyền" hoặc ANS cho tên miền đó); địa chỉ IP của ANS hoặc cha mẹ của nó; hoặc máy chủ tên riêng của nó có nhiều khả năng biết cách tiếp cận ANS. Nếu máy chủ không tự dịch yêu cầu, nó sẽ chuyển tiếp yêu cầu "xuống" về phía ANS đã biết hoặc "lên" đến NS mẹ của nó và quá trình này lặp lại theo cách đệ quy.
    • "Root" của cấu trúc cây này là một máy chủ duy nhất không làm gì ngoài việc chuyển tiếp bất kỳ yêu cầu nào mà nó nhận được đến một trong số các "máy chủ cấp cao nhất" hoặc máy chủ TLD. Chẳng hạn, có một máy chủ tên ".com", người biết cách tìm địa chỉ IP của bất kỳ tên miền ".com" nào trên hành tinh (bằng cách chuyển tiếp các yêu cầu này xuống máy chủ tên cấp ISP). Các TLD này chuyển tiếp yêu cầu cho các máy chủ tên miền không được biết bởi bất kỳ DNS nào trong một "nhánh" cụ thể của internet thuộc về một ISP.
  4. Khi máy chủ tên có thẩm quyền được tìm thấy và đã dịch tên miền thành địa chỉ IP, địa chỉ này được trả về cho máy khách và trình duyệt của nó. Nếu không thể tìm thấy ANS trong "thời gian tồn tại" của yêu cầu (TTL; số lần yêu cầu tối đa được chuyển tiếp giữa các máy chủ, để tránh chu kỳ vô hạn giữa các máy chủ được định cấu hình sai), nút sẽ được trả về cho máy khách mà yêu cầu "hết thời gian" (hoặc nút là máy chủ có thẩm quyền cho tên miền nhưng không thể dịch tiền tố tên miền cụ thể).
  5. Trình duyệt, đối với kết nối HTTP, sau đó gửi yêu cầu "TCP SYN" đến địa chỉ IP và cổng được chỉ định (hoặc cổng HTTP mặc định là 80) để thiết lập kết nối. Đây là một yêu cầu cấp độ giao thức, được đặt trên đầu tiêu đề IP "cấp độ mạng", chứa thông tin như cổng phản hồi ưa thích của khách hàng ("cổng nguồn"), các tùy chọn cho giao tiếp TCP như kích thước phân đoạn, tỷ lệ cửa sổ và sử dụng các tính năng giao thức tùy chọn.
  6. Yêu cầu được định tuyến ở "cấp liên kết" (điều chỉnh cách các mạch điện thực tế được thao tác để truyền dữ liệu chứa trong mạng, các lớp vận chuyển và ứng dụng) thông qua cấu trúc của Internet; thông thường, dữ liệu sẽ truyền dọc theo dây hoặc cáp quang đến "Văn phòng trung tâm" của nhà hoặc doanh nghiệp của bạn (đây được gọi là "dặm cuối" và thường là mạch biểu thị nút cổ chai lớn nhất đối với băng thông), ít nhiều là "onramp" Đường cao tốc thông tin. CO sau đó có quyền truy cập vào các đường ống băng thông cao (sóng mang T, SONET, v.v.) truyền yêu cầu của bạn, cùng với hàng tỷ người khác, trên toàn cầu đến CO của đích đến, chuyển tiếp đến máy chủ đích hoặc mạng.
    • "Định tuyến IP" này hoạt động theo cách tương tự về mặt khái niệm như độ phân giải DNS; Các ISP "cấp cao nhất" được ICANN gán cho toàn bộ mạng IP "lớp A" (mọi địa chỉ có thể được cung cấp một byte đầu tiên đã biết) và các ISP khác biết ai sở hữu mạng Lớp A đó và cách đưa dữ liệu về phía trước của mạng đó cửa ", sử dụng thông tin trong một" bảng định tuyến ". ISP hàng đầu này sau đó thuê các khối địa chỉ, một số cho ISP địa phương, một số khác trực tiếp cho người dùng doanh nghiệp và các ISP và công ty này có bộ định tuyến sử dụng địa chỉ IP (và bảng định tuyến của riêng họ) để xác định xem có gửi gói xuống cho người khác không các mạch gần đó, đi ngang tới các bộ định tuyến ISP cục bộ khác hoặc lên đến các thân và bộ định tuyến cấp cao hơn.
  7. Máy chủ nhận được yêu cầu này (miễn là nó không bị từ chối ở lớp trừu tượng thấp hơn như ổ cắm hoặc tường lửa) và nếu quyết định chấp nhận kết nối, nó sẽ gửi bước phản hồi yêu cầu "SYN-ACK", cả hai đều thừa nhận yêu cầu và chỉ định tùy chọn riêng của mình (bao gồm bất kỳ tùy chọn nào của khách hàng mà nó có thể chứa, nhưng thay đổi bất kỳ tùy chọn nào không thể hoặc không được chỉ định).
  8. Nếu máy khách hỗ trợ giao tiếp bằng cách sử dụng tùy chọn mà máy chủ đã cung cấp, nó sẽ gửi phản hồi ACK và bây giờ kết nối được "thiết lập".
  9. Trình duyệt tiếp theo sẽ gửi yêu cầu "HTTP GET". Yêu cầu bao gồm URI đầy đủ của tài nguyên được trình duyệt yêu cầu (mặc dù chúng tôi biết chúng tôi đang nói chuyện với www.google.com, chúng tôi gửi chuỗi đó như một phần của yêu cầu để máy chủ có thể, nếu muốn, sẽ giải thích thêm tên miền để chỉ đạo yêu cầu). Yêu cầu này có thể bao gồm "cookie"; dữ liệu được lưu trữ trên máy khách có thể được cung cấp cho máy chủ để hỗ trợ xử lý yêu cầu một cách hiệu quả và thuận tiện (chẳng hạn như xác định sở thích của người dùng).
  10. Máy chủ nhận được yêu cầu GET và trước tiên quyết định xem có muốn thực hiện yêu cầu đó không (máy chủ có thể đã lắng nghe yêu cầu tới cổng TCP 80, nhưng mong đợi các tin nhắn từ một giao thức ứng dụng khác như FTP hoặc VoIP, điều này hiếm khi xảy ra với cổng 80 nhưng phổ biến hơn cho các loại cổng khác). Chúng tôi sẽ cho rằng nó chấp nhận nó; sau đó, máy chủ trả về phản hồi HTTP có chứa tài nguyên được yêu cầu (trong trường hợp này là HTML cho trang mặc định là trang tìm kiếm phổ biến của Google). Phản hồi cũng có thể bao gồm "cookie", mà máy chủ yêu cầu khách hàng lưu trữ (khách hàng có thể hoặc không thể làm như vậy).
  11. HTML được trình duyệt tiêu hóa và hiển thị để vẽ trang trong cửa sổ trình duyệt. Trong khi điều này xảy ra, nhiều yêu cầu HTTP GET hơn cho Javascript, biểu định kiểu, hình ảnh và dữ liệu khác cần thiết để hiển thị tất cả nội dung của trang theo cách do HTML quy định được gửi bởi khách hàng và dữ liệu kết quả được cung cấp bởi người phục vụ.
  12. Trong một thời đại đã qua, Google đã dựa trên các hình thức tĩnh; bạn đã nhập những gì bạn muốn tìm kiếm vào hộp văn bản và nhấn "Tìm kiếm" (hoặc "Tôi cảm thấy may mắn"). Khi bạn thực hiện việc này, một yêu cầu POST HTTP được máy khách gửi đến máy chủ; yêu cầu chứa vị trí, được chỉ định bởi khách hàng, rằng thông tin sẽ được gửi đến, và dĩ nhiên là chính thông tin đó. Thông tin này được máy chủ tiêu hóa, nó sử dụng nó để tìm kết quả tìm kiếm và máy chủ sẽ tạo một trang gồm những kết quả mà nó gửi cho bạn. Hoặc, nó có thể chuyển đổi các cụm từ tìm kiếm thành "chuỗi truy vấn" và trả lời bằng "chuyển hướng"; một yêu cầu cho trình duyệt gửi một yêu cầu khác đến một URI khác được chỉ định trong tin nhắn. Trình duyệt sẽ làm như vậy, và sau đó máy chủ sẽ xây dựng và truyền trang đó .
  13. Trong thời hiện đại, trang nhất của Google năng động hơn nhiều. Khi bạn nhập, JavaScript thực thi ở phía máy khách trong trình duyệt sẽ gửi những gì bạn đang nhập vào Google dọc theo "kênh bên" (nó sử dụng cùng một giao thức để liên lạc, nhưng vì đó không phải là trình duyệt tự gửi yêu cầu cho toàn bộ trang , màn hình trình duyệt không bị xóa hoàn toàn và được vẽ lại). Đối với trang trước, điều này được sử dụng để cung cấp gợi ý truy vấn (đề xuất tự động hoàn thành cho những thứ bạn có thể đang tìm kiếm vì những người khác đã làm như vậy gần đây); trên trang kết quả, nó cũng làm điều tương tự nhưng cũng có thể được sử dụng để cung cấp kết quả tìm kiếm theo thời gian thực và vẽ lại hoàn toàn trang, mà không yêu cầu trình duyệt tải lại toàn bộ trang. Các loại thủ thuật này nằm trong tiêu đề chung của AJAX (JavaScript không đồng bộ và XML,

Bộ phim này , là bộ phim mà họ đã chiếu cho lớp sinh viên năm nhất "Giới thiệu về CNTT" của tôi ở trường đại học, có những điều cơ bản được minh họa ở định dạng tương tự, thân thiện. Nó không phải là kỹ thuật bằng bất kỳ phương tiện nào, nhưng nó cung cấp một cái nhìn tổng quan về khái niệm tốt về các mảnh của câu đố này.


1
Đây là một câu trả lời tốt, nhưng nhấn mạnh vào rất nhiều chi tiết mà hầu hết mọi người sẽ cho là không cần thiết. (Tôi không nói rằng bạn cần phải thêm những chi tiết này;. Tôi chỉ chỉ ra rằng có rất nhiều đang diễn ra hơn bài viết của bạn gợi ý)
greyfade

1
Có, bạn cần truy cập TCP vs UDP để tra cứu DNS. Nếu TCP, bạn nên đi vào bắt tay 3 bước TCP. Có thể an toàn khi giả định hệ thống bằng cách nào đó có máy chủ tên miền được xác định (bằng DHCP hoặc cấu hình mạng trước đó) ....
Alan Shutko

1
@AlanShutko - Tôi đề cập đến cái bắt tay 3 chiều; các SYN / SYN-ACK / ACK qua lại. Tôi đã không đề cập đến UDP mặc dù đây là giao thức chính cho DNS.
KeithS

@KeithS, rất tiếc, bạn đã đúng, tôi đã tìm kiếm nó khi kiểm tra DNS, không phải sau này. DNS có thể dự phòng cho TCP nếu có phản hồi lớn hơn 512 byte và bị cắt ngắn.
Alan Shutko

1
ANS - "Máy chủ tên có thẩm quyền", máy chủ DNS có kiến ​​thức và trách nhiệm trực tiếp về các điểm cuối của một tên miền cụ thể. ALD là một lỗi đánh máy. Bài viết đã được chỉnh sửa để rõ ràng hơn về cả hai tính.
KeithS

1

Bỏ đi đề cập đến cookie và tường lửa sẽ là một vài điều còn thiếu ở đây. Có một điều cần nói về việc cookie được gửi để "Google.com" có thể nhận ra người dùng và cung cấp trang có thể khác với người không đăng nhập vào Google. Ngoài ra còn có câu hỏi người tìm kiếm cái này ở đâu: Điện thoại thông minh, máy tính bảng hoặc máy tính thông thường (máy tính xách tay hoặc máy tính để bàn)?

Tôi tự hỏi nếu có thể có một số câu hỏi phụ mà bạn muốn hỏi nhưng đó không phải là một yếu tố ở đây. Đây là một câu hỏi về cách thức hoạt động của Web vì Internet sẽ rộng hơn một chút và bao gồm e-mail và những thứ khác mà tôi nghĩ.


Tôi đoán đó là một bài kiểm tra khả năng giao tiếp của bạn. Bạn có thể có một câu hỏi khá kỹ thuật và phá vỡ nó để kỹ thuật và phi kỹ thuật sẽ hiểu nó? Loại câu hỏi nào bạn sẽ quay lại khi được yêu cầu giải thích ai đó đưa lên trang chủ "Google.com" trên trình duyệt của họ? Bạn có đưa ra một loạt các giả định hoặc đặt câu hỏi? Theo một số cách, tôi thấy điều này song song với một câu hỏi trên bảng trắng, nơi mọi thứ còn mơ hồ đến mức bạn sẽ đặt câu hỏi để bạn có thể đưa ra câu trả lời chính xác hoặc bạn đưa ra giả định khi đưa ra câu trả lời.


5
Một câu hỏi về internet trong tâm trí tôi sẽ hỏi nhiều hơn về mạng nói chung; tuyến đường được tìm thấy như thế nào? Mục đích và ý nghĩa của gói tin là gì và làm thế nào để chúng truyền thông tin? Làm thế nào trừu tượng TCP trên các gói hoạt động và tại sao? Nhưng câu hỏi thực sự mơ hồ, có thể là hỏi về HTTP, hoặc HTML, hoặc các thiết bị chuyển mạch mạng, hoặc ISP và xương sống hoặc bất cứ điều gì, có thể nó muốn biết bộ đệm khung NIC của bạn bị loại bỏ như thế nào và nếu HĐH, CPU hoặc NIC thực hiện ...
Jimmy Hoffa

@JimmyHoffa: Thật vậy, đó là một câu hỏi rộng. Những người phỏng vấn đã hỏi nó theo cách mà tôi tin rằng trọng tâm là ở khía cạnh kết nối của mọi thứ - từ yêu cầu trang đến trang nhận được. Có rất nhiều điều xảy ra và tôi nghi ngờ rằng họ sẽ hạnh phúc cho dù tôi đi theo con đường nào miễn là nó đủ kỹ thuật và tôi biết tôi đang nói về điều gì.
Megacannon

1
Tôi cũng nghĩ rằng họ đang ở sau một câu trả lời phi kỹ thuật để xem bạn có thể truyền đạt ý tưởng tốt như thế nào. Thường thì chúng ta mất rừng vì cây, không thể nhìn thấy bức tranh rộng.
Matt

@JimmyHoffa, điểm tốt. Bạn có thể nên bắt đầu với địa chỉ IP của các máy chủ DNS của mình và xác định xem chúng có trên cùng một mạng con qua mặt nạ mạng hay không và nếu có, hãy sử dụng ARP để tìm chúng. Nếu không, một gói được gửi đến cổng.
Alan Shutko
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.