OSI 7 계층은 네트워크 지식을 공부하게 되면 한번쯤은 듣게 되는 용어중 하나이다. 오늘은 OSI 7 Layer 가 무엇이고, 왜 만들어졌는지를 공부해보려고 한다.
과거
과거에는 통신에 대한 규약이 정확하게 존재하지 않았다. 그래서 벤더사마다 통신규약을 다르게 정의했고, 이는 상호간의 통신규약을 통일하는데 무척 힘들게 하는 요인 중 하나였다. 그래서 이를 통일하기 위해 OSI 7 Layer 라는 표준이 등장했다.
OSI 7 Layer?
계층 | 영어 표기 | 한국어 표기 | 주요 프로토콜 | |
7계층 | Application Layer | 애플리케이션 계층 | HTTP, FRP, SMTP | L7 |
6계층 | Presentation Layer | 프리젠테이션 계층 | TLS, AFP, SSH | L6 |
5계층 | Session Layer | 세션 계층 | L2TP, PPTP, SSH | L5 |
4계층 | Transport Layer | 전송 계층 | TCP, UDP, SCTP | L4 |
3계층 | Network Layer | 네트워크 계층 | ARP, IPv4, IPv6 | L3 |
2계층 | Data Link Layer | 데이터 링크 계층 | IEEE 802.2 | L2 |
1계층 | Physical Layer | 피지컬 계층 | RS-232, RS-449 | L1 |
학부시절 또는 OSI 7 Layer 를 공부해봤다면 위와 같은 표를 많이 본적이 있을 것이다. 이제 우리는 각 계층이 어떤 역할을 하는지 알아보자.
1계층 (Physical Layer)
주로 물리적 연결과 관련된 정보를 정의하며, 전기신호를 전달하는데 초점이 맞추어져 있다. 1계층에서는 들어온 전기신호를 잘 전달하는 것이 목적이므로, 전기신호가 들어오면 이 전기 신호를 재생성하여 내보냅니다.
1계층 주요 장비
- 허브
- 리피터
- 케이블
- 커넥터
- 트랜시버
- 탭
2계층 (Data Link Layer)
2계층은 1계층에서 온 전기신호를 바탕으로 우리가 알아볼 수 있는 데이터 형태로 처리합니다. 1 계층은 전기 신호를 손실없이 전달하는게 주 목적이였다면, 2계층은 들어온 전기 신호를 정확한 주소로 전달하는 것을 목적으로 합니다. 그래서 2계층에서는 출발지와 도착지 주소를 확인하고 내게 보낸것이 맞는지, 내가 처리해야 하는 것이 맞는지에 대한 검사를 진행한 뒤 데이터처리를 진행합니다.
원하는 주소에 정확히 전달한다는 것은, 단순히 전송한다는 것 뿐만 아니라 상대가 받을 수 있는 상황인지 확인부터 해야 합니다. 이러한 작업을 Flow Controll(흐름 제어) 이라고 합니다.
2계층 주요 장비
- NIC (Network Interface Card)
- 이를 이용하여 MAC 주소 체계를 가집니다.
- Switch
- 스위치는 MAC 주소를 이해할 수 있고, MAC 주소를 보고 통신해야 할 포트를 지정해 내보내는 능력이 있습니다.
- Address Learning 과정을 통해서 어떤 단말이 어떤 MAC 주소를 가지고 있는지 학습함 (DNS Server 를 생각하면 이해하기 쉽다.)
- 스위치는 MAC 주소를 이해할 수 있고, MAC 주소를 보고 통신해야 할 포트를 지정해 내보내는 능력이 있습니다.
NIC 를 통한 간단한 동작 원리
- 들어온 전기 신호를 데이터 형태로 만든다
- 목적지 MAC 주소와 출발지 MAC 주소를 확인한다
- 네트워크 인터페이스 카드와 MAC 주소를 확인한다
- 목적지 MAC 주소와 네트워크 인터페이스 카드가 갖고 있는 MAC 주소가 맞으면 데이터를 처리하고 다르면 데이터를 파기한다.
- 맞다면 상위 계층에서 이를 처리할 수 있도록 Data Frame 을 메모리에 적재함
3계층 (Network Layer)
3계층은 논리적인 주소가 정의되는 곳이다. 2계층에서는 MAC Address 를 통한 물리적인 주소가 정의되지만, 3계층에서는 사용자가 환경에 맞게 변경도 시킬수 있는 논리적인 주소가 정의된다. 학부시절에는 ARP Protocol 등을 배웠었는데, ARP Protocol 을 통해 논리 주소 IP 로 MAC address 를 binding 할수 있다.
3계층 주요 장비
- Router
- 3계층에서 정의한 IP 를 이해할 수 있으며, IP 주소를 사용해 최적의 경로로 패킷을 전송하는 역할을 한다.
4계층 (Transport Layer)
4계층은 주로 실제로 해당 데이터들이 잘 보내지도록 확인하는 역할을 수행한다. 부가적으로 흔히 불리는 Data Flow Layer의 End Point 로 5,6,7 Layer 에서 하위 Layer 에 대한 관심사를 줄 일 수 있도록 도와주는 역할을 또한 수행한다. 우리는 Packet 을 Network 에 실어 보내는데 이러한 과정에서 유실되거나, Packet 의 순서가 뒤바뀔 수 있다. 이러한 문제를 4계층에서 해결해준다.
패킷을 보낼때 Sequnce Number 를 통해서 보낸 순서를 기록하고, 받는 순서를 나타낸것이 ACK 이다. 또한 4계층 장비는 장치내의 포트번호를 구분하여 많은 어플리케이션을 구분할 수 있도록 도와준다.
4계층 주요 장비
- Load Balancer (L4)
- Application Port Number, Sequence Number, ACK Number 등을 이용하여 부하를 분산한다.
- Firewall
- 보안 정책을 수립하여 패킷을 통과, 차단하는 기능을 수행합니다.
5계층 (Session Layer)
5계층인 세션 계층은 End-Point 간 Application Process 의 연결이 성립되도록 도와주고, 연결이 안정적으로 유지되도록 관리하고 완료후에는 연결을 끊는 역할을 합니다. 우리가 흔히 많이 쓰는 Connection.close() 등이나 Connection.connect() 등이 이 계층에서 관리 된다.
6계층 (Presentation Layer)
6계층은 표현방식이 다른 Application 이나 System 간의 통신을 돕기 위해 하나의 통일된 구문으로 변환해주는 역할을 수행한다. MIME 인코딩, 암호화, 압축, 코드 변환 과 같은 작업이 Presentation Layer 에서 이루어진다.
7계층 (Application Layer)
7계층은 Application Process 를 정의하고, Application Service 를 수행한다. 애플리케이션 계층의 프로토콜은 여러가지가 있으나 대표적인것은, HTTP, SMTP, FTP 등이 있다.
OSI 7 Layer 가 주는 이점
잘 생각해보면 우리가 깊게 생각하지 않고, 단순한 프로젝트를 진행할때 1 ~ 4 계층을 생각해본적이 있는가? 아마도 대부분 없을 것이다. OSI 7 Layer 의 계층들은 각각 Top-Down, 혹은 Bottom-Up 되면서 상위 또는 하위 계층으로 갈수록 신경써야 할 관심사가 줄어든다. 즉, 각자 관심사 분리가 잘되어있다는 뜻이다. 그래서 우리는 1 ~ 4계층을 생각하지 않고 코드를 작성할 수 있게 된다.
참고
https://osi-model.com/session-layer/