ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Web] OSI 7계층 vs TCP/IP 4계층
    Environment(개발환경)/Web 2021. 4. 14. 03:09
    반응형

    오늘 면접을 본 회사에서, 가장 기본적인 개념을 물어보았다. 웹페이지의 도메인을 엔터했을 때, 이것이 브라우저까지 보여지는 일련의 과정.

    나는 브라우저 렌더링 절차에 관해서만 설명하였고, 그 외의 부분은 딥한 설명을 하지 못하였다.

     

    또 다른 회사에서는, OSI 7계층과 TCP/IP 4계층에 대한 비교를 질문했었다.

    이러한 기본적인 개념들을 면접복기의 의미에서 포스팅할 필요성이 있어 이 글을 적게 되었다.


    🌐 OSI 7계층

    OSI(Open System Interconnection) 7계층은 국제표준화기구(ISO)에서 개발한 모델로, 네트워크 프로토콜 디자인과 데이터 통신을 계층으로 나눠 표준화한 것이다.

    이렇게 계층을 나눈 이유는, 통신이 일어나는 과정을 단계별로 서술할 수 있으며, 특정 계층에서 문제가 발생할 시 해당 계층만 핸들하면 되기 때문이다.

    우리가 이메일을 보낸다고 가정하면, 처음 응용계층에서 헤더를 붙여 하위 계층으로 내려준다.

    표현계층은 응용계층에서 내려준 헤더와 이메일 데이터를 하나의 데이터로 간주해서 자신의 헤더에 붙인다. 이를 Encapsulation 이라 한다.

    이런 식으로 물리계층까지 내려와서 그 때부터 0,1의 이진 비트플로우로 전송되는 것이다.

     

    반대로, 받은 수신자는 거꾸로 물리계층부터 시작해서 헤더의 정보를 확인하고 떼어낸다. 그러면서 상위 계층으로 데이터를 전달한다.

    이 과정을 Decapsulation 이라고 하며, 이렇게 구현된 데이터가 우리 눈 앞에 보여지게 될 것이다.

     

    * 계층 레벨순으로 작성했지만, Encapsulation 절차 이해를 위해 7 => 1 순으로 읽을 것을 권장한다!

     

    - OSI 7계층 구성

    1. 물리 계층(Physical Layer)

    • 말 그대로 하드웨어 전송 기술로 이루어져있다.  전기적(기계적) 신호를 주고받는 계층이며, 통신 케이블로 데이터가 전송된다.
    • 사용되는 통신 단위는 비트(bit)로, 0 또는 1로 나타낸다.
    • 여기서는 단지 데이터만 전달하지, 전송하는 데이터의 종류나 오류를 제어하지 않는다.
    • 대표적인 장치로 통신 케이블, 리피터, 허브 등이 있다.

     

    2. 데이터 링크 계층(DataLink Layer)

    • 물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보전달을 수행한다.
    • 여기서 데이터 전송은 Point-To-Point 의 신뢰성을 보장한다.
    • 또한, 기기의 MAC 주소(무선 LAN 내장기기의 개별적으로 부여되는 단말번호) 를 기반으로 통신한다.
    • 이 계층에서 데이터의 단위를 프레임(Frame) 이라고 칭한다.
    • 이더넷, 투 포인트 프로토콜(HDLC, ADCCP), 근거리 네트워크 프로토콜(LLC, ALOHA) 등이 해당된다.

     

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

    • 전송 데이터가 목적지까지 최적의 경로로 전송되는 데이터의 라우팅(Routing)을 담당하는 계층이다.
    • 주소(IP)를 정하고, 경로(Route)를 선택해서 데이터를 전달하는 핵심 계층이다.
    • 여기선 데이터 단위를 패킷(Packet)이라고 칭한다.
    • 대표적인 장비로 라우터, (라우팅 기능이 있는) 스위치가 해당되며, IP 주소가 활용되는 계층이다

    4. 전송 계층(Transport Layer)

    • 양 끝단(End to End)의 사용자들이 데이터를 통신하도록 신뢰성을 확보하는 계층이자, 통신이 활성화되는 계층이다.
    • 데이터를 전송하며 송도를 맞추고, 오류를 검출하여 복구하고, 이를 반복하여 중복검사하며 신뢰성을 확보하여 상위 계층에서 유효성과 효율성 고려를 하지 않도록 해준다.
    • 대표적으로 TCP, UDP 같은 프로토콜이 적용되는 계층이다.
    • TCP : 신뢰성있는 통신 보장(오류제어, 흐름제어 등). 데이터 전송을 보장하는 연결성 프로토콜로, 동기화(SYN 패킷), 확인(ACK 패킷)을 3번 진행하는 3-way handshaking 방식으로 상호연결을 설정한다. 전송단위는 Segment 라고 칭한다.
    • UDP : 비연결성 프로토콜로, 데이터를 빠르게 전달하는 데 초점을 둔다. 전송만 하면 종료되므로 오버헤드가 적으며, 신뢰성보단 스트리밍같이 연속적인 특성을 갖는 서비스에 주로 이용. 전송단위는 Datagram 이라고 칭한다.
    • 여기서 데이터 전송을 위해 Port 번호가 활용된다.

     

    5. 세션 계층(Session Layer)

    • 네트워크상 논리적인 연결을 관리하고 지속시켜주는 계층이다. 데이터를 만들어내는 영역이라고 생각할 수 있다.
    • 이를 위해 세션(통신장치 간의 반영구적 연결상태 다이얼로그)을 만들고 유지하며, 유휴, 종류, 재시작 등의 기능도 포함되어있다.
    • 이 세션은 특히 TCP/IP 기반으로 만들어지며, 통신하는 사용자들을 동기화하고 오류복구를 진행한다.

     

    6. 표현 계층(Presentation Layer)

    데이터를 어떻게 표현할 지 정하는 역할의 계층이다. 크게 3가지 기능을 가진다.

    • 송신자에서 온 데이터를 해석하기 위한 응용 계층 데이터 부호화, 변화
    • 수신자에서 데이터의 압축을 풀 수 있는 방식으로 된 데이터 압축
    • 데이터의 암호화, 복호화

    MIME(파일변환) 인코딩이나 암호화 등 데이터 표현 차이를 구현하며, 이는 응용계층에서 데이터 구분을 용이하게 한다.

    EBCDIC 인코딩 파일이 ASCII 인코딩 파일로 변경되거나, 데이터가 텍스트인지, 그림인지(GIF, JPG 등) 구분하는 사례가 해당된다.

     

    7. 응용 계층(Application Layer)

    • 사용자와 가장 가까운 계층으로 응용 서비스나 프로세스가 바로 이 계층에서 동작한다.
    • 사용자를 위한 UI 인터페이스 소프트웨어, 입출력 부분 등을 담당한다.
    • HTTP, FTP 같은 통신 프로토콜도 여기에 속한다.

     

    🌐 TCP/IP 4계층

    그림으로만 봐도 TCP/IP 4계층 모델은 OSI 7계층이 좀 더 논리적으로 병합하여 축약된 것으로 알 수 있다.

    즉, OSI 7계층이 네트워크 전송의 데이터 표준을 정립했다면, TCP/IP 4계층은 이를 실제로 사용하는 인터넷 표준인 셈이다.

     

    TCP/IP는 2개의 계층으로 구분한다.

    • TCP(상위계층) : 메세지나 파일을 작은 패킷으로 나누거나 재조립하여 송수신에 반영하는 일을 담당
    • IP(하위계층) : 각 패킷의 주소 부분들을 처리하여 패킷들이 목적지로 정확히 송수신되도록 기능함

    * 마찬가지로, Encapsulation 절차 이해를 위해 4 => 1 순으로 읽을 것을 권장한다!

     

    - TCP/IP 4계층 구성

    1. 네트워크 인터페이스 계층 (Network Interface or Network Access Layer)

    • OSI 1,2계층에 해당. TCP/IP 패킷을 네트워크 매체로 송수신하는 과정을 담당한다.
    • 데이터 단위는 프레임(패킷들의), 전송 주소는 MAC 주소를 참조한다.
    • 물리적인 네트워크 통신을 정의하며, 흐름 제어(Flow Control)는 Header(MAC)에서 수행한다.
    • 에러검출과 패킷의 프레임화 역할을 담당하며, 에러 제어(Error Control)는 Tailer(CRC)에서 수행한다.

     

    2. 인터넷 계층(Internet Layer)

    • OSI 3계층에 해당하며, Addressing, Packaging, Routing 기능을 제공한다. 
    • 데이터 단위는 패킷(세그먼트로부터), 전송 주소는 IP 주소를 참조한다.
    • 논리적 주소인 IP를 이용한 노드간 전송과 라우팅 기능을 처리하며, 네트워크상 목적지까지 연결성을 제공한다.
    • 패킷Segment를 목적지에 전송하기 위해 시작&목적지의 논리주소를 붙인 단위이다.
    • 핵심 프로토콜은 IP, ARP, ICMP, IGMP 등이 있다.

     

    3. 전송 계층(Transport Layer)

    • OSI 3,4계층에 해당하며, 통신 노드 간의 연결제어 및 자료의 송수신을 담당한다.
    • 데이터 단위는 세그먼트(실질적인 데이터 전송단위), 전송 주소는 Port 를 참조한다.
    • 애플리케이션 계층의 세션데이터그램 통신 서비스를 제공한다.
    • TCP, UDP가 핵심 프로토콜이다. TCP, UDP에 대한 구분을 하고 데이터에 대한 제어 정보가 포함된다.
    • Segment(세그먼트)는 전송을 위해 데이터를 일정 크기로 나누며, 발신, 수신, 포트주소, 오류검출코드가 첨부된다.

     

    4. 응용 프로그램 계층(Application Layer)

    • OSI 5,6,7계층에 해당하며, 다른 계층의 서비스에 접근할 수 있는 응용 프로그램 서비스를 제공한다.
    • 데이터 단위는 Data/Message 자체이다.
    • 사용자가 소프트웨어 응용 프로그램을 사용하는 가장 가까운 계층이며, 이 인터페이스를 제공한다.
    • 응용 프로그램 간의 데이터 통신을 위해 사용하는 프로토콜을 정의한다. (HTTP, FTP, SSH, Telnet 등)

     

    - TCP/IP 4계층이 사용되는 이유?

    우선, 아무래도 간결함이 큰 차이인 것 같다. 그렇기에 구분이 모호한 전송-세션-표현 등을 그룹화한 이점이 있다.

    (반대로, SSL과 같은 HTTPS 통신을 설명하려면 OSI 7계층이 좀 더 유리할 수 있다.)

    또한, TCP/IP 프로토콜이 OSI 모델보다 먼저 개발되었기에, OSI 7계층이 이를 완벽하게 반영하진 않을거라 추측된다.

     

    그리고, TCP/IP는 실제 인터넷 통신을 반영하기에 현실적이며, 인터넷 개발 이후 계속 표준화되어 신뢰성이 우수하다.

    반면, OSI 모델은 계층을 정확히 구분한 표준이긴 하나 실질적으로 적용되는 예시가 적어 신뢰성이 보장되지 못한다.


    면접도 일종의 경험치라 생각을 했지만, 생각보다 많은(신입면접에 물어보니만큼 기본적인) 개념들이 요구된다 느꼈다.

    일부 면접때 칭찬을 받으면 자만해왔던 나에게, 좋은 감명이자 유의미한 자극을 준 감사한 기회들이었다!

     

    이해가 안되는 부분도 많을 뿐더러, OSI 7계층의 각 부분을 이해하려면 책 한권이 필요할 정도라는 말이 있더라..

    지금은 간단하게 포스팅했지만, 추후 추가소스로 보완하면서 오늘 받은 질문들(IP주소와 도메인의 차이, 웹페이지 로드절차) 등에 대해서도 고민하고 정리도록 하겠다.

     

     

    [출처]

     

    - DevOwen 님의 블로그 : devowen.com/344  

    - 개발자 인터뷰 블로그 :  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

     

    반응형
Designed by Tistory.