NULLNULL한 개발자님의 강의 및 구글링을 통해 찾은 자료를 바탕으로 기록합니다.
단순히 글을 옮겨적는 것이 아닌 제가 이해한 것을 바탕으로 저만의 설명을 적습니다.
들어가기 전 : 이상의 실체
우리는 TCP/IP의 네트워크 원리, 그리고 HTTP의 핵심 기능을 알아서 인터넷의 작동원리를 알고 싶은 것이며, 이들은 명백한 구현(실체)이다. OSI 7 계층은 실체를 만들기 위한 개념적 표현(이상)이다. 따라서 7계층을 단순히 암기하려는 데 신경쓰기보다는 실체에 더 집중할 필요가 있다. 이 점을 기억하고 네트워크 지식을 다져보자.
- TCP/IP 모델은 OSI 7 계층 또는 DoD 모델의 구현체이다. TCP/IP 모델에 조금 더 집중해보자.
- user 계층과 kernel 계층이 상호작용하기 위해선 interface가 필요하다
- 그 interface를
socket
이라고 부르는데, 이는 file 형태로 추상화되었다.
- 이렇게되면 user 계층에 있는 어플리케이션 프로세스가 TCP를 접근할 수 있게 된다.
식별자 (MAC 주소, IP 주소, Port 번호)
Mac 주소
: HW 계층(L2)에서의 식별자
IP 주소
: Network 계층(L3)에서의 식별자
Port 번호
: Transport 계층(L4)에서의 식별자
그렇다면 이들은 무엇을 식별하기 위해 탄생하였을까? 🙄
Mac 주소
는 Network Interface Card(NIC)
를 식별하기 위함이다.
- Mac 주소는 하드웨어 주소로도 불린다.
- 그럼 NIC가 무엇인가?
- 쉽게 얘기하면 LAN 카드이다. (LAN 카드는 또 유/무선으로 나뉨)
- 따라서 NIC 하나 당 고유의 Mac 주소를 갖고 있다.
- NIC은 한 컴퓨터에 여러 개일 수 있나요?
- YES. 따라서 NIC이 2개일 경우 Mac 주소도 2개를 갖고 있다.
IP 주소
는 Host
를 식별하기 위함이다.
- IP 주소는 v4와 v6 두 가지 버전이 존재한다. (보통 v4를 사용)
- 그럼 Host가 무엇인가?
- Host는 인터'넷'에 연결된 컴퓨터를 의미한다.
- IP 주소는 NIC 하나 당 여러개의 IP 주소를 바인딩할 수 있다.
Port 번호
는 관점에 따라 다르다.
- ⭐ 개발자 관점에서는
process
를 식별하기 위함이다.
- 네트워크 관리자 관점에서는 service 번호이다.
- 통신공사 관점에서는 interface 번호이다.
Host, Switch, Network
- Host
- 인터'넷'에 연결된 컴퓨터라고 이미 언급한 바 있다. 즉
computer+net
이라고 생각하면 편하다.
- Host는
network를 이용하는 주체
이거나, newtwork 자체
두 가지로 나뉘게 된다.
- network 이용 주체
- end-point 라고도 한다. ( = 단말기 )
- 대표적으로 peer, server, client 와 같은 역할로 나뉜다.
- network 자체 ( = switch )
- switch로 별도 분류된다.
- 다시 얘기하면 network 자체를 이루고 있는 컴퓨터(호스트의 일종)인데, switch이므로 switching을 한다.
- 대표적으로
router
가 있다.
- 무엇을 위해 switching 하는가?
- 보통의 경우 (A 장치에서 B 장치로 가는) 경로를 찾기 위해 switching을 한다.
- 그렇다면 어떤 정보들을 통해 switching을 하는가?
- 다양한 정보에 따라 switching이 가능하다.
- Mac 주소를 통해 switching을 한다면 L2 switch
- IP 주소를 통해 switching을 한다면 L3 switch (router)
- Port 번호를 통해 switching을 한다면 L4 switch
- 마지막으로 HTTP의 특정 정보를 통해 switching을 한다면 L7 switch
- 가격은 user 계층으로 올라갈 수록 비싸진다.
- 단순히 HW 계층에서 전기적 신호만을 가지고 경로를 찾을 것인지, 아니면 user 계층에서 복잡한 연산을 통해 경로를 찾을 것인지에 대한 차이가 있는 것이다.
- 참고로, router 외에 방화벽이나, IPS 등도 switch로 분류된다.
- 이들은 경로 추적이 아닌 보안 을 위해 switching을 한다.
그렇다면 network가 도대체 뭘까? 🙄
- 개념적으로 접근한다면..
- net+work의 합성어로, 두 대 이상의 컴퓨터들을 그물망(net)처럼 연결하고 서로 통신(work)하는 것이다
- 독립적인 장치가 적절한 영역 내에서 적당히 빠른 속도의 물리적 통신 채널을 통해 서로가 직접 통신할 수 있도록 지원해 주는 데이타 통신 체계(IEEE에서 정의한 문장)이다.
- 대표적인 network로는 internet이 있다
- internet은
router와 dns의 집합체
이다.
조금만 더 생각해보자. 공유기는 switch일까? 🙄
공유기에 다양한 호스트들이 연결되어 있고, 공유기는 호스트들의 ip를 통해 경로를 추척하니 L3 switch 일 것 같다.