컴퓨터 전공이면 당연히 알고 있어야 될 OSI 7계층. 놀랍게도 나는 컴퓨터 전공이 아닌거 같다(…) 수업시간에 배운지 6년이 지나기도했고, 그 동안 사용할 일도 없다 보니 어쩌면 당연할 수도 있다. 이 내용을 정리해보면서 6년전에 배운 내용을 다시 떠올릴 수 있기를 바란다.
OSI 7계층이란
과거에는 통신 규약이 표준화 되어있지 않고, 벤더마다 다른 프로토콜을 개발했기 때문에 호환되지 않는 시스템이나 애플리케이션이 많았고 통신이 불가능했다. 하지만 최근에는 하나의 규약으로 통합하려는 노력 끝에 OSI 7계층으로 남게 됐다. OSI 7계층이 네트워크 동작을 나누어 이해하기 좋아 주요 레퍼런스 모델로 많이 활용되지만, 현재는 대부분의 프롵콜이 TCP/IP 프로토콜 스택 기반으로 되어있다.
1계층(피지컬 계층)
1계층은 물리 계층으로 물리적 연결과 관련된 정보를 정의한다. 1계층에서는 들어온 전기 신호를 그대로 잘 전달하는 것이 목적이므로 전기 신호가 1계층 장비에 들어오면 이 전기 신호를 재생성하여 내보낸다. 1계층 장비는 주소의 개념이 없으므로 전기 신호가 들어온 포트를 제외하고 모든 포트에 같은 전기 신호를 전송한다.
0과 1의 나열을 아날로그 신호로 바꿔주고 다시 해석하는 것이 피지컬 계층의 역할이고, 컴퓨터에서는 처리가 PHY 칩이라는 하드웨어적 모듈로 구현되어 있다.
2계층(데이터 링크 계층)
2계층에서는 주소 정보를 정의하고 정확한 주소로 통신이 되도록하는데 초점이 맞추어져 있다. 2계층에는 주소 체계가 생기면서 여러 통신이 한번에 이루어지는 것을 구분하기 위한 기능이 주로 정의된다. 여기서 주소 체계에 해당하는 것이 MAC 주소다. 2계층에서 동작하는 네트워크 구성 요소는 네트워크 인터페이스 카드(NIC)와 스위치다. NIC와 스위치는 MAC 주소를 보고 통신해야 할 포트를 지정해 내보내는 능력이 있다.
네트워크 인터페이스 카드 동작 방식
- 전기 신호를 데이터 형태로 만든다.
- 목적지 MAC 주소와 출발지 MAC 주소를 확인한다.
- 네트워크 인터페이스 카드의 MAC 주소를 확인한다.
- 목적지 MAC 주소와 네트워크 인터페이스 카드가 갖고 있는 AMC 주소가 맞으면 데이를 처리하고 다르면 데이터를 폐기한다.
스위치 동작 방식
- 전기 신호를 데이터 형태로 만든다.
- 출발지 MAC 주소가 MAC 주소 테이블에 없으면 기록한다.
- 목적지 MAC 주소가 MAC 주소 테이블에 없으면 Flooding으로 목적지 MAC 정보를 수접하여 기록한다.
- 목적지 MAC 주소가 있으면 해당 포트를 적절히 필터링하고 정확한 포트로 포워딩해준다.
위와 같이 스위치의 적절한 필터링과 포워딩 기능으로 통신이 필요한 포트만 사용하고 네트워크 전체에 불필요한 처리가 감소하여 이더넷 네트워크 효율성이 크게 향상된다.
3계층(네트워크 계층)
3계층에서는 IP 주소라는 논리적인 주소가 정의된다. 데이터 통신을 할 때는 2계층의 MAC 주소와 3계층의 IP 주소를 사용하는데, IP 주소는 사용자가 환경에 맞게 변경될 수 있다. 3계층에서 동작하는 장비는 라우터가 있다. 라우터는 IP 주소의 체계를 통해 목적지에 가기 위한 최적의 경로를 찾아주고 해당 경로로 패킷을 전송하는 역할을 한다.
컴퓨터에서는 운영체제의 커널에 소프트웨어적으로 구현되어 있다.
4계층(트랜스포트 계층)
트랜스포트 계층은 실제로 해당 데이터들이 정상적으로 잘 보내지도록 확인하는 역할을 한다. 패킷을 분할할 때 패킷 헤더에 보내는 순서(시퀀스 번호)와 받는 순서(ACK 번호)를 적어 통신하여 패킷이 유실되면 재전송을 요청할 수 있고 순서가 뒤바뀌더라도 바로잡을 수 있다.
또한, 장치내에 수많은 프로세스를 구분할 수 있도록 포트 번호를 사용해 프로세스 별로 구분을 한다.
4계층에 주로 동작하는 장비로는 로드 밸런서와 방화벽이 있고, 컴퓨터에서는 운영체제의 커널에 소프트웨어적으로 구현되어 있다.
5계층(세션 계층)
양 끝단의 응용 프로세스가 연결을 성립하도록 도와주고 연결이 안정적으로 유지되도록 관리하고 작업 완료 후에느 이 연결을 끊는 역할을 한다.
6계층(프레젠테이션 계층)
표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 돕기 위해 하나의 통일된 문구 형식으로 변환시키는 기능을 수행한다. 시스템의 애플리케이션 계층에서 데이터의 형식상 차이를 다루는 부담을 덜어준다.
MIME 인코딩이나 암호화, 압축, 코드 변환과 같은 동작이 이 계층에서 이루어진다.
7계층(애플리케이션 계층)
애플리케이션 프로세스를 정의하고 애플리케이션 서비스를 수행한다. 네트워크 소프트웨어의 UI 부분이나 사용자 입출력 부분을 정의하는 것이 애플리케이션 계층의 역할이다. 애플리케이션 계층의 프로토콜은 엄청나게 많지만 대표적인 프로토콜로는 FTP, SMTP, HTTP, TELNET 등이 있다.
흔히 말하는 소켓 프로그래밍으로 자신만의 프로토콜을 만들어서 사용하면 애플리케이션 계층이라 할 수 있다. (엄밀히 따지면 TCP/IP 계층의 애플리케이션 계층에 해당한다.)
참고 자료
- IT 엔지니어를 위한 네트워크 입문 (고대성, 이상훈)
- https://jihwan-study.tistory.com/30
- https://www.youtube.com/watch?v=1pfTxp25MA8
댓글남기기