«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Recent Posts
Today
Total
관리 메뉴

on&on

[Network] OSI 7계층 모델과 TCP/IP 모델 본문

Network

[Network] OSI 7계층 모델과 TCP/IP 모델

다느 2023. 6. 18. 09:54

목차
OSI 7계층 모델
OSI(Open System Interconnection) 7 Layer
OSI 7 계층의 흐름
TCP/IP 모델
TCP/IP 모델의 계층 구조
TCP/IP 모델의 구현 환경
TCP/IP와 OSI 7 계층의 차이점


📍 OSI 7계층 모델

OSI(Open System Interconnection) 7 Layer

네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것

 

 

사용하는 이유?

  • 통신이 일어나는 과정이 단계별로 파악할 수 있다.
  • 흐름을 한눈에 알아보기 쉽고, 사람들이 이해하기 쉽다.
  • 7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건들이지 않고도 이상이 생긴 단계만 고칠 수 있다.
  1. 물리 계층 (Physical Layer)
  • 노드(호스트)를 전송매체와 연결하기 위한 인터페이스 규칙과 전송매체의 특성을 다룸
  • 물리적/전기적/기계적 특성을 이용하여 통신 케이블로 데이터를 전송
  • 통신 단위는 비트이며, 1과 0으로 나타내어진다.
  • 단지 데이터를 전달만 할 뿐, 데이터가 무엇이고 어떤 에러가 있는지 전혀 신경쓰지 않는다.
  • ex) 동축케이블 규격, 신호의 전압, 허브, 케이블 등 (하드웨어로 구현)
  1. 데이터 링크 계층 (DataLink Layer)
  • 물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행 할 수 있도록 도와준다.
  • 오류 제어(Error Control) : 전송 오류 감지 → 재전송 기능
  • 흐름 제어(Flow Control)
  • ex) 데이터를 송수신할 때 한 쪽에서 처리가 바로 안되는 경우

→ 즉각즉각 처리가 안되는 경우에 대비에 버퍼를 두는 것

→ 버퍼가 꽉 차서 보관할 수 있는 곳이 없을 때 등장하는 것이 흐름 제어 (더 이상 받을 수 없으니 송신 측에 멈추라는 신호를 보내는 것)

→ 데이터 송신을 잠시 멈추어었다가 여유가 생겼을 때 재개

  1. 네트워크 계층 (Network Layer)
  • 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능 (라우팅), 주소 부여 및 경로 설정 (주소가 명확하게 명시되어야 전송이 가능하기 때문에 그러한 역할을 하는 것)
  • 호스트와 호스트 사이의 올바른 전송 경로를 선택 (전달 경로는 정적(사전에 미리 정해진 경로), 동적(네트워크 상황 등을 고려하여 판단)로 설정 가능)
  • 라우터(Router, 길을 찾아가는 역할)
  • 혼잡 제어 포함 (망이 너무 혼잡하니 잠시 멈춰달라고 할 수 있는 역할)
  1. 전송 계층 (Transport Layer)
  • 통신을 활성화하기 위한 계층. 송수신 프로세스 사이 연결 기능을 지원
  • 종단간(end-to-end) 연결 기능 지원 (유선 전화가 있었을 때, 특정 인물과 통화하고 싶을 때 여러 사람을 거쳐 그 사람의 행방을 물어 전화를 연결했을 때 종단간 연결이 일어났다고 볼 수 있음)
  • 오류검출 및 복구와 흐름제어, 중복검사 기능 수행
  • 종단간 통신을 다루는 최하위 계층으로 종단간 신뢰성 있고 효율적인 데이터를 전송 (단대단 통신 기능, 프로세스를 구별할 수 있는 주소 개념 필요 (포트번호))
  • 안전한 데이터 전송 (오류 제어, 흐름 제어), 전송 속도
💡 데이터 링크 계층과 전송 계층의 오류 제어, 흐름 제어 차이?

- 데이터 링크 계층은 물리적으로 1:1 연결된 호스트 사이의 전송. 직접 묶여있는 호스트-노드 또는 노드-노드 사이에서 오류 제어, 흐름 제어
- 전송 계층은 논리적으로 1:1 연결된 송신과 수신 호스트 사이의 전송. End to End(종단간) 호스트로, 양 끝에 있는 호스트 사이에서 오류 제어, 흐름 제어

 

  1. 세션 계층 (Session Layer)
  • 데이터가 통신하기 위한 논리적인 연결 (대화 개념을 지원, 통신을 하기 위한 대문과 같은 개념)
  • 하지만, 4계층에서도 연결을 맺고 종료할 수 있기 때문에 어느 계층에서 통신이 끊어졌나 판단하기는 한계가 있다. 그러므로 세션 계층은 4계층과 무관하게 응용 프로그램 관점에서 봐야 한다.
  • 세션 설정, 유지, 종료, 전송 중단 시 복구, 동기화(synchronization) 등의 기능

 

  1. 표현 계층 (Presentation Layer)
  • 데이터 표현이 상이한 응용 프로세스의 독립성을 제공. 데이터의 의미와 표현방법을 처리
  • 코드 간의 번역 (통신 양단에서 서로 이해할 수 있는 표준 방식으로 코딩)을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어 준다.
  • 암호화 및 압축 기능

 

  1. 응용 계층 (Application Layer)
  • 최종 목적지로서 HTTP, FTP, SMTP, POP3, IMAP, Telnet, e-mail 등과 같은 프로토콜이 있다.
  • 통신 패킷들은 프로토콜에 의해 모두 처리되며 우리가 사용하는 브라우저나, 메일 프로그램은 프로토콜을 보다 쉽게 사용하게 해주는 응용프로그램
  • 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행 (관련된 응용 프로세스들 사이의 전환)
  • 네트워크 소프트웨어 UI 부분, 사용자의 입출력(I/O)부분

 

OSI 7 계층의 흐름

 

  • 두 개의 호스트가 각각 7계층으로 구성된 모듈을 수행
  • 송신 호스트의 응용계층에서 하위계층으로 순차적으로 전달되어 물리계층까지 도달
  • 물리계층을 통해 수신 호스트로 데이터가 이동하고 순차적으로 상위 계층으로 전달되어 응용계층까지 도달
  • 송신 측에서 하위 계층으로 이동할 때 각 계층 프로토콜에서 정의한(또는 해석할 수 있는) 헤더(header) 추가 (헤더에 포함되는 내용 : MAC 주소, IP 주소, Port 번호)
  • 수신 측에서 상위 계층으로 이동할 때 순차적으로 헤더 정보를 처리하고 제거

 

📍 TCP/IP 모델

  • 이 계층 모델은 네트워크에서 사용되는 통신 프로토콜의 집합으로 계층들은 프로토콜의 네트워킹 범위에 따라 네 개의 추상화 계층으로 구성된다.
  • 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계 되었다. 예를 들어 전송 계층에서 TCP를 UDP로 변경했다고 해서 인터넷 웹 브라우저를 다시 설치해야 하는 것은 아니듯 유연하게 설계된 것
  • 각 계층을 대표하는 스택이 적혀있는 것이다. (FTP, TCP, UDP 등등)

 

구현환경

사용자 공간

  • 일반적으로 세션계층부터 응용계층까지의 기능은 사용자 프로그램으로 구현

시스템 공간

  • 운영체제 커널(kernel) 내부에 구현
  • 사용자가 TCP, UDP, IP 기능을 이용할 수 있도록 소켓(socket) 인터페이스 제공 (인터넷 접속이 가능한 대부분의 호스트에서 지원)
  • 하위 계층은 LAN 카드(H/W)와 드라이버 루틴으로 동작

계층 구조

  • TCP/UDP : 사용자 데이터를 전송하는 전송 계층 프로토콜
  • IP : 사용자 데이터를 전송하는 네트워크 계층 프로토콜
  • ICMP : 오류 정보를 전송하는 목적, 제어 관련 메시지 전달 역할
  • ARP/RARP : IP 주소와 LAN 카드 인터페이스(즉 하드웨어) 주소를 매핑시켜주는 역할

 

  1. 애플리케이션 계층
  • FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층이며 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층
  1. 전송 계층
  • 송신자와 수신자를 연결하는 통신 서비스를 제공하며 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공하며 애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때의 중계 역할
  • 대표적으로 TCP, UDP가 있다.
  • TCP는 패킷 사이의 순서를 보장하고 연결지향 프로토콜을 사용해서 연결하여 신뢰성을 구축해서 수신 여부를 확인하며 ‘가상회선 패킷 교환 방식’을 사용한다.

가상회선 패킷 교환방식


각 패킷에는 가상회선 식별자가 포함되며 모든 패킷을 전송하면 가상회선이 해제되고 패킷들은 전송된 순서대로 도착하는 방식을 말한다.

그림을 보면 321로 이루어진 패킷이 한 회선을 따라 순서대로 도착하는 것을 볼 수 있다.

 

  • UDP는 순서를 보장하지 않고 수신 여부를 확인하지 않으며 단순히 데이터만 주는 ‘데이터그램 패킷 교환 방식’을 사용한다.

데이터그램 패킷 교환 방식


패킷이 독릭접으로 이동하며 최적의 경로를 선택하여 가는데, 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있으며 도착한 순서가 다를수 있는 방식을 한다.

그림을 보면 321로 이루어진 패킷이 순서와 회선을 다르게 이동하며 순서도 다르게 도착하는 것을 볼 수 있다.

 

TCP 연결 성립 과정

TCP는 신뢰성을 확보할 때 3-way handshake 라는 작업을 진행한다.

 

 

위 그림처럼 클라이언트와 서버가 통신할 때 다음과 같은 세 단계의 과정을 거친다.

 

SYN 단계: 클라이언트는 서버에 클라이언트의 ISN을 담아 SYN을 보낸다. ISN은 새로운 TCP 연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호를 말하며 이는 장치마다 다를 수 있다.

SYN + ACK 단계: 서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN + 1을 보낸다.

ACK 단계: 클라이언트는 서버의 ISN + 1한 값인 승인번호를 담아 ACK를 서버에 보낸다.

이렇게 3-웨이 핸드셰이크 과정 이후 신뢰성이 구축되고 데이터 전송을 시작한다. 참고로 TCP는 이 과정이 있기 때문에 신뢰성이 있는 계층이라고 하며 UDP는 이 과정이 없기 때문에 신뢰성이 없는 계층이라고 한다.

 

TCP 연결 해제 과정

 

 

TCP가 연결을 해제할 때는 4-웨이 핸드셰이크(4-way handshake) 과정이 발생한다.

 

1번: 먼저 클라이언트가 연결을 닫으려고 할 때 FIN으로 설정된 세그먼트를 보낸다. 그리고 클라이언트는 FIN_WAIT_1 상태로 들어가고 서버의 응답을 기다린다.

2번: 서버는 클라이언트로 ACK라는 승인 세그먼트를 보낸다. 그리고 CLOSE_WAIT 상태에 들어간다. 클라이언트가 세그먼트를 받으면 FIN_WAIT_2 상태에 들어간다.

3번: 서버는 ACK를 보내고 일정 시간 이후에 클라이언트에 FIN이라는 세그먼트를 보낸다.

4번: 클라이언트는 TIME_WAIT 상태가 되고 다시 서버로 ACK를 보내서 서버는 CLOSED 상태가 된다. 이후 클라이언트는 어느 정도의 시간을 대기한 후 연결이 닫히고 클라이언트와 서버의 모든 자원의 연결이 해제된다.

 

  1. 인터넷 계층

인터넷(internet) 계층은 장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층이다. IP, ARP, ICMP 등이 있으며 패킷을 수신해야 할 상대의 주소를 지정하여 데이터를 전달한다. 상대방이 제대로 받았는지에 대해 보장하지 않는 비연결형적인 특징을 가지고 있다.

 

ARP(Address Resolution Protocol)

  • 데이터 링크 계층 프로토콜을 이용하여 데이터를 전송하려면 네트워크 주소(IP 주소)를 데이터링크 계층 주소로 변환하기 위한 목적으로 사용
  • 특정 호스트에게 보내는 것이 아닌 전체가 다 들을 수 있게 보내는 방송(Broadcast) 기반 프로토콜

  • S가 A와 통신하고자 하는 경우 : A와 S는 동일한 망(같은 데이터링크 계층)에 존재
    • S가 IP주소를 가지고 ‘이 IP 주소 누구니? 이 주소에 해당하는 시스템은 나한테 데이터 링크 계층 주소 알려줘! ’ 하고 방송 기반으로 보낸다. 이 때 모든 노드들이 해당 방송을 다 들을 수 있다.
    • 이 때 A가 자신의 주소와 일치함을 확인하고 자신의 주소를 보내준다. S는 IP주소만 알고있었지만 A가 보내준 데이터 링크 계층 주소를 알아내고 그 주소를 통해 서로 간의 통신이 가능해진다.
  • S가 B와 통신하고자 하는 경우 : 다른 망에 존재하기 때문에 데이터 링크 계층은 Bridge 또는 Router를 통해 통신한다.
    • S가 B 주소를 가지고 해당하는 IP주소를 실어 전체에게 보낸다. 근데 동일한 망에 동일한 IP주소를 가진 노드가 존재하지 않는다. 여기서 방송 기반으로 보낸다고 했지만 이는 동일한 망까지만 적용된다. 그래서 이 경우에는 브릿지 또는 라우터가 응답을 하여 자신의 데이터 링크 계층 주소를 보낸다.
      라우터는 S에게 받은 주소를 해당 망에 보내고 해당하는 주소를 가진 B와 통신을 하게 된다.

RARP(Reverse Address Resolution Protocol)

 

ARP와 동일하지만 Reverse가 붙어서 역ARP라고 이해하면 된다.

데이터 링크 계층 주소를 가지고 이에 해당하는 IP주소는 무엇인지 물어보는 것

  • 일반적으로 IP주소를 가지고 통신하는 것이 일반적인데 왜 IP 주소를 물어보냐?
    • 호스트의 경우 일반적으로 설정된 자신의 IP 주소를 디스크에 저장한다. 일반적으로 우리가 사용하는 PC에는 RARP가 필요하지 않다.
    • 하지만, RARP가 필요한 장비가 있다. 즉 디스크가 없는 장치들을 의미한다.
    • X-터미널 같은 경우 디스크가 없다.
      • X-터미널이란 ?
        • 고해상도 모니터, 메모리를 갖추고 있으나 파일/폴더를 보관하는 하드디스크가 없다. 그렇기 때문에 파일서버를 공동으로 이용하는 것.
        • 워크스테이션유닉스 기반의 운영체계에서 실행되는 서버
    • 부팅 시 LAN 카드에서 MAC 주소(데이터링크 계층 주소, 하드웨어 주소 등)를 알아낸 다음, RARP로 자신의 IP 주소 문의
    • 특정 호스트(서버)에서 질의된 MAC에 해당된 IP 주소 반환

ICMP(Internet Control Message Protocol)

 

IP 프로토콜에 캡슐화되어 있으나 상위 프로토콜로 보지 않고 동일 네트워크 계층에 있는 것으로 간주한다고 약속한 것

 

주요 Control message

  • echo request/reply
    • (ping 서비스) 상대방이 있는지 확인하는 것. 하지만 해킹당할 위험성이 높아서 중요 서비스들은 사용하지 않는다.
  • destination unreachable (목적지에 도달할 수 없다.)
    • 없는 주소, 사라진 호스트에 대한 요청이 왔을 때 이러한 메시지를 주면 송신 측에서 받을 수 없다는 것을 파악할 수 있다.
  • source quench (obsoleted)
  • redirect message
  • alternate host address
  • router solicitation
  • router advertisement
  • time exceeded
  • timestamp
  • parameter problem
  • traceroute
    • 실제 진행하는 경로를 따라가는 메시지

 

  1. 링크 계층
  • 링크 계층은 전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달하며 장치 간에 신호를 주고받는 ‘규칙’을 정하는 계층이다. 참고로 네트워크 접근 계층이라고도 한다.
  • 이를 물리 계층과 데이터 링크 계층으로 나누기도 하는데 물리 계층은 무선 LAN과 유선 LAN을 통해 0과 1로 이루어진 데이터를 보내는 계층을 말하며, 데이터 링크 계층은 ‘이더넷 프레임’을 통해 에러 확인, 흐름 제어, 접근 제어를 담당하는 계층을 말한다.

 

📍 TCP/IP와 OSI 7 계층의 차이점

  • OSI 모델은 7계층, TCP/IP는 4계층
  • OSI 모델은 ISO에서 개발했다.
  • TCP/IP는 미정부기관 DARPA에서 개발을 시작하고, ARPANET을 통해 오늘날의 인터넷이 탄생했다.
  • OSI 모델에서 전송 계층은 연결 지향적이다.
  • TCP/IP 모델의 계층은 비연결적이다.
  • OSI는 네트워크 계층을 사용하여 라우팅 표준 및 프로토콜을 정의한다.
  • TCP/IP 는 인터넷 계층만 사용한다.
  • OSI는 개방형 시스템 상호 연결을 나타낸다.
  • TCP는 전송 제어 프로토콜을 나타낸다.
Comments