명지대학교 문대경 교수님 (UC Berkeley CS Ph.D., (전)넥슨 개발자)
이 분은 뭘까. 네트워크 개념을 이렇게 재밌게 설명할 수 있다니 놀라움의 연속이었고(특히 서브넷) 시간가는 줄 모르고 들었다. 그런데 복습하지 않으면 다 휘발될 것만 같기에 정리를 해본다.
오해 금지. Reference model일 뿐 실제로 존재하는 것이 아님
밑에 the thins I searched more에서 OSI model과 TCP/IP model의 차이점을 알아봄.
DNS
(Domain Name System) : 내 동네 주소록과 같은 것. "호스트 이름 : IP" 가 쌍으로 이루어진 DB
실제로는 루트에 Root DNS Server가 있는 트리 형태임
local DNS server에 해당 도메인 네임에 대한 IP주소를 가장 먼저 물어봄
local DNS server에 없으면 Root DNS server한테 물어봄
Root DNS server는 최상위 DNS server로 해당 DNS부터 시작해서 아래 딸린 node DNS서버에게로 차례차례 물어봄(처음에만 그러고 다음부턴 받은 TLD주소 찾아가나? 위위 그림을 보면 루트서버를 다시 거치진 않는데 확실한건 모름)
- 대표적인 최상위 서버(Top-Level Domain, TLD) 두 가지
1. 국가 코드 최상위 도메인(country code TLD,ccTLD)
ex: .kr, .ca, .us, etc
2. 일반 최상위 도메인(generic TLD, gTLD)
ex: .com, .net, .org, etc
Root DNS에 등록되어 있는 최상위 도메인(TLD)에서 해당 도메인에 붙어있는 TLD 주소를 찾아서 Local DNS에게 다시 줌
찾을 때 까지 2번 3번 4번 반복
즉, 호스트 이름에 맞는 IP를 찾아 주기 위해선 Root DNS한테 물어보면 답이 딱 나오는 것이 아니라, Local DNS와 계속 재귀적으로 질의를 해야하기 때문에 매 요청마다 DNS server에 큰 부담을 줌. 이것이 caching 기술의 등장 배경.
Cache : 은닉처와 같은 것.
Recursive Query를 매번 아니라 캐시에 저장되어 덜 하게 되니까
즉, high scalability & low latency가 장점이다.
root NS 캐싱, TLD NS 캐싱, 개별 도메인의 NS 캐싱, DNS 쿼리 결과 캐싱
캐싱의 맛을 알아버려서 별걸 다 캐싱함.
또, Proxy Server에서도 DNS 호스트 이름을 IP 주소로 변환할 때 프록시에서 수행하는 DNS 조회 수를 줄이기 위해 DNS 캐시를 사용함
사용하는 프로토콜 :DNS 프로토콜
(해당 프로토콜은 UDP방식임)
Default 포트 : 53번
Network : 개체(‘점’) 간의 관계 (‘선’) 을 표시한 것
IP : 네트워크를 연결하는 프로토콜
*
그림 설명: 모래시계 아래는 물리적 연결 기술. 위에는 소프트웨어 기술.
-> 어떤 물리적 연결 기술이든 IP만 구현하면 다양한 서비스(소프트웨어)
를 돌릴 수 있다.
-> 반대도 마찬가지. 어떤 서비스(소프트웨어)든 IP만 구현하면 다양한 물리적 연결 기술로된 네트워크에서 동작한다.
아키텍처 : 어떤 컴포넌트들이 어떻게 연결되어 있는지, 혹은 어떻게 상호작용하는지를 보여주는 것
Gateway: 내 네트워크의 입출입을 위한 관문 서버
Routing: 게이트웨이를 연결하는 것
Latency & Jitter
switch는 기능임
segment는 조각이고 끝 없이 이어지는 스트림에 있다
TTL 이동할 때마다 하나씩 줄면서
Congestion : 과부화되면 버리는 거
TCP로 100byte 보냈는데 60byte 밖에 안왔다면? buffer 같은 전체를 감싸는 레이어를 사용해서 ????
IPv6 인지 아는 법 : packet 앞 4 bit가 만약 0110 이면 6이니까
둘다 Data delivery를 위한 reference model인건 알겠는데 차이점이 뭐지?
OSI는 도큐먼트가 먼저 되었고 그 다음 각 계층의 functionalities가 정해졌고, 그 다음에 프로토콜들이 정립됨.
반면, TCP/IP는 계층이 특정 프로토콜과 함께 정립되었고, 그리고나서 도큐먼트 됨.
그래서 둘 다 모델이지만 OSI model은 theoretical model이고, TCP/IP는 practial한 모델.
OSI 모델은 프로시저의 연결, 레이어드 아키텍처, 서비스들, 인터페이스들, 프로토콜들의 어떠한 포괄적인 혹은 범용적인 모델을 만들기 위해 생겨났고
TCP/IP 모델의 목표는 신뢰성있는 end-to-end 전송 모델을 제공하는 것이다.
일반적이고 표준적인 모델을 참고 하고싶다? -> OSI model 보세요.
신뢰성과 보안성을 중점으로 네트워크를 모델을 참고하고 싶다? -> TCP/IP model 보세요.
OSI는 범용적이기 때문에 uiversal 하다. 그래서 다른 종류의 네트워크에도 적용이 가능함.
TCP/IP 는 프로토콜에 의존적이고 현재의the Internet
아키텍처에만 양립할 수 있음. 그래서 TCP/IP 모델은 특정한 문제들만 해결 가능함.
OSI는 도큐먼트가 제대로 되어있음. 주요 개념으로는 서비스, 인터페이스, 프로토콜이 있음.
TCP/IP는 제대로 도큐먼트 안되있음. 그리고 각 계층이 명세과 주 기능이 확연하게 명확하지는 않음.
OSI model은 신뢰성 있는 연결 보장 못함.
TCP/IP는 3-way handshake 메카니즘이 있음.