안녕하세요 허언증 입니다.
책에 있는 내용을 이해하고 서술 하듯 글을 적어 내려 갑니다. 저도 공부하는 차원에서 정리하는 글 이고 네트워크 과정에서 생략되는 부분도 발생할 수 있기 때문에 부족한 점도 있다는거 인지 하시고 편안하게 읽어주세요!! 역사처럼 물 흐르는식으로 스타일로 글을 작성합니다.
TCP/IP, 서브넷, 넷마스크, 라우터, 허브, DNS, 프로토콜, 메모리, DHCP 에 대해 알고 계시면 이해 할 때 도움이 됩니다. 모른다고 하셔도 읽으시는데 불편함 없이 최대한 적을 것이며, 중간중간 링크를 통해 정보를 제공 해 드리겠습니다.
chapter01을 요약하면
1. HTTP 리퀘스트 메시지를 작성한다.
2. 웹서버의 IP주소를 DNS 서버에 조회한다.
3. 전 세계의 DNS서버가 연대한다.
4. 프로토콜 스택에 메시지 송신을 의뢰한다.
chapter01이 끝나면 4개의 과정을 알 수 있게된다.
3. 전 세계의 DNS서버가 연대한다.
DNS 동작 원리에 대해 알아보도록 하자!
앞에서 IP주소를 DNS 서버를 통해 알게 된다고 했는데 DNS에 대해 자세히 알아보려고 한다. 클라이언트(리졸버)가 DNS서버에 메시지를 요청을 하는데 이때 1)이름, 2)클래스, 3)타입 세 가지 정보를 포함한다.
이름은 서버나 메일 배송 목저지와 같은 말 그대로 단순한 이름이라고 생각하면 된다. 현재 클래스 타입은 IN을 주로사용하고 초창기에 DNS를 만들었을 때 다양한 통신을 하기 위해 만들었지만 현재는 인터넷 이외 네트워크 사용은 잘 안 하기 때문에 IN 정도만 알아두면 된다. 타입 같은경우 대표적으로 A,MX 가 있는데 A는 IP주소를 조회 할 때 MX는 메일 배송 목저지를 조회 할 때 사용한다.
간단한 예를 들어 설명을 하면, 리졸버가 DNS서버에 아래와 같이 정보를 전송 했다고 하면 아래와 같은 메시지를 보내게 될 것이다.
1)이름 : min-310.tistory.com
2)클래스 : IN
3)타입 : A
위와 같은 대응표에 접근을 해서 DNS 서버가 조회를 하게 되는데 2번째 행에 정보가 있음을 확인하고 마지막 열인 "클라이언트에 회답하는 항목" 값인 IP주소를 리졸버(DNS 클라이언트)측으로 전달해 IP주소를 알려준다.
이번엔 MX 방식인 메일을 알아본다고 가정을 해보자
1)이름 : naver.com
2)클래스 : IN
3)타입 : MX
DNS서버가 대응표를 보니까 3번째 행에 해당 항목이 있는걸 발견했지만 "클라이언트에 회답하는 항목" IP주소가 없고 10 mail.naver.com있는걸 볼 수 있다. DNS서버는 mail.naver.com 도메인을 보낸다
리졸버는 IP주소가 없이 도메인만 받았는데 상관이 없는가??
4번째 행을 보면 mail.naver.com이라고 도메인이 있고 제일 끝에 있는 항목을 보면 IP주소가 있는걸 알 수 있는데 도메인주소만 넘겨주는 것처럼 보이지만 아래에 있는 IP주소도 같이 넘겨주게 된다.
과정을 정리하면
리졸버 요청 -> DNS서버가 대응표 접근 후 찾음 -> 리졸버에가 IP주소 전송
*지금은 보기쉽게 표를 이용해서 만들었지만 실제로는 파일형태로 저장되어 있고 첫 번째행을 "리소스 레코드"라 부른다.
(이름 / 클래스 / 타입 /클라이언트에 회답 항목 => "리소스 레코드")
도메인 계층에 대해 알아보도록 하자!
만약 DNS서버가 세계에 한 대가 있다면 속도도 느리고 비효율적일 것이다. 그래서 DNS서버를 분산시켜서 정보 갖게하면 통신도 빨라지고 처리양도 줄어들기 때문에 DNS서버를 여러대 만드는 것이다. 이러한 DNS서버는 계층구조로 이뤄져 있는데 그림설명으로 보도록 하자.
위 사진은 min-310.tistory.com URL에 도메인을 분리한 것이다. URL의 오른쪽이 상위 계층의 도메인이 이며 왼쪽으로 갈수로 하위 계층의 도메인이라고 생각하면 된다.
좀 더 자세히 설명을 하면 www.cyber.co.kr 주소가 있다고 가정을 했을 때 .kr 이라는 도메인이 제일 상위 그리고 .co 그다음 .cyber 마지막으로 www가 있다. 검색을 좀 하다 보면 .kr 도메인은 대한민국만 사용하는 도메인이고 한국에만 부여한 도메인이다. 그 다음 도메인인 .co은 한국에서 기업이 웹사이트를 만들경우 사용하라고 만든 도메인이다. 간단하게 생각해서 회사 조직 체계처럼 이해하면 된다.
꼭 상위계층이라고 .cyber 도메인이 .co -> .kr 순으로 올라가는건 아니다. 해당 도메인이 다른 도메인의 주소를 가지고 있다면, 통신을 통해 직접 접근이 가능하다. 하지만 직접 접근은 가능 하지만 그 계층에 맞게 위에서 아래로 내려가게 된다. 아래 그림 참고. 1->2->3->4 순으로 검색
4. 프로토콜 스택에 메시지 송신을 의뢰한다.
프로토콜 스택에 설명에 앞서 지금까지 말한 과정에 대해 정리를 하도록 하겠다.
첫 번째 과정
URL 입력 -> 브라우저에서 URL 해독 -> 액세스대상(포로토콜) 확인 -> 리졸버가 DNS서버에 요청 -> DNS서버로 부터 IP주소를 받음 -> 리졸버가 메모리에 IP저장 -> 브라우저가 메모리에 접근 후 IP습득 (HTTP 메시지와 OS에 IP주소를 건네준다) -> 해당 프로토콜 서버로 전송 -> 서버가 다시 클라이언트로 응답 전송
이러한 과정으로 진행된다.
이 때 중요한 건 리졸버가 DNS서버에 요청 -> DNS서버로 부터 IP주소를 받음 -> 리졸버가 메모리에 IP저장 에서 세부적으로 과정으로 알고있자.
애플리케이션 -> Socket Library -> OS 내부의 프로토콜 스택 -> LAN카드 -> 랜케이블 -> 허브, 스위치, 라우터 장비로 이동 -> DNS 서버 -> 허브, 스위치, 라우터 장비로 이동 -> 랜케이블 -> LAN카드 ->DNS 서버로부터 IP회신 받고 -> 메모리에 IP저장 이 된다는 점을 잊으면 안 된다.
Socket 와 Socket Library 에 대해 알아보도록 하자!
위 그림을 보면 Socket Library를 사용하고 있다. Socket Library에 대해알고 넘어가자.
Socket Library는 애플리케이션과 OS간 소통을 할 수 없기 때문에 Socket Library에 있는 명령어를 통해 서로 대화를 할 수 있게 하는 도구라고 생각하자!
Socket Library의 과정은?
1)소켓 생성
2)서버측 소켓과 연결
3)데이터 송/수신
4)소켓 말소
간단하게 4단계로 이뤄진다고 생각을 하면 된다. 위 과정을 통해 프로토콜 스택에 명령을 하고 결과를 리턴 받는다.
그림을 보면서 흐름만 참고 하고 자세한 설명은 chapter02에서 하도록 하겠다.
소켓이란 무엇인가?
소켓은 간단하게 애프리케이션의 창구라고 생각을하면 된다. [프로토콜 정보 + IP주소]를 통해 데이터 메시지가 완성이 되면 애플리케이션 및 서버에 전송을 해야 한다. 이 때 소켓이란 창구로 부터 데이터를 받게 된다. 만약 소켓을 닫아 버리면 통신을 못 하게되고, 소켓을 여러개 만들어서 동시에 많은 데이터를 받을 수도 있다. 소켓을 여러개 만든다면 각 소켓마다 구분을 해야 하기 때문에 "디스크립터"를 부여하여 소켓을 확인한다. 이것은 OS가 프로세스에게 PID를 부여하는 것 처럼 같은 원리이다.
(* 애플리케이션이 소켓을 구분하는 것 = 디스크립터)
프로토콜 스택을 알아보도록 하자!
프로토콜 스택은 앱플리케이션에 있는 Socket library를 통해 통신을 하고, 각 서버에게 메시지를 전송을 한다. 앱플리케이션에서 바로 서버로 전송을 못 하기 때문에 프로토콜 스택을 이용해서 통신을 하게 된다!! 중간에서 서버와 앱플리케이션을 도와준다고 생각하자!
chapter01 정리
애플리케이션에서 프로토콜 스택까지 가는 과정을 설명을 했습니다!!
IP? 포트? 좀 더 알고싶으면 Click!! Click!!
포트? Socket(소켓)? 좀 더 알고싶으면 Click!! Click!!
'# Study > [ 성공과 실패를 결정하는 1%의 네트워크원리 ]' 카테고리의 다른 글
[허언증/네트워크] chapter03-① (성공과 실패를 결정하는 1%의 네트워크 원리) (0) | 2020.02.15 |
---|---|
[허언증/네트워크] chapter02-③ (성공과 실패를 결정하는 1%의 네트워크 원리) (0) | 2020.02.11 |
[허언증/네트워크] chapter02-② (성공과 실패를 결정하는 1%의 네트워크 원리) (0) | 2020.02.10 |
[허언증/네트워크] chapter02-① (성공과 실패를 결정하는 1%의 네트워크 원리) (0) | 2020.02.09 |
[허언증/네트워크] chapter01-① (성공과 실패를 결정하는 1%의 네트워크 원리) (0) | 2020.02.02 |