CS

[네트워크] OSI 7계층

나도관 2023. 7. 24. 17:33

회사에서 보여준 애플리케이션 아키텍처를 보니, AWS 의 서비스를 사용하여 인프라가 구성되어 있었다.

아키텍처를 분석하고 올바르게 이해하기 위해서, 네트워크 기초 지식이 반드시 필요했다.

그동안 보긴 했지만 이해하지 못했던 OSI 7계층에 대해서 다시 정리하고, 네트워크 동작 원리에 대해서 이해해보고자 한다.

 

 

OSI 7계층

계층을 나눔으로써 통신이 일어나는 과정을 단계별로 파악할 수 있고, 유사 시에 이상이 생긴 단계만 확인하여 유지보수 할 수 있다. 웹 개발자라면 7단계 중에서 3 - 4 단계를 잘 알아야한다고 한다.

 

 

1단계부터 순차적으로 요청이 발생하여 데이터가 전달되는 과정을 머릿 속에 그려보며 공부했다.

 

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

전기적 신호가 나가는 물리적인 장비
ex) 케이블, 허브

물리 계층에서는 어떤 에러가 있는지 상관 없이 단지 데이터를 전기적인 신호로 변환하여 주고 받는다.

 

 

2계층 - 데이터 링크 계층 (Data Link Layer)

물리 계층에서 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행하도록 도와준다. 통신에서의 오류도 찾아주고 재전송도 진행한다.
ex) 브릿지, 스위치, 이더넷

 

 

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

경로(route)와 주소(IP)를 정하고 패킷을 전달해주는 역할을 한다. 즉, 목적지까지 가장 안전하고 빠르게 데이터를 보내는 기능을 말한다.

 

IP 프로토콜 (Internet Network Protocol) 

지정한 IP 주소로 데이터를 전달하는데, 이때 데이터를 '패킷'이라는 단위로 전달한다.

IP 패킷에서는 출발지 IP, 목적지 IP, 전송 데이터 등이 들어있다. 데이터 전송을 위해 각 노드들은 패킷을 계속 던지며, 최종적으로 목적지 IP에 도달한다.

 

하지만 IP 프로토콜만을 사용하게 되었을 때 한계점이 존재한다.

 

  • 비연결성 - 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다.
  • 비신뢰성 - 중간에 패킷이 유실되거나, 순서대로 오지 않아도 그대로 전송한다.
  • 프로그램 구분 - 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면 구분이 불가능하다.

 

 

따라서, 전송 계층의 TCP 프로토콜과 함께 사용하여 TCP/IP 프로토콜을 사용한다.

 

 

4계층 - 전송 계층(Transport layer)

양 끝단 간 사용자들 간 신뢰성 있는 데이터를 주고 받을 수 있게 역할한다.

 

 

TCP 프로토콜(Transmission Control Protocol)

 

메시지 + IP 데이터 + TCP 데이터를 더하여 패킷을 생성한다.

TCP 데이터에는 출발지 PORT, 도착지 PORT, 순서, 전송제어, 검증정보 등이 포함된다.

 

예를 들어 IP가 경기도 수원시 영통구... 까지 표현한다면 포트는 ~~아파트 ~~동이라고 생각하면 된다.

 

특징은 다음과 같다.

 

  • 연결지향 (3 way handshake)
  • 데이터 전달 보증
  • 순서 보장

 

연결 지향

TCP 프로토콜은 연결이 되었는지 확인하고 최종적으로 메시지를 보낸다.

 

1. 클라이언트에서 접속 요청(SYN)을 보낸다.

2. 서버에서 ACK(승인) 을 보내고, 클라이언트에게도 접속 요청(SYN)을 보낸다.

3. 클라이언트는 승인(ACK) 과 함께 메시지를 전송한다.

 

3단계를 거쳐 클라이언트 - 서버가 서로 신뢰성을 확보하므로 3 way handshake라고 한다.

 

 

데이터 전달 보증

데이터가 유실 되었을 때 확인이 가능하고, 전송되었을 때 Response를 보냄으로써 이상 유무를 확인할 수 있다.

 

 

순서 보장

데이터를 받았을 때 순서가 틀리면, 삭제하고 틀린 패킷부터 다시 전송하도록 한다.

 

이러한 특징들로 인해 TCP 프로토콜을 신뢰할 수 있는 프로토콜이라고 한다.

 

 

UDP 프로토콜

 

기능이 거의 없어 '하얀 도화지'에 비유한다. IP와 거의 유사한데, 포트와 체크섬 정도만 추가한다.

 

UDP는 기능이 없지만, 단순하기 때문에 전송속도가 매우 빠르다는 장점이 있다.

신뢰할 수 없기 때문에 한 번의 패킷 송수신으로 완료되는 서비스에 많이 사용된다.

 

 

5계층 - 세션 계층

세션 설정, 유지, 종료, 전송 중단 시 복구 등의 기능이 있다.
TCP/IP 세션을 만들고 없애는 역할을 한다.

 

 

6계층 - 표현 계층

코드 간의 번역을 담당한다. 즉, 전송하는 데이터의 표현방식을 결정한다.
데이터 변환, 압축, 암호화 등이 이루어진다.
ex) GIF, JPEG, ASCII 등

표현 계층에서는 전달된 데이터를 해석하기 위한 응용계층 데이터의 부호화 변화와 수신자에서 압축을 풀수 있도록 된 데이터 압축, 데이터의 암호화와 복호화 등이 이루어진다.

 

 

7계층 - 응용 계층

HTTP, FTP, SMTP 등의 프로토콜에 해당한다. 
위 계층에서의 통신 패킷들의 최종 목적지로서, 위의 프로토콜에 의해 처리된다.

우리가 평소에 사용하는 응용 서비스나 프로세스가 해당 응용 계층에 해당한다. 하지만 응용 프로그램들이 프로토콜 그 자체라고 생각하면 안되며, HTTP나 SMTP 같은 프로토콜을 사용하기 편리하게 만들어주는 것이라 생각해야한다.

 

 

데이터를 보내는 입장인지 (송신자), 받는 입장인지 (수신자)에 따라서 ISO 7계층의 흐름이 달라진다.