패킷의구조: 목적지 ip 주소, 출발지 ip 주소 data 로 이루어짐 --> Datagram에서의 패킷 

 

어떤방식으로 패킷을 주고 받는가? -> VC , Datagram

 

패킷이 교환되는 과정(두 방식 공통)

Packet Switching

하나의 노드(2)에 4개의 노드가 연결되어 있다면 이 노드 2Interface(네트워크 어댑터)는 4개를 갖고 있음(이음선으로 생각하면 된다.)  각 인터페이스 별로 이 노드로 패킷이 들어올때는 Ingoing Queue에 들어오고 나갈때는 Outgoing Queue는 나갈 패킷들이 저장된다. 자 이렇게 하나의 노드에서 패킷이 이동되는 방법에 대해서 알았으니 전체적인 흐름의 방식 두 가지 Datagram과 VC를 보자. 

 

-Datagram

패킷 교환에 비연결성 서비스 즉 비순차적 전달을 지원하지 않는 방식이다. 이렇게 되면 스트림데이터를 일정길이로 순서있게 자른 패킷들이 순서없이 가게되면 김승우가 갔다가 승김우 이렇게 도착할 수 있는데 어떻게 해결할 것인가?

우 B -> 1 -> 2 -> 3 -> D

승 B -> 1 -> 2 -> 5 -> 3 -> D

짱 B -> 1 -> 4 -> 5 -> 3 -> D

김 B -> 1 -> 5 -> 2 -> 3 -> D

 

이렇게 패킷이 순서가 꼬이게 된다면 안되겠지? 어떻게 해결할 것인가.]

일단 현재 인터넷은 VC가 아닌 Datagram의 패킷 교환방식을 채택하고있다. 이유는?????:- > 당연히 인터넷은 수 많은 네트워크가 연결되어 있는것이므로 이를 가상회선으로 구현한다면 무한대에 가까운 모든 경로를 다 지정해줘야 하는 결과를 가져오게 된다. 

 

현재 대중적인 인터넷 프로토콜로 IPv4를 사용중인데 이 프로토콜의 특징으로 unreliable하고 connectionless 한 특징이 있다. 이를 해석하자면 패킷 전송과정에서 오류가 발생할 수 있고(비신뢰적) 전송간 패킷 간에 순서가 섞일 수 있다(비순차적). IPv4는 그저 전송 자체에 초점을 맞추고 있다. 그래서 이런 문제가 있음에도 왜 IPv4는 Datagram방식을 채택하는가??

-> 이런 오류는 상위계층인 TransportLayer에서 오류가 발생하지 않도록 Fragmentation Offset을 통해 순서를 맞춰준다. 

 

-Vircual circuit 

가장 오래된 방식으로 Datagram과 다르게 순차적 전달을 지원한다. Datagram은 B에서 D까지 여러가지 길이 있는 방면에 VC는 B에서 D까지의 경로를 명확히 정해줘야 그다음에 패킷 전송이 이루어진다. VC는 3단계과정을 거친다.

  • Connection Phase
  • Data transfer Phase
  • DisConnection Phase

VC를 보면 3단계에서의 패킷의 구조가 모두 다르다 . 

  • Connection Phase

1단계에서 경로를 설정해주어야한다. 이렇게 VC는 패킷이 이동되기전 경로를 미리 설정해줘야하기에 인터넷에서 쓰지 않는것이다. 

우측 상단에 보이는 패킷을 통해서 경로를 설정한다. 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로 보낸다.

위의 과정이 1단계이다 무려,,, ConnectPacket(데이터 안담겨있음)을 통해 경로를 설정하고 각 노느들 마다 VC table도 생성해야함... 이렇게 힘들게 꾸역꾸역 왔지만 Data는 보내지도 않음 .. 

  • Data transfer Phase

이번에도 또 Packet의 구조가 다르다 Datagram 패킷과 유사하지만 ip주소가 아닌 VC#(Number)과 sequence Number이 저장 된다. 경로를 이미 정해줬기 때문에 VC#이 적혀있는곳만 가면되기에 출발지 목적지 자체가 필요가 없다. 

 

  • DisConnection Phase

2번과정으로 데이터를 모두 전송한 경우 쓸모없어진 경로를 삭제한다. 이때는 Connect Packet과 같은 모양으로 간다. 

 

A: 2단계 B:1, 3단계

vc_num 공통 

c_or_d data냐? 그럼 0 connect냐? 그럼 1 

seq, data(0) 이면 경로설정되있으니간 seq필요하지 

c_type 연결할거냐? 0 연결 끊을거냐? 1 

 

각 VC Table의 구조 Ingoing Queue 와 OutGoing Queue를 갖고 있음 

vctable에 구조 -> vcnumber에 따라 하나의 경로만 갖고 있으므로 절대로 중복될 일이 없음 

 

Packet의 교환방식을 알아봤으니 전체적인 데이터의 기준에서 

Network Layer의 데이터 전송과정 !!

 

  1. 상위 계층, Application Layer 에서 데이터가 내려온다.
  2. Network Layer 에서 출발지와 목적지에 대한 정보(헤더)를 붙인다.
  3. DataLink Layer 에서는 1개의 홉에서의 출발지와 목적지에 대한 정보(헤더)를 붙인다

Network Layer header(Ip)는 목적지에 도달하기 전까지 변하지 않는다. 

하지만 DataLinklayer(이더넷!)의 물리적 주소는 자꾸만 바뀜

IPv4의 구조

  • VER : 프로토콜 종류
  • HLEN : 헤더의 크기
    헤더의 크기의 경우 최소 20바이트부터 옵션에 따라 최대 60바이트까지 가능하다. 이를 4bit로 어떻게 표현할 수 있을까?
    4bit의 경우 0 ~ 15를 의미하는데 여기에 4를 곱해주면 0 ~ 60가 된다. 이를 그대로 사용한다. 최소 20바이트이므로 4x5 -> 0101(2)로 표현할 수 있고, 최대 60바이트이므로 4x15 -> 1111(2)로 표현할 수 있다. 즉, 헤더의 크기의 경우 20바이트 이상이므로 최소 0101(2)는 되어야 한다는 것을 알 수 있다.
  • Service : IP 패킷 헤더 내 서비스 유형 및 혼잡 알림
  • Total length : 패킷의 크기
    헤더의 최소 크기는 20바이트이므로 패킷의 페이로드에 담을 수 있는 최대 크기는 65536 - 20 = 65516, 65516바이트가 된다.
  • Identification : 단편화 조각의 일련번호
    각 조각이 동일한 IP 패킷에 속하면 같은 일련번호를 공유한다.
  • Flags : 단편화 조각의 특성을 나타내는 Flag
  • Fragmentation offset : 단편화 조각의 오프셋
    단편화 과정에서 패킷의 순서가 뒤바뀔 수 있으므로 오프셋을 이용하여 순서를 맞춘다.

여기 Fragmentation이 필요한 이유? IPPacket의 최대크기는 65535바이트이다. 여기서 하위 레이어 Datalinklayer로 가기 위해서는 또다시 잘라줘야하는데 이더넷프레임으로 전송하기 위한 IPLayer의 IPpacket의 MTU는 1500바이트이다. 

**

 데이터 전송 단위를 데이터그램(datagram) 또는 세그먼트(segment) 라고 한다.

transportlayor의 프로토콜이 UDP 면 데이터그램,TCP 면 세그먼트다.

 

-IPv6에 관하여,,

IPv6는IPv4보다 더 많은 주소를 표현할 수 있고 전송 효율을 높인 인터넷 프로토콜이다.

Ipv4는 주소 표현비트가 32비트로 2^32개의 주소를 표현할 수 있는 반면에 IPv6은 128비트로 2^128개의 훨씬 더 많은 주소를 표현할 수 있다. Base헤더와 Extension헤더를 분리함으로써 라우터 간의 전송 과정에서 불필요한 과정을 줄여서 전송 효율을 높였다. 

 

IPv4는 대략 46억개로 중복없이 하나의 컴퓨터에 1개~N개의ip주소가 바인딩 된다. 그런 전세계에 46억개의 컴퓨터만 사용가능하다는 건데 어떡함? --> 공인ip 사설ip가 등장 ]

 

Ipv4와 ipv6의 차이점

Ipv4는 arp와 같은 애드온이 있어여만 작동합니다, 그리고 패킷을 단편화해서 보내야합니다.

IPv6의 장점: 패킷을 단편화하지 않으면서도 보다 효율적인 라우팅  NAR를 없앰으로써 주소공간을 32에서 128로 확장 

처리 오버헤드가 줄어든 개선된 헤더 구조 

 

IPv4 및 IPv6의 작동 원리

  • IPv6 주소의 128비트는 콜론으로 분리된 8개의 16비트 16진수 블록입니다. 예를 들어 2dfc:0:0:0:0217:cbff:fe8c:0과 같습니다.
  • IPv4 주소는 “클래스”로 분리되는데, 클래스 A 네트워크는 소수의 대형 네트워크를 위한 것이고, 클래스 C 네트워크는 수천 개의 소형 네트워크를 위한 것이고, 클래스 B 네트워크는 그 사이에 있는 것입니다. IPv6는 서브넷팅을 사용하여 주어진 주소 공간 할당에 맞게 네트워크 크기를 조정합니다.
  • IPv4는 멀티캐스트 사용을 위해 클래스 유형의 주소 공간을 사용합니다(224.0.0.0/4). IPv6는 FF00::/8에서 멀티캐스트를 위해 통합된 주소 공간을 사용합니다.
  • IPv4는 각 디바이스가 멈추고 패킷을 확인하도록 강제하는 “브로드캐스트” 주소를 사용합니다. IPv6는 멀티캐스트 그룹을 사용합니다.
  • IPv4는 0.0.0.0을 미지정 주소로 사용하고 클래스 유형 주소(127.0.0.1)를 루프백에 사용합니다. IPv6는 미지정 주소에는 ::을, 루프백에는 ::1을 사용합니다.
  • IPv4는 전역적으로 고유한 퍼블릭 주소를 트래픽 및 “프라이빗” 주소에 사용합니다. IPv6는 전역적으로 고유한 유니캐스트 주소와 로컬 주소를 사용합니다(FD00::/8).

IPv4에서 IPv6로 전환하는 이유는 무엇입니까?

인터넷의 빠른 성장과 함께 새로운 가입자, 인터넷 기반 디바이스 및 애플리케이션의 유입을 지원하려면 IPv4 주소 지정 방식에 대한 개선이 필요합니다. IPv4의 기능을 기반으로 구축된 IPv6는 인터넷 주소 지정, 구성, 유지 보수 및 보안 기능의 개선도 제공하면서 훨씬 더 큰 IP 주소 풀을 생성하여 인터넷의 지속적인 세계 확장이 가능하도록 설계되었습니다.

무엇이 더 빠를까? IPv4와 IPv6 비교

이론적으로는 IPv6가 더 빠릅니다. 하지만 IPv6가 사용하는 더 큰 패킷 사이즈 때문에 일부 사용 사례에서는 더 느릴 수 있습니다. 

 

IP주소의 클래스란 ? 

하나의 ip주소에서 네트워크 영역과 호스트 영역을 나누는 방법이자

ip주소에서 서브넷마스크를 and 연산해서 네트워크 id구하기 

 

기본 서브넷 마스크(넷마스크) -> 255.255.255.0

IP주소 뒤에 붙은 /24 같은 것들은 서브넷 마스크의 bit 수를 의미한다. 옥탯의 8bit가 모두 1일 경우 10진수로 255가 되기에 /24는 왼쪽부터 나열된 1bit의 수가 24개라는 뜻이다. 따라서 192.168.0.3/24는 IP주소가 192.168.0.3 이며, 서브넷 마스크가 255.255.255.0이라는 의미가 된다.

 

 

라우팅 테이블,... 이정표  라우터는 선택(L3 스위치) 라우팅 테이블에서 라우터는 과연 어떤 선택을 할 것인가?

만약 내가 여러개의 네트워크에 연결되어 있다 할 때 Process가 인터페이스를 찾아가는 과정은? 

1.ip주소를 라우팅 테이블에 있는 모든 서브넷 마스크와 and연산을 취한다. 

2. 그 값을 네트워크 대상과 비교한다. 

3. 일치하는 네트워크 대상에 대한 매트릭값을 비교하고 매트릭값이 제일 작은 인터페이스를 선택 

'3-2 > Computer Network' 카테고리의 다른 글

ARP 프로토콜  (0) 2022.10.06
[컴퓨터 네트워크] Packet Switching  (0) 2022.09.13
인터페이스 스위칭에 대해서..  (0) 2022.09.12
개발자 관점에서의 port번호와 switch, switching  (0) 2022.09.12
IP 주소와 NetMask  (0) 2022.09.07

+ Recent posts