본문 바로가기
네트워크 개요

1.4 TCP/IP

by 배굿맨 2020. 1. 23.

TCP는 Transmission Control Protocol, IP는 Internet Protocol의 약자이다. TCP/IP는 단일 프로토콜이 아니며 TCP/IP Suite이며 컴퓨터 통신에서 필요로 하는 여러 가지 프로토콜을 일컫는 말이다.

 

그런나 TCP와 IP가 그 Suite 중에서도 많은 기능을 수행하므로 보통 TCP/IP로 붙여서 사용되며 인터넷을 이용하여 데이터를 교환하는 통신 프로토콜을 의미하기도 한다.

 

2020.01.23 - [네트워크 개요] - 1.3 프로토콜(Protocol)

 

1.3 프로토콜(Protocol)

독립적인 두 개 이상의 시스템이 서로 정보를 교환하기 위해서는 사전에 정의된 약속인 프로토콜이 필요하다. 즉, 프로토콜이란 컴퓨터와 컴퓨터가 정보를 주고받을 수 있기 위한 규칙 및 약속

fotc.tistory.com

 

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

 

이제 TCP/IP의 실제 구조 및 네트워크 관리시 필요로 되어지는 것들에 대하여 알아보자.

1.4.1 IP(Internet Protocol)

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

(1) IP 주소 체계

IP 주소는 인터넷상에서 구별되어지는 중복되지 않는 주소이다. 이러한 주소는 클래스라는 체계를 가지며 총 32비트의 숫자로 구성되어 있고, 8 비트씩 나누어 각 나눈 위치에 소수점(dot 또는 점이라 읽는다)을 둔 4개로 나누어진 십진수의 모음으로서 표현되며 소수점으로 구분된 숫자들 중 앞에서 차례로 옥텟1, 옥테2, 옥텟3, 옥텟4라고 구분하여 말할 수 있다. 옥텟은 8을 뜻한다.

이진수
(x=0 or 1)
xxxxxxxx
(01110001)
xxxxxxxx
(10001234)
xxxxxxxx
(11110010)
xxxxxxxx
(00001111)
10 진수 0 - 255 0 - 255 0 - 255 0 - 255
일반적 표기
(XXX는 10진수)
XXX.XXX.XXX.XXX
(255.255.192.2)

 

(2) 클라스 체계

클래스라는 구분은 상위의 옥텟이 고정되어 있고 하위의 옥텟이 변화되어 네트워크상에 존재하는 호스트를 지정하는 방식이라 할 수 있다. 옥텟1 값이 1~126 까지의 값이면서 고정되면 A 클래스, 옥텟1 값이 128~191이며 옥텟 1과 옥텟 2가 고정이면 B 클래스, 옥텟 1 값이 192~223 이며 옥텟 1,2 및 3이 고정이면 C 클래스라 한다.

 

그래서 고정되어 있는 옥텟은 네트워크 아이디라고 불리며 가변적인 옥텟은 호스트 아이디라고 불린다.

 

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

 

클래스 값은 고정되면 변화할 수 없는데 우리는 이것을 네트워크 ID라고 부른다. 이것을 제외한 하부 비트값은 네트워크 관리자가 자유롭게 호스트에 지정할 수 있으며 이러한 주소를 호스트 ID라고 부른다. 

클래스 옥텟1 (2진) 옥텟1(10진) Host ID 범위
클래스 A 00000000 -
01111111
0 - 127 A_Class.0.0.1 -
A_Class.255.255.254
클래스 B 10000000 -
10111111
128 - 191 B_Class.0.1 -
B_Class.255.254
클래스 C 11000000 -
11011111
192 - 223 C_Class.1 - 254
클래스 D 11100000 -
11101111
224 - 239 D_Class.0.0.1 -
D_Class.239.255.254

위 표는 각 클라스의 처음 시작 비트 값과 마지막 비트값인 0과 255가 Host ID의 범위에서 빠져있음을 볼 수 있다. 그 이유는 각 클라스의 처음 시작 비트가 0이면, 이것은 네트워크를 지정하는 표시가 되기 때문이다. 그리고 255가 빠진 이유는 255는 모든 호스트 (1111 1111)를 지칭하기 때문이다. 즉, 이 번지값은 브로드캐스팅 주소로 예약되어 있기 때문이다.

어떤 교재는 이 마지막 옥텟값을 Host ID라 말하기도 하는데 본인은 브로드캐스팅 주소로 이해하는 것이 편한것 같다. 

 

아래에 IP 주소의 몇 가지 제한 사항을 나열한다.

◆ 브로드캐스트 어드레스

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

◆ 네트워크 어드레스

네트워크를 대표하는 어드레스로서 클래스로서 고정된 어드레스를 말한다.

◆ 로컬 어드레스

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

◆ 사설 어드레스(공인 주소가 아닌 어드레스)

A클래스: 10.0.0.0 ~ 10.255.255.255

B클래스: 172.16.0.0 ~ 172.31.255.255C클래스: 192.168.0.0 ~ 192.168.255.255 

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

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

 

마스크라는 의미는 마스크 비트가 1이면 해당 비트를 호스트에 부여하지 않고, 0이면 부여한다는 것을 말한다. 즉, 32비트 중 앞의 24비트가 네트워크 어드레스 또는 네트워크 ID가 되며, 뒤 8비트가 호스트 ID로 사용되는 C 클래스 네트워크에 마스크 비트가 255.255.255.0 일 때는, 마지막 8비트 모두가 0이므로 마스킹 효과를 주지 않은 네트워크가 된다. 이 값을 디폴트 서브넷 마스크라 한다.

 

클 래 스 A 클래스 B 클래스 C 클래스
디폴트
서브넷 마스크
255.0.0.0 255.255.0.0 255.255.255.0

 

C 클래스 203.239.153.0 - 203.239.153.255를 부여받은 네트워크가 있다고 가정하자. 이 네트워크를 4개의 서브넷으로 나누어 보자. 4개로 나누기 위해서는 동전던지기를 생각해보자. 몇 개의 동전을 던져서 4개의 조합이 나올까? 동전 2개를 던지면 4개의 조합이 나온다. 00/01/10/11. 이 동전 4개를 옥텟의 맨 앞에 놓으면 아래처럼 4개의 클래스(서브넷)을 가질 수 있음을 볼 수 있다.

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

따라서, 마스킹 주소는, 255.255.255.192가 되고 서브넷 비트 192 (1100 0000)에 대하여 네트워크는 다음의 어드레스 영역으로 구분된다. 즉, 네트워크 설정 시 서브넷 마스크로 255.255.255.192로 입력하면, 이 PC는 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

 

그러나 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

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

서브넷 IP ADDR 최하위 비트 Mask Bit AND OR
0
(bit 00)
203.239.153.0 0000 0000 1100 0000 0000 0000 1100 0000
203.239.153.63 0011 1111 1100 0000 0000 0000 1111 1111
1
(bit 01)
203.239.153.64 0100 0000 1100 0000 0100 0000 1100 0000
203.239.153.127 0111 1111 1100 0000 0100 0000 1111 1111
2
(bit 10)
203.239.153.128 1000 0000 1100 0000 1000 0000 1100 0000
203.239.153.191 1011 1111 1100 0000 1000 0000 1111 1111
3
(bit 11
203.239.153.192 1100 0000 1100 0000 1100 0000 1100 0000
203.2399.153.255 1111 1111 1100 0000 1100 0000 1111 1111

데이타의 전송경로를 파악하고 이러한 경로로 데이타를 전송하는 라우터는 호스트 어드레스를 받으면 서브넷 값을 참조하여 AND 연산을 하게 되어 어느 네트워크 ID로 보낼지 쉽게 파악할 수 있게 된다. 또한 위 표에서 보듯이 각각의 서브넷은 4개의 네트워크로 구분되는 것을 쉽게 알아볼 수 있다.

 

서브넷의 개수가 늘어나면 구획 가능한 네트워크의 개수는 늘어나지만 각 네트워크의 호스트 개수는 줄어듬을 알 수 있다.

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

클래스의 네트워크 ID와 호스트 ID를 나누는 구분을 디폴트 서브넷 마스킹이라고 한다. A클래스는 255.0.0.0이고, B클래스는 255.255.0.0, 그리고 C클래스는 255.255.255.0의 서브넷 마스킹 비트를 적용한 결과라고 생각하면 되기 때문이다. 이것은 비트 '1"이 몇 개 있는가와 같다.

 

그러므로, 디폴트 서브넷 마스킹은 CIDR(사이더:Classless Inter-Domain Routing) 명명법에서 8, 16, 32비트를 모두 1로 만드는 것과 같다.

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

그리고 "(4) 서브넷과 서브넷 마스크" 절에서는 이러한 디폴트 서브넷 마스킹에 더하여 또다시 서브넷 마스킹을 할 수 있는 방법도 배웠다. 서브넷 마스크 = 255.255.255.192.

 

CIDR 표기법으로는 요렇케 쓴다. 

/26

 

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

 

(6) 서브넷 설정 절차

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

② 개수를 2, 4, 8, 16, 32... 에서 자신과 가까운 큰 수를 찾는다.

예) 12인 경우 ⇒ 16

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

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

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

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

⑤ 전체 네트워크 어드레스를 ②에서 구한 개수로 나누어 IP 대역을 구한다.

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

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

 

위의 복잡한 과정을 생략하고 빠르게 서브넷 마스크 값을 구하는 앱이 있다. https://play.google.com/store/apps/details?id=rodney.android.ipv4subnetcalculator&hl=en_US

 

ipv4 Subnet Calculator - Apps on Google Play

Ipv4 Subnet Calculator An easy to use, simple subnet calculator that takes the hassle out of the many intricacies involved with the ipv4 subnet system. This tool will allow you to accurately subnet different class networks as well as calculate the number o

play.google.com

 

서브넷 마스크 비트를 계산하며 각 서브넷 어드레스의 범위를 구하는 것은 손으로 계산하기에는 조금 번거로운 느낌이 든다. 실무에서도 자주 사용되는 프로그램이므로 직접 여러번 사용하여 보면서 충분히 프로그램 사용법을 익히는 것이 좋을 것이다.

 

 

그림 1.2 IPV4 Subnet Calculator

 

1.4.2 TCP

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

◆ 가상 선로를 구현하여 전이중방식의 통신이 가능토록 한다.

◆ 안정성 있는 테이터 전송을 책임진다.(체크섬, 시퀀스를 통한 오류제어 및 흐름제어)

◆ 최대 연속해서 보낼 수 있는 세그먼트의 값을 윈도우 크기라 설정하여 윈도우 안에 연속 전달되는 세그먼트의 수를 조정하여 테이터 흐름을 제어한다.

◆ 응용 계층과 포트 번호를 가지고 연결된다.

1.4.3 UDP(User Datagram Protocol)의 기능

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

 

UDP는 컴퓨터에 도달한 데이터를 요청한 응용프로그램으로 테이터를 넘기기 위하여 TCP와 마찬가지로 포트번호라는 것을 사용한다. UDP 패킷에 포함되어 있는 포트 번호와 송신측 IP 어드레스는 UDP에 전송되며, UDP는 바로 응용프로그램에 송신측 IP 어드레스와 포트 번호를 통지한다.

 

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

 

*수정 2023-06-26

VLSM에 대한 내용 추가.

'네트워크 개요' 카테고리의 다른 글

2.1 Ethernet의 정의  (0) 2020.01.23
1.5 LAN 카드와 LAN 케이블  (0) 2020.01.23
1.3 프로토콜(Protocol)  (0) 2020.01.23
1.2 컴퓨터 네트워크의 구분  (0) 2020.01.23
1.1 네트워크 일반  (0) 2020.01.23