Computer Science/네트워크

[네트워크] Protocol Layers

바보1 2023. 4. 7. 03:40

앞의 글을 읽으시면 이해에 도움이 됩니다.

 

 

2023.04.07 - [Computer Science/네트워크] - [네트워크] Types of Packet Delay

 

[네트워크] Types of Packet Delay

앞의 글을 읽으시면 이해에 도움이 됩니다. 2023.03.16 - [Computer Science/네트워크] - [네트워크] Queuing Delays and Packet Loss [네트워크] Queuing Delays and Packet Loss 앞의 글을 읽으시면 이해에 도움이 됩니다. 2

hi-guten-tag.tistory.com


1. Protocol Layers

 

 

  • 인터넷은 수많은 어플리케이션과 프로토콜, 엔트 시스템의 다양한 종류와 패킷 스위치, 그리고 다양한 방식들이 존재합니다.
  • 이러한 복잡한 부품은 과연 어떻게 인터넷 구조를 만들까요?
  • 네트워크는 프로토콜로 구현된 하드웨어와 소프트웨어는 계층 안에 구성되어 있습니다.
  • 각각의 프로토콜은 특정한 하나의 계층에 소속되어 있고, 각각의 계층은 특정한 서비스를 제공합니다.
  • 해당 계층은 특정한 역할을 수행하고, 직접 아래의 계층의 서비스를 사용함으로써 작동됩니다. 즉 인접한 계층과만 통신이 가능합니다.
  • 예를 들면 n번째 계층은 신뢰성 있게 메시지를 보내고 싶어 합니다. 하지만 n-1번째 계층은 신뢰성이 없으므로 n번째 계층은 누락된 메시지를 감지하고, 재전송하는 기능을 추가해야 하는 것처럼 아래의 계층의 서비스를 사용하고, 자신의 프로토콜을 추가하여 보완해야 합니다.
  • 이러한 다양한 계층의 프로토콜을 protocol stack이라고 합니다.
  • 프로토콜 스택은 physical, link, network, transport, application layer로 이루어져 있습니다.
  • 계층으로 구별한 이유는 복잡한 시스템을 계층화시켜놓으면 유지/보수도 쉬워지고, 시스템을 업데이트할 때도 용이하기 때문입니다.
  • 해당 글에서는 간단하게 각 계층에 대해서 설명합니다.
  • [네트워크] 카테고리는 top-down approach 방식으로 네트워크 계층을 하나하나 설명할 예정입니다.

1.1 참조 그림

 

 

 

출처 : Computer Networking 1장. Figure 1.23


2. Application Layer

 

 

  • Application Layer에는 Network Application과 Application Layer Protocol이 상주해 있는 곳입니다.
  • Application Layer은 HTTP, SMTP, FTP와 같은 수많은 프로토콜을 가지고 있습니다.
  • 또한 해당 계층에는 the domain name system(DNS)라는 특별한 프로토콜도 존재합니다.
  • 해당 계층은 엔드 시스템에 걸쳐 분산되어 있으며, 하나의 엔드 시스템은 다른 엔드 시스템과 정보의 패킷을 교환하기 위해 프로토콜을 이용합니다.
  • Application Layer에 있는 패킷의 정보를 Message라 합니다.

 

2023.04.08 - [Computer Science/네트워크] - [네트워크] Application-Layer Protocols

 

[네트워크] Application-Layer Protocols

앞의 글을 읽으시면 이해에 도움이 됩니다. 2023.04.08 - [Computer Science/네트워크] - [네트워크] Transport Protocol(TCP, UDP) Services [네트워크] Transport Protocol(TCP, UDP) Services 앞의 글을 읽으시면 이해에 도움

hi-guten-tag.tistory.com


3. Transport Layer

 

 

  • Transport Layer는 message를 두 개의 application endpoint 사이를 통신하기 위해 사용합니다.
  • 대표적으로 해당 계층의 프로토콜이 두 가지가 있는데, TCP와 UDP입니다.
  • TCP는 coonection-oriented service를 제공하는데, 이는 수신 측까지의 전송되는 메시지를 보장합니다.
  • 또한 Flow control 기능을 가지고 있고, congestion-control 기능도 가지고 있습니다.
  • UDP는 connectionsless 서비스를 제공합니다. 이것은 기본적인 서비스만 제공하므로, 신뢰성, Flow control, congestion control을 제공하지 않습니다.
  • Transport Layer에 있는 패킷을 Segment라 합니다.

 

  • 해당 계층이 필요한 이유는 다음과 같습니다.
  • Network 덕분에 전송 자체는 잘하지만, 만약 엄청나게 많은 것을 보내게 된다면 한 번에 패킷에 정보를 담지 못합니다.
  • 따라서 메시지를 패킷 단위로 나누어서 전송을 하게 됩니다.
  • 다만 문제는 항상 같은 경로로 전송되는 것이 아니므로, 뒤에 있는 메시지가 앞에 있던 메시지보다 빠르게 도착할 수 있습니다.
  • 결론적으로 보낸 순서와 맞지 않게 도착할 가능성이 있습니다.
  • 보낸 것과 받는 것의 순서가 다를 수 있고, 혹은 중간에 누락된 게 있으면 재전송 요청을 해야 하므로 이를 Transport Layer 계층에서 Protocol 차원에서 해결하고자 하기 위해서 해당 계층이 필요합니다.

 

4. Network Layer

 

 

  • Network Layer에 있는 패킷을 datagram이라 합니다.
  • 상위 계층인 Transport Layer는 segment와 함께 목적지의 주소를 Network Layer에 보냅니다.
  • 해당 계층은 segment를 목적지에 보내는 서비스를 제공합니다.
  • 해당 계층은 IP protocol을 보유하고 있습니다. 해당 프로토콜은 datagram의 필드를 정의하고, 엔드 시스템과 라우터에서 이러한 필드에 대해서 어떻게 작동해야 하는지 정의합니다.
  • 해당 계층은 오직 하나의 IP protocol을 소유하고 있으며, network layer를 가지는 모든 인터넷 요소는 IP protocol을 실행해야 합니다.
  • 또한 Network Layer은 소스와 목적지 간에 datagram의 경로를 결정하는 Routing Protocol도 보유하고 있습니다.
  • 패킷은 해당 계층에서 생성됩니다. 패킷은 데이터그램을 특정 단위로 자른 형태를 의미하는데, 데이터그램 == 패킷이라고 생각하셔도 무방할 것 같습니다.

 

  • 해당 계층이 필요한 이유는 패킷이 여러 개의 Packet Switch를 통해서 목적지로 가므로, 어느 라우터를 사용해야 하는지 알아야 하기 때문입니다.
  • 이때 라우터는 network layer까지 구성되어 있습니다.
  • 만약 Network Layer에서 IP 주소를 확인했는데, 목적지가 나라면 다시 전송하지 않고, 상위 계층으로 정보를 올립니다.

5. Link Layer

 

 

  • Link Layer가 제공하는 서비스는 해당 링크에서 사용하는 프로토콜의 종류에 따라 다릅니다.
  • 예를 들어 어떤 프로토콜은 신뢰성 있는 데이터 전송을 원할 수도 있습니다. 다만 이 신뢰성은 엔드 시스템 간 신뢰성 있는 전달 서비스인 TCP와는 다릅니다.
  • 해당 계층은 이더넷, Wif 등 여러 프로토콜이 존재합니다.
  • datagram은 목적지까지 여러 개의 링크를 통과해야 하므로, 경로 상의 다른 링크에서의 다른 Link Layer Protocol에 의해 다르게 처리될 수 있습니다.
  • 즉 상위 계층인 Network Layer은 해당 계층의 각기 다른 프로토콜에 의해 각기 다른 서비스를 받게 됩니다.
  • Link Layer에 있는 패킷을 frame이라 합니다.

 

  • 해당 계층이 필요한 이유는 다음과 같습니다.
  • physical layer에서 실제 전송되는 중에 노이즈가 생길 수도 있고, 오류가 생길 수도 있습니다.
  • 또한 0을 어떻게 표현할 것인지, 어떻게 연결을 할 것인지에 대해 알아야 하므로 해당 계층이 필요합니다.

6. Physical Layer

 

 

  • Physical Layer의 역할은 상위 계층에서 내려온 Frame을 비트로 변환하여 전송하는 것입니다.
  • 이 계층의 프로토콜은 Link 계층의 프로토콜에 따라 다르며, 실제 전송 매체에 따라 달라집니다.
  • 무선, 광섬유 등 많은 방식이 있고, 비트는 각기 다른 방식으로 링크를 통해 이동합니다.

7. 추가

 

 

  • 참고로 OSI는 5계층으로 이루어져 있지만, 7계층처럼 생각해서 구현해야 합니다.
  • 이때 추가되는 계층은 Presentation Layer, Session Layer가 있습니다.
  • Presentation Layer에서는 데이터의 표현에 대해서 결정합니다. 
  • 예를 들어 아스키 코드로 데이터를 보냈는데, UTF8로 생각한다던가, 압축으로 보냈는데 비압축으로 생각한다던가에 대한 데이터의 표현에 대해 결정합니다.
  • Session Layer에서는 데이터의 시간을 적어놓습니다.
  • 예를 들어 영상의 프레임과 소리의 시간이 다르면 정상적인 영상이 나올리가 없습니다. 따라서 이러한 데이터에 대한 시간을 적어놓아 싱크가 맞게 해줍니다.
  • 혹은 책의 23페이지가 오류나면 23페이지만 보낼지, 23페이지를 포함하는 챕터를 보낼지, 혹은 책을 다 보낼지 결정합니다.
  • 하지만 해당 계층은 실제로 구현되지는 않고, application에서 이를 해결합니다.

참고

 

 

경북대학교 컴퓨터학부 COMP0414-001 컴퓨터 망 수업

Computer Networking: A Top Down Approach / James F. Kurose, Keith W. Ross 저 / PEARSON / 2021년

Chat GPT, Bing AI


다음 글에서는 Encapsulation에 대해 알아보겠습니다.

 

2023.04.07 - [Computer Science/네트워크] - [네트워크] Encapsulation

 

[네트워크] Encapsulation

앞의 글을 읽으시면 이해에 도움이 됩니다. 2023.04.07 - [Computer Science/네트워크] - [네트워크] Protocol Layers [네트워크] Protocol Layers 앞의 글을 읽으시면 이해에 도움이 됩니다. 2023.04.07 - [Computer Science/

hi-guten-tag.tistory.com

감사합니다.

지적 환영합니다.