개발자의 길

[Network] OSI 7 Layer 정리

토아드 2023. 1. 30. 19:17
반응형

1. Physical Layer (물리 계층)
- 모든 데이터는 1과 0으로 이루어져 있다
- 0과 1만 전송할 수 있다면 컴퓨터 간의 통신은 가능한데, 현대에서는 이를 전기/광 신호를 통해서 전달한다. 일정 수준 이상의 신호는 1, 일정 수준 이하의 신호는 0이 될 것이다.
- 현실세계의 신호는 완벽하지 않다. 완벽히 똑같은 간격/세기로 신호를 주고받지 못하기 때문에, 신호를 받아서 이것이 0인지 1인지 전달하는 역할이 필요하다
- 위에서 현실세계의 신호를 0과 1, 즉 디지털 신호로 변환해주는 계층이 Physical Layer 이다.
- 전기적 신호를 디지털 신호로 바꾸어 주는 하드웨어 모듈들이 Physical Layer 를 담당한다.

2. Data-link Layer (데이터 링크 계층)
- 물리 계층의 도움을 얻어 컴퓨터 간 통신이 가능해 졌다고 하자. 위 방법으로 1:1 통신은 가능할 수도 있겠지만, 여러대의 컴퓨터와 통신을 하기에는 역부족이다. 만약 여러대의 컴퓨터가 하나의 구리선에 연결되어 있고, 이 구리선으로부터 오는 전기 신호를 해석하고자 할 때 만약에 동시에 여러대의 컴퓨터가 신호를 보낸다면 어떻게 해석할 것인가? 서로다른 두 신호가 연속되어서 온다면 어디서 어디까지가 두 신호인지 어떻게 구분할 것인가?내가 보내고자 하는 신호가 내가 원하는 상대방에게만 전달하려면 어떻게 할 것인가? (물리적인 전기선으로 연결되어 있기 때문에 신호를 보내면 그 선에 연결된 모든 컴퓨터에 신호가 갈 것이다)
- 위 문제 중에서 '서로다른 두 신호가 연속되어서 온다면 어디서 어디까지가 두 신호인지 어떻게 구분할 것인가' 를 해결해 주는 것이 바로 데이터 링크 계층이다.
- 위에서 '어디서 어디까지가 내가 보내고자 하는 신호인지'를 구분해 주기 위해 원본 데이터를 특정한 패턴의 데이터로 감싸는 작업을 해 주는데, 이를 Framing 이라고 하며, 이 작업은 랜카드에서 수행해 준다. 이렇게 감싸진 하나의 단위를 'Frame' 이라고 한다.

3. Network Layer (네트워크 계층)
- 데이터 링크 계층에서 해결하지 못한 과제가 하나 있다. 바로 내가 보내고자 하는 데이터가 내가 원하는 곳까지 제대로 보내려면 어떻게 해야 할지 ? 이다.
- 여기서 우리는 보내고자 하는 곳을 식별하기 위해서 주소값을 데이터에 붙이는데, 이때 붙이는 주소가 바로 IP Address 이다.
- Frame 에 IP 주소값을 붙인 데이터를 'Packet' 이라고 한다.
- 컴퓨터는 '스위치' 라고 불리는 모듈에게 연결되어 있고, 각 스위치들은 또 다른 컴퓨터와 스위치들과 연결되어 있는데, 이 스위치라는 녀석이 IP Address 를 확인하여 올바른 주소로 보내는 역할을 한다.
- IP 주소를 이용해서 올바른 목적지를 찾고, 올바른 라우터나 컴퓨터로 전달하는 것 : Routing + Forwarding

4. Transport Layer (전송계층)
- 위 과정을 통해 컴퓨터와 컴퓨터 사이의 데이터 전달이 되었다고 하자, 그럼 이제 해당 컴퓨터 간의 어떤 프로세스(프로그램) 에 데이터를 전달해 줄지 알아야 한다. 전송 계층은 이 프로세스 간 통신을 연결하는 로직을 담당한다.

- 위에서 IP 주소를 통해서 어떤 컴퓨터에게 전달 할 지는 알 수 있지만, 어떤 프로세스에게 데이터를 전달할지 알기 위해서는 추가적인 정보가 필요한데 이 정보를 port number 라고 불리는 숫자를 통해서 전달하게 된다.

- 그리고 전송계층은 통신에서 신뢰성 있는 데이터 전송을 보장하게 되는데, 혹시모를 전송 에러나 데이터 유실등으로부터 전송을 보장해주기 위한 데이터 전송 절차같은 것도 명시하는데, 대표적으로 TCP/UDP 프로토콜이 있다.

5. Session Layer (세션 계층)
- 프로세스 간의 세션(논리적 연결) 을 유지하는 역할을 한다.
- 통신이 양방향인지, 단방향인지 등의 정보를 유지하고, 연결되어 있는 두 개체 간의 연결이 갑자기 끊어지지 않도록 관리해주는 역할을 한다.

6. Presentation Layer (표현 계층)
- 이 계층에서는 데이터를 눈으로 이해할 수 있도록 변환하는 역할을 한다
- 문자열 인코딩, 디코딩 과정을 통해서 원하는 인코딩 방식으로 전환을 하거나, 암호화/복호화, 데이터 압축/해제 등의 역할을 이 계층에서 수행한다.

7. Application Layer (응용 계층)
- 메일 전송, 웹사이트 접속, 파일 전송 등을 담당하는 프로토콜을 담당하는 역할을 한다.

- 각 프로토콜 마다 데이터를 어떤 형태로 어떤 순서로 전달할지 등을 정의해 두고, 이를 토대로 전송을 수행하는 역할을 한다.
- HTTP(웹사이트 접속), FTP(파일 송수신), SMTP(메일 전송), POP3(메일 수신) 등의 프로토콜이 있다.

 

 

추가로 참고할 만한 자료들
https://velog.io/@gndan4/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%9D%91%EC%9A%A9-%EA%B3%84%EC%B8%B5

 

최근에는 7계층으로 나누기보다 5계층으로 나누고 기존의 계층들을 어느정도 통합하는 추세인데, 해당 내용에 관해서는 별도 포스팅으로 정리하겠다.

 

반응형