패킷과 패킷 교환 방식

Dohyeon Ko·2021년 11월 24일
0

Network

목록 보기
1/3
post-thumbnail

충남대학교 컴퓨터융합학부의 김상하 교수님의 컴퓨터네트워크를 수강한 후 정리한 글입니다.

오늘은 패킷과 패킷 교환 방식에 대해 알아보도록 합시다.

패킷

정의

데이터를 교환하기 위해서는 어디로 보내야할지, 어디서 왔는지에 대한 정보가 필요하다. 이에 대한 정보가 담겨 있는 것이 Network LayerPacket 이다.

Application 계층에서의 User Data를 여러 개로 분리한다. 한번에 전송할 수 있는 data 의 크기가 정해져있기 때문에 이렇게 작동한다. 전송할 수 있는 data 의 크기에 맞게 분리했는데 문제는 어디로 보내야할지, 어디서 왔는지에 대한 정보가 없다. 이에 대한 정보를 추가한 것이 Packet 이다. 출발지와 목적지에 대한 정보를 담고있는 것이 Packet Header , 혹은 Control Information 이라고 부른다.

패킷의 구조

패킷은 목적지 IP 주소와 출발지 IP 주소, 상위 계층에서 받은 data가 들어있다.

패킷을 통해 데이터를 주고 받는다는 것은 알겠는데... 그런데 어떤 방식으로 패킷을 주고 받는건가요? 🤔

패킷 교환 방식에는 Datagram 방식과 Virtual Circuit 방식이 있다. 각각에 대해 자세하게 살펴보자.

패킷 교환 방식

두 가지 교환 방식에 대해 알아보기 전에, 먼저 Packet Switching 에 대해 알아보자.

Packet Switching

좌측 그림과 같은 네트워크 상에서, 2번 노드에 대해 살펴보자.

2번 노드는 1, 3, 5번 노드와 연결되어 있고 Host C와 연결되어 있다. 다시 말해 총 4개의 경로를 가지고 있는 셈이다. 이는 4개의 Interface(네트워크 어댑터)를 가지고 있다는 것을 의미한다. 각 Interface 별로 Ingoing QueueOutgoing Queue를 가지고 있다. Ingoing Queue 는 현재 노드로 들어온 패킷이 저장되는 곳, Outgoing Queue는 현재 노드에서 나갈 패킷이 저장되는 곳이다.

우측 그림을 보면 1 -> 2 -> 3의 경로로 패킷이 이동하는 경우를 설명하고 있다. 1번 노드의 Outgoing Queue에서 3번 노드의 Ingoing Queue로 패킷이 이동하는 것을 볼 수 있다.

이러한 Packet Switching으로 패킷이 이동하는데 이 때 DatagramVirtual Circuit, 두 가지 방식이 존재하는 것이다.

Datagram

Datagram 방식은 Virtual Circuit 보다 덜 오래된 방식이다. 나름 최신 방식이고, 현재 IP 에서 사용되고 있는 방식이다. 가장 큰 특징은 orderly delivery(순차적 전달) 을 지원하지 않는다는 것이다. 다양한 경로를 통해 패킷이 전달되며 경로에 따라 최종 목적지까지 도달했을 때의 순서가 달라질 수 있다는 말이다.

위에서 봤던 네트워크에서 예를 들어보자. B에서 D로 패킷을 보내려고 할 때, 여러 가지의 경로를 가지게 된다. 몇 가지 예시를 들어보면 아래처럼 나타낼 수 있다.

  1. B -> 1 -> 2 -> 3 -> D
  2. B -> 1 -> 2 -> 5 -> 3 -> D
  3. B -> 1 -> 4 -> 5 -> 3 -> D
  4. B -> 1 -> 5 -> 2 -> 3 -> D

이처럼 다양한 경로를 통해서 패킷이 전송되며, 라우터에 의해 경로가 정해진다.

그런데... 아까 위에서 말했던 것처럼, 패킷의 순서가 꼬일 때는 어떻게 하죠? 😥

이를 해결하기 위해, Datagram 방식을 사용하는 경우 수신 측에서 패킷을 재정렬하는 과정을 거친다. Buffer 를 두어 패킷이 Buffer 에 먼저 저장되고 이를 재정렬한다. 이 과정에 대해서는 나중에 다시 살펴보도록 하자.

Virtual Circuit

Virtual Circuit 은 오래된 방식이다. 가장 기본적인 전송 방식이라고 볼 수 있다. Datagram 방식과 다르게 orderly delivery(순차적 전달) 을 지원한다. 가상 회선 방식으로 불리는 Virtual Circuit 은 3단계의 과정을 가진다.

  • Connection Phase
  • Data transfer Phase
  • DisConnection Phase

1. Connection Phase

우선 어떤 경로로 보내줄지에 대한 경로 설정이 필요하다. 이를 설정하기 위한 과정 Connection Phase 이다. 아까 위에서 봤던 패킷의 구조와는 살짝 다르다. 사실 위에서 봤던 패킷의 구조는 Datagram 의 패킷이고 Virtual Circuit 의 패킷은 조금 다르게 생겼다. 이 역시 아래에서 추가적으로 설명하겠다.

우측 상단에 보이는 패킷을 통해서 경로를 설정한다. Connection Packet 에는 Ciruit Number와 출발지, 목적지 주소가 담겨있다. 이 패킷이 지나가면서 Virtual Circuit Table 을 각 노드에 생성한다. 일종의 이정표라고 생각하면 된다. 각 노드의 아래에 있는 것이 Virtual Circuit Table 이다. 해석을 해보자면 아래와 같다.

  • 0번 virtual circuit은 1번 노드로 보낸다.
  • 0번 virtual circuit은 Host B에서 들어와 2번 노드로 보낸다.
  • 0번 virtual circuit은 1번 노드에서 들어와 3번 노드로 보낸다.
  • 0번 virtual circuit은 2번 노드에서 들어와 Host D로 보낸다.

경로를 설정했으니 다음은 데이터를 보낼 차례이다.

2. Data transfer Phase

우측 상단을 보면 이전 과정에서 본 패킷과 살짝 다른 것을 눈치챘을 것이다. 하지만 Datagram 의 패킷과는 또 약간 다르다. 출발지 주소, 목적지 주소가 아니라 Virtual Circuit NumberSequence Number 인데, 그 이유는 이전 과정에서 경로를 이미 설정해두었기 때문이다. 특정한 Virtual Circuit Number 를 가진 패킷이 들어온 경우, 지정해둔 경로를 따라 이동하기 때문에 출발지, 목적지 주소가 필요하지 않은 것이다.

전송을 마치게 되면 설정해둔 경로를 삭제하는 과정을 거친다.

3. Disconnection Phase

2번 과정을 통해 데이터를 모두 전송한 경우, 쓸모 없어진 경로를 삭제한다. 이 때 사용되는 패킷 역시 뭔가 조금 다르게 생겼다. 이 패킷에는 삭제할 경로의 이름, 즉 Virtual Circuit Number 를 가지고 있다. 0번에 대한 경로를 설정해줬으므로 이제 0번에 대한 경로를 삭제할 차례이다. 패킷이 지나가면서 설정해둔 경로를 삭제한다.

글이 길어져서 두 가지 방식에 대한 패킷의 형태는 다음 글에서 작성하려고 한다. 시험을 위해 글을 정리하고 있는데 이론이 되게 재밌는 것 같다. 다음 글에서 보도록 하자. 🤗

profile
티스토리로 옮겼어요! (https://codekodo.tistory.com)

0개의 댓글