IP 주소

  • ip 주소는 32비트의 디지털 데이터로 8비트씩 점으로 구분하여 10진수로 표기합니다.
  • ip 주소의 규칙에서는 네트워크 번호와 호스트 번호의 두 가지를 합쳐서 32비트로 한다는 것만 결정되어 있을 뿐 내역은 결정되어 있지 않아 어느 부분이 네트워크 번호인지 또는 호스트 번호인지 알 수 없습니다.
  • 내역을 나타내는 정보를 필요에 따라 주소에 덧붙이는데, 이 정보를 '넷마스크'라고 합니다.

넷마스크

  • ip 주소에서 32비트 부분의 디지털 데이터이며, 왼쪽에 1이 나열되고 오른쪽에 0이 나열된 값이 됩니다.
  • 넷마스크가 1인 부분은 네트워크 번호를 나타내고, 넷마스크가 0인 부분은 호스트 번호를 나타냅니다. ex) 255.255.255.0
  • 넷마스크로 네트워크 번호와 호스트 번호의 경계를 나타냅니다.
  • 호스트 번호(255.255.255.0에서 0인 부분) 부분의 비트 값이 모두 0 또는 1인 경우는 특별한 의미를 가집니다.
  • 호스트 번호 부분이 모두 0인 ip주소는 각각의 기기를 나타내는 것이 아니라 서브넷 자체를 나타냅니다.
  • 호스트 번호 부분이 모두 1이라면 서브넷에 있는 기기 전체에 패킷을 보내는 브로드 캐스트를 나타냅니다.

DNS

  • Domain Name System.
  • 서버명과 ip 주소를 대응시키기 위해 DNS를 가장 많이 사용하지만, DNS의 기능은 이것만이 아닙니다.
  • 메일 주소와 메일 서버를 대응시키는 것 등 다양한 정보를 이름에 대응해서 등록할 수 있습니다.
  • DNS 클라이언트에 해당하는 것을 DNS 리졸버 또는 리졸버라고 부릅니다.
  • DNS의 원리를 사용하여 IP 주소를 조사하는 것을 네임 리졸루션(name resolution, 이름 확인)이라고 합니다.
  • 브라우저는 ip 주소를 알기 위해 DNS서버에 질의합니다.
  • 그 다음 브라우저는 웹 서버에 메시지를 보낼 떄는 메모리 영역에서 ip 주소를 추출하여 HTTP의 리퀘스트 메시지와 함께 OS에 건네주어 송신을 의뢰합니다.

리졸버

  • Socket 라이브러리 : OS에 포함되어 있는 네트워크의 기능을 애플리케이션에서 호출하기 위한 부품을 모아놓은 것
  • Socket 라이브러리에 들어있는 부품화한 프로그램

브라우저가 DNS 서버를 통해 ip 주소를 얻는 과정

    1. 브라우저가 리졸버를 호출 ex) <메모리 영역> = gethostbyname("www.naver.com");
    2. Socket 라이브러리에서 
        2.1 DNS 서버에 보내는 조회 메시지를 만듭니다.
        2.2 조회 메시지(바이너리 파일)를 DNS 서버에 보냅니다.
    3. OS 내부의 프로토콜 스택에서
        3.1 UDP 메시지 송신으로 송신 동작을 통해 LAN 어댑터로 송신
        3.2 LAN어댑터는 DNS 서버에 송신
        3.2 DNS서버가 메시지를 해석
        3.3 응답 메시지를 작성해서 LAN 어댑터에 송신
        3.4 LAN 어댑터는 UDP 메시지 수신에서 송신
        3.5 Socket에 전달
    4. Socket 라이브러리에서
        4.1 응답 메시지 수신
        4.2 응답 메시지에서 IP 주소를 추출하여 <메모리 영역>에 저장하고 애플리케이션으로 돌아갑니다.
    5. 웹 브라우저는 ip 주소를 얻은 뒤 다음 과정을 수행합니다.
profile
데이터데이터데이터!!

0개의 댓글