Chapter 2. The OSI Model and the TCP/IP Protocol Suite

Jun Heo·2023년 3월 10일

TCP&IP Protocol Suite

목록 보기
1/1
post-thumbnail

2.1 Protocol Layers

  • 마리아와 앤, 두 개의 엔티티가 있고 커뮤니테이션을 원한다
  • 마리아와 앤이 사용하는 언어는 다르지만 만나서 커뮤니케이션을 할 수 있는 사인(프로토콜)이 존재한다
  • 복잡하지 않은 커뮤니케이션 방법
  • 마리아와 앤이 만날 수 없는 상황이 됐을 때, 커뮤니케이션은 복잡해진다
  • 각 언어를 번역기를 통해 코드로 만들고, 그 코드를 편지로 전달
  • 커뮤니케이션이 단순하지 않을 땐, 커뮤니케이션 과정을 여러 레이어로 나누게 된다
  • 각 레이어는 커뮤니케이션을 위한 프로토콜이 존재

2.2 The OSI Model

  • ISO(International Standards Organization)
    • 1947년에 설립된 전세계적인 국제 표준화 기구
  • open system
    • 서로 다른 두 시스템이 아키텍처에 상관없이 통신할 수 있게 해주는 포로토콜의 집합
  • OSI(Open Systems Interconnection) model
    - 네트워크 통신의 모든 부분을 다루는 ISO 표준
    - 1970년대 후반에 처음 소개
    - 서로 다른 두 시스템이 하드웨어, 소프트웨어의 변경없이 원활하게 통신할 수 있게 하는 것이 목적
    - 모델 자체는 프로토콜이 아니다
    - OSI 스택에 맞춰 프로토콜을 만드는 것을 의도

    - 7개의 레이어로 이루어진 프레임워크
    - 각 레이어는 네트워크 상의 정보 전달 프로세스 중 한 부분을 정의한다

Layered Architecture

  • 디바이스 A에서 B로 레이어를 거치며 메시지를 전달
  • 중간 노드에선 1, 2, 3 레이어만 거쳐간다
  • 데이터 전달 과정을 관련된 네트워크 기능들끼리 레이어로 나눴다
  • 각 레이어의 기능은 다른 레이어와 구별된다
  • 레이어는 바로 위의 레이어에게 서비스를 제공하고, 바로 아래의 레이어의 서비스를 이용한다
  • 다른 시스템의 x번째 레이어는 오직 다른 시스템의 x번째 레이어와 커뮤니케이션한다
  • 레이어끼리 커뮤니케이션하는 규칙과 방법 = 프로토콜

Layer-to-Layer Communication

  • 메시지를 보내면 레이어 7에서 레이어 1로 내려온다
  • 레이어 1에서 전체 패키지는 전송할 수 있는 형태로 변환된다
  • 메시지를 받으면 레이어 1에서 레이어 7로 올라간다
  • Interfaces between Layers
    • 인접한 레이어 사이의 데이터 이동이 가능한 이유는 인터페이스
    • 인터페이스는 레이어가 제공해야할 정보와 서비스를 정의
    • 레이어가 무슨 서비스를 제공하는지 알고있으면, 구체적인 구현은 주변 레이어의 변경없이 수정 가능
  • Organization of the Layers
    • 7개의 레이어는 세 개의 서브그룹으로 묶어서 생각할 수 있다
    • 레이어 1, 2, 3 : 네트워크 지원
      • 디바이스 사이 데이터 이동의 물리적인 부분을 처리
    • 레이어 5, 6, 7 : 유저 지원
      • 관련없는 소프트웨어 시스템 사이의 상호 운용성 제공
    • 레이어 4 : 위 두 개의 서브그룹을 연결
      • 아래 서브그룹에서 전송한 것이 위 서브그룹이 사용할 수 있는 것을 보장
  • 위쪽은 거의 소프트웨어로 구현, 아래쪽은 하드웨어와 소프트웨어의 조합, 레이어 1은 거의 하드웨어
  • 프로세스는 레이어 7에서 시작해서 아래 레이어로 순차적으로 내려간다
  • 각 레이어에서 데이터 유닛에 헤더 추가
  • 레이어 2에선 트레일러가 추가될 수 있다
  • 레이어 1에 데이터가 전달되면 전기적 신호로 변환 후 물리적 링크로 전달
  • 레이어 1에 전기적 신호가 도착하면 디지털 신호로 변환
  • 데이터는 레이어를 올라가면서 전달
  • 헤더와 트레일러를 붙였던 레이어에 도착하면 그것을 제거 후 그 레이어가 해야할 일을 수행
  • 레이어 7에 메시지가 도착하면 애플리케이션이 사용 가능한 형태

Encapsulation

  • 위의 레이어에서 내려온 패킷 전체를 캡슐화한 후 밑의 레이어에 전달
  • 레이어 N의 패킷은 레이어 N+1의 패킷을 포함

Layers in the OSI Model

  • Physical Layer
    • 물리 매체 사이의 비트 스트림 전달을 수행
  • Data Link Layer
    • network layer로부터 받은 비트를 프레임으로 만든다
    • hop과 hop 사이의 신뢰성 있는 연결 책임
    • 두 시스템 사이의 패킷 전달
  • Network Layer
    • 여러 네트워크를 거쳐 패킷을 최초 출발지에서 최종 목적지로 전달하는 것을 책임
    • 두 시스템이 같은 링크로 연결 → network layer가 필요하지 않다
    • 두 시스템이 다른 네트워크에 존재한다 → network layer가 필요하다
  • Transport Layer
    • 프로세스와 프로세스 사이의 전체 메시지 전달을 책임
    • 메시지의 신뢰성을 보장하기 위해 순서 확인과 에러 컨트롤, 흐름 제어 등을 수행
  • Session Layer
    • 네트워크 통신 컨트롤러
    • 시스템 사이의 상호작용 세션을 연결, 유지, 동기화
  • Presentation Layer
    • 인코딩의 상호 운용성, 암호화, 압축 제공
  • Application Layer
    - 유저가 네트워크에 접속할 수 있게 해준다
    - 유저 인터페이스 제공
    - 메일, 파일 전송, 데이터베이스 관리 등의 네트워크 서비스 지원


2.3 TCP/IP PROTOCOL SUITE

  • TCP/IP protocol suite이 OSI model보다 먼저 등장 → 레이어가 정확하게 매치되지 않는다
  • 초기에는 4개의 레이어로 구성됐지만 현재는 5개의 레이어로 구성


Comparison between OSI and TCP/IP Protocol Suite

  • TCP/IP Protocol suite에는 session, presentation 레이어가 없다 → application 레이어에 세 개의 레이어를 섞었다
  • session, presentation 레이어가 없는 이유
    - TCP/IP의 transport layer에 하나의 프로토콜이 더 추가됐는데 그것의 기능이 session layer의 기능과 겹친다
    - application 레이어의 소프트웨어는 session과 presentation의 기능을 포함하여 개발 가능

Layers in the TCP/IP Protocol Suite

  • 링크 : 컴퓨터들이 서로 통신할 수 있도록 연결된 네트워크
  • 다른 링크들은 라우터나 스위치로 연결될 수 있다
  • 위 그림은 6개의 링크, 4개의 라우터로 구성된 인터넷

Physical Layer

  • TCP/IP는 physical layer를 위한 어떤 프로토콜도 정의하지 않는다 → 모든 프로토콜 지원
  • 두 개의 홉 또는 노드 사이의 비트 전달을 담당
  • 통신 단위는 하나의 비트
  • 두 노드 사이의 연결이 성립되면 비트 스트림이 둘 사이에 흐른다
  • 노드가 n개의 링크로 연결되면, n개의 physical-layer protocol이 필요 → 각 링크에 맞는 프로토콜로 비트를 전송

  • data link layer에 대해서도 어떤 프로토콜도 정의돼 있지 않다 → 모든 프로토콜 지원
  • physical layer와 마찬가지로 두 개의 홉 또는 노드 사이를 담당
  • 통신 단위는 프레임
  • network layer로부터 받은 데이터를 헤더, 트레일러와 함께 캡슐화 → 프레임
  • 헤더는 프레임의 출발지와 목적지를 포함
    • 출발지 : 응답, 일부 프로토콜의 요구를 승인을 위해 필요
    • 목적지 : 여러 개의 노드가 링크로 연결돼 있기 때문에 필요
  • 링크에 따라 프로토콜이 다르거나 다른 포맷의 프레임 요구할 수 있다 → 프레임을 받으면 다른 링크로 보낼 때 새로운 프레임을 만들어서 보낸다 → 각 링크의 프레임은 다를 수 있다
  • 두 노드 사이의 data link를 통한 통신은 논리적 → 물리적으로 프레임이 움직이진 않는다 → data link 입장에서는 두 노드 사이의 프레임을 직접 보낸다고 생각

Network Layer

  • TCP/IP에선 network layer에 Internet Protocol(IP)를 제공한다
  • IP는 데이터그램이라는 패킷으로 데이터를 전송
  • 데이터그램은 여러 라우터들을 거칠 수 있고 순서가 바뀌거나 중복될 수 있다
  • IP는 경로를 추적하지 않고 목적지에 도착한 데이터그램에 대해 신경쓰지 않는다
  • data link, physical layer는 node to node 통신이지만 network layer는 end to end 통신 → 컴퓨터 A에서 출발한 데이터그램 = 컴퓨터 B에 도착한 데이터그램
  • 라우터의 network layer는 가장 좋은 경로를 찾기 위해 패킷의 출발지와 목적지를 확인할 수 있지만 패킷의 내용은 수정 불가
  • 논리적 통신이 이루어진다 → network layer 입장에선 데이터그램을 직접 보내고 받는다고 생각, 실제론 데이터의 물리적 이동은 physical layer에서 이루어진다

Transport Layer

  • network layer는 모든 노드가 사용하지만 transport layer는 두 개의 end computer만 사용
  • network layer는 각각의 데이터그램 전송을 책임지고 transport layer는 전체 메시지 전송을 책임
  • transport layer가 책임지는 전체 메시지 = 세그먼트, 유저 데이터그램, 패킷
  • 세그먼트는 거의 없거나 10개 정도의 데이터그램으로 구성
  • 세그먼트는 데이터그램으로 쪼개지고 각각의 데이터그램은 network layer로 전송
  • 데이터그램마다 다른 경로를 가지므로 순서가 바뀌어 도착하거나 중간에 잃어버릴 수 있다 → transport layer는 모든 데이터그램이 도착할 때 까지 기다리고 올바르게 조합하여 세그먼트로 만든다
  • transport layer 또한 논리적 통신이므로 이 레이어는 서로 세그먼트를 전달하여 통신한다고 생각, 실제론 physical layer에서 비트를 전달해 통신
  • User Datagram Protocol(UDP)과 Transmission Control Protocol(TCP)을 사용
  • 최근 Stream Control Transmission Protocol(SCTP) 등장

Application Layer

  • TCP/IP의 application layer는 OSI model의 session, presentation, application의 조합과 같다
  • 유저가 인터넷 서비스에 액세스할 수 있도록 해준다
  • 많은 프로토콜이 존재 : 전자메일, 파일전송, WWW 등
  • end to end 통신 → 컴퓨터 A의 메시지는 변경되지 않고 컴퓨터 B로 전달

2.4 ADDRESSING

  • TCP/IP 프로토콜을 사용하는 인터넷은 네 단계의 주소 사용
  • 각 주소는 TCP/IP의 하나의 레이어에 대응

Physical Addresses

  • 링크 주소라고도 한다
  • LAN 또는 WAN에 의해 정의된 노드의 주소
  • data link layer가 사용하는 프레임에 포함
  • 링크에 대한 권한 존재
  • 네트워크에 따라 크기와 형식이 다양
  • Ethernet은 network interface card(NIC)의 6-byte (48-bit) 물리 주소 사용
  • 물리 주소가 10인 노드가 물리 주소 87인 노드에게 프레임을 전송
  • 두 노드는 하나의 링크(LAN)으로 연결돼 있다
  • 프레임의 헤더에 물리 주소 존재
  • 대부분의 data link protocols의 헤더에 목적지 주소가 출발지 주소보다 먼저 온다
  • 프레임이 LAN에 퍼지면, 물리 주소가 87이 아닌 컴퓨터는 목적지를 확인한 후 프레임을 버린다
  • 물리 주소가 87인 컴퓨터는 프레임의 물리 주소가 자신의 물리 주소와 같은 것을 확인한 후 헤더와 트레일러를 버리고 데이터를 위쪽 레이어에 전달
  • 대부분의 LAN에서 48-bit 물리 주소 사용 → 12개의 hexadecimal
  • 각 byte는 콜론으로 구분

Logical Addresses

  • 물리적으로 연결된 네트워크으로부터 독립적으로 통신을 원한다 → 속해 있는 물리적 네트워크와 상관없는 호스트 고유의 주소가 필요 → 논리 주소 등장
  • 현재 인터넷의 논리 주소는 32-bit
  • 인터넷에 연결된 고유한 호스트 정의 가능 → 인터넷에서 공식적으로 접근 가능한 호스트들은 같은 IP를 가질 수 없다
  • 세 개의 LAN을 연결하는 두 라우터로 구성된 인터넷
  • 각 디바이스는 논리 주소와 물리 주소를 소유
  • 대부분의 프로토콜에서 논리 주소의 출발지가 목적지보다 먼저 온다 (물리 주소와 반대)
  • network layer로 패킷을 전달하기 전에 다음 홉의 물리 주소를 알아야한다
    1. 라우팅 테이블로 다음 홉의 논리 주소를 알아낸다
    2. Addressing Resolution Protocol(ARP)로 다음 홉의 논리 주소에 대응되는 물리 주소를 알아낸다
    3. 물리 주소를 data link layer에 전달하면 물리 주소의 출발지와 목적지를 포함하여 캡슐화
  • 프레임을 LAN 1의 모든 노드에 전파 → 라우터 1을 제외한 모든 노드는 프레임을 버린다
  • 라우터 1이 패킷의 논리 주소를 확인 → 목적지 주소가 자신과 다른 것을 확인 → 다음 홉의 물리 주소를 알아내고 data link로 전달
  • 물리 주소는 홉을 지날 때 마다 바뀌지만 논리 주소는 변하지 않는다

Port Addresses

  • 현대 컴퓨터는 동시에 많은 프로세스가 돌아간다 → 데이터가 목적지 호스트에 도착해도 끝이 아니라 프로세스를 찾아서 데이터를 전달해야 한다 → 프로세스를 찾을 수 있는 주소 필요 → TCP/IP에선 16-bits의 포트 주소 사용
  • sender의 포트 주소가 a인 프로세스는 receiver의 포트 주소가 j인 프로세스에게 데이터를 전달
  • 두 컴퓨터가 같은 프로그램을 사용하더라도 포트 주소가 다를 수 있다
  • transport layer는 application layer에서 전달된 데이터에 출발지, 목적지 포트 주소를 추가하여 캡슐화
  • data link의 헤더는 hop을 지날 때 마다 바뀌기 때문에 그림에서 H2로 표현
  • 논리 주소와 포트 주소는 변하지 않는다
  • 포트 주소는 16-bit 주소로, 하나의 십진수 표현

Application-Specific Addresses

  • 어떤 앱들은 특정 앱에 맞춰 디자인된 유저 친화적인 주소를 사용
  • e-mail, Universal Resource Locator(URL) 등등

0개의 댓글