콘텐츠로 건너뛰기

1.4 TCP/IP

1장. 네트워크 기초

1.1 네트워크 일반

1.2 컴퓨터 네트워크의 구분

1.3 프로토콜(Protocol)

1.4 TCP/IP

TCP는 Transmission Control Protocol, IP는 Internet Protocol의 약자이다. TCP/IP는 단일 프로토콜이 아니며 TCP/IP Suite이며 컴퓨터 통신에서 필요로 하는 여러 가지 프로토콜을 일컫는 말이다. 그러나 TCP와 IP가 그 Suite 중에서도 많은 기능을 수행하므로 보통 TCP/IP로 붙여서 사용되며 인터넷을 이용하여 데이터를 교환하는 통신 프로토콜을 의미하기도 한다.

이전 글 1.3 프로토콜에서 보듯이 IP는 네트워크 계층에서 정의된 프로토콜이며 TCP는 트랜스포트 계층에서 정의된 프로토콜로서 해당 계층의 전형적인 임무를 수행한다. TCP는 데이터의 흐름을 관리하고 데이터가 정확하게 전달되었는지 확인하는 역할을 담당하며 IP는 네트워크에 노드를 할당하고 이러한 노드에 패킷 전송하는 일을 담당한다.

이제 TCP/IP의 실제 구조 및 네트워크 관리시 필요한 것에 대해 알아보자.

​1.4.1 IP(Internet Protocol)

​IP는 네트워크망의 설계도면이다. 통신의 주체인 노드의 위치, 전송 경로, 전송 방법에 대한 내용들을 포괄하고 있다. 이는 전국 교통망 지도와 비교하면 이해하기가 쉽다. 즉, 교통망 지도는 우리에게 목적지 위치, 운송 경로 및 이동 수단에 대한 내용을 보여주듯이 IP는 인터넷 통신망에서의 노드 위치, 운송 경로 및 운송 방법에 대한 내용을 보여주는 것이다.

​(1) IP 주소 체계(IPv4)

​IP 주소는 인터넷상에서 구별되어지는 중복되지 않는 주소이다. 이러한 주소는 클래스라는 체계를 가지며 총 32비트의 숫자로 구성되어 있고, 8 비트씩 나누어 각 나눈 위치에 소수점(dot 또는 점이라 읽는다)을 둔 4개로 나누어진 십진수의 모음으로서 표현되며 소수점으로 구분된 숫자들 중 앞에서 차례로 첫 번째, 두 번째, 세 번째, 네 번째 옥텟이라고 구분하여 말할 수 있다. 이 설명은 IP주소 체계 버젼(Version) 4에 기반한다. 현재는 IPV6(IP 주소 체계 버젼 6)를 사용하고 있다.

이진수
(x=0 or 1)
xxxxxxxx
(0000 0000 – 1111 1111)
xxxxxxxx
(0000 0000 – 1111 1111)
xxxxxxxx
(0000 0000 – 1111 1111)
xxxxxxxx
(0000 0000 – 1111 1111)
10 진수0 – 2550 – 2550 – 2550 – 255
일반적 표기 예시255.255.192.2 / 192.168.0.1 /1.1.1.1
표 1. IP 주소 체계(IPv4)

(2) 클래스 체계

​클래스 체계는 상위의 옥텟이 특정 범위에 있어서 자신이 특정 클래스임을 알리고, 하위의 옥텟을 이용해서 네트워크를 구분하며 이 네트워크에 참여하고 있는 호스트를 지정하는 방식이다.

클래스가 정해지면, 네트워크는 클래스에 따라 네트워크를 구획하는 방법이 달라지는데, 클래스를 구분짓는 옥텟 또는 이 옥텟에 덧붙여진 추가 옥텟으로 네트워크를 구분하게 된다. 이런 옥텟의 모임은 네트워크 아이디라고 불린다. 또한, 네트워크 아이디로 참여한 옥텟을 제외한 하위 옥텟은 그 네트워크에 참여하는 호스트를 지정할 수 있다. 이 옥텟 또는 옥텟의 모임은 호스트 아이디라고 불린다.

클래스를 2진수 상에서 보면 첫 옥텟의 첫 비트가 0이면 클래스 A, 시작 비트가 10이면 B 클래스, 110 이면 C 클래스라고 한다. 그리고 시작비트가 1110이면 D 클래스라고 말한다. 클래스 D는 멀티캐스트 목적으로 만든 클래스다. 시작비트가 11110인 클래스 E는 추후 사용 목적으로 예약되어 있으며 그 사용이 유보되어 있다.

클래스첫 번째 옥텟
(2진)
첫 번째 옥텟 (10진)네트워크 ID호스트 ID
A0xxxxxxx1 ~ 1268비트24비트
B10xxxxxx128 ~ 19116비트16비트
C110xxxxx192 ~ 22324비트8비트
D1110xxxx224 ~ 239없음없음
E1111xxxx240 ~ 255없음없음
표 2. 클래스 체계

(3) 클래스 체계에서의 예외

아래에 윗 클래스 체계에서 예외되는 몇 가지 제한 사항을 나열한다.​

  • 브로드캐스트 주소

네트워크 전체 호스트를 나타내는 주소로서 호스트 주소가 255로 끝나는 경우이다. 255는 이진수로 1111 1111 이다. 이 주소로 데이터를 전송하면 같은 네트워크에 있는 모든 호스트(단말)이 데이터를 수신한다.

  • 네트워크 주소

네트워크를 대표하는 주소를 말한다. 네트워크를 구분하는 클래스 체계의 옥텟을 가진다. 그러므로 하위 옥텟은 모두 영(0)으로 표시된다.

  • RFC 1918에 정의된 주소

사설망 주소로 다루어지는 주소 범위이다. 클래스 체계는 따르지만, 아랫 클래스의 IP주소 체계를 사용한다면, 이것은 공인 인터넷 IP 주소가 아닌 기업 또는 단체 내부의 사설망을 클래스 체계로 정의했다는 의미이다.

A클래스: 10.0.0.0 ~ 10.255.255.255
B클래스: 172.16.0.0 ~ 172.31.255.255
C클래스: 192.168.0.0 ~ 192.168.255.255 

  • 로컬 주소

127.0.0.1 자기 자신의 호스트를 나타낸다. 주로 NIC가 올바르게 작동하는지 등의 진단시 사용한다.

(4) 서브넷과 서브넷 마스크

​C 클래스를 할당받은 네트워크는 네트워크 주소 및 브로드캐스팅 주소를 제외한 254개의 IP 주소를 호스트에 할당할 수 있다. 그러나, 보통 소규모의 기업에서는 10-20대 정도의 호스트에만 IP 주소를 할당하여 사용하고 있기 때문에 IP의 낭비가 심하게 된다. 이와 같은 IP의 낭비를 줄이기 위한 방법으로서 서브넷 마스크라는 기법이 도입된다. 서브넷팅(Subnetting)은 서브넷 마스크를 이용해서 하나의 네트워크를 여러 서브네트워크로 분리하는 것이다.

서브넷 마스크라는 의미는 32비트 값으로, 1로 표시된 부분은 네트워크 ID(서브넷 포함)를, 0으로 표시된 부분은 호스트 ID를 나타낸다.

즉, C클래스는 32비트 중 앞의 24비트가 네트워크 주소 또는 네트워크 ID가 되며, 뒤 8비트가 호스트 ID로 사용되는 디폴트 서브넷 마스크를 가진다는 말과 동일하다. 아래의 표에 각 클래스의 디폴트 서브넷 마스크값을 보인다.

클 래 스A 클래스B 클래스C 클래스
디폴트
서브넷 마스크
255.0.0.0255.255.0.0255.255.255.0
표 3. 디폴트 서브넷 마스크

C 클래스 203.239.153.0 – 203.239.153.255를 부여받은 네트워크가 있다고 가정하자. 이 네트워크를 4개의 서브넷으로 나누어 보자. 4개로 나누기 위해서는 두 개의 비트가 필요하다(00/01/10/11). 이 두 개의 비트를 옥텟의 맨 앞에 놓으면 아래처럼 4개의 서브넷(서브넷)으로 구획된다.

00xx xxxx / 01xx xxxx / 10xx xxxx / 11xx xxxx

​따라서, 서브넷 마스크(1100 0000)는 255.255.255.192가 되고 서브넷 마스크의 마지막 옥텟 값인 192 (1100 0000)에 대하여 네트워크는 다음의 주소로 구획된다. 즉, 네트워크 설정 시 서브넷 마스크로 255.255.255.192로 설정하면, 이 C클래스는 4개의 서브 네트워크로 분할해서 사용함을 뜻한다.

서브넷 번호IP 주소의 범위
0(bit 00)203.239.153.0 – 203.239.153.63
1(bit 01)203.239.153.64 – 203.239.153.127
2(bit 10)203.239.153.128 – 203.239.153.191
3(bit 11)203.239.153.192-203.239.153.255
표 4. 서브넷의 설명을 위한 표

그러나 IP 주소 제약 요소에 의하여 각 서브넷의 IP 주소의 할당 범위는 다음과 같이 조정된다.

서브넷 번호IP 주소의 할당 범위
0(bit 00)203.239.153.1 – 203.239.153.62
1(bit 01)203.239.153.65 – 203.239.153.126
2(bit 10)203.239.153.129 – 203.239.153.190
3(bit 11)203.239.153.193 – 203.239.153.254
표 5. 서브넷의 실제 IP 주소의 범위

이제 IP 주소를 보고 어느 네트워크에 있는지를 확인 해 보자. 호스트 주소를 서브넷 마스크와 AND 연산하면 알 수 있다.

예) IP 주소가 203.239.153.2과 203.239.153.194인 호스트의 네트워크 주소를 파악해보자. 단, 서브넷 마스크는 255.255.255.192으로 설정되어 있다.

주소호스트 주소(2진수)비트 마스크AND 연산네트워크 ID
203.239.153.20000 00101100 00000000 0000203.239.153.0
203.239.153.1941100 00101100 00001100 0000203.239.153.192
표 6. 서브넷을 채용한 클래스에서 비트마스크를 이용해서 네트워크 아이디(ID)를 찾는 표

데이타의 전송경로를 파악하고 이러한 경로로 데이타를 전송하는 라우터는 호스트 주소를 받으면, 서브넷 값을 참조하여 AND 연산을 하게 되어 어느 네트워크 ID로 보낼지 쉽게 파악할 수 있게 된다. 또한 <표 5>에서 보듯이 각각의 서브넷은 4개의 네트워크로 구분됨을 또한, 서브넷의 갯수가 늘어나면 구획 가능한 네트워크의 갯수는 늘어나지만 각 네트워크의 호스트 개수는 줄어든다는 점도 쉽게 유추할 수 있다.

(5) CIDR(Classless Inter-Domain Routing) 표기법

서브넷팅이 이미 할당된 네트워크 내부의 낭비를 줄이는 기술이라면, CIDR은 IP 주소 할당 방식 자체를 바꿔 근본적인 낭비를 해결하고 라우팅 효율까지 높인 방식이다. CIDR은 가변 길이 서브넷 마스크(VLSM: Variable-Length Subnet Mask) 기법을 사용하여 클래스 개념 자체를 사용하지 않고도 IP 주소를 유연하게 할당하고 라우팅 효율을 극대화하는 방식이다.

이 기술은 서브넷 비트를 1 비트 마다 조정할 수 있어 <표 3>에서 보듯이 클래스를 옥텟(8비트)마다 구분해서 사용하는 것보다 IP 주소를 낭비없이 사용할 수 있게 되었다. 또한, 기존 클래스 체계를 그대로 이어받아 사용할 수 있는 장점도 있다.

그래서 인터넷 할당 번호 관리 기관(IANA:Internet Assigned Numbers Authority)에서는 199년도에 RFC1466으로 클래스체계 대신 5 개소의 대륙별 인터넷 레지스트리(RIR: Regional Internet Registry)를 두고 /8 단위 주소 블록을 할당해 주었다. 즉, 그 하단의 네트워크는 상위 RIR에서 분배, 관리토록 하는 방식을 채택했다. 그러므로 현재의 IP 주소 체계에서 서브넷은 CIDR표기법으로 나타낸다.

아래 <표 7>은 디폴트 서브넷 마스킹이 CIDR 표기법에서 8, 16, 32비트를 모두 1로 만드는 것과 같음을 보여주고 있다.

클 래 스A 클래스B 클래스C 클래스
디폴트
서브넷 마스크
255.0.0.0255.255.0.0255.255.255.0
CIDR 표기(맨 처음 옥텟부터 시작하는 연속적인 1의 갯수)/8 /16/24
표 7. 디폴트 서브넷 마스크와 CIDR표기를 비교하는

또한, 라우팅 테이블의 작성 시, 공통된 상위 주소만 표기하면 각 서브넷을 일일이 라우팅 테이블에 작성할 필요가 없어 라우터의 메모리 용량 및 메모리 참조 시간을 줄일 수 있게된다.

CIDR 표기법으로는 다음과 같이 작성한다. 

네트워크 ID/숫자

이러한 표기는 클래스를 표시하지 않아도 “/숫자“가 서브넷을 명확하게 나타내게 된다.

(6) 서브넷 설정 절차​

① 서브 네트워크의 개수를 결정한다.

② 개수를 2, 4, 8, 16, 32… 에서 필요한 개수보다 크거나 같은 2의 거듭제곱수 중 가장 작은 수를 찾는다.

예) 12개가 필요하다고 가정 ⇒ 16선택

③ 변환된 수를 이진수로 표현하기 위해서 요구되는 비트의 개수를 구한다.

예) 16 ⇒ 4개의 비트가 필요

④ 마스크 비트는 1로, 나머지 비트를 0으로 채운다.

예) xxx.xxx.xxx.240 (11110000)

⑤ 블록 크기(한 서브넷 당 IP 갯수)를 계산하고, 계산된 크기를 기준으로 전체 IP 대역을 분할하여 각 서브넷의 범위를 정한다.

예) 256/16 = 16. 즉, 하나의 서브넷이 16개의 IP 주소(블록)를 가짐을 의미한다. 그러므로, IP 대역은 0-15, 16-31, …로 구획된다.

⑥ IP 네트워크의 제한 조건을 고려하여 호스트 주소로 사용 할 수 없는 IP 주소를 제외하고 테이블에 IP 대역을 적어 넣는다.​

(7) 서브넷 계산을 위한 프로그램의 사용

위의 복잡한 과정을 생략하고 빠르게 서브넷 마스크 값을 구하는 앱이 있다. Play 스토어에서 “네트워크 계산기”를 다운로드 받아 사용하면 된다. 설치 후 직접 여러번 사용해 보면서 충분히 프로그램 사용법을 익히는 것이 좋다.

1.4.2 TCP

​앞에서 살펴본 IP는 데이터 전송을 위한 프로토콜이지만 여기에는 전달된 데이터를 잘 받았는가에 대한 약속이 존재하지 않는다. IP를 보조하여 전송상태를 감시하여 데이터의 전달을 관리하는 프로토콜이 TCP 프로토콜이다. TCP의 기능은 아래와 같이 정리할 수 있다.

  • ​가상 회선(Virtual Circuit)를 구현하여 전이중방식의 통신이 가능토록 한다.
  • 안정성 있는 데이터 전송을 책임진다.(체크섬, 시퀀스를 통한 오류제어 및 흐름제어)
  • 슬라이딩 윈도우(Sliding Window) 기법을 사용하여 한 번에 전송할 수 있는 데이터의 양(윈도우 크기)을 동적으로 조절, 수신 측의 처리 속도를 넘지 않도록 데이터 흐름을 제어한다.
  • 응용 계층과 포트 번호를 가지고 연결된다.

1.4.3 UDP(User Datagram Protocol)의 기능

​UDP는 TCP/IP Suite에 포함된다. TCP가 연결형(데이터를 전송하기 전에 접속 상태를 확인 한 후 전송) 트랜스포트 서비스를 제공하는데 반하여, UDP는 비연결형 트랜스포트 서비스를 제공(데이터그램(꾸러미)을 받으면 바로 전송)한다.

UDP는 컴퓨터에 도달한 데이터를 요청한 응용프로그램으로 데이터를 넘기기 위하여 TCP와 마찬가지로 포트번호라는 것을 사용한다. 수신된 UDP 데이터그램은 포트 번호를 통해 운영체제에 의해 해당 데이터를 기다리는 응용 프로그램으로 전달된다. 응용 프로그램은 이 데이터그램으로부터 송신 측의 IP 주소와 포트 번호를 확인한다.

UDP는 연결 선로를 검사하지 않으므로 속도가 빠르다. 그러나 데이터 전송에 신뢰성이 결여된다. 이러한 UDP는 1 패킷 정도의 짧은 데이터 전송이 필요한 경우이거나 또는 동영상의 전송과 같이 데이터의 일부분이 손상 또는 손실되어도 큰 문제를 발생시키지 않는 경우에 주로 사용된다.

1장. 네트워크 기초

.3 프로토콜(Protocol)

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다