5 minute read

OSI 7계층과 TCP/IP 4계층

OSI 7계층

  • OSI(Open Systems Interconnection) 모델은 네트워크 프로토콜 디자인과 통신을 계층으로 나눈 모델이다.
  • ISO에서 개발하였으며, 컴퓨터 네트워크에서 데이터 송수신 과정을 7계층으로 나누어 설명한다.
  • 각 계층은 수행 기능에 따라 구분되며, 한 계층은 그 계층의 위와 아래 게층과만 연결된다.
  • 암기법 : 소시지 피자를 버리지 말아 주세요(Please-Do-Not-Throw-Sausage-Pizza-Away)
  • 패킷 : 인터넷에서 데이터를 보내기 위한 경로 배정을 효율적으로 하기 위한 데이터의 나뉘어진 단위 조각

1. 물리 계층 (Physical Layer)

  • 전송되는 데이터를 통신 케이블로 비트 단위로 전송하는 계층
  • 데이터 전송 단위: Bit
  • 사용되는 장비: 허브, 리피터, 케이블
  • 물리 계층에서 전송된 데이터의 오류와 흐름을 관리해 안전한 통신을 담당
  • 프레임에 논리적인 주소(MAC 주소)를 부여하고 에러검출. 재전송. 흐름 제어를 수행
  • 데이터 전송 단위: Frame
  • 사용되는 장비: 스위치, 브릿지, 이더넷

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

  • 여러 개의 노드를 거칠 때마다 경로를 찾아주는 역할
  • 전송 계층(Transport Layer)에서 받은 데이터에 대해 최적의 길을 찾아 전달한다.
    • 라우터를 통해 경로를 선택하고, IP주소를 정해 경로에 따라 패킷을 전달한다.
  • 데이터 전송 단위: Packet
  • 사용되는 장비: 라우터

4. 전송 계층 (Transport Layer)

  • 송수신되는 두 시스템 간의 연결을 제어하고, 신뢰성 있는 데이터 전송을 담당한다.
  • 포트 번호와 전송방식을 결정한다.
  • 데이터 전송 단위: Segment
  • 사용되는 프로토콜: TCP, UDP
  • 장비: 게이트웨이

5. 세션 계층 (Session Layer)

  • 지점간의 프로세스 및 통신하는 호스트 간의 연결 유지
  • TCP/IP 세션 체결, 포트번호를 기반으로 통신 세션 구성
  • 메시지 단위, API, 소켓

6. 표현 계층 (Presentation Layer)

  • 응용 계층에서 받은 데이터를 사용자의 목적에 맞게 변환하는 역할
  • 전송하는 데이터의 표현방식을 결정(ex. 데이터변환, 압축, 암호화 등)
  • 파일 인코딩, 명령어 포장.압축.암호화

7. 응용 계층 (Application Layer)

  • OSI 7계층 중 가장 상위 계층
  • 사용자와 직접적으로 상호작용하는 계층으로 최종 목적지
  • 사용자가 특정 어플리케이션과 통신하기 위한 프로토콜을 제공하며, 네트워크의 응용 프로그램과 네트워크 간의 통신을 담당
  • 사용 프로토콜 : HTTP, FTP, SMTP, POP3, IMAP, Telnet
  • 사용자가 직접적으로 상호작용하는 어플리케이션과 프로토콜이 사용되므로, 사용자에게 가장 직접적으로 노출되는 계층

TCP IP 4계층

TCP/IP는 OCI 7계층을 실제로 사용하는 인터넷 표준이다.

  • TCP
    • 상위 계층
    • 메시지나 파일들을 좀 더 작은 패킷으로 나누어 인터넷을 통해 전송
    • 수신된 패킷을 원래 메시지로 재조립하는 일을 담당
  • IP
    • 각 패킷의 주소 부분을 처리하며 패킷이 목적지에 정확하게 도달할 수 있게 한다.

1. 네트워크 접근 계층 (Network Access Layer)

  • OSI 모델의 물리 계층과 데이터 링크 계층에 해당
  • 하드웨어와 물리적인 연결, 전송 기술(이더넷, 와이파이 등)을 다루는 계층
  • 패킷을 프레임으로 변환하고, 논리적인 주소(MAC 주소)를 사용하여 전송

2. 인터넷 계층 (Internet Layer)

  • OSI 모델의 네트워크 계층에 해당
  • 데이터의 전송 경로를 설정하고, IP 주소를 통해 패킷을 전송하는 계층
  • 라우터와 같은 네트워크 장비를 통해 패킷을 전달하며, 패킷을 받은 장비는 다시 패킷을 전달하기 위해 최적의 경로를 탐색하여 전달

3. 전송 계층 (Transport Layer)

  • OSI 모델의 전송 계층에 해당
  • 양 끝단(End-to-End) 간의 신뢰성 있는 데이터 전송을 담당하는 계층
  • TCP와 UDP 프로토콜이 사용되며, TCP는 연결 지향적이고 신뢰성 있는 데이터 전송을 보장하며, UDP는 비연결 지향적이고 빠른 전송을 지원

4. 응용 계층 (Application Layer)

  • OSI 모델의 세션 계층, 표현 계층, 응용 계층에 해당
  • TCP/IP 모델에서는 이러한 계층들을 하나로 통합하여 응용 계층이라고 함
  • 사용자가 직접적으로 상호작용하는 어플리케이션과 통신하기 위한 프로토콜을 제공하며, 네트워크의 응용 프로그램과 네트워크 간의 통신을 담당
  • 다양한 프로토콜이 사용됨 (예: HTTP, FTP, SMTP 등)

두 모델의 차이점

  TCP/IP 모델 OSI 모델
계층 수 4개 7개
명칭 응용(Application), 전송(Transport), 인터넷(Internet), 네트워크 액세스(Network Access) 응용(Application), 표현(Presentation), 세션(Session), 전송(Transport), 네트워크(Network), 데이터 링크(Data Link), 물리(Physical)
특징 인터넷과 같은 실제 네트워크 환경에 적합하며, 경량 프로토콜을 사용하여 대역폭 사용량을 줄일 수 있음. 매우 구체적인 구조와 기능을 가지며, 서로 독립적인 계층으로 설계되어 있어 상호 운용성을 보장함.

TCP/UDP

  TCP UDP
연결 연결 기반 프로토콜 비연결 기반 프로토콜
신뢰성 신뢰성 높음 (데이터 무손실, 순서 보장) 신뢰성 낮음 (데이터 손실, 순서 보장 X)
흐름 제어 수신자의 버퍼 상태에 따라 데이터 전송 속도 조절 흐름 제어 기능이 없음
혼잡 제어 네트워크 혼잡 상황에 따라 데이터 전송 속도 조절 혼잡 제어 기능이 없음
속도 UDP보다 느림 (연결 설정, 순서 확인 등 추가 작업 필요) TCP보다 빠름 (단순한 구조, 추가 작업이 없기 때문)
사용 예시 파일 전송, 이메일, 웹 사이트 브라우징 등 DNS 조회, 동영상 스트리밍, 온라인 게임, IP 스캐닝 등

TCP의 데이터 전송 흐름

UDP의 데이터 전송 흐름

3way-handshake, 4way-handshake

3 Way Handshake

  • TCP 프로토콜에서 연결을 맺기 위해 사용되는 과정으로, 클라이언트와 서버 간에 신뢰성 있는 연결을 맺기 위한 절차
  1. 클라이언트가 서버에게 SYN(Synchronize Sequence Number) 패킷을 보낸다. 이때, 클라이언트는 랜덤한 시퀀스 번호를 생성한다.
  2. 서버는 클라이언트에게 SYN ACK(Synchronize Acknowledgement) 패킷을 보내고, 이전에 받은 클라이언트의 시퀀스 번호에 1을 더한 값을 자신의 초기 시퀀스 번호로 설정한다.
  3. 클라이언트는 ACK(Acknowledgement) 패킷을 보내고, 서버로부터 받은 시퀀스 번호에 1을 더한 값을 자신의 초기 시퀀스 번호로 설정한다. 이제 클라이언트와 서버는 신뢰성 있는 연결을 맺게 되었다.

4 Way Handshake

TCP 프로토콜에서 연결을 종료하기 위해 사용되는 과정으로, 클라이언트와 서버 간에 신뢰성 있는 연결을 끊기 위한 절차이다.

  1. 클라이언트가 서버에게 FIN(Finish) 패킷을 보낸다. 이때, 클라이언트는 더 이상 전송할 데이터가 없음을 알리기 위해 FIN 패킷을 전송한다.
  2. 서버는 FIN 패킷을 받은 후, 클라이언트로부터 모든 데이터를 받았음을 알리기 위해 ACK 패킷을 전송한다. 이후 서버는 CLOSE_WAIT 상태가 된다.
  3. 서버는 더 이상 전송할 데이터가 없음을 알리기 위해 클라이언트로 FIN 패킷을 전송한다.
  4. 클라이언트는 FIN 패킷을 받은 후, 서버로부터 모든 데이터를 받았음을 알리기 위해 ACK 패킷을 전송한다.

흐름제어, 혼잡제어, 오류제어

흐름제어 (Flow Control)

  • 흐름제어는 송신자와 수신자 사이의 데이터 전송 속도차를 해결하기 위해 데이터 전송량을 제어하는 방법이다.
  • 송신측에서 수신측으로 데이터를 계속해서 보내다 보면 수신측의 버퍼가 가득 차서 패킷이 유실될 수 있기 때문에 필요하다.

  • sliding window
    • 수신측에서 윈도우 크기를 정하고 윈도우 크기만큼 확인 응답없이 패킷을 전송하는 방식
    • 송신 버퍼 범위는 수신측의 여유 버퍼 공간을 반영해 동적으로 변경됨
  • stop and wait
    • 패킷을 정상적으로 수신했다는 응답을 받은 후에만 패킷을 보내는 방식

혼잡제어 (Congestion Control)

  • 네트워크의 데이터 전송량이 넘치게 되면 패킷 유실이나 느린 전송 속도 등의 문제가 발생한다.
  • 네트워크의 데이터 전송 속도를 조절하여 네트워크 혼잡을 방지하고 데이터 전송 효율을 향상시키는 기능이다.

  • AIMD(Additive Increase / Multiplicative Decrease)
  • Slow Start

오류제어 (Error Control)

  • 전송 중에 발생하는 에러를 검출하고, 재전송 요청 등의 방법으로 에러를 해결하는 기능이다.
    • 송신 데이터 유실
    • 수신 측 ACK가 유실
  • 대표적으로 패리티 비트, CRC (순환 중복 검사) 등의 방법을 사용한다.

IPv4 VS IPv6

  • 인터넷 프로토콜(IP)의 버전을 나타낸다.
  • 주소 체계와 패킷 형식 등에서 차이가 있다.

IPv4 (Internet Protocol version 4)

  • 32비트로 이루어져 있어 총 4,294,967,296개의 주소를 가질 수 있다.
  • 대부분의 인터넷에서 사용되고 있는 주소 체계
  • 점으로 구분된 10진수 4개의 숫자로 주소를 표현한다.
  • 주소 예시: 192.0.2.1

IPv6 (Internet Protocol version 6)

  • 128비트로 이루어져 있어 총 3.4×10^38개의 주소를 가질 수 있다.
  • 주소의 형태는 16비트씩 8개의 그룹으로 이루어져 있으며, 각 그룹은 콜론(:)으로 구분
  • 주소 예시: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • IPv4보다 주소 개수가 많아 더 많은 장비를 인터넷에 연결할 수 있고, 보안성(IPSec 사용)과 신뢰성 등에서도 더욱 개선되어 있다.

IPv6가 보안성과 신뢰성 등에서 더욱 개선되어 있으며, 주소 부족 문제를 해결할 수 있어 더 많은 장비를 인터넷에 연결할 수 있으나 IPv6가 보급되기 전까지는 IPv4를 계속 사용해야 하며, 두 프로토콜 간에 호환성 문제가 있다.

Leave a comment