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.
Thử thách
KhóGây ra cả hai lỗi và đọc mã thoát.
- 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 inrefused=theo sau là mã thoát - 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 intimeout=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ử
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
4Có truy cập được không?
ICMP và pingĐọc kết quả pingKhi ping nói dốiBị từ chối hay hết thời gian chờÔn tập: khả năng kết nốiTự luyện tập: Playground Terminal