개인 공부/컴퓨터 네트워크

7. 1 Network Layer Service

Sanyo 2024. 6. 1. 14:54

 

이번에는 Network Layer에 대해 다룰 것이다.

 

Packetizing

 

 

위 그림에서 IP header를 붙이는 것이 Packetizing.

 

 

L3, network layer에서는 Packetizing해주는 역할을 담당한다.

Packetizing이란 데이터를 전송하기 위해서 작은 단위인 패킷으로 나누는 과정을 말한다.

데이터를 캡슐화 해서 전송 준비를 마친다.

 

Source host - Encapsulation

 

해당 라우터는:

- packet을 decapsulate하는 것이 금지된다. 다만, 패킷이 fragmentation(분할)되어야 하는 경우에는 예외이다.

- source와 destination을 변경하는 것도 금지된다. 라우터의 역할은 패킷을 다음 네트워크로 전달하는 것이다.

 

분할에 대해 위에서 언급했는데, packet이 분할될 때는 packet의 헤더가 모든 조각들에 붙어 있어야 하고, 헤더에는 각 조각들의 순서 정보, 식별자 등이 포함된다.

 

 

Encapsulation의 순서는 다음과 같다.

먼저, 상위 계층에서 payload를 받는다. payload란 실제 전송되는 데이터를 의미한다.

payload에 헤더를 붙이는데, 이 헤더에는 source와 destination address를 포함하고, network layer protocol에 필요한 다른 정보들이 포함되어 있다.

 

헤더를 붙이면 datalink layer에게 넘겨준다.


각 layer는 서로 데이터를 주고 받는 것 외에 간섭할 수 없으므로 payload를 직접 변경하는 것은 일반적으로 금지되고, fragmented되어 있거나 데이터의 사이즈가 너무 크지만 않다면 직접 변경을 하지는 않는다.

 

SAR

SAR(Segmentation and Reassembly):

SAR은 큰 데이터 블록을 작은 segment로 나누고, 수신할 때 다시 조립하는 프로세스를 의미한다.

 

 

 

위 그림은 SAR을 시각화 한 것이다. 

 

Segmentation

 

 

Destination host - Decapsulation

Destination host에서는 decapsulation을 진행한다.

단순하게 생각하면 된다. 전 계층, data-link layer에서 받는 packet을 decapsulate하고 이 payload를 상위 layer에 보내는 것이다.

 

SAR in destination:

여기서 만약 데이터들이 fragment화 되었다면? 모든 조각들이 모일 때까지 network layer는 기다려야 한다.

모든 조각들이 도착하면 다시 합쳐서 상위 layer에 보내면 된다.

 

 

 


Packetizing에서 중요한 원칙은 데이터를 바꾸지 않고, sender에서 receiver로 전달하는 것에 초점이 맞추어져 있다.

 

Routing

network layer는 목적지로 가는 최적의 라우트를 찾아내야 한다.

 

네트워크로부터 받은 패킷을 다른 네트워크로 전달하는 과정을 Forwarding이라고 한다.

 

Forwarding Process

 

먼저 네트워크로부터 패킷을 수신한다.

여기서 두가지 타입이 있는데,

  • Unicast Routing는 하나의 네트워크로만 패킷을 전달하는 것이다.
  • Multicast Routing는 여러 네트워크로 전달이 가능해진다.

 

어느 네트워크를 사용할 지 결정할 때 Routing Table 또는 Forwarding Table을 사용한다.(같은 뜻이다.)
Routing table은 패킷의 헤더에 있는 레이블에서 찾을 수 있다.

 

Routing table에는, 목적지 주소와 출력 인터페이스 번호등의 정보가 포함되어 있다.

Routing table을 사용해서 어느 네트워크로 패킷을 보낼 지 결정할 수 있다.(그림 참고)

 

 

Error Control

network layer에서는 직접적인 error control을 제공하지 않는다.

그 이유는, 패킷이 fragmentation될 수 있기 때문에 network layer에서 오류 검사를 하는 것은 매우 비효율적이기 때문이다.

 

그치만 데이터의 손상 여부 정도는 확인해야 하지 않겠는가? 몇가지 방법을 사용한다.

 

- Checksum field사용

- ICMP(Internet Control Message Protocol) - error control 비스무리 한 것을 제공한다.

 

 

Flow Control

network layer는 직접적인 flow contorl또한 제공하지 않는다. 상위 레이어에서도, 다른 layer에서도 flow contorl을 제공하기 때문에 network layer에 flow control을 제공하게 되면 더 복잡해지고 전체적인 시스템이 효율적이지 않게 된다.

 

Congestion Control

Congestion은 혼잡을 의미한다. 라우터 또는 네트워크의 수용 한계에 도달할 만큼 datagram이 (패킷) 보내지게 되면, Congestion이 발생할 수 있다.

 

이 때, 라우터는 datagram을 그냥 drop해버릴 수 있다.

계속해서 drop 하는 상황이 발생하면 큰 문제가 발생한다. 상위 계층의 error contorl 메커니즘에 따라 없어진 packet들을 sender가 계속 보내게 될 것이고, 이는 시스템의 붕괴로 이어질 수 있다.

 

Quality of Service

QOS(Quality of Service)

넷플릭스 같이 real-time으로다가 고용량의 오디오와 비디오를 streaming하는 사이트가 늘어나고 그 시장 규모가 커지면서 QOS는 더 중요해 진다. 넷플릭스 보다가 지속적으로 끊김 현상이 발생하게 되면 사용자들은 줄어들 수 밖에 없다.

 

하지만 network layer는 여기에 크게 관여하지 않는다. network layer는 데이터를 최대한 건들이지 않는 것이 원칙이기에 다른 상위 계층에서 이 QOS를 신경쓴다.

 

Security

옛날에는 Internet 사용자가 그리 많지 않았기 때문에 보안 문제 따위는 없었다.

network layer도 이 시기에 고안되어 security provision을 고려하지 않은 채로 고안되었다.