본문 바로가기
IT & 데이터 사이언스/이론 & 개념

[개념 설명] 프로토콜과 TCP / IP

by 바른 호랑이 2022. 6. 15.
728x90
반응형

안녕하세요. 바른호랑이입니다.
이번 게시글에서는  프로토콜(Protocol)과 TCP / IP에 대하여 알아볼 예정입니다.
프로토콜이란 컴퓨터끼리 서로 통신하기 위해 사용하는 소프트웨어적, 하드웨어적인 약속 또는 규칙을 의미합니다. 프로토콜의 종류로는 TCP/IP(Transmission Control Protocol /Internet Protocol), NetBEUI, IPX(Internetwork Packet Exchange), Apple Talk등이 존재하며, 가장 대표적인 프로토콜은 TCP/IP입니다.

1. TCP/IP(Transmission Control Protocol / Internet Protocol)
: 인터넷 연결을 위한 여러 프로토콜을 통칭하는 것으로, ARPANET이 처음으로 개발하였습니다. 각각의 네트워크에 접속되는 호스트들은 고유의 주소(IP)를 가지고 있고, 해당 주소(IP)로 자신의 네트워크 외부의 다른 네트워크와 연결되어 있는 호스트들과 데이터를 주고받을 수 있도록 만들어져 있는데, 이 때 사용하는 호스트들의 고유주소(IP)가 Internet Network Information Center(InterNIC)에 의해 관리됩니다. PC가 인터넷을 사용하기 위해서는  IP가 필수적으로 필요하며 IP의 종류로는 IPv4와 IPv6가 있습니다.

2. NetBEUI
: LAN 내 컴퓨터들이 통신할 수 있게 해주는 NetBIOS를 향상시킨 확장판으로 1985년 IBM이 LAN 서버를 위해 개발하였습니다. 하나의 완전한 프로토콜 스택이며, 중소형 PC LAN환경을 위해서 만들어졌고, Point-to-Point, Guaranted-delevery 통신방식을 사용하며, 라우팅을 고려하지 않아 WAN환경에는 부적합한 통신 프로토콜입니다.

3. IPX(Internetwork Packet Exchange)
: IPX/SPX 프로토콜 스택안에 있는 OSI 모델 네트워크 계층 프로토콜로, 노벨 사의 네트웨어(NetWare)라는 파일 서버와 클라이언트간의 통신에서 사용하는 프로토콜임. 파일 서버란 조직에서 파일을 모아두고 공유하는 장비를 지칭하며, 개별보관보다 공유와 보안에서의 이점이 있어서 과거에 많이 사용되었습니다. LAN환경에서는 TCP/IP보다 빠르지만 WAN환경에서는 속도가 느려지기에 인터넷에서 사용하기 부적합하였고, 인터넷의 발전하면서 TCP/IP를 프로토콜로 채택함에 따라 점차 쇠퇴하게 되었습니다.

4. Apple talk
: 애플 사가 컴퓨터 네트워킹을 위해 개발한 프로토콜로, 1984년 매킨토시에 포함되었으나, TCP/IP 네트워킹의 선호도가 증가함에 따라 사용하지 않게 되었습니다. 애플이 아닌 컴퓨터와 서로 통신이 가능하며 프린터나 서버등의 리소스를 상호 교환하는 것이 가능합니다.

사실 현재에는 TCP/IP를 거의 대부분 사용하기 때문에 나머지 프로토콜에 대해서는 잘 모르셔도 크게 상관은 없을 것이라 생각하지만, 프로토콜에 대한 기본적인 이해를 하는데에는 나머지 프로토콜들에 대해 조금은 알아도 좋을 거 같습니다. 일반적으로 통신 프로토콜의 구조는 OSI 7 Layer로 설명하며, 각각 네트워크 프로토콜이 통신하는 구조를 7개의 계층으로 구별하여 상호작동하는 방식으로 정의해 놓은 것입니다.

출처 : 해시넷

1. OSI(Open Systems Interconnection) 7 Layer
네트워크 프로토콜이 통신하는 구조를 7개의 계층으로 분리하여 각 계층이 상호작용하는 방식을 정의해 놓은 것으로, ISO(International Organization Standardization)가 1984년에 발표하였습니다. 통신이 일어나는 과정을 7단계로 구분하여 한눈에 볼 수 있게 정의한 것이 특징이며, 컴퓨터 통신 구조모델과 앞으로 개발될 프로토콜의 표준 제공을 위해 개발된 모델이기에 네트워크의 구성을 예측하고 이해하는 것이 가능합니다. 네트워크에서 트래픽의 흐름을 볼 수 있고, 각 계층은 독립되어 있기에 특정 단계에서 오류 발생시 다른 단계의 장비 및 소프트웨어를 건드리지 않고 오류 수정이 가능합니다.
1980년대 컴퓨터 통신망이 확산함에 따라 다양한 통신망 혼재상황이 발생하였고, 서로 다른 시스템끼리도 네트워크의 유형에 관계없이 상호 통신이 가능한 지침이 필요해짐에 따라 합의에 의한 통신규약 즉, 프로토콜이 탄생하게되었습니다. 컴퓨터간의 네트워크의 필요성이 높아짐에 따라 ISO는 서로 다른 컴퓨터 기기 간에 네트워크를 형성할 수 있도록 규정한 네트워크 모델을 발표하였는데, 이것이 바로 OSI 7계층입니다.

데이터 캡슐화

: OSI 7 Layer에서는 데이터 캡슐화 과정을 거쳐서 통신이 이루어지게 되는데, 데이터 캡슐화란 데이터가 각 계층을 지나면서 하위 계층은 상위 계층으로부터 온 정보에 자신의 계층 특성을 담은 제어정보를 헤더화 시켜 붙이는 일련의 과정을 의미합니다. PDU(Protocol Data Unit)은 프로토콜 데이터 단위이자 정보처리단위로 캡슐화 과정에서 생성되며, 아래층으로 갈 수록 다양한 헤더와 푸터가 더해집니다.

출처 : 해시넷

- 응용 계층(Application Layer, 7계층)
:사용자가 네트워크 자원에 접근하는 방법을 제공하며, 최종적으로 사용자가 볼 수 있는 유일한 계층이고, 모든 네트워크 활동의 기반이 되는 인터페이스를 제공합니다.

- 표현 계층(Presentation Layer, 6계층)
: 응용 계층으로부터 전달받은 데이터를 읽을 수 있는 형식으로 변환하며, 데이터의 인코딩과 디코딩이 이루어지고, 데이터를 안전하게 사용하기 위해 암호화 및 복호화 과정 또한 이루어지는 계층입니다.

- 세션 계층(Session Layer, 5계층)
: 두 컴퓨터 간의 대화나 세션을 관리하며, 포트(Port)연결 이라고도 합니다. 모든 통신 장치간의 연결을 설정, 관리, 종료하고, 연결이 전이중(Full duplex)인지 반이중(Half duplex)인지 확인하고 호스트가 중지되지 않고 정상적으로 연결하는데 책임이 있습니다. TCP/IP 세션을 만들고 없애고 통신하는 사용자들을 동기화하고 오류복구명령들을 일괄적으로 관리하며, 통신을 하기 위한 세션을 확립, 유지 ,중단하는 작업을 수행합니다.

- 전송 계층(Transport Layer, 4계층)
: 컴퓨터간의 신뢰성 있는 데이터를 상호교환할 수 있도록 해주어 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 부담을 덜어주며, 시퀀스 넘버 기반의 오류제어방식을 사용합니다. 연결형 프로토콜과 비 연결형 프로토콜을 모두 사용하며, 특정 방화벽이나 프록시 서버가 이 계층에 해당합니다.

- 네트워크 계층(Network Layer, 3계층)
: 실제 네트워크 간의 데이터 라우팅을 담당하며, 라우팅이란 네트워크 내의 통신 데이터를 알고리즘에 의해 최대한 빠르게 보낼 최적의 경로를 선택하는 과정을 의미합니다. 네트워크 호스트의 논리주소 지정(IP 주소 확인 등)을 확인하며, 데이터 스트림을 더 작은 단위로 분할하고 경우에 따라 오류를 감지해 처리합니다. 라우팅, 흐름제어, 세그멘테이션, 오류제어, 인터네트워킹 등을 수행하는 계층입니다.

- 데이터링크 계층(DataLink Layer, 2계층)
: 물리적인 네트워크를 통해 데이터를 전송하는 수단을 제공하며 1홉 통신을 담당한다고도 지칭합니다. 홉(hop)이란 네트워크의 노드에서 다음 노드로 가는 경로를 의미하며, 1홉 통신이란 한 라우터에서 다음 라우터까지의 경로를 지칭합니다. 물리적인 장치를 식별하는데 사용할 수 있는 주소 지정 체계를 제공하는 것을 목적으로 CRC 기반의 오류제어와 흐름제어를 사용하며, 대표적인 계층들로는 브리지, 스위치, 이더넷 등이 해당됩니다.

- 물리 계층(Physical Layer, 1계층)
: 네트워크 데이터가 전송되는 물리적인 매체로, 0과 1로 이루어진 비트열인 전기적인 신호 상태인 데이터를 전송하기 위한 전압, 허브, 네트워크 어댑터, 케이블 등의 모든 하드웨어의 물리적, 전기적 특성을 정의합니다. 연결을 설정, 종료하고 통신 자원을 공유하는 수단을 제공하며, 디지털에서 아날로그, 아날로그에서 디지털로 신호를 변환하는 역할을  수행합니다.

 

출처 : 해시넷
출처 : 해시넷

TCP/IP에 대해 보다 자세히 알아보면, 아래의 내용과 같습니다.

TCP/IP란 Transmission Control Protocol / Internet Protocol의 약자로, 1960년대 말 미국의 방위고등연구계획국(DARPA : Defense Advanced Research Projects Agency)가 개발한 인터넷 프로토콜 슈트(Internet Protocol Suite)의 통신규약들입니다.인터넷 프로토콜 슈트 중에서 TCP와 IP를 가장 많이 사용하기 때문에 TCP/IP 프로토콜 슈트라고 지칭하기도 하며, 일반적으로 TCP/IP라 칭할때에는 TCP와 IP의 두 프로토콜만 뜻하는 것이 아닌 해당 프로토콜들을 중심으로 구성되는 일련의 프로토콜들을 총칭합니다. 

 

출처 : 정보통신기술용어해설


- TCP/IP(Transmission Control Protocol / Internet Protocol)
ㆍ TCP 및 IP와 관련되는 프로토콜 군(Protocol suite)을 총칭하며, 100개도 넘는 프로토콜이 존재
ㆍ OSI 계층모델과 비교하여 4계층 모형으로 표현하며, 주요서비스로는 HTTP, SMTP, FTP, Telnet, SSH등이 있음


- 역사
ㆍ 인터넷(Internet)에서 사용되는 기본 통신 프로토콜로 운영체제에 국한되지 않음

ㆍ 1973년 : 패킷 전달을 위해 프로토콜 제안
ㆍ 1977년 : 서로 다른 3개의 네트워크 연결을 성공적으로 시연
ㆍ 1981년 : 버클리 대학에서 유닉스(BSD)에 TCP/IP를 포함토록 수정 시작
ㆍ 1982년 : TCP/IP가 완전한 형태를 갖추기 시작
ㆍ 1983년 : 기존 APRANET프로토콜 폐지, TCP/IP를 공식 프로토콜로 채택

 

출처 : 정보통신기술용어해설

- TCP/IP의 데이터 전달구조
ㆍ Data 구조 : 단말기에서 구동되는 응용 프로그램과 기기의 종류에 따라 데이터는 다양한 형태로 전달됨
ㆍ TCP 헤더 : 송수신자의 포트 번호, 순서 번호, 응답 번호 등 전달되는 정보를 파악
ㆍ IP 헤더 : IP버전과 송/수신측 IP, 프로토콜의 종류, 서비스 타입등의 정보가 저장되어 있음
ㆍ Ethernet(MAC) 헤더 : 통신을 위해 네트워크 인터페이스에 할당한 고유 식별자, MAC주소를 확인

 

출처 : 위키백과

- TCP(Transmission Control Protocol)에 대한 추가설명 및 TCP 헤더의구조
ㆍ 근거리 통신망이나 인트라넷, 인터넷에 연결된 장비들간의 데이터 교환을 안정적으로 교환가능하게 해줌
ㆍ OSI 7계층에서 전송계층에 속하며, 네트워크의 정보전달을 통제하는 프로토콜 중의 하나임

ㆍ 웹 브라우저들이 월드 와이드 웹에서 서버에 연결할 때 사용되며, 이메일이나 파일 전송에도 사용됨 

* Source Port address : 데이터를 생성한 애플리케이션에서 사용하는 포트번호
* Destination Port address : 목적지 애플리케이션이 사용하는 포트번호
* Sequence Number 필드 : 가상회선을 통해 전송되는 데이터의 모든 바이트에 부여된 고유한 일련번호
* Acknowledgement Number : 세그먼트 수신준비여부를 나타내는 확인메시지 역할
* Reserverd 필드 : 차후 사용을 위해 예약된 필드
* Control Flags필드 : 6개의 서로 다른 제어 비트 또는 플래그를 나타냄
1. CWR(Congestion Window Reduced) : 혼잡 윈도우 크기 감소
2. ECN(Explicit Congestion Notification) : 혼잡을 알림

3. URG(Urgent) : Urgent Pointer가 가리키는 세그먼트 번호까지의 긴급 데이터 포함여부 확인
4. ACK(Acknowledgement) : 확인 응답 메시지
5. PSH(Push) : 데이터를 포함 / RST(Reset) : 수신거부를 하고자 할 때 사용
6. SYN(Synchronize) : 가상 회선이 처음 개설될 때 두 시스템간 정확한 메시지를 전송하기 위해 사용
7. FIN(Finish) : 작업이 끝나고 가상회선을 종결하고자 할때 사용
* Window size 필드 : 송신 시스템의 가용 수신 버퍼의 크기를 바이트 단위로 표현
* Checksum 필드 : TCP 세그먼트의 내용의 유효성 검증 및 손상여부를 검사 

 

출처 : 정보통신기술용어해설

- IP(Internet Protocol)에 대한 추가설명 및 IP헤더의 구조
ㆍ 데이터 패킷의 주소를 해석하고 경로를 설정하여 다음 호스트로 전송하는 프로토콜
ㆍ 여러개의 상호 패킷 교환망의 상호연결을 위한 범용 비연결형 프로토콜임

ㆍ OSI 7계층에서 네트워크 계층에 해당함
*  Version : IP주소의 버전을 나타냄
* IHL(IP Leader Length) : 헤더의 길이를 기록
* TOS(Type Of Service) : 요구되는 서비스 품질을 설정
▶  0 : 보통 // 1 : 비용 최소화 // 2: 신뢰성 최대 // 4 : 처리량 최대 // 8 : 지연 최소 // 15 : 보안최대
* Total Packet Length : IP헤더 및 패킷 전체의 길이를 바이트 단위로 표기한 것
* Identifier : 전송 데이터를 패킷으로 분할, 조립시 패킷식별을 위해 사용
* Flags : 패킷 분열의 특성을 나타내는 요소
* Fragment Offset : 패킷의 분할된 정보를 기록
* TTL(Time To Live) : IP 패킷의 수명기산 및 패킷 소멸전 데이터가 이동간으한 단계의 수를 나타냄
* Protocol ID : 상위 계층 프로토콜의 정보를 기록 
* Header Checksum : 라우터를 지날 때마다 IP헤더의 오류를 검사
* Source IP Address : 송신측 IP주소를 기록
* Destination IP Address : 수신측 IP주소를 기록
* Option and Padding : 제어, 디버깅 등에 사용되는 요소로 통신에 영향을 미치지 않음

 

출처 : 정보통신기술용어해설

- IP(Internet Protocol)
ㆍ 패킷의 주소를 해석, 경로를 설정하여 다음 호스트로 전송하는 프로토콜
ㆍ 패킷 교환망들의 상호연결을 위한 범용 비연결형 프로토콜이며, OSI 계층에서 네트워크 계층에 해당함.

- ARP(Address Resolution Protocol) 
ㆍ 호스트의 IP주소를 호스트와 연결된 네트워크 장비의 물리적 주소(MAC)로 번역해주는 프로토콜 
ㆍ RARP(Reverse Address Resolution Protocol) : MAC주소를 IP주소로 번역해주는 프로토콜

- ICMP(Internet Control Message Protocol)
ㆍ 호스트 또는 라우터에서 IP 패킷 처리시, 예기치 못한 상황 발생시 정보를 제공하는 인터넷 프로토콜
ㆍ 네트워크 상 운용되는 운영체제에서 오류 메세지를 전송받는데 사용됨
ㆍ ICMP를 사용하는 명령어 : Ping, Tracert, Echo 등

- DNS(Domain Name Service)
ㆍ Domain Name

* 숫자로 구성된 IP주소를 문자형태로 변환한 것으로, 모든 도메인 네임은 고유값이어야 함
* 공백없이 한글, 영문, 숫자로 작성가능하며, 점으로 구분하여 구성되며 우측으로 갈수록 큰 범위임
* www.kostat.go.kr | kostat : 기관명 | go : 기관의 분류 | kr : 소속국가  
ㆍ DNS 서버 : 도메인 네임을 숫자로 된 IP주소로 변환해주는 시스템(DNS)이 구축되어 있는 서버
ㆍ NIC(Network Information Center) : 도메인 네임을 관리하고 중재해주는 곳
* InterNIC : 국제 도메인 관리센터 // APNIC : 태평양 도메인 관리센터 // KRNIC : 한국 도메인 관리센터

- IP주소
ㆍ 인터넷이 가능한 기기에 부여되는 유일한 식별주소로 IPv4와 IPv6가 존재함
ㆍ 주소체계의 변환을 담당하는 서비스(NAT : Network Address Translator)를 사용함.

- 서브넷 마스크(Subnet Mask)
ㆍ 배정받은 네트워크 주소를 여러개의 하위 네트워크로 나누어 사용하는 방식
ㆍ IP주소 중 네트워크 주소와 호스트 주소를 식별하여 몇 비트를 네트워크 주소로 사용할지 결정
* FLSM(Fixed Length Subnet Mask) : 동일한 크기로 서브넷을 나누는 방법
* VLSM(Variable Length Subnet Mask) : 동일하지 않은 크기로 서브넷을 나누는 방법
 
- IPv4 
ㆍ 43억개의 주소 지정이 가능하며, 패킷 크기가 64KB로 제한되어 있음.
ㆍ 8비트씩 4부분으로 구성되는 32비트 주소체계로, 각 자리는 0부터 255까지 10진수로 표현하고 점으로 구분함.
ㆍ A 클래스 : 첫 8비트가 네트워크 ID이고, 나머지 24비트가 호스트 ID임(서브넷 마스크 : 255.0.0.0)
ㆍ B클래스 : 첫 16비트가 네트워크 ID이고, 나머지 16비트가 호스트 ID(서브넷 마스크 : 255.255.0.0)
ㆍ C클래스 : 첫 24비트가 네트워크 ID이고, 나머지 8비트가 호스트 ID임(서브넷 마스크 : 255.255.255.0)
ㆍ D클래스 : 멀티 캐스트용 클래스로 거의 사용되는 일이 없음(서브넷 마스크 : 224.0.0.0 ~ 239.255.255.255)
ㆍ E클래스 : 미래에 위해 남겨놓은 것으로 거의 사용안됨(서브넷 마스크 : 240.0.0.0 ~ 255.255.255.255)
ㆍ 인터넷 사용의 증가로 IP 주소 부족문제가 발생하였고, 다양한 해결책들이 제시됨
* CIDR(Classless Inter-Domain Routing) : 불필요한 IP 주소 사용 방지 및 라우터 처리부하 경감
* DHCP(Dynamic Host Configuration Protocol) : 특정 IP 주소를 여러 사용자가 공유가능하게 동적 할당
* NAT(Network Address Translator) : 사설 IP주소를 공인 IP주소로 변환
* IPv6 : 128비트 주소체계

- IPv6
ㆍ 전송속도가 빠르고, 품질보증이 용이하며, 주소의 확장성, 융통성, 연동성이 향상됨.
ㆍ 인증성, 기밀성, 데이터 무결성의 지원으로 보안문제의 해결이 가능
ㆍ 16비트씩 8부분으로 구성되는 128비트 주소체계로 각자리는 0부터 FFFF(65535)까지 표현하고, 콜론(:)으로 구분함

 

네트워크를 배우는데 관심이 있으시다면 가장 기본이 되는 프로토콜에 대해서 더 공부해보시는 것도 좋을 것 같습니다.
이상으로 프로토콜(Protocol)과 TCP / IP에 대해서 알아보았습니다.

P.S 더 나은 개발자가 되기위해 공부중입니다. 잘못된 부분을 댓글로 남겨주시면 학습하는데 큰 도움이 될 거 같습니다.

728x90
반응형

댓글