section 0 - intro
인프런 널널한 개발자님의 네트워크 핵심이론 - 기초를 정리한 노트
# Layer와 Layered 구조
IT 업계에서는 어떤 구성요소를 도식화 할 때 계층적 구조를 이루도록 설계하는 경우가 많다.
- Layered 구조로 무언가를 나열하여 도식화하는 것은 이해를 돕기 위한 행동
- 보통, 요소들 간의 관계를 표현하기 위해 도식화를 많이 한다.
- 상위 계층은 하위 계층에 의존적이다.
- 행위, 기능에 관하여 의존적
좀 더 나아가서, 존립에 관하여 의존적일 수 있다. 즉, 상위 계층이 존재하려면 하위 계층이 반드시 전제되어야 하는 상황일 수도 있는 것이다.
- 이 과정에서 계층이 직렬화되면, 이는 Layered 구조를 가지는 것이다.
- OSI 7 Layer와 연관지어 생각해보면, 물리적인 상황인 1계층 없이 위의 계층이 존재할 수 있을까? 존재 못하겠지.
# 네트워크와 네트워킹
네트워크, 네트워킹을 번역하기 굉장히 애매하지만, 네트워크는 관계, 네트워킹은 상호작용으로 이해해보면 어떨까?
내가 홍길동과 대화를 하려는 상황이라고 생각해보자.
- 소리는 공기 중을 타고 전달되어야겠네. 2m 이내처럼 짧은 거리면 좋겠네
- 말을 통해 전달해보자
- 언어는? 한국어로 말해보자.
이 모든 과정이 협의가 되면 그제서야 상호작용이 가능하게 되는 것이다. Layer를 이루게 되면서 하위 계층이 존재한다는 전제하에 상위 계층이 존재할 것이고. 상위 → 하위로 의존관계 또한 형성되겠군. 바로 Layered 구조이겠군.
이렇게 협의하는 과정을 규칙을 정한다고 하여 Protocol 이라고 한다.
# User mode와 Kernel mode
- NIC (Network Interface Card, LAN Card) 와 같은 하드웨어를 제어하기 위한 소프트웨어가 존재하는데, 그것을 Driver 라고 부른다.
- 운영체제의 커널 수준에 프로토콜로 구현된 형태가 TCP/IP
- User 수준에서 Kernel 수준으로 말을 전달하려면, 어떤 인터페이스를 통하여야 한다.
- 인터페이스의 형태는 File 형태로 되어있음
- 그러나, 특별하게 TCP/IP를 추상화시킨 인터페이스 파일은, 파일이라 하지않고 소켓(socket)이라고 부른다. 이 말은, 소켓도 그냥 파일이라는 말도 되긴 하겠네 !