본 내용은 “성공과 실패를 결정하는 1%의 네트워크” 를 참고하여 작성하였습니다.
지난단원의 정리
브라우저는 url을 해독하여 http 메세지를 생성하고 이를 OS에게 전달해준다.
OS는 해당 메세지를 서버에게 전송해준다.
서버는 메세지에 해당하는 자원의 위치에 가서 무엇을 에 해당하는 메소드를 통해서 동작을 하고
리스폰드 메세지를 클라이언트에게 리턴한다.
이렇게 서버, 혹은 자원의 위치를 알려주는것을 도메인명 즉 // 뒤에오는 주소로 알수있게 되는데 그 과정에 대해서 설명하고 있다.
라우터, 허브, 서브넷
우선 대충이나마 해당 내용을 이해하고 넘어가야, 뒤의 내용이 이해가 간다.
- 라우터 : 라우터는 네트워크와 네트워크를 연결해주는 역할을 한다.
- 허브 : 허브는 컴퓨터와 컴퓨터의 연결을 해주는 역할의 장치를 말한다.
- 서브넷 : 허브에 연결된 여러대의 컴퓨터가 이루는 네트워크(연결)을 하나의 서브넷 이라고 한다.
- 즉 여러개의 서브넷들이 합쳐져서 만들어지는것이 하나의 거대한 네트워크가 되는것이다.
DNS서버
DNS(Domain Name System) 서버란 도메인명(서버명) 과 IP주소를 대응시키기 위한 서버를 의미한다.
즉 우리가 도메인명을 통해서 http 리퀘스트 메세지를 생성한 뒤에 가장 처음 보내는곳이 바로 이곳이다.
우리가 보낸 도메인명을 통해 IP 주소를 찾아주고 이를 다시 리턴해준다.
이렇게 받은 IP주소를 통해서 우리는 다시 OS를 통해서 http리퀘스트 메세지를 해당 IP 서버에 전송하게 된다.
IP주소
OS에서 메세지 송신을 의뢰할때 필요한것이 바로 IP 주소이다.
IP 주소는 보통 서버의 도메인 명에서 받아오게 된다.
IP는 네트워크상에서 컴퓨터(노드)를 식별하기 위해 부여된 위치주소 다.
IP 구조
서브넷의 주소(네트워크 번호) + 컴퓨터에 할당된 주소 (호스트 번호)
IP는 네트워크 번호와 호스트번호로 이루어져 있으며, 총 32bit의 체계를 가지고 있다.
255.255.255.255 이렇게 할당될수 있는 개수를 표현하게 되는데 실제로는
00000000. 00000000. 00000000. 00000000 이것을 10진수로 표현한것일 뿐이다.
- 여기에서 4번째 값, 즉 255.255.255.0 인 넷째값이 0 인경우는 서브넷 그 자체를 표현한다.
- 4째값이 255 즉 전체가 11111111 로 표현된 것은 브로드캐스트 라고 한다.
- 브로드 캐스트는, 서브넷에 연결된 모든 컴퓨터에 메세지를 전달하는 방식이다.
넷마스크
IP주소는 총 32bit체계를 가지고 있지만,
컴퓨터는 어디가 어디까지 네트워크번호(서브넷) 인지 호스트번호(컴퓨터) 인지 정확하게 인지하지 못한다.
이를 위해서 컴퓨터에게 여기까지가 네트워크 번호야~ 라고 알려주기 위한 정보를 IP주소에 붙여주는데
이것이 “넷마스크” 이다.

1로 이루진 곳 까지, 네트워크 번호
0으로 이루어진 곳 은 호스트번호
IP주소와 도메인명을 구분해서 사용하는 이유
사람은 의미없는 숫자의 나열을 외우는것을 굉장히 힘들어한다.
즉 편리성을 위해서 우리는 IP 주소가 아닌 도메인명을 사용하는 것이다.
그렇지만 앞서 말했듯, 도메인 명을 통해서 우리는 IP 주소를 가져와야하고, IP 주소를 통해서 결국 자원에 접근하게 된다.
그렇다면 그냥 도메인명을 IP 주소 대신에 사용하면 되지 않을까??????
- 실행효율에서 굉장히 떨어지기 때문에 그렇게 사용할수는 없다.
- 도메인명은 문자열이기 때문에 바이트 단위의 IP 주소보다 훨신 큰 데이터가 되기 때문이다.
소켓(Socket), 리졸버(resolver)
- 소켓 라이브러리는 OS에 포함되어 있는 네트워크기능의 라이브러리 이다.
- 소켓 라이브러리 안에는 리졸버 라는 프로그램이 존재한다.
메세지를 정확한 IP주소를 통해서 보내기 위해서는 DNS서버로부터 도메인명을 통해 IP주소를 받아와야한다.
이때, 도메인명을 DNS주소에게 보내서 IP를 받아오는 역할을 하기 위해서 메세지를 생성하는 것이 리졸버이다.
이러한 과정을 네임 리졸루션(name resolution)이라고 부른다.
리졸버 내부의 작동

- 어플리케이션에서 url을 해독하는 과정에서 gethostbyname(도메인명) 이라는 메소드가 호출된다.
- 해당 메소드가 호출되면 소켓에서 리졸버가 호출된다.
- 호출된 리졸버는 도메인명을 DNS서버로 전송해서 IP주소를 받아오고 다시 이를 어플리케이션에게 보내준다.
- 어플리케이션은 리졸버를 통해 얻어온 IP 주소를 가지고 http메세지를 생성하고 서버로 보낸다.
위의 과정에서 리졸버 또한 브라우저와 동일하게 DNS서버로 보낼 메세지만을 생성하는 역할을 하게 된다.
실제로 이러한 메세지를 보내는 것은, OS내부의 네트워크 제어 소프트웨어인 “프로토콜 스택” 이 하게 된다.
따라서 리졸버는 메세지만 생성하고 프로토콜스택에 메세지를 전달. 해당메세지는 프로토콜 스택을 통해서 서버로 송신, 그리고 수신되어 이러한 메세지를 다시 리졸버에게 그리고 전해주면, 리졸버는 이 IP 주소를 다시 어플리케이션에게 리턴해주는 과정을 가지게 된다.
Uploaded by N2T