충남대학교 컴퓨터융합학부의 김상하 교수님의 컴퓨터네트워크를 수강한 후 정리한 글입니다.
어제는 패킷이 뭔지, 어떤 방식으로 주고 받는지에 대해 알아봤습니다. 오늘은 패킷의 헤더와 가상 회선 방식의 패킷 전송 과정에 대해 알아봅시다.
지난 글에서 소개했던 패킷 구조와 동일하다. 목적지 IP
, 출발지 IP
가 헤더에 들어있다.
typedef struct {
char dest_addr;
char src_addr;
data_type data;
} packet_type;
뭔가 살짝 다르다. 그 이유는 Virtual Circuit
방식의 경우 3단계를 가지고 있기 때문이다.
(b)의 Control Packet Format의 형태를 가진다.
Connection Packet
이므로c_or_d
부분에 1이 할당되고, c_type
에 0이 할당된다.
Connection Packet
이 지나가면서 각 노드에 Virtual Circuit Table
을 생성한다.
(a)의 Data Packet Format의 형태를 가진다.
Data Packet
이므로 c_or_d
에 0이 할당된다.
(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 Packet
이 Table
을 생성하고 이를 통해 패킷을 전송한다는 것을 얘기했었다. 이 과정에 대해 자세하게 다뤄보자.
Virtual Circuit Table
의 구조이다. Ingoing Queue
와 OutGoing Queue
를 가지고 있고 각각에는 포트 번호
와 Virtual Circuit Number
가 들어있다.
이러한 네트워크를 가진 곳에서의 패킷 시나리오를 작성해보자.
이런 식으로 테이블이 채워지게 된다. 중요한 것은 겹치지 않는 것이다. 들어오고 나가는 포트 번호가 같고 Virtual Circuit Number가 다를 경우에는 Table에도 다르게 넣어줘야 한다.