Menu
CoddyTech

Bị từ chối hay hết thời gian chờ

Bài học 18 trên 47 trong khóa học Mạng máy tính với terminal của Coddy.

Khi kết nối thất bại, nó sẽ thất bại theo một trong vài cách cụ thể, và mỗi cách chỉ ra một hướng khác nhau. curl cho biết kết nối thất bại theo cách nào qua mã thoát, con số mà lệnh để lại, có thể đọc bằng $?.

curl -s http://127.0.0.1:9999/
echo $?

Có ba điều đáng ghi nhớ:

  • 0: thành công
  • 7: từ chối kết nối, máy đã phản hồi và cho biết không có dịch vụ nào đang lắng nghe ở đó
  • 28: hết thời gian chờ, hoàn toàn không có phản hồi

7 là nhanh, còn 28 là chậm, và sự khác biệt đó giúp chẩn đoán. Bị từ chối nghĩa là bạn đã kết nối được với máy và nhận được câu trả lời dứt khoát là không, nên địa chỉ chính xác nhưng dịch vụ không chạy. Hết thời gian chờ nghĩa là yêu cầu của bạn đã biến mất, thường là do tường lửa chặn yêu cầu hoặc địa chỉ không chính xác.

challenge icon

Thử thách

Khó

Gây ra cả hai lỗi và đọc mã thoát.

  1. Yêu cầu một trang từ http://127.0.0.1:9999/, nơi không có dịch vụ nào đang lắng nghe, rồi in refused= theo sau là mã thoát
  2. Làm tương tự với http://10.255.255.1/, một địa chỉ làm mất gói tin, dùng --max-time 2, rồi in timeout= và mã thoát của lệnh

Đầu ra dự kiến:

refused=7
timeout=28

$? giữ mã thoát của lệnh vừa chạy, vì vậy hãy đọc nó ngay.

Tự làm thử

Terminal
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Mạng máy tính với terminal

Tự luyện tập: Playground Terminal