본문 바로가기
CS/Network

OSI 7계층과 TCP/IP 4계층

by Carnival7 2021. 12. 28.

OSI 7계층

OSI 7계층이란, 통신 접속에서 완료까지의 과정을 네트워크 통신을 구성하는 요소들에 따라 7단계로 정의한 국제 통신 표준 규약이다.

이를 통해 계층별 기능과 통신 과정을 단계별로 파악할 수 있어, 특정한 곳에 이상이 생기면 그 단계만 수정할 수 있기 때문에 편리하다.

  • OSI(Open Systems Interconnection Reference Model)란
    • 이 모델은 프로토콜을 기능별로 나눈 것이다.
    • 각 계층은 하위 계층의 기능만을 이용하고, 상위 계층에게 기능을 제공한다.
    • '프로토콜 스택' 혹은 '스택'은 이러한 계층들로 구성되는 프로토콜 시스템이 구현된 시스템을 가리키는데, 프로토콜 스택은 하드웨어나 소프트웨어 혹은 둘의 혼합으로 구현될 수 있다.
    • 일반적으로 하위 계층들은 하드웨어로, 상위 계층들은 소프트웨어로 구현된다.
  1. 물리 계층(Physical layer)
    • 신호로 변환하여 전송하는 계층
    • 네트워크의 기본 네트워크 하드웨어 전송 기술을 이룬다.
    • 통신 케이블을 통해 전기 신호를 사용하여 비트 스트림을 전송하는 계층.( 통신 케이블, 허브 )
    • 네트워크의 높은 수준의 기능의 논리 데이터 구조를 기초로 하는 필수 계층이다.
    • 전송 단위는 Bit이다.
  2. 데이터 링크 계층(Data link layer)
    • 물리적 매체에 패킷 데이터를 실어 보내는 계층 - 환경에 맞는 다양한 통신 프로토콜 지원
    • 물리적인 네트워크 사이에 Data 전송 담당. MAC 주소를 가지고 통신함 ( 브릿지, 스위치 )
    • 포인트 투 포인트(Point to Point) 간 신뢰성 있는 전송을 보장하기 위한 계층으로 CRC 기반의 오류 제어와 흐름 제어가 필요하다.
    • 주소 값은 물리적으로 할당 받는데, 이는 네트워크 카드가 만들어질 때부터 맥 주소(MAC address)가 정해져 있다는 뜻이다.
    • 데이터 링크 계층의 가장 잘 알려진 예는 이더넷이다.
    • 데이터 전송 단위는 Frame이다.
  3. 네트워크 계층(Network layer)
    • 네트워크를 논리적으로 구분하고 연결하는 계층 - 논리적 주소 사용
    • 전송 데이터를 목적지까지 경로를 찾아 전달. 주소(IP)를 정하고, 경로(Route)를 선택하고, 데이터(패킷)을 전달. ( 라우팅 )
    • 여러 개의 노드를 거칠 때마다 경로를 찾아주는 역할을 하는 계층으로 다양한 길이의 데이터를 네트워크들을 통해 전달하고, 그 과정에서 전송 계층이 요구하는 서비스 품질(QoS)을 제공하기 위한 기능적, 절차적 수단을 제공한다.
    • 네트워크 계층은 라우팅, 흐름 제어, 세그멘테이션(segmentation/desegmentation), 오류 제어, 인터네트워킹(Internetworking) 등을 수행한다.
    • 논리적인 주소 구조(IP), 곧 네트워크 관리자가 직접 주소를 할당하는 구조를 가지며, 계층적(hierarchical)이다.
    • 데이터 전송 단위는 Datagram(Packet)이다.
  4. 전송 계층(Transport layer)
    • 서비스를 구분하고 데이터의 전송 방식을 담당하는 계층 (TCP/UDP)
    • 데이터를 전송하고 전송 속도를 조절하며 오류를 정정하는 계층. TCP, UDP 프로토콜을 통해 통신을 활성화 한다. 포트를 열어두고, 프로그램들이 전송을 할 수 있도록 제공해준다. 이를 통해 양 끝 단의 사용자들이 데이터를 주고 받을 수 있다.
    • 양 끝단(End to end)의 사용자들이 신뢰성있는 데이터를 주고 받을 수 있도록 해 주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해준다.
    • 시퀀스 넘버 기반의 오류 제어 방식을 사용한다.
    • 전송 계층은 특정 연결의 유효성을 제어하고, 일부 프로토콜은 상태 개념이 있고(stateful), 연결 기반(connection oriented)이다. (이는 전송 계층이 패킷들의 전송이 유효한지 확인하고 전송 실패한 패킷들을 다시 전송한다는 것을 뜻한다.)
    • 가장 잘 알려진 전송 계층의 예는 TCP이다.
    • 데이터 전송 단위는 Segment이다.
  5. 세션 계층(Session layer)
    • 응용 프로그램 간의 연결을 지원해주는 계층
    • 통신 시스템 사용자간의 연결을 유지 및 설정함 (API, Socket)
    • 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다.
    • 동시 송수신 방식(duplex), 반이중 방식(half-duplex), 전이중 방식(Full Duplex)의 통신과 함께, 체크 포인팅과 유휴, 종료, 다시 시작 과정 등을 수행한다.
    • 이 계층은 TCP/IP 세션을 만들고 없애는 책임을 진다.
  6. 표현 계층(Presentation layer)
    • 데이터의 변환 작업을 하는 계층
    • 응용 계층으로부터 전달 받거나 전송하는 데이터를 응용 계층에서 이해할 수 있도록 응용 프로그램에 맞춰 인코딩 및 디코딩 등 변환 이뤄짐. 파일 인코딩, 명령어를 포장, 압축, 암호화한다. (JPEG)
    • 코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어 준다.
    • MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어진다.
  7. 응용 계층(Application layer)
    • User Interface 를 제공하는 계층
    • 사용자 또는 어플리케이션이 네트워크에 접근할 수 있도록 지원한다. (HTTP, FTP)
    • 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다.
    • 일반적인 응용 서비스는 관련된 응용 프로세스들 사이의 전환을 제공한다.

☃️ TCP/IP 4계층

IP와 IP Packet : 인터넷 통신의 기본

  • 클라이언트와 서버는 IP 주소를 컴퓨터에 부여하여 이를 이용해 통신한다.
  • IP는 지정한 IP Address에 패킷이라는 통신단위로 데이터를 전달한다.
  • IP 프로토콜이란 호스트에서 호스트까지의 통신, 즉 보내는 컴퓨터에서 받는 컴퓨터까지의 통신을 책임지는 프로토콜입니다.
  • IP 주소는 4개의 숫자로 구성되며 숫자의 크기에 따라 IPv4, IPv6 로 나뉩니다.
  • IP 주소와 도메인을 매칭시키는 시스템은 DNS라고 합니다.

IP Packet

  • IP Packet은 출발지 IP, 도착지 IP와 같은 정보가 포함돼 있다.
  • 패킷 단위로 전송을 하면 노드(컴퓨터)들은 목적지 IP에 도달하기 위해 서로 데이터를 전달한다.
  • 서버에서 데이터를 전송받는다면 클라이언트에게 응답을 해주어야 하며, IP 패킷을 이용해 클라이언트에게 응답을 전달한다.

IP 프로토콜의 한계

  • 비연결성 : 패킷을 받을 대상이 없거나, 서비스 불능 상태여도 패킷을 전송한다.
  • 비신뢰성
    • 중간에 패킷이 사라질 수 있다.
    • 패킷의 순서를 보장할 수 없다.

TCP

  • IP 프로토콜의 한계를 네트워크 계층을 통해 보완한다.
  • 네트워크 계층은 OSI 7계층과 TCP/IP 4계층으로 나눌 수 있다.
  • IP 프로토콜보다 더 높은 계층에 TCP 프로토콜이 존재하기 때문에 IP 프로토콜의 한계를 보완할 수 있다.
  • 소켓은 프로그램이 네트워크에서 데이터를 송수신할 수 있도록, 네트워크 환경에 연결할 수 있게 만들어진 연결부가 네트워크 소켓이다.
  • 예시
    • HTTP 메시지가 생성되면 Socket 라이브러리를 통해 전달된다.
    • IP 패킷을 생성하기 전 TCP 세그먼트를 생성한다.
    • 생성된 TCP/IP 패킷은 LAN 카드와 같은 물리적 계층을 지나기 위해 이더넷 프레임워크에 포함돼 서버로 전송된다.

TCP 프로토콜은 패킷을 목적지까지 어떻게 안정적으로 보낼 것인가에 대해 정의한 프로토콜입니다.
IP로 컴퓨터의 위치를 찾은 다음, 해당 프로토콜을 사용하여 패킷을 전송합니다.
TCP는 연결 확립과 보내진 패킷의 확인, 순서화, 전달 중 손상된 패킷을 복구하는 책임을 집니다.

❄️ L4 응용 계층(Application Layer)

데이타 단위: Data/Message

  • 사용자와 가장 가까운 계층으로 사용자가 소프트웨어 application과 소통할 수 있게 해준다
  • 응용프로그램(application)들이 데이터를 교환하기 위해 사용되는 프로토콜
  • 사용자 응용프로그램 인터페이스를 담당

예시

파일 전송, 이메일, FTP, HTTP, SSH, Telnet, DNS, SMTP 등

❄️ L3 전송 계층(Transport Layer)

데이타 단위: Segment
전송 주소: Port

  • 통신 노드 간의 연결 제어 및 자료 송수신을 담당
  • 애플리케이션 계층의 세션과 데이터그램 통신서비스 제공
  • 세그먼트 (Segment)단위의 데이타 구성
    • 실질적인 데이터 전송을 위해 데이타를 일정 크기로 나눈 것. 발신, 수신, 포트주소, 오류검출코드가 붙게된다

예시

TCP, UDP, RTP, RTCP 등

❄️ L2 인터넷 계층(Internet Layer)

데이타 단위: 패킷
전송 주소: IP

  • 네트워크상 최종 목적지까지 정확하게 연결되도록 연결성을 제공
  • 단말을 구분하기위해 논리적인 주소(Logical Address) IP를 할당
    • 출발지와 목적지의 논리적 주소가 담겨있는 IP datagram이라는 패킷으로 데이타를 변경
    • 데이터 전송을 위한 주소 지정
  • 라우팅(Routing) 기능을 처리
    • 경로 설정
  • 최종 목적지까지 정확하게 연결되도록 연경성 제공
  • 패킷단위의 데이타 구성
    • 세그먼트를 목적지까지 전송하기 위해 시작 주소와 목적지의 논리적 주소를 붙인 단위. 데이타 + IP Header

예시

IP, ARP, ICMP, RARP, OSPF

❄️ L1 네트워크 연결 계층(Network Access Layer/Network Interface Layer)

데이타 단위: 프레임
전송 주소: MAC

  • 물리적으로 데이타가 네트워크를 통해 어떻게 전송되는지를 정의
    • 논리주소(IP주소 등)이 아닌 물리주소(예. MAC주소(Media Access Control Address))을 참조해 장비간 전송
    • MAC주소란 컴퓨터의 하드웨워 주소
  • 기본적으로 에러검출/패킷의 프레임화 담당
  • 프레임(Frame)단위의 데이타 구성
    • 최종적으로 데이타 전송을 하기 전 패킷헤더에 MAC주소와 오류 검출을 위한 부분을 첨부

예시

MAC, LAN, 패킷망 등에 사용되는 것
예) Ethernet, PPP, Token Ring 등

Reference

https://velog.io/@jehjong/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EC%9D%B8%ED%84%B0%EB%B7%B0-TCPIP-4%EA%B3%84%EC%B8%B5

https://underground2.tistory.com/5

https://github.com/carnival77/tech-interview/blob/master/contents/network.md#osi-7%EA%B3%84%EC%B8%B5

'CS > Network' 카테고리의 다른 글

SSL  (0) 2021.12.28
REST,REST API, RESTful  (0) 2021.12.28
HTTP와 HTTPS  (0) 2021.12.28
HTTP 메소드  (0) 2021.12.28
DNS  (0) 2021.12.28