패킷의 헤더와 가상 회선 방식

Dohyeon Ko·2021년 11월 24일
0

Network

목록 보기
2/3
post-thumbnail

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

어제는 패킷이 뭔지, 어떤 방식으로 주고 받는지에 대해 알아봤습니다. 오늘은 패킷의 헤더와 가상 회선 방식의 패킷 전송 과정에 대해 알아봅시다.

헤더

Datagram 패킷의 헤더

지난 글에서 소개했던 패킷 구조와 동일하다. 목적지 IP, 출발지 IP가 헤더에 들어있다.

코드

typedef struct {
    char dest_addr;
    char src_addr;
    data_type data;
    } packet_type;

Virtual Circuit 패킷의 헤더

뭔가 살짝 다르다. 그 이유는 Virtual Circuit 방식의 경우 3단계를 가지고 있기 때문이다.

1. Connection Phase

(b)의 Control Packet Format의 형태를 가진다.
Connection Packet이므로c_or_d 부분에 1이 할당되고, c_type에 0이 할당된다.
Connection Packet이 지나가면서 각 노드에 Virtual Circuit Table 을 생성한다.

2. Data Transfer Phase

(a)의 Data Packet Format의 형태를 가진다.
Data Packet이므로 c_or_d에 0이 할당된다.

3. Disconnection Phase

(b)의 Control Packet Format의 형태를 가진다.
Disconnection Packet이므로c_or_d 부분에 1이 할당되고, c_type에 1이 할당된다.
Disconnection Packet이 지나가면서 각 노드에 Virtual Circuit Table 을 제거한다.

코드

typedef struct {
    int vc_num;
    char c_or_d;
    union (c_or_d) {
    case 0: int seq;
    	    data_type data;
    case 1: char c_type;
    	    char src_addr;
            char dst_addr;
    } packet_type;

가상 회선 방식의 패킷 전송 과정

가상 회선 방식의 경우 Connection PacketTable 을 생성하고 이를 통해 패킷을 전송한다는 것을 얘기했었다. 이 과정에 대해 자세하게 다뤄보자.

Virtual Circuit Table 의 구조이다. Ingoing QueueOutGoing Queue 를 가지고 있고 각각에는 포트 번호Virtual Circuit Number 가 들어있다.

이러한 네트워크를 가진 곳에서의 패킷 시나리오를 작성해보자.

  1. VC1 (VC# = 0, H1, A, B, D, H2)의 가상회선을 설정한다.
  2. VC1을 따라 하나의 패킷이 전송된다.

  1. VC2 (VC# = 1, H1, A, B, D, H3)의 가상회선을 설정한다.
  2. VC2를 따라 하나의 패킷이 전송된다.

  1. VC3 (VC# = 2, H1, A, B, E, H4)의 가상회선을 설정한다.
  2. VC3를 따라 하나의 패킷이 전송된다.

이런 식으로 테이블이 채워지게 된다. 중요한 것은 겹치지 않는 것이다. 들어오고 나가는 포트 번호가 같고 Virtual Circuit Number가 다를 경우에는 Table에도 다르게 넣어줘야 한다.

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

0개의 댓글