브라우저에 URL을 입력할 때 발생하는 흐름과 Linux 명령을 사용하여 작동하지 않는 항목을 디버깅하는 방법을 이해하고 싶습니다.
답변1
[나는] 브라우저에 URL을 입력할 때 발생하는 흐름을 이해하고 싶습니다.
예를 들어 참조
그리고 디버깅 방법
가장 유용한 도구는 아마도
tcpdump
.nslookup
또는 더 현대적인 등가물host
과dig
.wget
또는curl
. 다음과 같은 유용한 옵션을 찾으려면 해당 맨페이지를 읽어보세요.--server-response
,--debug
,--verbose
,--no-dns-cache
DNS 전에 사용할 수 있는 이름 서비스(예: 로컬 호스트 파일 및 일부 드문 설정에서는 NBNS, YP 등과 같은 기타 네트워크 서비스)가 있기 때문에 먼저 로컬 이름 확인을 이해해야 합니다. 나는 읽는 것부터 시작할 것이다.man resolv.conf
답변2
sys/sockets.h
Linux 시스템은 다음을 구현하는 C 프로그램 구현을 포함하여 다양한 시스템 라이브러리와 함께 제공됩니다.버클리 소켓 API그리고POSIX표준. POSIX 사양에는 다음의 정의가 포함되어 있습니다.방법getaddrinfo()
호스트의 IP 주소를 필요한 프로그램에 반환하는 호출입니다 . 각 프로그래밍 런타임(예:파이썬,펄,PHP등)은 호출하는 자체 인터페이스를 구현합니다.getaddrinfo()그러나 대부분은 실제로 DNS 요청을 처리하기 위해 커널의 방법을 사용합니다.
소켓 연결에는 소켓(), 바인드(), 연결() 등을 포함한 여러 메서드 호출이 포함됩니다. 내 답변 보기여기네트워크 연결을 생성하기 위해 해당 호출이 어떻게 조정되는지에 대해 설명합니다.
클라이언트 측의 DNS 확인 문제 해결은 서버 및 캐시로 귀결됩니다. 서버는 목적지에 대해 알고 있는 주소로 응답하지만 어떤 이유로든(지리적 위치, 블랙리스트 등) 원하는 주소가 아닌 경우 원하는 주소가 있는 서버로 서버를 변경할 수 있습니다. 원하는 주소로 서버에 연결했지만 여전히 잘못된 결과가 나타나는 경우 호스트나 라우터 또는 캐싱 프록시의 업스트림에 캐시된 응답이 원인일 수 있습니다.