1. 프로토콜 이란?
통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다. 즉 통신 규약 및 약속이다.
그리고 통신 프로토콜은 신호 체계, 인증, 그리고 오류 감지 및 수정 기능을 포함할 수 있다. 가장 일상적으로 사용되는 프로토콜 세트 중 하나가 TCP/IP이다. 거의 모든 컴퓨터가 기본으로 제공하는 인터넷 표준 프로토콜이다.
2. TCP/IP
IP(Internet Protocol)
- 네트워크 계층에서 동작하는 프로토콜
- 패킷 통신 방식의 인터넷 프로토콜인 IP
- IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다.
TCP(Transmission Control Protocol)
- 전송 계층에서 동작하는 프로토콜
- 전송 조절 프로토콜인 TCP
- TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다.
- HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP 위에서 동작하기 때문에, 묶어서 TCP/IP로 부르기도 한다.
3. OSI 7계층
- OSI (Open Systems Interconnection Reference Model)
- 국제 표준화 기구(ISO)에서 개발한 모델
- 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층별로 나눈 형태
- OSI 모델을 OSI 7 Layer 또는 OSI 7 계층 모형이라고 칭함
- 물리 계층
- 데이터 링크 계층
- 네트워크 계층
- 전송 계층
- 세션 계층
- 표현 계층
- 응용 계층
물리 계층(Physical Layer)
물리계층은 말 그대로 하드웨어 전송 기술로 이루어져 있다.
전기적인, 기계적인 신호를 주고받는 역할을하는 계층이다. 비트 0, 1의 통신단위로 통신한다.
우리가 당장 컴퓨터만 봐도 랜선을 통해 인터넷에 연결하는 모습을 확인할 수 있다.
이 계층에 속하는 대표적인 장비는 통신 케이블, 허브, 리피터 등이 있다.
또한 데이터의 종류나 오류를 제어하지 않는다. 이것은 다음 계층인 데이터 링크 계층에서 다룬다.
데이터 링크 계층(Data Link Layer)
데이터링크 계층은 Point to Point 간의 신뢰성 있는 전송을 보장하기 위한 계층이다.
전송 데이터에 대한 CRC 오류제어가 필요하다.
장비는 대표적으로 스위치와 브릿지가 있다.
물리주소인 MAC주소가 이 계층에 해당한다.
전송 단위는 Frame이다.
네트워크 계층(Network Layer)
네트워크 계층은 우리가 흔히 아는 IP주소를 제공하는 계층이다. 이 IP주소 또한 계층적으로 A,B,C,D클래스로 나누어져 있지만 자세히 다루진 않겠다.
네트워크 계층에서는 대표적으로 노드들을 거칠때마다 라우팅 해주는 역할을 담당한다.
실제 우리 실생활에서 가장 쉽게 볼 수 있는 라우팅 장비가 공유기이다. 공유기가 라우터라는 말은 아니지만 라우터의 NAT이라는 기능을 활성화 시킨 것이다. 공유기는 하나의 외부 통신선에서 들어오는 요청을 사설망에 연결되어있는 컴퓨터에게 전달해주는 역할을 한다.
이 계층의 대표적인 장비는 라우터, L3 스위치, IP 공유기 등이다.
전송 단위는 Packet이다.
전송 계층(Transport Layer)
전송계층의 경우 양 끝단(End to End)의 사용자들이 데이터를 주고 받을 수 있게 하는 계층이다. 대표적으로 우리가 자주 사용하는 TCP, UDP 프로토콜이 있는 계층이다.
TCP 프로토콜은 우리가 자주 사용하는 프로토콜이기 때문에 알아둘 필요가 있다고 생각하여 조금 자세히 적어본다.
TCP의 경우 신뢰성있는 통신을 보장한다. 따라서 데이터가 전달되는 과정에서 여러 스위치 라우터 등등을 거치면서 데이터가 잘못 전달되는 현상이나 전달이 안되는 경우 오류제어, 흐름제어를 통해 신뢰성있는 데이터가 전달될 수 있도록 한다.
TCP는 연결시 3-way hanshaking 방식으로 목적지와 상호 패킷을 교환하여 연결한다. 연결을 종료할 때는 4-way hanshaking 방식을 사용한다.
신뢰성 연결과 전달을 보장하는 만큼 중간의 확인과정을 거치고 연결을 계속 유지해야되기 때문에 그만큼의 리소스가 더 들어간다.
UDP 프로토콜의 경우 비연결형 프로토콜로서 데이터를 빠르게 전달하는데에 초점을 두고 있다. 따라서 UDP는 목적지에 데이터가 제대로 전달 되었는지 조차 확인하지 않는다. 그냥 전송하면 끝인 것이다. 이렇게만 말하면 이걸 왜쓰냐라고 할 수 있는데 비연결을 지향하고 데이터를 전달할 때 TCP에 비해 오버헤드가 적다. 그래서 신뢰성 있는 데이터 전송이 필요할 때보다 스트리밍같이 연속적인 특성을 가지고 있는 서비스에 사용한다.
전송 단위는 Segment이다.
세션 계층(Session Layer)
세션 계층부터 데이터를 만들어내는 계층이다.
양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다. 동시 송수신 방식(duplex), 반이중 방식(half-duplex), 전이중 방식(Full Duplex)의 통신과 함께, 체크 포인팅과 유휴, 종료, 다시 시작 과정 등을 수행한다. 이 계층은 TCP/IP 세션을 만들고 없애는 책임을 진다.
통신하는 사용자들을 동기화하고 오류복구 명령들을 일괄적으로 다룬다.
대표적으로 RPC, Socket 등이 있다.
표현 계층(Presentation Layer)
표현 계층은 코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어 준다. MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어진다. 우리가 자주 사용하는 데이터의 압축이나 인코딩 등을 여기에서 다룬다고 볼 수 있겠다.
응용 계층(Application Layer)
응용 계층은 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다.
한마디로 우리가 사용하는 사용자 인터페이스를 제공하는 프로그램 등을 말하는 것이다.
대표적으로 우리가 잘 알고있는 HTTP, FTP 등의 프로토콜이 응용 계층에 속한다.
4. 응용계층 프로토콜
FTP (File Transfer Protocol) - Data(20), Control(21)
FTP는 파일 전송을 위한 가장 기본 프로토콜로, RFC 114fh 1971년에 만들어졌다.
당시는 IP와 TCP가 존재하지도 않을 때다. 1972년에 텔넷(Telnet)과 함께 표준으로 재정되었다.
FTP는 대화형으로 클라이언트와 서버가 통신이 가능하다. 예를 들면, 사용자가 원격 컴퓨터의 디렉토리에 파일 목록을 문의할 수 있고, 명령어 사용법을 대화식으로 배울 수 있다. 또한 전송되는 파일의 형식을 지정할 수 있다. 사용 가능한 파일 형식은 텍스트나 바이너리 파일이고, 텍스트 파일은 ASCII나 EBCDIC 문자로 저장할 수 있다. FTP에서는 파일 전송 전에 먼저 서버에 로그인해야 하며, 사용자는 로그인 이름과 패스워드를 입력하여 클라이언트를 인증한다. 서버는 클라이언트가 검증된 사용자가 아닌 경우 파일 전송을 거부할 수 있으며, 텔넷과 유사하게 여러 클라이언트가 동시에 서버에 접근할 수 있다.
Telnet (23)
텔넷은 사용자가 원격에 있는 서버에 로그인하도록 TCP 연결을 설정하며, 단말기가 원격 컴퓨터 바로 옆에 있는 것처럼 직접 조작할 수 있게 해준다.
또한 원격 컴퓨터에서 수행한 결과를 단말기에 보여주는데, 이와 같은 서비스는 사용자 단말기가 원격 컴퓨터에서 직접 연결된 것 처럼 보이게 한다.
SMTP (Simple Mail Transfer Protocol) (25)
TCP/IP에서 많이 사용하는 응용 서비스 중 하나가 메일 서비스다. 메일 서비스는 빠르고 편리해 많이 사용하며, 텍스트나 실행 파일 등을 손쉽게 전송할 수 있다. 기존의 TCP/IP응용에서는 데이터를 전송하고 이에 대한 ACK로 응답하거나, 재전송을 통해 목적지까지 데이터를 직접 전송하지만, 메일 시스템에서는 원격 컴퓨터나 네트워크 연결에 장애가 발생한 경우에도 통신이 가능하다. 즉, 송신자가 전송한 메일 메시지는 목적지 컴퓨터나 네트워크의 장애가 복구될 때까지 기다리며, 장애가 복구되었을 때 메일 메시지가 배달된다. 이와 같은 전송 방법을 지연 배달(Delayed Delivery) 이라 하는데, 메일 시스템에서는 지연 배달을 휘애 스풀링(Spooling)기법을 이용한다. 사용자가 메일 메시지를 전송하면 시스템은 전송 시각, 목적지 주소, 수신자, 송신자 등의 값을 개별 스풀에 복사해둔다. 그 후 메일 시스템은 원격 컴퓨터로 메일 메시지를 백그라운드로 전송한다.
DNS (Domain Name System) (53)
DNS는 도메인 이름 주소를 통해 IP주소를 확인할 수 있는 프로토콜이다.
TFTP (Trivial File Transfer Protocol) (69)
TFTP는 1985년에 만들어졌으며 FTP처럼 파일을 전송하기 위한 프로토콜이다. 하지만 UDP 패킷을 사용하고, FTP와 달리 인증 기능을 제공하지 않는다.
HTTP (HyperText Transfer Protocol) (80)
HTTP(Hypertext Transfer Protocol)하이퍼텍스트 전송 규약, 서버와 클라이언트가 인터넷상에서 데이터를 주고받기 위한 프로토콜(protocol)을 말한다.
본인이 생각하기에 HTTP 에 대해 알기 전에(설명하기 위해) 해당 포스팅을 통해서 간단하게라도 이정도까지 알고 가면 좋다고 생각해 포스팅한 의도이다.
POP3 (Post Office Protocol 3, 110번) & IMAP (Internet Message Access Protocol, 143번)
POP3는 메일 서버로 전송된 메일을 확인할 때 사용되는 프로토콜이다. IMAP도 POP3와 기본적으로 같으나, 메일을 읽은 후에도 메일이 서버에 남는다는 점이 다르다.
NetBIOS (Network Basic Input / Output System, 138)
NetBIOS는 IBM에서 개발했지만 윈도우에서 차용했다. 이 프로토콜은 내부 네트워크의 프린터처럼 아주 기본적인 사무기기와 윈도우 시스템 간의 파일 공유를 위한 것이기 때문에 대부분 항상 열려 있다. 또한, 이 프로토콜은 NBT(NetBIOS over TCP)프로토콜을 사용하여 원격의 인터넷으로 전달이 가능하다.
SNMP (Simple Network Management Protocol, 161)
SNMP는 네트워크 관리와 모니터링을 위한 프로토콜이다.