안녕하세요 삽잡이입니다.
이번 시간에는 IP와 DNS에 대해서 생각해보려고합니다.
여러분은 Domain Name Server를 아십니까? DNS라고 부르는데요...
클라이언트와 서버가 있다고 생각해봅시다.
클라이언트가 서버에 접속하려는데, 따라서 클라이언트의 위치를 알아야겠지요.... 그것이 바로 IP입니다.
반대로, 서버도 위치가 있어야지 접속을 할 수 있지 않겠습니까...
이 위치도 IP를 말합니다.
서버는 어차피 클라이언트가 붙게되면 IP를 알게 되니까 상관 없지만,
처음에 접속할 때 클라이언트는 서버의 위치 즉, IP를 모르면 접속을 할 수 없습니다.
우리가 인터넷을 접속을 위해 sapzapee.tistory.com 과 같이 입력을 하고 접속하면
원래는 IP로 접속 되는 것입니다.
사실, 다음, 네이버도 모두 IP를 가지고 쓰는 것입니다. 그런데 IP면 다 숫자인데 언제 다 외웁니까...
따라서 DNS라는 곳에 IP를 등록하는 것입니다.
등록을 해놓으면 IP를 직접 입력하는 것이 아닌 sapzapee.tistory.com 이와 같이 접속을 할 수 있게 됩니다.
정확히는, DNS로 해당 주소가 전달이되고 주소에 맞는 IP를 반환받지요...
그리고 받은 IP를 통해 접속을 하게 되는 것입니다.
이것이 DNS의 개념입니다.
DNS에 IP를 등록하게되면 편한점들이 여럿 있습니다.
예를 들어 A라는 PC에 서버를 만들어 놓고 DNS 에 등록을 한다면,
서버를 B라는 PC로 옮겨도 똑같은 주소명으로 변경할 수 있다 이겁니다.
IP번호를 바꾸면 똑같은 도메인 주소에 갱신만 시켜주면 되니깐요...
즉, 서버를 쉽게 옮길 수 있다 이겁니다.
IP, DNS와 관련된 함수 몇가지를 소개하고 마무리 지으려고합니다.
우선, GetIPAddr 함수입니다.
IN_ADDR 형 구조체에 주소 정보를 받아옵니다.
그리고
와 같이 사용하여 실제 IP 주소를 받을 수 있는 것입니다.
그런데 다음이나 네이버와 같이 대형 서버들은
실제 서버들이 몇개씩 있을 터인데 도메인 네임들도 여러개 있지 않겠습니까?
예를 들어 www.daum.net 이라는 도메인 주소를 넘기면
수많은 IP중 하나를 딱 잡아서 알려주는 것이이지요...
어찌됬건, 네트워크 통신이 아닌 이것은 DNS와 이야기를 하는 것입니다.
우리는 IP를 입력해도, 도메인 네임을 입력해도 똑같이 접속을 할 수 있습니다.
도메인 네임을 입력하면 DNS와 이야기하고 IP를 받아와 접속하는 것이고,
IP를 입력하면 직접 접속하는 것이 되지요...
프로그램상 도메인 네임을 많이 사용하는데
이 Domain이라는 뜻은 '영역', '경계'를 나타내는 말입니다.
예를들어 '삽잡이'라고 하면 삽잡이만의 경계가 만들어지는 것이지요...
또한, IP 에 언급했으니 이왕 조금 더해보면,
IP는 주소 변환을 할 수 있습니다.
뭔말이냐면, IP를 프로그래밍에서 다룰 때
우리는 4바이트의 숫자 덩어리보다, 문자열로 다루는 것이 편할 수 있기 때문에
이렇게 사용할 수 도 있습니다.
inet_addr()의 경우 문자열을 주면 4바이트짜리 정수로 변환해주는 함수이구요,
inet_ntoa()의 경우 Network to Address로
4바이트 짜리 정수를 주면 문자열로 변환해주는 함수입니다.
뭐 이런게 있다는 것이지요... 허허...
이번 시간은 여기까지 하겠습니다.
이상 삽잡이였습니다!
'삽질의 현장 > - 네트워크 프로그래밍' 카테고리의 다른 글
#007_Window_Network_클라이언트 서버 통신 (TCP 서버) (0) | 2015.10.03 |
---|---|
#007_Window_Network_오류 메시지 확인 (0) | 2015.10.02 |
#005_Window_Network_구조체 멤버 정렬 (0) | 2015.10.02 |
#004_Window_Network_바이트 정렬 (0) | 2015.10.02 |
#003_Window_Network_ 윈도우 소켓 초기화 및 종료 (0) | 2015.10.02 |