티스토리 뷰

프로토콜

기존에는 네트워크를 이루는 다양한 프로토콜이 존재했다. 따라서 어떤 프로토콜을 사용해서 통신을 할지 정하고 어느 협회에서 만든 프로토콜이냐에 따라 성능/구조상의 차이도 많았다.

하지만 현재에는 이러한 산재된 프로토콜 기술들이 이더넷 - TCP/IP 기반의 프로토콜 스택으로 변경되고 있다.

 

물리적 측면에서 이더넷이, 논리적 측면에서 TCP/IP 프로토콜 스택이 널리 사용된다.

 

이전에는 네트워킹, 컴퓨팅 환경이 매우 열약하였으므로 최대한 효율적으로 통신하기 위해 0과 1로 이뤄진 2진 수 비트 기반의 프로토콜이 만들어졌다. 하지만 현재에는 그렇지 않으므로 애플리케이션 레벨의 프로토콜은 비트 기반이 아닌 문자 기반의 프로토콜을 많이 사용하고 있다. 예를들어 HTTP, SMTP, STOMP 등을 들 수 있다.

 

OSI 7계층

과거 통신용 규약이 표준화 되지 않아 호환되지 않는 시스템이나 애플리케이션이 많았고 통신이 어려웠다. 이를 하나의 규약으로 통합하려는 노력으로 OSI 7 Layer가 만들어지게 되었다. 하지만 OSI 7 layer는 네트워크 모델을 이해하는데 사용되고 현재 대부분의 프로토콜은 TCP/IP 프로토콜 스택 기반이다.

 

OSI 7 Layer

  • 7. Application Layer
  • 6. Presentation Layer
  • 5. Session Layer
  • 4. Transport Layer
  • 3. Network Layer
  • 2. Data Link Layer
  • 1. Physical Layer

 

OSI 7 계층은 두가지로 나눌 수 있다.

  • 5 ~ 7 layer : 애플리케이션 계층, 상위 계층
  • 1 ~ 4 layer : 데이터 플로 계층, 하위 계층

애플리케이션 계층

  • 데이터를 잘 표현하는 역활

데이터 플로 계층

  • 데이터를 상대방에게 잘 전달하는 역활

 

TCP/IP 프로토콜 스택

현대 네트워크 대부분 TCP/IP와 이더넷으로 이뤄져 있다.

  • Application layer / Transport layer / Internet Layer / Network Access Layer
  • OSI의 Application, Presentation, Session layer를 Application layer 하나로 취급한다.
  • Network Layer는 Internet Layer (IP layer)로, Data Link Layer와 Physical Layer를 Network AccessLayer로 취급한다. 

 

7계층 : Application Layer

유저에게 서비스를 제공하는 역활을 한다. 이곳에서 상대 유저에게 전달할 "Message"를 생성한다. Message는 email, FTP, file, web page등 다양한 것이 올 수 있다.

 

수많은 프로토콜이 존재하는데 대표적으로 FTP, SMTP, HTTP, TELENT 등이 있다.

 

6계층 : Presentation Layer

변환, 압축, 암호화 등의 역활을한다. 표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 돕기 위해 하나의 통일된 구문 형식으로 변환 시킨다.

 

이메일의 문자열을 비트로 / 비트르 문자열로 바꾸는 행위 등이 있다.

 

5계층 : Session Layer

양 끝단의 통신 응용 프로세스 간 연결을 성립하도록 도와주고 연결이 안정적으로 동기화되어 유지되도록 관리한다. 이후 작업이 종료되면 연결을 종료하는 역활도 한다.

흔히 말하는 세션을 관리하는 것이 주요 역활이다. 동영상 stream의 영상 frame과 음성의 동기화 작업 등을 한다.

 

4계층 : Transport Layer

1, 2, 3 계층은 신호와 데이터를 올바른 위치로 보내고 실제 신호를 잘 만들어 보내는데 집중하는 반면, 4계층은 해당 데이터들이 정상적으로 잘 보내지도록 확인하는 역활을 한다.

process to process로 전체 메세지의 전달을 책임진다. 즉 특정 IP 주소로만 전달하는게 아니므로 해당 호스트의 프로세스까지 전달하기 위한 주소 체계가 필요하다. (프로세스를 구분하기 위한 주소 : Port)

 

단위 : Segments

  • 주소 체계가 있다. (포트번호, Port)
  • 상위 데이터를 하위 데이터로 보내기 위해 쪼개는 Segmentation 작업/ 쪼개진 하위 데이터를 하나의 상위 데이터로 합치는 reassembly 작업을 한다. 데이터를 쪼갤 때 네트워크에서 한번에 보낼 수 있는 크기인 MTU를 확인한다.
  • 전송과정에서 패킷이 유실되거나 손실될 수 있는데 이를 바로 잡기 위한 역활을 한다. 따라서 패킷의 헤더에 Sequence Number, ACK 번호를 붙이게 된다.
  • 패킷의 손상을 확인하는 Error Control, 수신측의 혼잡도를 제어하는 Flow Control, 네트워크의 혼잡도를 제어하는 Congestion Control 역활을 한다.
  • 4계층 장비 : 로드 밸런서, 방화벽

 

3계층 : Network Layer

IP주소와 같은 논리적인 주소가 정의된다. IP 주소는 MAC 주소와 다르게 사용자가 환경에 맞게 변경해 사용할 수 있고 네트워크 주소 부분과 호스트 주소 부분으로 나뉜다.

수많은 네트워크 (라우터)를 거쳐서 Host to Host로 패킷을 전달하는 역활을한다. 라우터는 3계층까지만 있는 장비로 라우터에서 다음 라우터까지 전달하고 이를 반복하여 원하는 목적지까지 전달한다.

 

단위 : Packets

  • 주소 체계가 있다. (논리주소, IP)
  • 라우터는 3계층 장비로 IP 주소를 사용해서 최적의 경로를 찾아주고 (라우팅) / 해당경로로 패킷을 전송하는 (포워딩) 역활을 한다.
  • 3계층 장비 : 라우터 (Router)

 

2 계층 : Data Link Layer

1계층에서 전달받은 전기신호를 잘 모아서 우리가 알아볼 수 있는 데이터 형태로 처리한다. 주소 정보를 정의하고 정확한 주소로 통신이 되도록 하는데 초점이 맞춰져 있다.

Bits -> Frames / Frames -> Bits로 변환한다.

 

단위 : Frames

  • 주소 체계가 있다. (물리주소, MAC)
  • 데이터에서 출발지와 도착지 주소 (MAC Adr)를 확인하고 자신의 NIC (랜카드)를 확인해서 자신의 MAC 주소가 맞는지 확인한다.
    • 맞으면 데이터를 처리하기 위해 메모리에 적재하고, 다르면 폐기한다.
  • 주소가 있다는 말은 한명이랑만 통신하는게 아니라 여러 명과 통신할 수 있다는 말로, 무작정 통신하지 않고 수신측이 받을 수 있는지 확인하는 Flow Control을 한다.
  • 2계층 장비 : NIC (네트워크 인터페이스 카드), 스위치 (Switch)

 

1 계층 : Physical Layer

물리 계층으로 네트워크와 물리적 연결과 관련된 정보를 정의한다. 실제 전기 신호를 전달하는 매체에 초점이 맞춰져 있다.

 

단위 : Bits

  • 주소 체계가 없다.
  • 1계층 장비는 주소 개념이 없다. 전기 신호가 들어온 포트를 제외한 연결된 모든 포트에 간은 전기 신호를 내보낸다.
  • 1계층 장비 : 허브, 리피터, 케이블, 커넥터 등

 

인캡슐레이션, 디캡슐레이션

상위 계층에서 하위 계층으로 가는것을 Encapsulation, 하위에서 상위로 가는것을 Decapsulation이라고 한다. 헤더가 추가되거나 벗겨지기 때문이다.

 

PDU 헤더

헤더에는 계층마다 다양한 정보가 들어가는데 핵심이 되는 두가지 규칙이 있다.

  • 현재 계층에서 정의하는 정보
  • 상위 프로토콜 지시자

현재 계층에서 정의하는 정보는 예를들어 4계층의 패킷의 순서와 빠진 패킷의 여부를 점검하기 위해 Sequence Number, Ack 등을 담고 프로세스로 전달하기 위한 Source Port, Destination Port 가 들어간다. 또한 Flow Control을 위한 Window Size등이 있다.

 

이렇게 각 계층별 특성에 맞는 정보가 들어간다.

 

상위프로토콜 지시자는 왜 필요할까?

  • Encapsulation 하는 과정에는 사실 필요가 없다. 하지만 Decapsulation 하는 과정에서 상위 layer의 어느 프로토콜로 전달해야하는지 모르기 때문에 Encapsulation 과정에서 넣어주게 된다.
  • 3계층에서 만든 패킷을 4계층으로 전달할 때 TCP로 전달할지 UDP로 전달할지 정해줘야 하는 것. (이는 상위 계층에서도 마찬가지)
반응형
Comments
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday