[Network] 프로토콜, TCP/IP, OSI 7계층

2023. 3. 12. 21:30CS/Network

 

IT엔지니어를 위한 네트워크 입문을 공부하고 정리한 내용입니다.

 


1. 프로토콜

 

프로토콜은 인터넷상에서 데이터를 주고받기 위한 규약이다.

 

데이터를 송수신하는 방식과 데이터의 형식 등을 명시한다.

 

최근에는 복잡하고 산재되어 있던 여러 가지 프로토콜이 이더넷-TCP/IP 기반 프로토콜들로 뭉치고 있다.

 

  • 물리적 측면 : 데이터 전송 매체, 신호 규약, 회선 규격 등. → 이더넷이 널리 사용됨.
  • 논리적 측면 : 장치들끼리 통신하기 위한 프로토콜. → TCP/IP가 널리 사용됨.

 

TCP/IP는 프로토콜이라긴보단 프로토콜 스택에 해당한다.

 

함께 사용되는 프로토콜들의 집합을 뜻한다.

 

 


2. OSI 7계층

 

현재는 대부분의 프로토콜이 TCP/IP 프로토콜 스택 기반으로 한다.

 

 

하지만 여전히 OSI 7 계층은 네트워크 동작을 나눠 이해하고 개발하는데 도움이 된다.

 

과거 통신용 규약이 표준화되지 않았던 시절 서로 간의 호환성이 나빴다.

 

이를 해결하고자 국제 표준화 기구(ISO)에서 개발했다.

 

총 7계층 구성으로 구성되어 있다.

 

  • 1 ~ 4 계층 : 데이터 플로 계층 / 하위 계층
  • 5 ~ 7 계층 : 애플리케이션 계층/상위 계층

 

계층별 PDU(Protocol Data Unit)

 

 


1 계층(피지컬 계층)

 

물리적 연결과 관련된 정보를 정의한다.

 

전기 신호를 그대로 잘 전달하는 것이 목적이다.

 

전기 신호가 들어오면 재생성하여 내보낸다.

 

주소의 개념이 없어서 전기 신호가 들어온 포트를 제외하고 모든 포트에 재생성한 전기 신호를 전송한다.

 

 

트랜시버

 


2 계층(데이터 링크 계층)

 

전기 신호를 우리가 알아볼 수 있는 데이터의 형태로 처리한다.

 

주소 정보를 정의하고 정확한 주소로 통신하는 것이 목적이다. (MAC 주소라고 한다.)

 

1 계층과 달리 2 계층은 출발지와 도착지 주소를 확인하고 자신이 처리해야 하는지 확인한 후에 데이터를 처리한다.

 

전기 신호를 모아서 데이터 형태로 처리하므로 데이터에 대한 에러를 탐지하고 고치는 역할을 수행하기도 한다.

 

이더넷 기반 네트워크 2 계층에서는 에러를 탐지하는 역할만 수행한다. (← 과거에 비해서 네트워크 환경이 개선됨)

 

주소를 정의함에 따라서 여러 명과 동시에 통신할 수 있고 여러 명이 망을 공유한다.

 

통신하고자 할 때 공유하고 있는 망을 사용할 수 있는지 확인하는 작업을 수행해야 한다.

 

이를 플로 컨트롤(flow control)이라고 한다.

 

 


3 계층(네트워크 계층)

 

IP 주소와 같은 논리적인 주소가 정의됩니다.

 

2 계층의 물리적 주소인 MAC와 더불어 데이터 통신을 위해서 사용됩니다.

 

또한 조금 더 복잡하고 멀리 위치한 목적지로 찾아갈 수 있는 경로 지정 능력이 있다.

 

 


4 계층(트랜스포트 계층)

 

하위 계층인 1, 2, 3 계층은 신호와 데이터가 올바른 위치로 보내고 받는 것에 초점을 둔다.

 

하지만 4 계층은 실제 해당 데이터들이 정상적으로 잘 보내지도록 확인하는 역할을 수행한다.

 

패킷이 유실되거나 순서가 바뀐 경우에 4 계층에서 해결한다.

 

패킷을 보내는 순서 Sequence Number와 받은 순서 Acknowledgement Number을 사용한다.

 

또한 포트 번호를 사용해서 데이터가 오고 갈 상위 애플리케이션을 구분합니다.

 

 


5 계층(세션 계층)

 

양 끝단의 응용 프로세스가 연결을 성립하도록 돕고 연결이 안정적으로 유지되도록 관리하고 작업이 완료되면 연결을 끊는다.

 

에러로 중단된 통신에 대한 에러 복구와 재전송도 수행한다.

 


6 계층(프레젠테이션 계층)

 

표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 돕기 위해서 하나의 통일된 구문 형식으로 변환, 번역한다.

 

MIME 인코딩, 암호화, 압축, 코드 변환과 같은 동작이 여기에 해당된다.

 


7 계층(애플리케이션 계층)

 

애플리케이션 프로세스를 정의, 서비스한다.

 

대표적인 프로토콜로 FTP, SMTP, HTTP, TELNET이 있다.

 


3. TCP/IP

 

TCP/IP는 프로토콜이라기 보단 프로토콜 스택에 해당한다.

 

함께 사용되는 프로토콜들의 집합을 뜻한다.

 

 

 

출처 : https://fiberbit.com.tw/tcpip-model-vs-osi-model/

 


4. 인캡슐레이션과 디캡슐레이션

 

현대의 네트워크는 대부분 패킷 기반 네트워크로 하나의 통신이 회선 전체를 점유하지 않고 동시에 여러 단말이 통신할 수 있다.

 

데이터를 패킷으로 쪼개고 네트워크를 이용해 목적지로 보내고 받는 쪽에서는 이를 다시 큰 데이터 형태로 결합해 사용한다.

 

애플리케이션에서 생성한 데이터를 데이터 플로 계층(1~4 계층)으로 내려보내면서 데이터를 쪼개고 네트워크 전송을 위한 정보를 헤더에 붙인다.

 

이 과정을 인캡슐레이션이라고 한다. (Encapsulation)

 

아래는 네트워크를 통해서 단말에서 단말로 데이트를 전송하는 과정이다.

 

 

출처 : https://slideplayer.com/slide/14026373/

 

받는 쪽에서는 디캡슐레이션(Decapsulation)을 수행한다.

 

2 계층에서 2계층 헤더를 확인하고 MAC 주소를 확인하고 자신에게 온 패킷인지 확인한다.

 

확인한 자신에게 온 패킷이 맞다면 헤더는 제거하고 나머지 정보를 상위 계층으로 전달한다.

 

3 계층에서는 IP주소를 확인해 자신에게 온 패킷인지 확인한다.

 

확인한 자신에게 온 패킷이 맞다면 헤더는 제거하고 나머지 정보를 상위 계층으로 전달한다.

 

4 계층에서는 데이터를 올바른 상위 애플리케이션의 포트로 전달한다.

 

상위 계층 → 하위 계층, 하위 계층 → 상위 계층의 과정을 거쳐서 데이터가 전달된다.

 


가. 상위 프로토콜 지시자

 

각 계층의 헤더에 두 가지 정보는 반드시 포함

  • 현재 계층에서 정의하는 정보
  • 상위 프로토콜 지시자

 

필요한 이유.

 

디캡슐레이션의 경우 인캡슐레이션과는 달리 별다른 지정이 없으면 어떤 상위 프로토콜로 전달할지 알 수 없다.

 

동작하는 계층보다 한 계층 위의 정보가 제공할 필요하다.