본문 바로가기
느리게 변하는 지식/Network

TCP/IP

by oncerun 2021. 3. 7.
반응형

1.TCP/IP

 

전송 제어 프로토콜(Transmission Control Protocol, TCP, 문화어: 전송 조종 규약)은 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로도 널리 불린다. TCP는 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟을 안정적으로, 순서대로, 에러 없이 교환할 수 있게 한다. TCP는 전송 계층에 위치한다. 네트워크의 정보 전달을 통제하는 프로토콜이자 인터넷을 이루는 핵심 프로토콜의 하나로서 국제 인터넷 표준화 기구(IETF)의 RFC 793에 기술되어 있다.  -위키백과-

 

 

인터넷 프로토콜(IP, Internet Protocol)은 송신 호스트와 수신 호스트가 패킷 교환 네트워크(패킷 스위칭 네트워크, Packet Switching Network)에서 정보를 주고받는 데 사용하는 정보 위주의 규약(프로토콜, Protocol)이며, OSI 네트워크 계층에서 호스트의 주소 지정과 패킷 분할 및 조립 기능을 담당한다. 줄여서 아이피(IP)라고도 한다.

IP의 정보는 패킷 혹은 데이터그램이라고 하는 덩어리로 나뉘어 전송된다. IP에서는 이전에 통신한 적 없는 호스트에 패킷을 보낼 때 경로 설정이 필요 없다.

IP는 비신뢰성(unreliability)과 비연결성(connectionlessness)이 특징이다. 비신뢰성은 흐름에 관여하지 않기 때문에 보낸 정보가 제대로 갔는지 보장하지 않는다는 뜻이다. 예를 들어 전송 과정에서 패킷이 손상될 수도 있고, 같은 호스트에서 전송한 패킷의 순서가 뒤죽박죽이 될 수도 있고, 같은 패킷이 두 번 전송될 수도 있으며, 아예 패킷이 사라질 수도 있다. 패킷 전송과 정확한 순서를 보장하려면 TCP 프로토콜과 같은 IP의 상위 프로토콜을 이용해야 한다.

 

우리가 웹서핑을 할 때나 웹브라우저에게 웹페이지의 URL을 요청하게 되면 웹브라우저는 웹서버에게 요청을 하도록 되어있습니다. 웹 서버는 요청을 받으면 당연히 응답을 해주는데 패킷이라는 작은 덩어리로 보낸다고 하였습니다. -위키백과-

 

패킷

인터넷 기술 표준화를 추진하는 단체 IETF(Internet Engineering Task Force)의 용어 해설 「RFC 1983 Internet Users ‘Glossary “에 따르면, 패킷은 “모든 프로토콜 스택에서 네트워크를 오가는 데이터의 단위로 사용되는 일반 용어”라고 소개되고 있다. 즉 어떤 프로토콜에서도 데이터의 한 덩어리는 모두 패킷이다.

 

우선적으로 왜 우리가 데이터를 전송할 때 패킷이라는 작은 덩어리를 사용하는지에 대해 이해할 필요가 있습니다.

인터넷이 생기기 전부터 사람들은 전화, 우편, 모스부호를 이용한 전보 등 다양한 양방향 통신을 시도 해왔습니다.

만약 전화로 서로의 연결을 하게 된다면 통화를 원하는 양쪽에서 하나의 회선을 점유하게 됩니다.

다른 곳에서 동시에 접근을 할 수 없게 된 것이죠.

이러한 문제를 해결하기 위해 내용을 작은 덩어리로 잘라서 보내는 방법을 생각해 냈습니다.

잘게 잘라진 조각들은 가장 효율적인 루트를 이용해 목적지까지 도착하게 됩니다.

하지만 내용을 분할해서 보내게 된다면 순서가 변경된다거나 내용의 누락이 생길 수 도 있습니다.

이러한 해결을 위해 목적지에서 순서를 맞추고 빠진 내용을 재요청하도록 해서 문제없이 동시성을 갖도록 할 수 있었죠.

이러한 하나의 목적지에서 여러 명이 동시에 통신을 할 수 있는 연결방식을 패킷통신이라고 합니다.

 

TCP/IP는 이러한 패킷통신을 위한 인터넷 규약입니다.

IP는 패킷을 최적의 루트로 목적지까지 보내는 역할을 하며,

패킷의 순서가 변경되거나 일부가 누락되어도 상관하지 않고 보내는 역할만을 수행합니다.

TCP는 IP보단 빠르지 않지만 도착한 정보의 순서를 맞춰주며 손실됐거나 누락된 패킷을 재요청하는 역할을 하고 있습니다. 두 가지의 방식을 합쳐 인터넷 데이터 통신을 하는 것을 TCP/IP라고 부르는 것입니다.

 

즉 TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 조절 프로토콜인 TCP로 이루어져 있으며,

IP는 패킷의 손실과 순서에 상관하지 않고 지정된 주소로 데이터를 보내는 역할만을 하며

TCP는 IP 위에서 동작하는 프로토콜로 데이터의 전달에 대해 안전성과 순차적으로 받도록 도와줍니다.

패킷 기반의 인터넷 통신에서 데이터를 받기 위해 HTTP, FTP, SMTP 등 TCP를 기반으로 한 수많은 프로토콜들이

IP 위에서 TCP/IP라고 묶어서 부르기도 합니다.

 

2021-03-07 추가

 

 

ARPA에 의해 IT에 대한 연구는 인터넷의 기반 기술들과 개념들을 만들고 발전시켜왔습니다.

컴퓨터들이 서로 통신하는 것에 대한 통신 표준인 TCP/IP도 여기에 포함됩니다.

 

공식적으로 TCP/IP는 서로 연결된 각종 네트워크 간에 통신 프로토콜로서 사용될 수 있다.

이 기술은 서로 연결된 전 세계적 규모의 인터넷을 구성하는데 기반이 되었습니다.

 

 

TCP/IP의 기본 구조

 

TCP/IP는 OSI 모델이 제정되기 전에 개발되었습니다. 그렇기에 미국 국방성에서 사용하는 4 계층으로 구성된 DoD 모델에 기반합니다. TCP/IP 프로토콜은 단일 프로토콜이 아닌 여러 프로토콜의 집합으로 구성되어 있습니다. 

 

TCP/IP 프로토콜은 그림과 같이 OSI 모델의 세션 계층과 표현 계층이 별도로 존재하지 않고 상위 응용계층에서 기능을 제공하고 있습니다.

 

특징

 - 네트워크 인터페이스 기술 및 호스트 컴퓨터 기술로부터 독립성 유지

 - 전체 네트워크에서 연결성 유지

 - 종단 간 수신 확인

 - 응용 계층 프로토콜의 표준화

 

네 가지 요구 사항으로 호스트들은 인터넷상에서 자신이 속한 네트워크의 물리적 장치에 관계없이 통신이 가능하게 되었습니다. 이 말은 서로 다른 네트워크의 호스트들 간에 자신들이 제공하는 응용 프로그램들과 서비스들의 공유가 가능해졌다는 걸 의미합니다.

 

TCP/IP 각 계층의 역할

 

 - 데이터링크 계층

 네트워크 인터페이스 계층을 의미합니다. 일반적인 운영체제는 디바이스 드라이버를 포함하고 , 하드웨어는 네트워크 인터페이스 카드를 포함합니다. 통신과 관련된 하드웨어 부분을 처리합니다.

 

 - 네트워크 계층

 인터넷 계층입니다. 네트워크 상에서 패킷의 이동을 처리합니다. 라우팅과 같은 기능입니다. TCP/IP에서 제공하는 네트워크 계층 프로토콜에서는 IP, ICMP, IGMP 등이 존재합니다.

 

 - 전송 계층

 응용 계층을 위하여 호스트 간의 데이터 전송을 제공합니다. TCP/IP에서는 TCP 및 UDP 전송 계층 프로토콜이 존재합니다. TCP는 신뢰성 있는 전송을 제공 UDP는 간단한 메시지 전송과 비신뢰성 전송을 제공

 

 - 응용 계층

 TCP를 이용한 FTP, SMTP, TELNET 응용프로그램

 UDP를 이용한 DNS, BOOTP, TFTP 응용프로그램

 IP 직접 이용한 traceroute

 ICMP 직접 이용한 PING

 

인터넷 주소

  TCP/IP 기반의 인터넷은 라우터들을 통하여 물리적 네트워크들을 상호 연결하여 구축된 가상 네트워크입니다.  인터넷상에서 모든 호스트들은 다른 호스트들과 통신하기 위해 각 호스트들을 식별해 주는 유일한 인터넷 주소를 가져야 합니다.

 TCP/IP 프로토콜을 이용한 인터넷에서는 세 가지 종류의 주소가 서로 다른 계층에서 사용됩니다.

 

 1. 물리 주소 : 하나의 네트워크(LAN) 내에서 호스트를 식별하는 물리적 하드웨어 주소로서 네트워크 인터페이스 주소입니다.

 

 2. 인터넷 주소 : 서로 다른 네트워크 간에 호스트를 식별하는 논리 주소

 

 3. 포트 주소 : 프로세스를 식별하는 포트 번호

 

IP 주소라고 불리는 인터넷 주소는 4바이트 = 32비트로 구성됩니다.(IPv4) 

개념적으로 각 인터넷 주소는 클래스 유형에 따라서 네트워크 식별자와 호스트 식별자로 이루어집니다.

 

클래스 

클래스화 된 인터넷 주소 체계에서 각 주소는 그 자체만으로 네트워크 식별자와 호스트 식별자의 경계를 알 수 있습니다.

 클래스 A :  클래스 A의 주소는 65,536개 이상의 호스트 수를 갖는 네트워크에 할당됩니다. 가장 왼쪽 비트는 0이며 네트워 식별자로 7비트가 주어지고 호스트 식별자로는 24비트가 주어집니다.

 

클래스 B : 클래스 B는 256개 이상이고 65,536 이하인 호스트 수를 갖는 네트워크에 할당됩니다. 

 

클래스 C : 클래스 C는 256개 이하인 호스트 수를 갖는 네트워크에 할당됩니다.

 

클래스 D : 클래스 D는 위해 사용하는 클래스로 동일한 통신 그룹에 속한 호스트들에게 동시에 패킷을 전송하는 통신 방식에 사용되는 주소이다.

 

클래스 E : 클래스 E는 특별한 용도를 위해 예약되어 있다.

 

 

 

사설 네트워크 주소

 

인터넷에 접속할 필요는 없지만 TCP/IP 프로토콜을 사용하면서 특정 네트워크 혹은 기관 내에서만 사용하고자 할 때 사설 네트워크 주소를 사용합니다. 이 사설 네트워크는 외부에서 유효하지 않기 때문에 라우터는 해당 패킷을 외부로 전송하지 않습니다.

 

서브 네팅

 클래스화 된 TCP/IP 주소 지정 방법은 인터넷이 빠르게 성장하기에 수많은 물리적 네트워크와 호스트를 수용하는데 적합하지 않습니다. 서브 넷팅은 수많은 물리적 네트워크를 수용하기 위해 도입된 새로운 TCP/IP 주소 지정 방법입니다.

 

포트 번호

TCP와 16비트의 포트번호를 사용하여 응용 프로그램을 식별합니다. 65,536개의 포트 번호 중에서 1~1023까지는 알려진 포트 번호로서 공용 서버 프로그램에 의해 할당되어 사용됩니다.

반응형

'느리게 변하는 지식 > Network' 카테고리의 다른 글

DHCP  (0) 2021.07.10
REST API & URI 설계 원칙 (RFC-3986)  (0) 2021.04.01
패리티 비트  (0) 2021.03.07
NTP  (0) 2021.02.20
ICMP  (0) 2021.02.20

댓글