포스트

네트워크 개념 정리

EP 5

OSI 7계층과 TCP 4계층, 캡슐화/역캡슐화

OSI 7계층과 TCP 4계층, 캡슐화/역캡슐화에 대해 알아보자.

OSI 7계층과 TCP 4계층, 캡슐화/역캡슐화

OSI 7계층

대표적인 참조 모델이 바로 그 유명한 OSI 7계층임.

IT, 컴퓨터 등의 장비 등에서 표준 하면 생각나는 단체인 ISO(국제 표준화 기구)에서 만든 참조 모델임.

사실상 오늘날 네트워크의 기본적으로 작용하는 참조 모델로 총 7계층으로 나뉘는데 각 역할과 사용하는 단위는 아래에 정리해둠. 그리고 같은 층에서 주고받는 단위는 PDU(Protocol Data Unit)이라 함.

(추가: n계층은 영어로 Layer n 이나 L n 으로 표현하기도 함. 예: 2계층 ⇒ L2)

1계층 : 물리 계층(Physical Layer)

OSI 7계층의 최하단에 있는 계층임. 먼저 컴퓨터는 0과 1로 처리하는데, 전류가 흐르거나 흐르지 않거나를 1, 0으로 표현하는거임(비트).

즉 전기 신호를 포함한 빛, 전파 신호 등의 아날로그 신호로 통신이 이루어지는 계층임.

여기엔 LAN 케이블, 광 케이블 등의 케이블이나 관련 장비 등이 표현될 수 있음.

PDU는 위에서 언급했지만 비트(Bit)를 사용함.

네트워크 내 장치(호스트, 네트워크 장비) 간의 통신을 올바르게 하기 위한 계층으로, LAN 등의 기술이 여기에 있으며, MAC(Media Access Control, 지금은 간단히 장치의 고유한 주소라 생각하면 됨) 주소를 사용하여 네트워크 내에 호스트나 관련 장비를 찾음.

추가적으로 오류 검사를 통해 주고받는 데이터에 오류가 없는지 확인하고, 충돌(허브에서 설명 할 CSMA/CD 프로토콜이 여기에 해당됨)을 해결하는 계층이기도 함.

허브, 스위치, NIC(Network Interface Card) 등의 장비가 여기에 해당하고, 물리 계층과 상당 부분이 연관된 계층임.

PDU는 프레임(Frame)을 사용함.

3계층 : 네트워크 계층(Network Layer)

1계층 물리 계층과 2계층 데이터링크 계층만 사용하여 지구 반대편에 있는 컴퓨터와 통신할 수 있을까?

⇒ 회선만 있다면 가능할 수 도 있겠지만, 사실상 불가능함.

왜냐? 데이터링크 계층에서 사용하는 상대 컴퓨터의 MAC 주소를 직접 알기도 어렵고, 그걸 또 어느 경로로 갈지 선택을 해야돼서 사실상 불가능함.

위 답에 네트워크 계층의 주요 역할이 설명되어있는데, 네트워크 계층은 일단 송신지 호스트가 여러 네트워크의 노드를 거치며 수신지 까지 갈 때, 최적의 경로를 설정해줌.

그 다음으로 흔히 알고있는 IP(Internet Protocol)를 사용하여 주소를 식별하는데, 얘도 하나의 프로토콜임.

IP는 논리 주소라고도 불리는데, 네트워크 내에서 장비를 식별하기 위해 쓰이고 얘는 바뀔 수 있기 때문에 MAC 주소와는 다름.

아무튼 네트워크 계층에서 IP라는 주소 체계를 사용하여 통신을 한다~~ ← 이 문단의 핵심

(IP와 관련된 ARP 등의 프로토콜도 여기에 해당)

즉 네트워크 계층은 인터넷을 가능하게 하는 계층임.

여기까지 외부 장비(네트워크 계층에선 라우터 등)를 사용하고, 아래 4계층 부턴 주로 호스트 내에서 다루며 우리가 네트워크 “프로그래밍”을 한다면 4계층부터 다룬다고 보면 됨.

PDU는 패킷(Packet)을 사용함.

4계층 : 전송 계층(Transport Layer)

전송 계층에선 신뢰성있고, 안전성있게 데이터를 전송하도록 함. 패킷이 정상적으로 송신/수신 되었는지, 또 패킷들에 순서가 이상하진 않은지 등을 확인하고 패킷들의 흐름을 제어함.

또한 이 계층에선 포트(Port)라는 개념이 있는데, IP 내에서 프로세스 또는 프로토콜을 구분하여 맞는 포트에 접속할 수 있도록 하는 개념임.

크게 TCP와 UDP가 있는데, 전자는 성능은 UDP에 비해 살짝 딸리지만 안전하고 신뢰성있는, 후자는 속도는 전자보다 빠르지만 노빠꾸인 특징을 가진다고 생각하면 됨.

PDU는 TCP일 경우 세그먼트(Segment), UDP(Datagram)일 경우 데이터그램임.

5계층 : 세션 계층(Session Layer)

일단 세션(Session)은 여기선 통신을 하는 두 호스트 간의 연결 상태를 의미함.

“여기선” 라는 애매한 표현을 쓴건 다른 곳에서도 많이 나오는 용어이기 때문.

즉 쉽게 설명하면 두 통신 상태를 생성하거나 유지, 종료(끊어주는) 하는 역할을 함.

5계층 세션 계층부터 마지막 7계층까진 메세지(Message) 또는 그냥 데이터(Data)가 PDU임.

6계층 : 표현 계층(Presentation Layer)

아까 택배 예시를 다시 생각해보면 송장을 작성한다고 했음.

⇒ 그런데 만약 언어가 틀리면?

답은 번역을 해야함. 바로 이게 표현 계층의 핵심. 통신 시 컴퓨터가 이해할 수 있는 데이터(바이러니 등) 등으로 변환하거나 암호화하는 작업이 이 표현 계층에서 이루어짐.

7계층 : 응용 계층(Application Layer)

마지막 응용 계층은 우리가 사용하는 최종적인 응용 소프트웨어.

웹 브라우저 등이 여기에 해당되고, HTTP/HTTPS 같은 프로토콜도 여기에 해당됨.

클라이언트 프로그램이 응용 계층에 해당된다고 생각하면 편함.

TCP/IP 네트워크 참조 모델

이론적으로 네트워크의 구조와 흐름을 설명할 땐 OSI 참조 모델을 사용하지만, 실제론 그 기반이지만 그보다 살짝 축약된 TCP/IP 모델을 더 많이 사용함. 얘는 4계층 또는 5계층임.

OSI 7계층은 “이론”에 중점을 뒀다면, TCP/IP 모델은 “구현”, “실용성”에 중점을 두고 있음.

그런데 TCP/IP 같이 묶여있는 건 뭘까?

흔히 프로토콜 스택이라 부르는데, 답은 간단함. 같이 묶어서 많이 쓴다는거.

TCP, IP 프로토콜 외에도 UDP, ARP 등의 프로토콜도 포함되지만 따로 적어두진 않은거.

1계층 : 네트워크 액세스 계층 (Network Access Layer)

라는 이름 말고도 “링크 계층”, “네트워크 인터페이스 계층” 등으로 불리기도 하는데, OSI 7계층의 데이터 링크 계층과 비슷함.

물리 계층을 포함한다는 견해도 있는데, 때문에 네트워크 액세스 계층 대신 “데이터링크”와 “물리” 계층으로 확장하여 표현하기도 함.

이쪽엔 허브, 스위치, 브릿지 등의 장비가 포함되는데 추후 설명함.

2계층 : 인터넷 계층 (Internet Layer)

OSI 7계층의 네트워크 계층과 비슷하며, 장비로는 대표적으로 라우터(매우매우 중요한 장비임)가 있음. 이것도 추후에 설명할 예정임.

참고로 이름을 인터넷 계층 대신 네트워크 계층으로 불리기도 함.

3계층 : 전송 계층

TCP/IP (소켓) 관련 프로그래밍의 핵심, 추후에 실제 예제 코드와 함께 설명해볼 예정.

4계층 : 응용 계층(Application Layer)

OSI 7계층의 세션, 표현, 응용 계층을 합쳤다고 보면 됨. 나중에 설명해볼 예정.

캡슐화(Encapsulation)와 역캡슐화(Decapsulation)

우선 간편하게 TCP/IP 4계층으로 설명하겠음.

먼저 데이터를 보낼 땐 4계층(응용) → 1계층(물리) 계층으로 이동하게 됨.

아까 설명했지만 패킷엔 헤더와 트레일러 등의 부가적인 정보가 붙는다고 했는데, 이러한 정보가 하나하나 붙어가는게 캡슐화고, 캡슐화된 데이터가 최종적으로 전달되며 부가적인 정보가 없어지는데, 이걸 역캡슐화라고 함.

여기서 “부가적인 정보”는 크게 헤더와 트레일러를 의미함. 목적지의 MAC 주소, IP 주소, 페이로드의 정보, 식별자 등등…

응용 계층에서 보내지는 정보, 또는 받는 정보는 페이로드 밖에 없는데 이 부가적인 헤더와 트레일러는 어디에서 붙냐?(캡슐화되냐..)

계층을 내려가면 갈 수록 하나하나 붙는거임. 응용 계층에서 헤더가 하나 붙고, 다음(전송 계층)으로 넘어가서 헤더에 추가적인 정보가 붙고, 데이터 링크 계층에서 트레일러가 하나 붙은 다음 물리 계층에서 최종적으로 아날로그 신호로 변환됨.

(참고로 데이터 링크의 트레일러는 오류 검출을 위해 붙는고 생각하면 됨.)

역캡슐화는 반대로 상위 계층으로 올라가면 갈 수록 헤더와 트레일러를 확인 후 제거하고 상위 계층으로 보내게 됨.