본문 바로가기

CS/데이터통신

[네트워크 계층]

프로토콜의 이해

프로토콜은 서로 다른 시스템에 있는 개체 간에 성공적으로 데이터를 전송하는 통신 규약

 

개체에는 데이터베이스 관리 시스템, 전자우편 시스템, 사용자 프로그램 등이 해당

 

시스템은 하나 이상의 개체를 보유한 컴퓨터를 의미

 

프로토콜은 계층적 구조로 정의 되고 각 계층의 역할을 구분

 

프로토콜은 시스템 간의 통신과 관련된 복잡한 상호 작용을 세분화하여 계층화 한 것

이해하기 쉽고 각 계층 간 표준 인터페이스가 정의됨

다른 업체의 시스템과도 호환이 가능

 

프로토콜은 두 나라 간의 의정서 또는 의례에서 유래된 용어로 네트워크에서 두 시스템 간에 무엇을 언제 어떻게 통신할 것인지 미리 정해놓은 약속

네트워크는 서로 다른 기종의 컴퓨터로 구성되어 있어 네트워크 간에 공통으로 사용할 수 있는 프로토콜의 필요성이 대두됨

이에 따라 인터넷에서 컴퓨터 간의 통신이 가능하도록 표준화하여 채택한 통신 규약이 TCP/IP 통신이다

 

TCP/IP는 전송 제어 프로토콜과 인터넷 프로토콜을 의미한다. 

 

IP는 패킷으로 변환된 데이터를 네트워크를 통해 멀리 떨어진 호스트에 보내며, TCP는 전송 된 패킷에 오류가 발생하면 재전송을 요청하고 재전송된 패킷에 오류가 없으면 원래 데이터로 재결합

 

TCP는 데이터 흐름을 제어하거나 데이터가 정확한지 검사하는 것이고, IP는 데이터 패킷을 전송하는 것이다.

 

인터넷 표준 프로토콜

TCP/IP의 구조

 

TCP/IP 프로토콜은 네트워크 접속 계층, 네트워크 계층, 전송 계층, 응용 계층으로 구분된다.

네트워크 접속 계층

  • TCP/IP의 경우 하위 계층인 물리 계층과 데이터 링크 계층을 특별히 정의하지 않으며 단지 모든 표준 및 임의 네트워크를 지원할 수 있도록 하고 있다. 네트워크 접속 계층은 운영체제의 네트워크 카드와 디바이스 드라이것을 지원하는 계층이다. 데이터 링크 계층의 역할을 하는 TCP/IP 프로토콜은 이더넷, 802.11x, MAC/LLC, SLIP, PPP 등이 있다.
  • 네트워크 접속 계층의 송신 측 컴퓨터에는 상위 계층으로부터 전달받은 패킷에 물리 주소인 MAC 주소 정보가 있는 헤더를 추가해서 프레임을 만들어 하위 계층인 물리 계층에 전달한다. 수신 측 컴퓨터는 데이터 링크 계층에서 추가한 헤더를 제거하고 상위 계층인 네트워크 계층에 전달한다. 이때 프레임 크기는 네트워크 토폴로지가 정한다.

네트워크 계층

  • 네트워크 계층은 인터넷 계층이라 하며, 네트워크의 패킷 전송을 제어한다. 네트워크 계층 프로토콜은 IP, ARP, ICMP, IGMP이다.
  • 네트워크 계층의 역할은 데이터그램을 정확한 수신지로 전송하는 것이며 여기서 데이터그램은 IP 프로토콜에서 다루는 패킷 데이터를 말한다. 데이터그램에 있는 정보는 송신지 주소와 수신지 주소, 데이터, 몇가지 제어 필드 등이다.
  • 네트워크 계층의 송신 측 컴퓨터에는 상위 계층으로부터 전달 받은 패킷에 논리 주소인 IP 주소를 포함한 헤더를 추가하여 하위 계층인 네트워크 접속 계층에 전달한다. 또한 수신 측 컴퓨터에서는 하위 계층으로부터 전달받은 프레임의 헤더 정보를 확인한 후 송신 측 컴퓨터의 네트워크 계층에서 추가한 헤더를 제거하고 상위 계층인 전송 계층에 전달한다.
  •  

전송 계층

  • 상위 계층에서 볼 때 전송 계층은 호스트 간의 데이터 전송을 담당하는 계층이다. TCP와 UDP 프로토콜을 사용한다. 전송 계층의 역할은 네트워크 양단의 송수신 호스트 간에 신뢰성 있는 전송 기능을 제공하는 것이며, OSI 참조 모델의 세션 계층 일부와 전송 계층이 이에 해당한다. 
  • 전송 계층의 송신 측 컴퓨터에서는 상위 계층으로부터 전달받은 데이터를 효율적으로 전송 하기 위해 패킷 단위로 분할한다. 또한 수신 측 컴퓨터에서는 하위 계층으로부터 전달 받은 패킷을 원래 데이터로 재결합한다. 

응용 계층

  • TCP/IP 프로토콜의 범위에는 응용 계층의 프로토콜까지 포함되며, 이러한 프로토콜은 FTP, SMTP, SNMP 등이다. TCP/IP 프로토콜을 이용한 응용 프로그램 중에서 우리가 직접 사용하는 인터넷 메일 프로그램이나 웹 브라우저 등을 응용 계층으로 분류할 수 있다.
  • TCP/IP 프로토콜을 지원하려면 서버 컴퓨터에 프로토콜을 서버 형태로 서비스하는 데몬 이라는 프로그램이 있어야 한다. 또한 서버 프로그램과 연동하여 작업을 수행하는 원격지의 프로그램을 클라이언트라 하며 하나의 서비스를 제공하려면 클라이언트의 요청을 처리하는 서버 프로그램, 즉 데몬이 필요한데, 이런 관계를 보통 클라이언트/서버 시스템이라한다. 

TCP/IP 주소의 구조

물리 주소

  • 물리 주소(MAC)는 링크 주소 또는 통신망에서 정의된 노드의 주소, 이더넷 네트워크 인터페이스 카드(NIC) 6바이트(48비트) 주소 등을 말한다. MAC 주소는 이더넷에서 각 호스트를 구별하기 위해 모든 이더넷 카드에 개별적으로 부여하는 고유한 식별 번호로, 회사에서 제품을 제작할 때 할당하기 때문에 임의로 지정할 수 없다. 윈도우 운영체제를 사용하는 컴퓨터에서는 ipconfig/all 명령어로 확인할 수 있다.
  • 물리 주소는 네트워크 접속 계층의 논리적 구성 단위인 프레임에서 사용된다. 이더넷은 6바이트(48비트) 물리주소를 사용하며 FDDI나 토큰링처럼 다른 주소 형태를 사용하는 것도 있다. 

인터넷 주소

  •  인터넷에서는 물리 주소와는 별도로 호스트를 식별할 수 있는 유일한 주소를 지정해야 한다. 현재는 인터넷에 연결된 호스트를 유일하게 식별할 수 있는 32비트 주소 체계를 인터넷 주소로 사용하며 주민등록번호나 학번처럼 IP 주소를 중복해서 사용할 수 없다.
  •  

포트 주소

  • 인터넷 통신의 최종 목적은 한 프로세스가 다른 프로세스와 통신할 수 있게 하는 것이다. A 컴퓨터에서 FTP를 이용하여 B 컴퓨터의 파일을 다운로드하면서 텔넷을 이용해서 C 컴퓨터에도 접속해서 통신하는 경우 동시에 발생하는 프로세스를 처리하려면 각 프로세스를 식별하는 방법이 필요하다. 즉 프로세스 식별 주소가 있어야 한다. TCP/IP 구조에서는 포트 주소를 사용하여 이를 식별하며, TCP/IP 포트 주소의 길이는 16비트이다. 
  •  

  • TCP 메시지의 헤더에는 오류 검사 기능을 담당하는 순서 번호, 확인 응답 번호 등의 필드와 송수신 포트 번호의 정보가 들어있다. 포트 번호는 해당 호스트에서 접근하려는 서비스를 말한다.
  • 인터넷에 흩어져 있는 호스트와 통신하려면 해당 호스트에 접속하는 IP 주소와 함께 이용하려는 서비스에 접근하는 포트 번호도 알아야한다. 
  • 인터넷에 흩어져 있는 호스트와 통신하려면 해당 호스트에 접속하는 IP 주소와 함께 이용하려는 서비스에 접근하는 포트번호도 알아야 한다.
  • TCP는 송신한 데이터가 수신지에 정확하게 도착했는지 확인하는 역할을 한다고 볼 수 있다. 
  •  

네트워크 계층

네트워크 계층의 필요성

  • 데이터 링크 계층은 이더넷 규칙을 기반으로 데이터의 전송을 담당하며, 이 규칙에 따라 같은 네트워크에 있는 컴퓨터에는 데이터를 전송할 수 있지만, 다른 네트워크나 인터넷으로는 데이터를 전송할 수 없다. 즉 수많은 네트워크가 연결된 환경에서는 데이터 링크 계층의 기능만으로는 다른 네트워크로 데이터를 전송하기 어렵다. 이때 서로 다른 네트워크 간의 통신을 가능하게 하는 것이 네트워크 계층이고, 네트워크 계층을 통해 다른 네트워크로 데이터를 전송하려면 라우터라는 네트워크 접속 장치가 필요하다. 
  • LAN에서는 MAC 주소만으로 통신이 가능하지만 다른 네트워크에는 데이터를 전송할 수 없다. 따라서 MAC 주소가 아닌, 네트워크를 식별할 수 있는 주소가 필요하고 이게 IP이다.

네트워크 계층의 역할

  • 네트워크 계층은 데이터 전송과 경로 선택 기능을 제공하고, 라우팅 프로토콜을 사용하여 최적의 경로를 선택한다. 데이터를 전송할 수신 측의 주소를 찾고 수신된 데이터의 주소를 확인하여 자신의 것이면 전송 계층으로 전송한다. 

네트워크 계층의 기능을 정리하면 다음과 같다.

  • 논리 주소 지정: 송신지와 수신지 주소를 헤더에 포함
  • 라우팅: 다양한 경로 중 패킷의 경로를 설정
  • 주소 변환: 대응하는 무리 주소를 찾기 위해 논리 주소 해석
  • 다중화: 하나의 물리적 회선만 사용하여 많은 장치에 데이터를 동시에 전송
  • 패킷 순서 제어: 도착하는 패킷의 순서를 바로잡아 상위 계층의 메시지를 재구성하는 데 사용한다. 

IPv4

인터넷에 연결된 모든 컴퓨터에는 고유 주소가 부여되는데 이것이 IP 주소이다. 

IP 버전은 IPv4와 IPv6가 있다. 

현재 사용하는 IPv4는 32비티의 IP 주소로 232(약 43억)개의 컴퓨터에 할당할 수 있다.

공인 IP 주소와 사설 IP 주소

IP 주소는 공인 IP 주소와 사설 IP 주소로 구분되며 공인 IP 주소는 ISP가 제공한다. IPv4는 주소가 고갈되었기 때문에 인터넷에 직접 연결되는 컴퓨터나 라우터에는 공인 IP 주소를 할당하고 집이나 회사의 LAN에 연결되는 IP에는 사설 IP 주소를 할당하는 정책을 시행하고 있다.

IPv4

IP 주소는 2진수 32비티를 구분하기 쉽게 10진수로 표시하여 사용한다. IP 주소는 10진수로 표현하지만 실제 IP 주소는 2진수로 되어있다.

즉 IP 주소는 8비트 크기의 필드 4개를 모아서 구성한 32비트(4바이트) 논리 주소이다. 예를 들면 163.152.19.114처럼 된다.

1바이트(8비트)가 가질수 있는 10진수는 0~255 이므로 IP 주소의 값은 0.0.0.0~255.255.255.255이다. 

숫자로 표현된 IP 주소는 기억하기 어렵다는 것이 단점인데 이는 도메인 이름이라는 별칭을 사용해 해결가능하다.

사용자가 입력한 도메인 이름에 해당하는 IP 주소를 찾아주는 DNS 서버가 필요하다. 

 

IP 주소도 네트워크 ID와 호스트 ID로 구분된다. 

 

네트워크 주소는 네트워크 자체를 나타내는 주소로 다른 네트워크와 구분하는 역할을 하고, 호스트 주소는 해당 네트워크에 속한 호스트의 주소를 나타낸다.

네트워크 ID는 전체 네트워크가 좀 더 작은 네트워크로 분할된 각 호스트가 속한 네트워크를 대표한다. 

네트워크 ID는 8, 16, 24비트로 구분된다.

 

호스트ID는 네트워크 주소로 표현하는 네트워크 내부에서 각 호스트의 주소를 표현하는 역할을 하며 전체 32비트에서 네트워크 주소를 제외한 나머지에 해당한다.

IPv4의 클래스 구조

IP 주소는 비트로 구분하지만 네트워크 ID를 크게 만들거나 호스트 ID를 작게 만들어서 네트워크의 크기를 조정할 수 있다. 

네트워크의 크기는 클래스로 구분하며 IP 주소는 네트워크의 규모에 따라 A,B,C,D,E 클래스로 나뉜다. 이중 D 클래스는 IP 멀티 캐스팅용으로, E 클래스는 연구 및 특수용도로 사용하는 주소이므로 일반 네트워크에서는 A 클래스, B 클래스, C클래스를 사용할 수 있다. 다음 그림과 같이 IP 주소 맨 처음 바이트의 첫 1비트가 0이면 A 클래스, 첫 2비트가 10이면 B 클래스, 첫 3비트가 110이면 C 클래스, 첫 4비트가 1110이면 D 클래스, 첫 4비트가 1111이면 E 클래스이다.

A 클래스는 처음 8비트가 네트워크  ID이고 다음 24비트가 호스트 ID이다.

B 클래스는 처음 16비트가 네트워크 ID이고 다음 16비트가 호스트 ID이다.

C 클래스는 처음 24비트가 네트워크 ID이고 다음 8비트가 호스트 ID이다.

 

A 클래스

A 클래스는 8비트의 네트워크 ID, 24비트의 호스트 ID를 이용한다. 맨 처음 숫자는 0~127로 시작하고 범위는 0.0.0.0 ~ 127.255.255.255이다. 하지만 0.0.0.0은 사용하지 않은 주소이고 127.x.x.x는 시스템 루프백 주소라 사용하지 않는다. 그러므로 실제로 사용하는 주소는 1~126으로 0.0.0.0 ~ 126.255.255.255이다. 

A 클래스의 기본 넷마스크는 255.0.0.0이고 4바이트로 구성되며 네트워크 주소를 구분하는 역할을 한다. 

A 클래스 네트워크는 네트워크 126개로 구성하고 총 24비트를 호스트 주소로 배정할 수 있다.

그림에서는 맨 왼쪽 비트가 0이고 첫 번째 옥텟이 네트워크 ID(7비트)이다. 

네트워크를 128개 중 126개 사용할 수 있다. 

호스트 아이디가 모두 0인 것과 1인 것은 특별한 의미가 있다.

 

B 클래스

B 클래스는 네트워크 아이디에 16비트 호스트 ID에 16비트를 부여하며 B 클래스를 식별하는 식별자는 10비트로 시작한다. B 클래스의 IP 주소는 128~191로 시작하고, 기본 넷마스크는 255.255.0.0이다.

네트워크 주소는 128.0.0.0 ~ 191.255.0.0이고, 호스트 주소는 2바이트와 브로드 캐스트주소(255.255)를 제외한 호스트의 수이다.

 맨 왼쪽 2비트가 10이고 옥텟이 2개인 네트워크 ID(14비트)이다. 

네트워크를 214개를 사용할 수 있다.

호스트 ID로 16비트를 사용할 수 있다.

중형 기관 및 기업에서 사용한다.

 

C 클래스

소규모 네트워크에서 가장 많이 사용하는 네트워크로 식별자는 110이고 호스트 배정에 8비트를 사용한다.

호스트를 최대 254개 사용할 수 있고 IP 주소는 192.0.0.0 ~ 223.255.255.0이다. 

기본 넷마스크는 255.255.255.0이고 호스트 ID는 1바이트를 사용한다. 

맨 왼쪽 3비트가 110이고 옥텟이 3개인 네트워크 ID이다. 

호스트 아이디로 8비트를 사용할 수 있다.

호스트를 254개 사용할 수 있다. 

소규모 기관에서 사용한다.

IP 주소 범위

인터넷과 연결하지 않고 개인적으로 구성한 네트워크는 A,B,C 클래스의 어떤 IP 주소를 사용해도 되지만, 인터넷에 연결하려면 할당받은 공인 IP 주소를 사용해야한다. 공인 IP 주소와 사설 IP 주소의 범위는 별도로 정해져있다. IP 주소 중에는 인터넷에서 사용하지 않는 주소가 있는데 이것이 바로 사설 IP 주소이다. 사설 IP 주소는 IP 주소 부족 문제를 해결하기 위해 사용하는 것으로 범위는 다음과 같다. 

IP는 ipconfig 명령으로 확인할 수 있다. 

 

D 클래스

멀티클래스 용도로 사용하는 D 클래스의 IP 주소는 224~239로 시작한다.

E 클래스

연구 및 특수 용도로 사용되는 E 클래스의 IP 주소는 240~255로 시작한다.

255.255.255.255는 전체 컴퓨터에 대한 브로드캐스트 주소로 사용한다.

네트워크 주소와 브로드캐스트 주소

컴퓨터에 할당할 수 없는 특별한 IP 주소인 네트워크 주소와 브로드캐스트 주소는 컴퓨터나 라우터가 자신의 IP로 사용할 수 없는 주소이다.

집에서 많이 사용하는 C 클래스의 사설 IP 주소에서 네트워크 주소는 호스트 ID가 2진수로 00000000이고 10진수로 0인 주소이다. 브로드 캐스트 주소는 호스트 ID로 11111111이고 10진수로 255인 주소이다.

즉 10진수로 호스트 ID가 0이면 네트워크 주소이고, 255이면 브로드캐스트 주소이다. 

네트워크 주소는 전체 네트워크에서 작은 네트워크를 식별할 때 사용되고 호스트 ID가 10진수로 0이면 그 네트워크 전체를 대표하는 주소가 된다. 

예를 들어 IP가 192.168.35.1 ~ 192.168.35.5인 컴퓨터는 192.168.35.0의 네트워크에 있는 것이다. 

전체 네트워크에 데이터를 전송할 때는 호스트 ID에 255를 쓰면된다. 네트워크 주소와 브로드캐스트 주소는 자신의 IP로만 설정할 수 있다.

서브넷의 구조

A클래스 네트워크는 호스트 ID가 24비트이고 IP 주소를 16777214개 사용할 수 있다. 

네트워크 혼잡 방지를 위해 분할하는 것을 서브넷팅이라하고 분할된 네트워크를 서브넷이라 한다.

서브넷팅을 하게되면 네트워크 ID + 호스트 ID로 구성되었던 A 클래스가 네트워크 ID + 서브넷 ID + 호스트 ID로 변경된다. 

 

서브넷 마스크

서브넷 마스크는 IP를 서브넷팅 하는 경우 어디까지 네트워크 ID이고 어디부터 호스트 ID인지 판단하기 어려울 때 사용한다. 서브넷 마스크는 네트워크 ID와 호스트 ID를 식별하기 위한 32비트의 값으로 A 클래스는 255.0.0.0, B 클래스는 255.255.0.0, C 클래스는 255.255.255.0이다. 

C 클래스의 IP 주소를 서브넷팅 하는 것을 예시로 들면 24비트의 네트워크 ID를 26비트로 변경하기 위해 2비트를 호스트 ID로 변경한다. 

서브넷 마스크를 슬래시로 나타내는 prefix 표기법을 사용할 수 있다. 예를 들어 255.255.0.0은 /16이 되고 255.255.255.0은 /24가 된다. 

IP 프로토콜

IP는 프로토콜 간에 통신하기 위해 TCP/IP 프로토콜의 네트워크 계층에서 사용하는 프로토콜이다. IP는 레이어3 스위치나 라우터 등의 중계장치를 이용해서 라우팅을 하는 기능을 가지고 있다. TCP는 오류가 발생하면 데이터를 재전송할 수 있는 신뢰성 있는 연결 지향형인 프로토콜인 반면 IP는 데이터가 제대로 수신되었는지 확인하는 기능이 없는 비연결형 프로토콜이다. 즉 IP는 전송완료를 보장하지 않는다. 

비연결형 프로토콜은 여러 송신지에 데이터그램을 보내게되면 순서가 바뀌어 도달하기도 하고 일부는 전송 도중 손실된다. 패킷이 정상인지는 상위 계층은 TCP 프로토콜에서 확인한다. 

 

연결형 서비스

송수신자 간에 논리적인 연결을 확립하고 데이터를 전송하는 방법이다. 패킷 순서가 서로 맞지 않을 위험이 낮고 오류가 발생하면 재전송하기 때문에 신뢰성이 있다.

 

비연결형 서비스

송수신자 간에 논리적인 연결을 확립하지 않은 채 데이터를 전송하는 방법이다. 오류가 발생하면 재전송하지 않기 때문에 신뢰성이 없지만 전송 속도가 빨라 중요도가 낮은 데이터 전송에 많이 사용된다.

비연결형 서비스는 UDP 방식이며 상위 계층에서 신뢰성을 보장해야 한다.

IP는 TCP/IP 네트워크를 통해 전송하는 데이터의 기본 단위를 정의하며 데이터를 전송할 최적의 경로를 선택하는 라우팅 기능을 수행한다.

패킷의 전송 경로는 매번 달라진다.

데이터그램의 구조

IP 계층의 패킷을 데이터 그램이라한다. 데이터그램은 가변 길이이며 헤더와 데이터 부분으로 구성된다. IPv4는 가변 길이 헤더를 가지고 있으나 실제로 인터넷에서 사용되는 IP 패킷에는 통상 사용되지 않는다. 이때 IPv4 헤더는 고정 길이로 20바이트를 가진다. 

  • 버전: IP 헤더 안에 있는 4비트 필드로 인터넷 버전을 규정하며 현재 버전은 4이다. 
  • 헤더 길이: 4비트 필드로 데이터그램 헤더 전체 길이를 4바이트 단위로 나타내며 HLEN 필드를 검사함으로써 IP와 응용프로그램은 어디에서 데이터를 발견할 수 있는지 정확히 알게 된다.
  • 서비스 유형: Diffrentiated Services Field는 패킷의 대역을 제어하는 QoSQuality of Service(서비스 품질 제어)에 사용되기도 한다. 이전에는 이 필드를 Type Of ServiceTOS라고 했으며 실제로 TOS 필드로 사용된다. TOS 필드는 통신의 품질을 결정하는 1바이트로 처음 3비트는 해당 패킷의 우선순위, 다음 4비트는 서비스 유형을 나타내며 마지막 1비트는 예약됨을 나타내는 0이 들어간다.

우선순위는 범위의 값이 0~7인 3비트의 서브 필드로, 라우터에 혼잡이 발생하여 데이터 그램의 일부를 폐기해야 한다면 우선순위가 가장 낮은 데이터그램을 먼저 폐기한다. 그러나 라우터는 대부분 이 필드를 무시한다. TOS는 IP 데이터그램을 전달하는 QoS 기능을 제공하기 위해 고안된 4비트 서브 필드로 각 비트는 0 또는 1의 값을 가질수 있으나 오직 한 비트의 값만 1을 가진다. 

TOS 비트의 다섯가지 서비스 유형은 다음과 같다. 서비스 유형에 따라 지연, 처리량, 신뢰성,비용 등을 설정할 수 있으며 상호 베타적이어서 하나의 값이 1이되면 나머지 값은 0이된다. 

전체길이

Total Length는 16비트로 IP헤더와 IP 데이터그램의 길이를 바이트 단위로 정의한다.

IP 데이터그램의 길이와 헤더 길이를 이용하여 상위 계층으로부터 받은 데이터 길이를 구할 수 있다.

헤더의 바이트 길이 단위는 HLEN 필드에 4를 곱해서 구한다. 전체 필드 길이가 16비트이므로 IP 데이터그램 전체 길이의 최댓값은 216-1바이트이다. 이 중 20~60바이트는 헤더이고 나머지는 상위 계층으로부터 받은 데이터이다.

식별

네트워크에서는 데이터그램을 전송하기 위해 더 작은 조각으로 분할하기 때문에 패킷의 단편이 재결합할 때 동일한 메시지의 일부임을 식별할 수 있다. 식별 Identification 필드는 데이터그램에 설정하는 고유한 번호로, 식별자 필드의 16비트이다. 

플래그

호스트 컴퓨터는 식별자, 플래그 Flags, 단편 오프셋(Fragmentation Offset) 필드를 데이터 링크 계층으로 분할한 IP 패킷의 재결합에 이용된다. 패킷의 분할을 제어하는 플래그는 3비트로 구성되며 첫 번째 비트는 사용하지 않고 두 번째 비트와 세 번째 비트만 사용한다.

단편 오프셋

단편 오프셋 필드는 13비트이며 단편화된 패킷을 재결합할 때 플래그 필드, 식별 필드와 결합해서 사용한다. 분할된 조각은 원본 데이터에서 자리 표시 필드의 역할을 한다. 

라이프타임

패킷이 네트워크에서 생존할 수 있는 시간을 규정한다. TTL 필드는 데이터그램이 통과하는 최대 라우터 수를 제어하기 위해 사용한다. 데이터그램이 라우터를 통과할 때마다 필드 값이 1 감소한다. 0이 되면 라우터는 해당 값을 폐기함으로써 트래픽이 증가하는것을 막는다. 

프로토콜

IP 헤더의 8비트 프로토콜 필드로, IP 계층의 서비스를 사용하는 상위 계층의 프로토콜(TCP, ICMP, IGMP, UDP 등)이 무엇인지 정의한다.

프로토콜 필드는 IP 데이터그램을 전송해야 하는 최종 수신지의 프로토콜을 나타낸다. 

예를 들어 필드의 값이 4이면 패킷의 데이터 영역에는 UDP 세그먼트가 들어있다.  

검사합

검사합(checksum)은 TCP/IP 프로토콜에서 많이 사용하는 오류 제어 방법으로 패킷 전송 중에 발생하는 헤더 부분의 오류를 검사한다. 패킷 전송 중 발생하는 헤더 부분의 오류를 검사한다. 송신자가 전송하는 패킷의 검사합을 함께 보내면 수신자는 패킷과 함께 검사합을 계산하여 조건을 만족하면 패킷을 받아들이고 그렇지 않으면 폐기한다. 또한 검사합은 IP 데이터그램의 데이터를 제외한 헤더에서만 수행된다. 

검사합 수행 과정

  1. 송신 측은 IP 데이터그램의 검사합 필드를 0으로 만든다.
  2. 패킷을 16비트 단위로 나눈 후 모두 합한다.
  3. 구한 합의 1의 보수를 구한다.
  4. 구한 검사합을 검사합 필드에 넣는다.
  5. 수신 측은 받은 패킷을 16비트 단위로 나눈 뒤 모두 합한다. 
  6. 값이 모두 1로 나오면 패킷을 받아들이고, 그렇지 않으면 폐기한다.

송신지 주소

32비트의 Source Address 필드는 송신지의 IP 주소를 정의하며, IP 데이터그램이 송신지에서 수신지까지 전송되는 동안 이 주소 값을 유지해야 한다.

수신지 주소

32비트의 Destination Address 필드는 수신지의 IP 주소를 정의하며, IP 데이터그램이 송신지에서 수신지까지 전송되는 동안 이 주소 값을 유지해야 한다. 

옵션

IP 헤더에 부가적인 필드를 제공하는 데 사용되는 가변 길이의 선택 사항 옵션이다. 현재 대부분의 IPv4 옵션은 사용되지 않는다. 

스위치만 있는 네트워크에는 모든 컴퓨터와 스위치가 동일한 네트워크에 속한다. 마찬가지로 네트워크를 분할할 수는 없지만 라우터는 네트워크를 분할할 수 있다. 

네트워크로 분할한 뒤 다른 네트워크에 있는 컴퓨터로 데이터를 전송하려면 라우터의 IP 주소(192.168.35.1)을 설정해야한다. 이는 네트워크 출입구를 설정하는 것으로 기본 게이트웨이라고 한다. ipconfig 명령으로 확인 가능하다. 

다음 그림과 같이 컴퓨터1이 컴퓨터5에 데이터를 전송하는 경우 기본 게이트웨이를 설정해야한다. 

 

라우터

게이트웨이를 설정하는 방법

라우팅 테이블

현재 네트워크에서 다른 네트워크로 데이터를 전송할 때는 라우팅 경로 정보를 바탕으로 최적의 경로로 데이터를 전송한다.

각 라우터에 라우팅 테이블에 경로 정보가 등록되어 있어 라우팅이 가능한 것이다. 

 

라우팅 테이블은 자동으로 등록하는 방법과 네트워크 관리자가 수동으로 등록하는 방법이 있다. 자동은 대규모 네트워크에 적합하고 수동은 소규모 네트워크에 적합하다.

 라우터간 정보를 교환하는 프로토콜을 라우팅 프로토콜이라 하며 라우팅 프로토콜을 설정하여 라우터 간에 경로 정보를 서로 교환하고 그것을 라우팅 테이블에 등록한다. 대표적인 라우팅 프로토콜은 RIP, OSPF 등이다. 

라우팅 과정

  1. 패킷을 수신하면 라우터는 IP 헤더의 수신지 IP 주소를 확인하고 이 IP 주소와 서브넷마스크의 논리합을 계산하여 네트워크 주소를 확인한다. 
  2. 수신지 네트워크 주소를 바탕으로 라우터의 라우팅 테이블을 검색한다. 라우팅 테이블에는 수신지 네트워크와 서브넷 마스크, 해당 네트워크에 도달하기 위한 다음 단계의 중계 라우터 next hop, 전송을 위한 인터페이스가 기술되어있다. 
  3. 수신 경로를 확인한 후 IP 패킷의 TTL 값에서 1을 빼고 검사합을 다시 계산하여 데이터 링크 계층의 헤더를 교체한다. 
  4. 각 라우터나 레이어3 스위치가 이러한 처리를 반복함으로써 다음 네트워크로 계속 중계한다. 
  5.  

IPv6

IPv6의 필요성 

한 조직이 A 클래스를 할당 받으면 호스트 1600만개를 할당받을 수 있다. 그러나 C 클래스는 주소를 256개만 할당 받을 수 있는데 이는 충분하지 못하다. 

인터넷의 폭발적인 성장으로 이미 IPv4 주소 체계는 고갈되었다. 그래서 해결책으로 IPv6이 등장하였다. IPv6은 128비트로 구성되며 긴 주소를 쉽게 읽을 수 있도록 16비트씩 콜론으로 나누어 각 비트를 16진수로 표현하는 방법을 이용한다. 

 

IPv6의 특징

  • IPv6 주소의 길이는 128비트로 IPv4에 비해 4배 증가하였다.
  • 옵션을 기본 헤더와 분리하여 필요할 때마다 기본 헤더와 상위 계층 데이터 간에 새로운 확장 헤더를 삽입해서 사용할 수 있다.
  • 대부분 옵션은 라우터로 검사할 필요가 없으므로 라우팅이 빠르다.
  • 서비스 유형 필드를 삭제하고 플로우 레이블(flow lable) 항목을 추가하여 송신자가 패킷에 특별한 처리를 요청할 수 있다. 
  • 향상된 보안 환경을 제공한다. 

fe::80으로 시작하는 주소는 LAN 세그먼트 내에서만 유효한 IPv6 주소인데 이를 링크-로컬 주소라고 한다. 링크-로컬 주소는 DHCP 서버 없이도 자동으로 설정되는 주소이다.

IPV6 주소의 128비트는 2바이트 영역 2개로 나뉘며, 16진수 32개로 표현된다. 

앞의 64비트는 네트워크 주소를 의미하고 뒤의 64비트는 네트워크에 연결된 통신 장비 등에 할당되는 인터페이스 주소를 의미한다.

IPv6의 주소 필드는 네트워크 프리픽스 부분(fe80::) 64비트와 인터페이스 ID 부분 64 비트로 이루어져있다. 

IPv6에서는  IP 주소의 후반부를 호스트 ID가 아닌 인터페이스 ID라 부른다.

인터페이스 ID는 고정길이(64비트)이며 일반적으로 EUI-64 주소를 사용한다.

이더넷에서는 48비트 MAC 주소를 24비트 시작 부분과 24비트 끝 부분으로 나누고 그 사이에 FFEE를 삽입한다.

128비트의 IP 주소는 두 콜론 사이에 있는 4개의 수에서 앞의 0을 생략함으로써 줄여서 표현할 수 있다. 

연속된 0으로만 구성된(2개 이상) 섹션은 0을 모두 지우고 콜론으로 표현할 수 있다. 이는 주소당 한번만 가능하다. 

IPv6 헤더

IPv6의 각 패킷은 기본 헤더와 페이로드로 구성되고 IPv6의 헤더는 간결하다. IPv6의 헤더는 가변 길이 헤더로 되어있지 않고 추가 기능은 다음 헤더 필드를 이용하여 확장 헤더로 캡슐화한다.

IPv6의 헤더는 40바이트 고정길이 헤더로 간결하다. IPv4에는 있으나 제거된 필드는 헤더 길이, 식별자, 플래그, 단편 오프셋, 검사합, 옵션, 패팅이며 비슷한 기능을 하는 헤더는 TOS, TTL, 전체 길이, 프로토콜이다.

IPv6의 기본 헤더의 종류는 다음과 같다.

  • 버젼: 4비트며 6을 나타낸다.
  • 트래픽 클래스: 8비트이며 TOS 필드 명칭이 바뀐 것이다.
  • 플로 레이블: 20비트이며 미사용 필드로 일반적으로 0이 들어간다.
  • 페이로드 길이: 16비트이며 IPv4 전체 길이 필드 명이 바뀐 것이다.
  • 다음 헤더: 8비트이며 IPv4 프로토콜 필드 명칭이 바뀐 것이다.

  • 홉 제한: IPv4 라이프타임 필드 명이 바뀐 것이다.
  • 송신지 IP 주소: 128비트로 송신지의 IPv6 주소를 지정한다.
  • 수신지 IP 주소: 128비트로 수신지의 IPv6 주소를 지정한다.

IPv6 확장 헤더의 종류는 다음과 같다.

  • 홉 바이 홉 옵션 헤더: 경로 상의 각 홉에서 배달 또는 전달 처리 옵션을 지정하기 위해 사용
  • 목적지 옵션 헤더: 패킷의 목적지에서 배달 혹은 전달 처리 옵션을 지정하기 위해 사용
  • 라우팅 헤더: 패킷이 목적지에 가는동안 경유해야 할 라우터를 지정
  • 단편화 헤더: 요청한 페이로드가 MTU보다 크면 IPv6 송신지에서 페이 로드를 조각내고 단편화 옵션 헤더를 사용하여 리어셈블 정보를 제공하여 Destination Node가 재결합한다. 
  • AH 헤더: IPSec의 인증 헤더이다.
  • ESP 헤더: IPSec의 인증 및 암호화 헤더이다.

프리픽스

IPv6에서는 /48, /64, /128 등으로 표현한다.

 

IPv6의 장점

  • 확대된 주소 공간
  • 단순해진 헤더 포멧
  • 간편해진 주소 설정
  • 강화된 보안 기능
  • 개선된 모바일 IP

IPv4 > IPv6 전환 기술

전환 기술은 IPv4 네트워크망과 IPv6 네트워크망 간에 주소 변환기를 이용하여 IP를 상호 연동시키고 게이트웨이를 이용하여 IPv4와 IPv6 주소 체계를 호환하는 기능이다.

어떤 계층을 거쳐 변환되느냐에 따라 응용 계층 게이트웨이 방식, 전송 계층 릴레이 방식, 헤더 변환 방식으로 구성할 수 있다.

응용 계층 게이트웨이 방식

응용 계층 게이트웨이 방식은 변환 서비스를 위한 ALG로 웹사이트 정보를 숨기고 캐시 메커니즘으로 성능을 향상하는데 사용한다. ALG가 IPv4와 IPv6 프로토콜을 동시 지원할 때는 두 프로토콜 간 변환 메커니즘으로 사용할 수 있다. 

응용 계층 게이트웨이 방식은 응용 계층에서 변환되며 각 서비스는 IPv4와 IPv6에 밀폐 되어 있어 FTP, DNS, 텔넷 서비스 등 응용 프로토콜에 내장된 주소를 변환하는데 용이하다.

응용 계층 게이트웨이 방식 기술에는 SQUID가 있다.

전송 계층 릴레이 방식

전송 계층 릴레이 방식은 TCP/UDP의 IPv4 세션과 TCP/UDP IPv6의 세션을 중간에서 릴레이한다. 이때 TCP 릴레이 서버는 다음과 같은 동작을 거쳐 전송 계층으로 전환된다. 

  1. TCP 요청이 릴레이 서버로 들어오면 네트워크 계층은 수신지가 서버의 주소가 아니어도 TCP 요청을 TCP 계층으로 전송한다.
  2. 서버는 실제 수신지로 TCP 연결을 하나 더 생성하고 연결이 2개 구축되면 이 중 하나에서 데이터를 읽어 나머지 하나의 연결에 기록한다.

전송 계층 릴레이 방식에는 IPv4와 IPv6가 각 세션에 밀폐되어 있으므로 헤더 변환 방식처럼 ICMP 변환 문제가 발생하지 않는다.

그러나 응용 프로토콜에 내장된 IP 주소가 변환되지 않는다는 것이 단점이다.

전송 계층 릴레이 방식 기술에는 TRT와 SOCKS 게이트웨이 기술이 있다.

헤더 변환 방식

헤더 변환 방식은 네트워크 계층에서 IPv6 패킷 헤더를 IPv4 패킷 헤더로 또는 IPv4 패킷 헤더를 IPv6 패킷 헤더로 변환하는 것이다. 

인터넷은 대부분 IPv6를 사용하므로 헤더 변환이 필요 없지만 IPv4는 헤더 변환이 필요하다. 

헤더 변환은 IP 계층에서의 변환을 의미하며 IPv4 패킷을 IPv6 패킷으로 또는 그 반대로 패킷을 변환하는 것은 SIITStateless IP/ICMP Translation에서 정의한다.

SIIT 방식에 기반을 둔 헤더 변환의 예로는 NAT-PTNetwork Address Translation-Protocol Translation를 들 수 있다.

헤더 변환은 IP 계층에서만 이루어지므로 다른 방식보다 속도가 빠르다. 하지만 NAT와 마찬가지로 IP 계층 변환에 따른 어려움이 있으며 이러한 문제를 해결하려면 DNS-ALG, FTP-ALG 등의 응용 게이트웨이를 별도로 추가해야 한다.

헤더를 변환할 때 IPv4 패킷을 IPv6 패킷 여러 개로 분할하는데, 이는 IPv6의 헤더 길이가 IPv4보다 20바이트 더 길기 때문이다.

네트워크 계층 프로토콜

TCP/IP에서 네트워크 계층 프로토콜은 ARP, IP, ICMP, IGMP로 구성된다. 전송 계층의 패킷은 세그먼트로 네트워크 계층에 전송되고 네트워크 계층의 데이터는 IP 헤더가 추가된 IP 데이터 그램으로 동작한다. 

네트워크 계층에서는 송신할 때 상위 계층의 패킷에 IP 주소 정보를 포함한 헤더를 추가하여 하위 계층으로 전송한다.

수신할 때는 하위계층으로부터 전송받은 패킷의 헤더 정보를 확인한 후 헤더를 제거한 채 상위 계층으로 전송한다.

송신 측 시스템이 수신 측 시스템으로 패킷을 전송할 때 이 패킷은 물리적인 네트워크를 통과한다. 따라서 패킷이 수신 측 시스템에 도착하려면 수신 측의 논리주소 뿐만 아니라 물리 주소도 알아야한다. ARP는 IP를 MAC 주소로 변환하는 프로토콜이다.

RARP는 물리주소인 MAC 주소를 IP 주소로 변환하는 역주소 변환 프로토콜이다. 

주소 변환 프로토콜(ARP)

IP 프로세스는 물리 주소를 모르기 때문에 최종 수신지 호스트까지 신호를 전달하려면 기본 게이트웨이에서 수신지 IP 주소와 관련 있는 MAC 주소를 알아야한다. 이때 논리 주소인 IP 주소를 물리 주소인 MAC 주소로 매핑하는 것이 바로 주소변환 프로토콜(ARP)이다. 

네트워크 카드의 물리 주소는 제조 업체에서 생산할 때 결정되므로 네트워크 카드를 교체하면 MAC 주소도 바뀐다. 하지만 IP 주소는 네트워크 카드를 교체해도 동일한 주소를 사용할 수 있다. 

송신지 호스트에서 수신지 호스트로 신호를 전송할 때 수신지 게이트웨이까지는 MAC 주소를 알 필요가 없다. 하지만 수신지 게이트웨이에 도달한 후 수신지 호스트까지 신호를 전송하려면  ARP가 동작해야 한다. ARP 신호 전송은 두 가지 동작으로 나타낸다.

하나는 수신지 호스트의 MAC 주소를 알아내는거고 또 하나는 해당 MAC 주소로 데이터를 전송하는 것이다.

ARP 통신 송수신은 IP 주소를 키로 하여 MAC 주소를 질의하는 ARP 요청 브로드캐스트와 해당 IP를 사용하고 있는 기기가 질의한 곳으로 MAC 주소 및 IP 주소를 응답하는  ARP 응답 유니캐스트의 조합으로 구성된다.

IP 주소와 호스트 매핑

A 호스트 컴퓨터에서 C 호스트 컴퓨터로 신호를 전송한다고 가정해보자. 각 호스트 컴퓨터의 IP 주소와 MAC 주소가 다음과 같을 때 절차는 다음과 같다.

  1. A 호스트 컴퓨터는 응용프로그램이나 서비스를 이용하여 메시지를 작성하고 C 호스트 컴퓨터의 IP 주소를 입력한다. 
  2. ARP는 C 호스트 컴퓨터의 IP에 해당하는 MAC 주소를 알아내기 위해 ARP 캐시에 해당하는 정보가 있는 지 확인하고 정보가 있으면 메시지를 전송한다.
  3. 해당 MAC 주소가 없으면 모든 호스트 컴퓨터로 ARP 신호를 전송하며 이때 요청 신호에 자신의 MAC 주소와 수신지 IP 주소를 기록한다.
  4. ARP 요청 신호를 모든 호스트 컴퓨터가 수신한다.
  5. C 호스트는 요청 IP가 자신의 것이므로 자신의 MAC 주소를 응답으로 보낸다.
  6. 다른 호스트 컴퓨터는 요청한 주소에 해당하는 MAC 주소를 모르므로 응답하지 못하고 A 호스트 컴퓨터는 C 호스트의 MAC 주소를 자신의 캐시에 저장한다.

MAC 주소로 데이터 전송

  1. A 호스트 컴퓨터는 C 호스트 컴퓨터의 MAC 주소로 프레임을 만들어 하위 계층으로 전송하고 하위 계층에서는 전기 신호로 만들어 전송한다.
  2. 모든 호스트 컴퓨터는 A 호스트 컴퓨터가 전송한 신호를 수신한다.
  3. C 호스트 컴퓨터는 자신의 MAC 주소와 일치하므로 수신하고 나머지 컴퓨터는 신호를 폐기한다.

ARP 요청을 보낸 컴퓨터와 요청을 받은 컴퓨터 모두 일시적으로 ARP 캐시 테이블에 IP 주소와 MAC 주소 조합을 저장한다. 그 후 수명을 설정한 후 해당 시간이 경과하면 테이블에서 제거한다. 윈도우는 120초이다.

ARP 요청은 LAN에서 브로드캐스트로 전송되고 응답은 LAN에서 유니캐스트로 전송된다. 이러한 송수신은 데이터 링크 계층으로 한정된다. 

역주소 변환 프로토콜(RARP)

RARP는 호스트 컴퓨터의 물리 주소를 알고 있을 때 IP 주소를 알아내는데 사용한다. 

이더넷, 토큰링, FDDI 등 근거리 통신망에서 사용할 수 있다. 

인터넷 제어 메시지 프로토콜(ICMP)

네트워크 호스트나 라우터에서는 예상치 못한 상황이 발생할 수 있다. ICMP는 라우터에서 발생한 오류를 송신 측으로 전송하는데 사용하는 프로토콜이다. ICMP는 네트워크 계층에서 상주하지 않고 다음 그림과 같이 IP 데이터그램에 캡슐화되어 인터넷으로 전송된다. 

ICMP는 수신지 호스트나 라우터가 도달 가능한지 결정하며, 시간을 초과한 IP 데이터그램이나 헤더에 부적합한 정보가 있는 데이터그램 등 잘못된 IP 데이터그램을 수신하고 있다는 것을 통지하여 메시지를 상호 교환한다. ICMP의 처음 4바이트는 모두 동일하고 나머지 부분은 메시지에 따라 달라진다.

  • 타입: ICMP의 메시지의 15개 종류 중 무엇인지 명시한다. 
  • 코드: 메시지의 종류를 타입보다 좀 더 세분화하는 추가적인 코드이다. 
  • 검사합: 메시지의 오류를 검사한다.
  • 타입과 코드의 값에 따라 변경된다.

ICMP 질의 메시지

ICMP는 질의하거나 응답하여 정보를 구하는 데 사용할 수 있는데 이러한 유형을 질의 메시지라 한다. 

  • 에코 요청 및 응답: PING 프로토콜을 구현하는 데 사용하는 메시지로, 에코 요청 메시지는 어떤 컴퓨터의 ICMP 소프트웨어로도 전송할 수 있다. 이후 ICMP 소프트웨어는 에코 요청 메시지에 대해 에코 응답 메시지를 전송할 것을 요청 받는다.
  • 타임 스탬프 요청 및 응답: 호스트나 라우터에서 현재 날짜와 시간을 지시하는 메시지로 여러가지 상황에서 경과 시간을 측정하는 도구로 사용된다.
  • 주소 마스크 요청 및 응답: 호스트의 서브넷 마스크를 알아보는데 사용한다. 
  • 라우터 연결 요청 및 응답: 다른 네트워크 호스트에 데이터를 전송할 때 자신의 네트워크에 연결된 라우터의 주소를 요청하기 위해 사용한다.

ICMP 오류 메시지

가장 일반적인 ICMP 메시지로 전송을 시도할 때 혹은 IP 데이터그램을 전송하는 도중에 발생하는 다양한 오류를 통보한다.

  • 목적지 도달 불가능: 데이터그램을 최종 목적지까지 도달할 수 없을 때 라우터는 데이터그램을 생성한 호스트에 목적지 도달 불가능 메시지를 전달한다. 
  • Network Unreachable(네트워크에 도달할 수 없음): 오류를 보고하는 라우터의 라우팅 테이블에서 수신지 네트워크의 경로를 찾을 수 없을 때 생성됨
  • Host Unreachable(호스트에 도달할 수 없음): IP 데이터그램을 최종 호스트까지 전송하지 않았음을 의미하며 최종 단계 라우터가 수신지까지 이르는 방법을 찾지 못할 때 생성됨
  • Protocol Unreachable(프로토콜에 도달할 수 없음): 수신지 시스템에서 특정 전송 프로토콜을 사용할 수 없음을 알리며 사용자가 비표준 프로토콜을 사용해 지원하지 않는 다른 호스트와 통신할 때 생성됨
  • Port Unreachable(포트에 도달할 수 없음): 수신지 시스템에서 특정 수신지 포트 번호를 사용하지 않았음을 의미하며 대부분 UDP 때문에 생성된다. 
  • Source Route Failed(송신지 라우팅을 수행할 수 없음): 다음 단계의 라우터가 유효하지 않거나 다음 단계의 라우터에 데이터그램을 전송할 수 없을 때 생성됨
  • 송신지 억제: 송신지 시스템이 너무 많은 데이터를 전송하면 수신지 시스템은 송신지 시스템에 ICMP 송신지 억제 메시지를 보내 전송 속도를 줄일 것을 요구한다. 
  • 재지정: 라우터가 다른 네트워크로 가야하는 패킷을 송신해야 할 때는 적절한 다음 라우터의 주소를 알아야한다. 
  • 시간초과: 라우터가 데이터그램에 있는 라이프타임 필드를 0으로 감소시킬 때 마다 라우터는 데이터그램을 소멸시키고 시간 초과 메시지를 보낸다.
    • Time-to-live Exceeded in Transit: IP 데이터그램을 최종 수신지에 전송하기 전에 데이터그램의 활성화 시간이 0에 도달하면 해당 메시지 사용
    • Fragment Reassembly Time Exceeded: 수신지 시스템이 주어진 시간 내에 모든 단편을 보내지 못했을 때 사용
  • 매개변수 문제: 라우터나 호스트는 데이터그램의 IP 헤더 매개변수에서 문제를 발견하면 데이터그램을 폐기한다.

ICMP 오류 메시지를 생성하지 않을 때

  • ICMP 오류 메시지를 전송하는 데이터그램에서는 오류 메시지를 생성하지 않는다.
  • 멀티캐스트 주소가 있는 데이터그램에서는 오류 메시지를 생성하지 않는다. 
  • 특수한 주소가 있는 데이터그램에서는 오류 메시지를 생성하지 않는다.

인터넷 그룹 메시지 프로토콜(IGMP)

IGMP는 인터넷에 연결한 컴퓨터가 멀티캐스트 그룹을 주위의 라우터에 알릴 수 있는 수단을 제공하는 프로토콜이다.

 

'CS > 데이터통신' 카테고리의 다른 글

[응용 계층]  (1) 2024.12.15
[TCP]  (0) 2024.12.04