(1) TCP/IP 프로토콜
1) TCP/IP는 현재의 인터넷에서 사용하는 프로토콜 그룹이다. 이는 상호 작용하는 모듈로 이루어진 계층적 프로토콜인데, 각 모듈은 특정한 기능을 제공한다.
2) 계층적이라는 말은 각 상위 계층 프로토콜은 1개 이상의 하위 계층 프로토콜로부터 제공되는 서비스들의 지원을 받는다는 의미이다.
3) 원래 TCP/IP 프로토콜 그룹은 하드웨어에 설치된 4개의 소프트웨어 계층으로 정의되었다. 하지만 현재 TCP/IP는 5계층 모델로 간주된다.
그림 151. OSI 7 Layer vs TCP/IP
(2) OSI vs TCP/IP
1) TCP/IP 프로토콜은 OSI 모델보다 먼저 개발되었다. 그러므로 TCP/IP 프로토콜의 계층은 OSI 모델 계층과 정확하게 일치하지 않는다.
2) 두 모델을 비교하면 세션과 표현계층이 TCP/IP 계층에 없다는 것을 알 수 있다.
(3) 캡슐화와 역캡슐화
1) 인터넷에서 프로토콜 계층화를 할 때 중요한 개념 중 하나가 캡슐화(Encapsulation)와 역캡슐화(Decapsulation) 이다.
2) 발신지 호스트에서는 캡슐화, 수신지 호스트에서는 역 캡슐화, 그리고 라우터에서 캡슐화와 역캡슐화가 이루어진다. 그러나 데이터 링크 계층에서는 캡슐화/역캡슐화가 일어나지 않는다.
(4) 주소 지정
1) TCP/IP 프로토콜을 이용한 인터넷은 3개의 서로 다른 계층의 주소가 사용되는데, 물리 주소(Physical Address, 링크), 논리 주소(Logical Address, IP), 포트 주소(Port Address) 이다.
(1) 데이터링크 계층
1) 흐름제어(Flow Control)
① 서로 다른 데이터링크 계층 포로토콜은 서로 다른 흐름 제어 전략을 사용한다. 또한 전송 계층에서 흐름 제어는 매우 중요하다.
2) 오류제어(Error Control)
① 전기 신호는 오류에 취약하기 때문에 프레임 또한 오류에 취약하다. 첫번째로 오류를 검출하는 것이 필요하다. 오류 검출 이후에 송신자 노드에서 이를 수정하거나 오류를 폐기하고, 재 전송을 송신 노드에게 요청해야만 한다.
3) 혼잡제어(Congestion Control)
① 비록 링크가 프레임 혼잡으로 인해 프레임 손실이 발생하더라도, 어떤 광역 네트워크 이외의 대부분의 데이터링크 계층 프로토콜은 직접적으로 혼잡을 완화하기 위한 혼잡 제어를 사용하지 않는다.
② 일반적으로 혼잡 제어는 종단-대-종단으로 통신하기 때문에, 네트워크 계층 또는 전송 계층의 문제로 여겨진다.
(2) 네트워크 계층
1) 라우팅
① 네트워크 계층에서 다른 임무는 라우팅(routing)과 포워딩(forwarding)으로 둘은 서로 직접적인 연관이 있다.
② 네트워크 계층은 패킷이 근원지에서 목적지까지 갈 수 있도록 경로를 지정해야 한다.
2) 포워딩
① 라우팅 프로토콜을 실행할 때 포워딩(forwarding)은 라우터상의 하나의 인터페이스에 패킷이 도착했을 때 라우터가 취하는 행동으로 정의할 수 있다.
② 이런 행동을 취하기 위해 라우터가 일반적으로 사용하는 의사결정 테이블은 포워딩 테이블 혹은 라우팅 테이블 이라 불리기도 한다.
3) IPv4 주소
① 개요
• IPv4는 32비트의 주소를 사용하므로 주소 공간은 232 혹은 4,294,967,296(40억 이상)이 된다. 제한이 없었다면 40억 이상의 장치가 인터넷에 연결될 수 있다.
• 각 바이트는 8비트이기 때문에 10진수 표기법에서 각 숫자는 0에서 255사이의 값을 가진다. IPv4 주소는 16진수 표기법으로도 나타낸다.
• 각 16진수 숫자는 4비트이다. 이는 32비트 주소가 8개의 16진수 숫자로 표현될 수 있음을 의미한다.
• 32비트의 IPv4 주소는 두 부분으로 구분되는 계층적 구조이다. 주소의 첫번째 부분은 접두사(prefix)로 네트워크를 정의하고, 주소의 두번째 부분은 접미사(suffix)로 노드(장치의 인터넷으로 연결)를 정의한다.
• 접두사(prefix)의 길이는 n비트이고, 접미사(suffix)의 길이는 (32-n) 비트이다.
• 인터넷이 시작될 당시 IPv4 주소는 소규모 및 대규모 네트워크를 지원하기 위해 한 가지가 아닌 세 가지의 고정된 접두사(Prefix) n=8, n=16, n=24로 설계되었다.
• 전체 주소 공간은 5개의 클래스(A, B, C, D, E)로 구분된다. 이 기술을 클래스 기반 주소 지정(classful addressing) 이라고 한다.
• A class
클래스 A에서 네트워크 길이는 8비트이지만 0으로 고정된 첫 번째 비트가 클래스를 지정하기 때문에 네트워크 식별자로 7비트만 사용 가능하다. 이는 세계에서 오직 27 = 128개의 네트워크만 클래스 A 주소를 가질 수 있음을 의미한다.
27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 0 ~ 127 |
• B class
클래스 B에서 네트워크 길이는 16비트이지만 10으로 고정된 처음 두 비트가 클래스를 지정하기 때문에 네트워크 식별자로 14비트만 사용 가능하다. 이는 세계에서 오직 214 = 16,384 개의 네트워크만 클래스 B주소를 가질 수 있음을 의미한다.
27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 128.0 ~ 191.255 |
• C class
110 으로 시작하는 모든 주소는 클래스 C이다. 클래스 C에서 네트워크 길이는 24비트이지만 처음 3비트가 클래스를 지정하기 때문에 네트워크 식별자로 21비트만 사용 가능하다. 이는 세계에서 오직 221 = 2,097,152 개의 네트워크만 클래스 C주소를 가질 수 있음을 의미한다.
27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 0 | 192.0.0 ~ 223.255.255 |
• D class
클래스 D는 접두사와 접미사로 구분되지 않고 멀티캐스트 주소로 사용된다. 2진수로 1111로 시작하는 모든 주소는 클래스 E에 포함된다. 클래스 D와 마찬가지로 클래스 E도 접두사와 접미사로 구분되지 않으며 예약된 주소이다.
② 주소 고갈
클래스 기반의 주소가 더 이상 사용되지 않는 이유는 주소 고갈 때문이다. 주소가 적절히 분배되지 않았기 때문에 인터넷에 연결하려는 기관이나 개인이 사용할 주소가 더 이상 남지 않게 되는 문제에 직면하게 되었다.
③ 서브네팅과 슈퍼네팅
• 주소 고갈을 완화하기 위해 서브네팅(subnetting)과 슈퍼네팅(supernetting)의 두 가지 기술이 제안되었다.
• 서브네팅에서 클래스 A나 B는 여러 개의 서브넷으로 분리된다. 각 서브넷은 원래 네트워크보다 더 큰 크기의 접두사를 가진다.
※ B클래스 주소에서 호스트 주소 8비트를 서브네팅하는 경우
기존 B클래스에서 디폴트 서브넷마스크(255.255.0.0)를 사용할 경우에는 216 개의 네트워크로 구분하여 각 네트워크 당 216 - 2개의 호스트를 사용할 수 있었지만 다른 서브넷마스크(255.255.255.0)를 사용함으로써 각 네트워크 당 28 - 2개의 호스트를 가진 28 개의 더 작은 서브네트워크로 나누어 사용할 수 있게 된다.
• 이 기법은 대부분의 큰 기관이 자신의 주소를 나누어 사용하지 않는 주소를 작은 기관에 분배하는 것에 불만이 많아 적용되지 않았다.
• 서브네팅이 큰 구조를 작은 것으로 나누기 위해 고안되었다면 슈퍼내팅은 여러 클래스 C를 하나의 큰 구조로 묶어 클래스 C 블록에서 유효한 256개보다 더 많은 주소를 사용하려는 기관들을 위해 고안되었다.
④ 클래스 없는 주소 지정
• 클래스 기반 주소 지정에서 서브네팅과 슈퍼네팅은 실제로 주소 고갈 문제를 해결하지 못하였다. 인터넷의 성장에 따라, 장기적인 관점에서 해결책으로 더 큰 주소 공간이 필요했다. 그러나 더 큰 주소 공간은 IP 패킷 형식의 변화가 필요한 IP 주소 길이의 증가가 필요하다.
• 단기적인 관점의 해결책에서는 클래스 없는 주소지정 방식의 IPv4 주소가 사용된다. 즉 주소 고갈을 해결하기 위해 클래스 권한이 제거되었다.
• 클래스 없는 주소지정에서 전체 주소 공간은 가변 길이의 블록으로 나뉘어진다. 주소의 접두사는 블록(네트워크)을 지정하고 접미사는 노드(장치)를 지정한다. 이론적으로 20 21 22… 232 주소의 블록을 사용할 수 있다.
• 여기서 중요한 것은 클래스 없는 주소지정이 클래스 기반 주소지정에 쉽게 적용 가능하다는 것이다. 클래스 A의 주소는 접두사의 길이가 8인 클래스 없는 주소로 생각할 수 있다.
• 클래스 B 주소는 접두사의 길이가 16인 클래스 없는 주소로 생각할 수 있다. 즉, 클래스 기반의 주소 지정은 클래스 없는 주소 지정에서 특별한 경우들이다.
⑤ 접두사 길이 : 슬래시 표기법
• 클래스 없는 주소 지정에서 한 가지 의문은 주소가 주어졌을 때 어떻게 접두사의 길이를 찾는가이다. 접두사의 길이가 주소에 포함되지 않기 때문에 접두사의 길이를 따로 주어야 한다.
• 이 경우 접두사의 길이 n은 슬래시로 구분하여 주소가 추가된다. 이 표기법은 비 공식적으로 슬래시 표기법(slash notation)으로 불리고 공식적으로 클래스 없는 인터도메인라우팅(classless interdomain routing) 혹은 CIDR(classless interdomain routin) 이라 불린다.
4) 인터넷 프로토콜(IP)
① 개요
• IPv4는 비신뢰적이고 비연결형인 데이터그램 프로토콜로 최선형 전송 서비스(best-effort delivery service) 이다.
• 여기서 최선형 전송의 의미는 IPv4 패킷이 훼손되거나 손실, 순서에 맞지 않게 되착, 지연되어 도착할 수 있고 네트워크에 혼잡을 발생시킬 수 있다는 뜻이다.
• 만약 신뢰성이 중요하다면 IPv4는 TCP처럼 신뢰성 있는 전송 계층 프로토콜과 함께 사용되어야 한다.
• 모든 TCP/UDP, ICMP, IGMP 데이터는 IP 데이터그램을 사용하여 전송한다.
② IPv4 데이터그램 형식
• IP가 사용하는 패킷을 데이터그램(datagram)이라 한다. 데이터그램은 가변 길이의 패킷으로 헤더와 페이로드(payload, 데이터)로 이루어져 있다.
• 헤더는 20에서 60바이트의 길이이며 라우팅과 전송에 필수적인 정보를 가지고 있다.
③ ARP(Address Resolution Protocol)
• 개요
ü 호스트는 ARP 요청 메시지를 보낼 때 자신의 IP 주소, 자신의 물리주소, 그리고 수신측 IP주소는 알고 있지만 수신측 물리주소는 모르기 때문에 물리 계층 브로드캐스트를 통해 모든 호스트에게 패킷을 전송한다.
ü ARP 요청 메시지를 수신한 호스트 또는 라우터는 수신 IP 주소와 자신의 IP 주소를 검사하여 자신에 대해 물리주소를 요구하는 경우라면 ARP 응답 메시지를 전송한다.
• ARP 요청 메시지
ü 특정 IP 주소에 대한 물리 주소를 요구한다.
ü 호스트는 ARP 요청 메시지를 보낼 때 수신측 물리 주소는 모르기 때문에 물리 계층 브로드케스트로 전송한다.
• ARP 응답 메시지
ü 물리 주소 정보를 알림(유니캐스트로 전송)
ü ARP 요청 메시지를 수신한 호스트 또는 라우터는 자신의 물리 주소를 요구하는 경우 ARP 응답 메시지 전송(호스트가 라우터를 넘어서 다른 네트워크에 있으면 라우터가 해당 호스트를 대신하여 응답 메시지 전송)
④ ICMPv4(Internet Control Message Protocol version 4)
• 개요
ü IP프로토콜은 호스트와의 관리 질의를 위한 메커니즘이 없다. 그러나 호스트는 간혹 라우터나 다른 호스트가 동작하고 있는지 알 필요가 있다. 그리고 간혹 네트워크 관리자는 다른 호스트나 라우터로부터 정보를 획득할 필요가 있다.
ü 인터넷 제어 메시지 프로토콜 버전4(ICMPv4)는 위의 두 가지 단점을 보안하기 위해서 설계되었다. ICMP는 IP 프로토콜의 동반 프로토콜이다.
• 메시지
ü ICMPv4 메시지는 크게 오류보고 메시지와 질의 메시지로 나눌수 있다.
ü 오류보고 메시지는 라우터(목적지)나 호스트가 IP 패킷을 처리하는 도중에 탐지하는 문제를 보고한다. 질의 메시지는 쌍으로 생성되는데 호스트나 네트워크 관리자가 라우터나 다른 호스트로부터 특정 정보를 획득하기 위해서 사용한다.
ü 첫번째 필드인 ICMP 유형은 메시지의 유형을 나타낸다. 코드 필드는 특정 메시지 유형의 이유를 지정한다. 마지막 공통 필드는 검사합 필드이다. 헤더의 나머지 부분은 각 메시지별로 다르다.
• 오류 보고 메시지
ü IP가 신뢰성 없는 프로토콜이기 때문에 ICMP의 주된 임무중 하나는 IP 데이터그램의 프로세싱 동안 발생하는 오류를 보고하는 것이다. 그러나 ICMP는 오류를 수정하는 것이 아니고 단지 보고를 할 뿐이다.
ü 목적지 도달 불가
- 가장 널리 사용되는 오류 메시지는 목적지 도달불가(type 3)이다.
- 이 메시지는 왜 데이터 그램이 최종 목적지에 도착하지 못하였는지에 대한 오류 메시지의 종류를 정의하기 위해 0부터 15까지의 다른 코드를 사용한다.
ü 근원지 억제
- 다른 오류 메시지는 근원지 억제(type 4) 메시지이다. 이 메시지는 송신자에게 네트워크에 충돌이 발생해서 데이터그램이 폐기되었음을 알리는 메시지이다.
- 이 메시지를 전달받은 근원지는 데이터그램을 송신하는 과정을 천천히(또는 억제) 수행한다. 다시 말해 ICMP는 이러한 메시지를 통해 IP 프로토콜에 혼잡 제어 메커니즘을 추가한다.
ü 재지정 메시지
- 재지정 메시지(type 5)는 발신자가 메시지를 전송하기 위해 잘못된 라우터를 사용할 때 사용되는 메시지이다.
- 라우터는 적절한 라우터에게 메시지를 전달하도록 재지정되지만, 라우터는 발신자에게 향후 디폴트 라우터로 변경해야만 한다고 알린다. 메시지 안에 디폴트 라우터의 IP 주소가 포함된다.
• 질의 메시지
ü 질의 메시지는 인터넷에서 호스트나 라우터가 활성화되었는지를 알아보거나, 두 장치 사이의 IP 데이터그램이 단방향인지 왕복인지를 찾는다.
ü 에코요청(echo request) 메시지(type 8)와 에코응답(echo reply) 메시지(type 0)의 쌍은 다른 호스트나 라우터가 활성화되었는지의 여부를 테스트하기 위해 호스트나 라우터가 사용한다.
ü 핑(ping)과 Traceroute)와 같은 디버깅 도구에서 에코 요청과 에코 응답 메시지 쌍을 확인할 수 있다.
5) 전송계층
① UDP(User Datagram Protocol)
• 개요
ü 사용자 데이터그램 프로토콜(UDP, user datagram protocol)은 비연결형이고 신뢰성이 없는 전송 프로토콜이다.
ü UDP는 호스트 간 통신 대신에 프로세스 간 통신을 제공하는 것을 제외하고는 IP서비스와 동일하다.
ü UDP는 최소한의 오버헤드를 가진 매우 간단한 프로토콜이다. 만약 프로세스가 작은 메시지를 송신하기를 원하고, 신뢰성에 관하여 그다지 신경을 쓰지 않는다면 UDP를 사용할 수 있다.
• UDP 서비스
ü 프로세스-대-프로세스
- UDP는 IP 주소와 포트 번호의 결합인 소켓 주소(socket address)를 이용하여 프로세스-대-프로세스 통신을 제공한다.
ü 비연결형 서비스(connectionless service)
- UDP는 비연결형 서비스를 제공한다. 이것은 UDP에 의해 보내지는 각 사용자 데이터그램은 독립된 데이터그램이라는 것을 의미한다.
- 동일한 근원지 프로세스로부터 들어와서 동일한 목적지 프로그램으로 간다고할지라도 사용자 데이터그램은 서로 관계가 없다.
ü 흐름 제어(flow control)
- UDP는 매우 단순한 프로토콜이다. 흐름 제어가 없고 따라서 윈도우 메커니즘이 없다. 들어오는 메시지로 인하여 수신자측에 오버플로우가 발생할 수도 있다.
- 흐름 제어의 결여는 UDP를 이용하는 프로세스가 필요하다면 이러한 서비스를 스스로 제공해야만 함을 의미한다.
ü 오류 제어(error control)
- 검사합을 제외하고는 UDP에는 오류제어 매커니즘이 없다. 이것은 송신자가 메시지가 손실이 되었는지 또는 중복이 되었는지를 알 수 없음을 의미한다.
- 수신자가 검사합을 통하여 오류를 검출하였을 때는 사용자 데이터그램은 아무런 동작 없이 제거된다. 오류 제어의 결여는 UDP를 사용하는 프로세스가 필요하다면 스스로 제공해야만 함을 의미한다.
ü 혼잡 제어
- UDP는 비연결 프로토콜이므로 이것은 혼잡 제어를 제공하지 않는다. UDP는 전송되는 패킷이 매우 작고 산발적이어서 네트워크에서 혼잡을 발생시키지 않는다.
② TCP(Transmission Control Protocol)
• TCP 서비스
ü 프로세스-대-프로세스 통신(process to process communication)
- TCP는 UDP 처럼 포트 번호를 사용하여 프로세스 간 통신을 한다.
ü 스트림 전송 서비스(stream delivery service)
- TCP에서 송신 프로세스는 바이트의 흐름(stream of byte)으로 데이터를 전달하고 수신 프로세스도 바이트의 흐름으로 데이터를 수신한다.
- TCP는 인터넷으로 데이터를 운반하는 가상의 튜브(tube)에 의해 2개 프로세스가 연결되는 것처럼 보이는 환경을 만든다.
ü 송신 및 수신버퍼
- 송신 및 수신 프로세스는 똑 같은 속도로 데이터를 만들고 처리할 수 없기 때문에 TCP는 저장을 위해서 버퍼가 필요하다.
- 각 방향을 위해 송신 및 수신 두 가지 버퍼가 있다. 이 버퍼들은 TCP 흐름 및 오류 제어 기법에 사용된다.
ü 전이중 통신(full-duplex service)
- TCP는 전이중 통신을 제공하여 데이터는 동시에 양방향으로 전달될 수 있다. 이를 위해 TCP는 송신 및 수신 버퍼를 가지고 있으며 세그먼트는 양방향으로 이동한다.
ü 연결-지향 서비스
- UDP와 달리 TCP는 연결지향 프로토콜이다. 이것은 물리적 연결이 아닌 가상적인 연결이다.
ü 신뢰성 있는 서비스
- TCP는 신뢰성 있는 전송 프로토콜이다. TCP는 데이터의 안전하고 확실한 도착을 확인하기 위하여 확인응답 기법을 사용한다.
6) 응용계층
Application | Protocol | Port Number |
FTP data | TCP | 20 |
FTP control | TCP | 21 |
SSH(Secure Shell) | TCP | 22 |
Telnet | TCP | 23 |
SMTP (Simple Mail Management) | TCP | 25 |
DNS | UDP, TCP | 53 |
DHCP | UDP | 67, 68 |
TFTP | UDP | 69 |
HTTP(WWW) | TCP | 80 |
POP3 (Post Office Protocol) | TCP | 110 |
SNMP (Simple Network Management Protocol) | UDP | 161 |
HTTPS | TCP | 443 |
① HTTP
• 하이퍼텍스트 전송 프로토콜(HTTP, hypertext transfer protocol)은 웹으로부터 웹페이지를 가져오기 위해 어떻게 클라이언트-서버 프로그램이 작성될 수 있는지를 정의하는데 사용된다.
• HTTP 클라이언트는 요청을 하고 HTTP 서버는 응답을 한다. 서버는 포트 80번을 사용하고 클라이언트는 임시 포트 번호를 사용한다.
② FTP
• 파일 전송 프로토콜(FTP, file transfer protocol)은 하나의 호스트에서 다른 호스트로 파일을 복사하기 위해 TCP/IP에 의해 제공되는 표준 프로토콜이다.
③ TELNET
• TerminaL NETwork의 약어인 TELNET은 최초의 원격 로그인 프로토콜 중 하나이다. TELNET은 로그인 이름과 암호를 요구함에도 불구하고 암호를 비롯한 모든 데이터를 암호화되지 않은 평문으로 전송하기 때문에 해킹에 취약하다.
• 해커는 로그인 이름과 암호를 도청해서 얻을 수 있다. 이러한 보안 문제 때문에 다른 프로토콜인 SSH(Secure Shell)가 사용되어 TELNET의 사용은 감소되었다.
④ DNS
• 오늘날 인터넷은 매우 거대하기 때문에 중앙 디렉토리 시스템은 모든 매핑을 보유할 수 없다. 또한 중양 컴퓨터가 고장나는 경우 전체 통신망은 붕괴된다.
• 더 좋은 해결책으로 현재 사용하고 있는 것은 이 엄청난 양의 정보를 작제 나누어서 전세계의 서로 다른 컴퓨터에 저장하는 것이다.
• 이 방법에서 각 호스트는 매핑이 필요할 경우 이 정보를 가지고 있는 가장 가까운 컴퓨터와 통신하게 된다. 도메인 네임 시스템(DNS, Domain Name System)이 이 방법을 사용한다.
'정보처리기사 > 데이터통신' 카테고리의 다른 글
16. 인터넷 & OSI 7계층 (0) | 2017.08.02 |
---|---|
15. VAN & ISDN (0) | 2017.08.02 |
14. 근거리통신망(LAN) (0) | 2017.08.02 |
13. 패킷 교환망 (0) | 2017.08.02 |
12. 데이터 회선망 (0) | 2017.08.02 |