본문 바로가기
IT_정보보안/인프라 & 보안기초

5. 계층 별 프로토콜 (1)

by jys275 2023. 11. 28.

프로토콜은 중요한 부분을 많이 담고 있다.

앞으로 관제, CERT 등 보안 쪽 업무를 수행할 때 프로토콜은 항상 정확하게 내용들을 알고 있어야 한다.

 

이번 시간을 통해 프로토콜의 기능과 특징 등의 내용을 잘 구분해 보자.

 

물론 모든 프로토콜을 알면 좋지만, 정말 자주 등장되어 확실하게 짚고 넘어가야 하는 프로토콜 위주로 알아보자.

 

 


 

 

프로토콜

 

OSI 7 계층 글에서 간단하게 프로토콜에 대해 알아봤었지만, 다시 한번 짚고 넘어가자.

 

*프로토콜 : 우리가 외국인들과 대화를 할 때 서로의 모국어를 모르는 상태에서 서로의 모국어로 대화가 가능할까? 

벽을 보고 떠드는 것처럼 뭐라고 하는지도 모르고 대화도 안 될 것이다. 우리가 서로의 언어를 모르면 대화가 불가능한 것처럼

컴퓨터 또한 어떠한 규칙(사람을 예시로 들면 서로 간의 통하는 제3의 언어)이 없으면

상이한 컴퓨터 간의 통신(Communication)이 불가할 것이다.

즉, 컴퓨터 또한 서로 이해할 수 있는 언어가 필요한데... 이것을 해결하기 위해서 프로토콜을 사용하면 된다.

이러한 표준화된 프로토콜은 컴퓨터가 사용할 수 있는 공통된 언어 혹은 형식을 제공한다.

이 규칙들은 데이터의 형식, 전송 방법, 오류 처리 등 다양한 측면을 다룬다.

 

프로토콜은 보통 통신 규약이라고 말한다.

서로 간의 같은 서비스를 이용하기 위해 사용되는 약속.

 

밑에서 알아볼 FTP(파일 전송을 위한 프로토콜)을 예시로 들어보자.

내가 상대방에게 파일을 전송하고 싶으면 FTP를 이용해야 한다.

여기서는 단순히 FTP만을 이용한다는 의미가 아니라 FTP에 딸려있는 포트(데이터를 주고받는 창구)를 둘 다 오픈해야 한다.

 

FTP의 경우 서로 간의 연결을 위해서 21번 포트를 열어야 하고,

그 후엔 서로 간의 데이터를 전송하기 위해 20번 포트를 열어야지만 가능하다.

 

이러한 프로토콜들은 각 해당 계층에서 수행해야 할 기능에 맞게 설계되어 있으며, 

각 계층 별로 상이한 전송단위를 해결하는 캡슐화 기능 또한 수행한다는 점도 존재한다.

 

이번 글에서는 응용 계층(7계층)과 네트워크 계층(3계층) 프로토콜에 대해서 알아보자.

 

 


 

 

응용계층(7계층) 프로토콜

 

애플리케이션(우리가 사용하고 있는 서비스 : 이메일, 웹 브라우저, 유튜브, 넷플릭스)을 제공하는 계층이다.

이러한 애플리케이션은 서비스를 요청하는 측(클라이언트)과 서비스를 제공하는 측(서버)으로 나뉜다.


클라이언트는 웹 브라우저, 동영상 스트리밍 애플리케이션(넷플릭스 등),

파일 전송 프로그램과 같은 응용 프로그램을 예시로 들 수 있고,


서버는 웹 서버 프로그램, 동영상 스트리밍 애플리케이션 서버 프로그램,

파일 전송 서버 프로그램과 같은 서버 응용 프로그램을 예시로 들 수 있다.


사용자가 파일을 전송하거나 동영상을 시청하려고 할 때,

해당 서비스를 제공하는 서버와 통신하여 요청한 내용을 받아오게 되는데,


조금 자세하게 풀어보자.

 

사용자의 인터페이스를 통해 사용자의 입력을 받거나, 서비스 요청을 생성하고 전달하기 위해

서버가 이해할 수 있는 형식으로 데이터를 변환하여 전송계층으로 전달하는 것이다.

응용계층이 사용자의 인터페이스 및 응용 프로그램 통신 처리에 집중하는 동안,

표현 계층은 데이터의 형식 변환 및 표현,

세션 계층은 세션 설정 및 유지 등의 역할을 담당한다.

대표적인 응용계층의 프로토콜 : HTTP/HTTPS, FTP, SMTP, POP3, IMAP, Telnet, SSH, DNS

 

 

HTTP(Hypertext Transfer Protocol, 하이퍼텍스트 전송 프로토콜)

웹 브라우징을 위한 가장 기초적인 프로토콜이다. 

사용자가 웹 페이지 요청하고 서버에서 해당 페이지를 응답하는 데 사용한다.

 


HTTPS(Hypertext Transfer Protocol Secure, 하이퍼텍스트 전송 프로토콜 보안)

HTTP의 보안 버전이다.

데이터의 암호화를 지원한다. 즉, 보안 통신을 제공한다.

이 둘의 공통점은 클라이언트와 서버 간의 통신을 기반으로 하며, 연결을 위해 TCP를 사용한다.

 

차이점을 알아보자.

 

HTTP - 데이터를 평문으로 전송. 즉, 전송되는 정보가 암호화되지 않음.

HTTPS - *SSL(또는 TLS)을 통해 데이터를 암호화하여 전송. 추가로 인증서 사용으로 서버의 신원 검증.

구글 등은 HTTPS가 적용된 사이트에 대해 높은 검색 순위 결과 부여한다.

 

*SSL / TLS

SSL(Secure Sockets Layer)

웹 서버와 클라이언트 간의 데이터 통신을 암호화하고 보안을 강화하기 위한 프로토콜.

SSL은 데이터의 기밀성, 무결성, 인증 등의 보안 기능을 제공하여 데이터 전송 중에 발생할 수 있는

도난, 변조, 위장 공격으로부터 보호할 수 있다.

 

SSL은 서버와 클라이언트 간 데이터 전송 시 응용 계층(HTTP 등)과 전송 계층(TCP) 사이에서 동작하며, 

이 둘 간에 보안 채널을 형성하여 안전한 데이터 전송을 제공한다.

 

즉, 특정 위치에서 작동한다고 보기에는 애매하기 때문에, 응용계층과 전송계층 사이에서 작동한다고 알아두자.


최근에는 SSL의 후속 버전인 TLS(Transport Layer Security)가 더 많이 사용되고 있다.

TLS는 SSL의 업그레이드된 버전으로서, 더 강력한 보안 기능을 제공하고 있다.

이렇게 HTTP는 평문으로만 통신을 한다.

 

그래서 중요한 데이터가 오고 가는 페이지나 구간에서는 암호화를 적용을 해야 하는데,

이게 평문으로 노출되었을 때, 공격자한테 중요한 정보가 노출될 가능성이 있다 보니 보안 기능이 있는 HTTPS를 적용해야 한다.


HTTP – 기본적으로 서버의 80번 포트 사용, URL은 “http://”로 시작
HTTPS – 기본적으로 서버의 443번 포트 사용, URL은 "https://"로 시작.

이 경우 보안이 적용된 것으로 보면 된다.

 

사실 이런 단점이 존재하는 HTTP가 아직까지도 쓰이는지 의문이 들 수 있다.

HTTP는 여전히 존재한다. HTTP를 무조건 사용하지 말라고 하지는 않는다.

 

왜냐하면 웹페이지 상에서 우리가 중요한 정보를 가지고 있는 포인트들만 HTTPS를 적용하고 있으면,

일반적인 정보가 오고 가는 구간에 대해서는 HTTP를 사용하는 것은 특별히 문제가 된다고 생각하지 않기 때문에,

 

HTTP를 사용하는 페이지는 여전히 존재한다. 하지만 그 페이지에서 뭔가 개인정보를 변경한다던가 중요한 페이지로 넘어갈 때,

HTTPS를 적용하지 않으면 매우 취약하다고 볼 수 있다.

 

하지만 요즘 추세로 봤을 때, HTTPS로 대부분 전환하고 있는 추세이긴 하다.

 

FTP(File Transfer Protocol, 파일 전송 프로토콜)

클라이언트와 서버 간에 파일을 전송하고 관리하기 위한 프로토콜이다.

 

FTP는 정보보안기사에서도 정말 많이 등장하는 프로토콜이라고 한다.

클라이언트와 서버 간의 통신을 기반으로 하며, 클라이언트는 파일을 업로드하는 등의 작업,

서버는 클라이언트의 요청을 처리하고 파일을 저장하거나 전송한다.

FTP는 특히나 두 가지 모드를 지원한다 : 액티브 모드(Active Mode) / 패시브 모드(Passive Mode)

 

액티브 모드 – 서버가 클라이언트에 직접 연결하는 방식이다.

클라이언트가 데이터 전송을 요청하면,

서버는 클라이언트가 지정한 포트로 데이터 전송을 위해 클라이언트에게 연결을 시도한다.

 

패시브 모드 – 클라이언트가 서버에게 직접 연결하는 방식이다.

클라이언트가 데이터 전송을 요청하면,

서버는 클라이언트에게 데이터 포트를 알려주고, 클라이언트가 해당 포트로 직접 연결을 시도한다.

 

FTP는 기본적으로 사용자의 이름과 암호를 사용하여 클라이언트를 인증하며,

이는 평문으로 전송되기에 보안상 취약하다.

 

그렇다 보니 회사 내에서는 FTP 사용을 지양한다.

그래서 만약 정말 FTP를 사용하고자 한다면, FTPS, SFTP와 같은 보안된 FTP를 사용한다.

FTP는 기본적으로 명령과 응답을 주고받는 형식이다.

클라이언트가 서버에게 명령을 보내면 서버는 해당 명령을 처리하고 응답한다.

 

주로 다음과 같은 명령들이 존재한다.

 

파일 업로드(STOR), 파일 다운로드(RETR), 디렉터리 변경(CWD), 현재 작업 디렉터리 표시(PWD), 파일 삭제(DELE) 등

FTP는 두 개의 포트가 사용된다 : 제어 채널(Command Port), 데이터 채널(Data Port)

 

제어채널

클라이언트와 서버 간의 FTP 명령어와 응답을 주고받는 데 사용한다. 일반적으로 21번 포트를 사용한다.

 

데이터 채널

실제 파일 전송을 위한 즉, 디렉터리와 같은 실제 데이터를 전송하는 데 사용된다.

 

여기에 액티브 모드와 패시브 모드가 존재하는 것이며,

액티브 모드에서는 일반적으로 20번 포트를 사용하는 반면에, 패시브 모드에서 포트는 동적으로 할당된다.

 

즉, 파일 전송을 할 때, 그냥 21번 포트만 생각하면 안 된다.

데이터를 전송하기 위해서는 20번 포트도 활성화가 되어있어야 한다.

 

21번 포트를 제어채널이라 말하고, 20번 포트는 데이터채널이라 말하듯이,

21번 포트와 20번 포트 둘 다 활성화되어 있어야지만 FTP를 통해서 파일을 송수신할 수 있다.

 

이 실제 파일을 송수신할 때, 액티브모드, 패시브모드 두 가지 모드를 지원하지만,

기본적으로 모두 설정하지 않는다.

 

디폴트 모드는 액티브 모드이다.

 

파일, 데이터를 송수신을 하고자 할 때, 서버에서 지정해 주는 임의의 포트를 가지고

통신을 하는 것을 보고 패시브 모드, 20번 포트를 사용하면 액티브 모드이다.

 

즉, 20번 포트가 아닌 다른 포트를 사용하면 패시브 모드라고 이야기한다.

 

 

SMTP(Simple Mail Transfer Protocol, 단순 메일 전송 프로토콜)

전자메일을 ‘송신’하는 데 사용되는 프로토콜이다.

반대로 전자메일을 '수신'할 때는 TOP3와 IMAP이라는 프로토콜을 사용한다.

 

클라이언트에서 이메일을 작성해서 보내면, 송신 서버에서 수신 서버로 이메일이 전송된다.

 

무슨 의미일까?

다시 한번 정리를 하자면, 송신자가 수신자에게 메일을 보내는 것을 보고 ‘송신’이라 하는 것이 아니라,

송신자가 메일 서버로 보내는 것을 보고 송신이라 이야기하는 것이다.

 

메일 서버에서 수신자한테 메일이 가는 것을 보고 수신이라고 이야기한다. 즉, 중간에 메일 서버가 존재하는 것이다.


SMTP 또한 클라이언트와 서버 기반 통신이며, 이메일을 보내는 클라이언트(메일 프로그램)는 SMTP 서버와 통신하여,

이메일을 최종대상 즉, 수신자 측 이메일 서버로 이메일을 전송한다. 

위의 일련의 과정이 SMTP 즉, 이메일 ‘송신’의 역할이고,

수신자 측 이메일 서버는 이메일을 받아들이고, 해당 이메일을 수신자의 메일함에 저장하는 역할을 수행한다.

 

이때, 반대 편의 클라이언트 즉, 수신자는 이메일을 확인하기 위해 POP3, IMAP 등의 프로토콜이 사용된다.

 

수신자 측은 이메일을 확인하기 위해 메일 프로그램을 사용하여 POP3, IMAP 등의 프로토콜을 사용하여,

수신자 측 이메일 서버에 접속하여 이메일을 ‘수신’한다.

 

이때, 새로운 이메일 목록을 확인하고, 클라이언트에게 새로운 이메일을 표시하는 것이다.


즉 다시 말하자면, SMTP에서 송신자와 수신자가 각각의 클라이언트 역할을 하며,

SMTP 서버가 중간에서 이메일을 전달하는 역할을 한다.

SMTP는 일반적으로 25번 포트 사용한다.

FTP와 동일하게 명령과 응답으로 동작하며,

클라이언트는 명령어를 사용하여 메일을 서버에 전송하고, 서버는 응답으로 상태 및 진행 상황을 전달한다.

 

 

POP3(Post Office Protocol 3) / IMAP(Internet Message Access Protocol)

전자메일을 ‘수신’하는 데 사용하는 프로토콜이다.

 

즉, 이메일을 클라이언트와 메일 서버 간에 주고받는 데 사용되는 프로토콜이며,

메일 서버가 이 중 어떠한 프로토콜을 사용하냐에 따라 방식이 달라지는 것이다.

 

이 둘의 차이점을 잘 알아두어야 하기 때문에, 차이점을 위주로 알아보자.


- 공통점
모두 클라이언트(메일 프로그램)를 통해 메일 서버에 접속하여 이메일 수신(다운로드, 읽기 등)한다.

- 차이점
POP3 : 메일 서버에서 이메일을 클라이언트(메일 프로그램)로 가져오면 이메일이 메일 서버에서 즉시 삭제된다.

즉, 이메일이 한 기기에서만 관리된다고 말한다.

 

이 특징으로 서버 저장 공간을 덜 차지하고, 메일함의 크기를 줄일 수 있다.

이메일을 가져온 후 오프라인 상태에서도 확인이 가능하며, 서버와의 연결이 필요 없다.

 

IMAP : 메일 서버에서 이메일을 클라이언트로 가져와도 이메일이 그대로 서버에 유지된다.

즉, 서버에 이메일이 유지되기 때문에 여러 기기 간에 동기화가 가능하다고 말한다.

 

POP3와 같이 메일이 바로 삭제되지 않기에 서버 저장 공간이 부족할 수 있으며,

메일함의 크기가 서버에 따라 제한적일 수 있다.

 

또한 오프라인에서는 서버에 저장된 이메일에 접근하는 것이 불가능하기에 인터넷 연결이 필요하다.

 


IMAP에서는 여러 기기 간에 동기화가 가능하다고 했다.

 

이 말은 여러 기기에서의 모든 동작(이메일 읽거나 삭제 등)이 서버에 반영되기 때문에,

어느 기기에서든 동일한 이메일 상태를 유지한다는 의미이다.

 

반면에 POP3는 한 기기에서 이메일을 읽거나 다운로드하면 서버에서 해당 이메일이 삭제가 되기 때문에,

서로 다른 기기 간 동기화가 될 수 없을 것이다.

 

즉, 컴퓨터에서 메일을 열어보면, 다른 기기(휴대폰)에서는 컴퓨터에서 열어본 메일을 확인할 수 없다는 의미이다.

POP3는 일반적으로 110번 포트를 사용하며, IMAP는 143번 포트를 사용한다.

 

둘에 대한 차이점을 보안의 관점으로 다시 살펴보자.

 

IMAP은 메일 서버에 메일이 고스란히 남아있을 것이다.

메일 서버가 만약 공격당했다고 가정하면, 수신자의 메일이 서버 안에 다 저장되어 있기 때문에 리스크가 매우 크다고 볼 수 있다.

 

이러한 IMAP을 이용한다면 메일 서버에 메일이 계속 쌓이다 보니, 관리하기가 어렵다는 점도 존재한다.

 

왜냐하면 갑자기 용량이 늘어나게 될 때, 그것 또한 조치해줘야 하다 보니,

운영상 효율성이 IMAP은 조금 떨어지다 보니 POP3를 운영하는 경우도 있다.

 

즉, 이러한 부분들을 신경 쓰면서 메일 서버를 운영해야 할 것이다. 어떠한 방식으로 이용하는 게 좀 더 보안상 유리할지,

그리고 효율적인 측면으로 따졌을 때, 어떻게 운영하는 게 좋을지 등을 위에서 알아본 차이점을 잘 기억하면서 공부하자.

 

 

Telnet / SSH(Secure Shell)

모두 TCP/IP 기반의 '원격 접속'을 위해 사용하는 프로토콜이다.

둘에 대한 가장 큰 차이점은 Telnet은 평문으로 통신을 하고, SSH는 암호화된 모드로 통신을 한다는 점이다.

 

과거에는 Telnet이 주는 자율성, 편리성 등으로 Telnet을 많이 사용했다.

 

예를 들어, 내가 리눅스 운영체제를 사용하고 있고 상대가 윈도우 운영체제를 사용할 때,

서로 다른 운영체제에 대한 제한성 없이 사용이 가능했다.

 

하지만 치명적인 단점이 존재했다.

 

평문으로 통신을 하다 보니 중요한 정보가 자주 노출된다는 리스크가 있었기에,

Telnet은 더 이상 디폴트로 사용하면 안 되겠다고 생각한 것이다.

 

이에 윈도우 7 이후 버전부터 Telnet의 기능이 기본적으로 비활성화되어 있고,

정말로 부득이하게 사용이 필요한 경우에는 기능을 활성할 수 있도록 되어있다. 

 

하지만 회사에서 여러 가지 심사 활동을 받을 때,

이 Telnet이 열려있다면 그건 미흡사항으로써 조치하도록 권고한다고 한다.

 

다시 한번 정리해서 알아보자.

 

 

- 공통점

주로 터미널이나 명령 프롬프트를 통해 원격 시스템에 접속하는 데 사용되며,

원격 장치의 IP 주소나 호스트 이름으로 장치에 액세스 하여 원격 컴퓨터의 모든 응용 프로그램을 다룰 수 있다.

 

- 차이점

Telnet은 데이터를 평문으로 전송하기 때문에 보안에 취약하다.

반면 SSH는 공개키 및 대칭키 암호화를 사용해 암호화된 통신을 제공하여 보안이 향상되었다.  

특히 SSH는 SFTP를 통해 파일을 안전하게 전송할 수 있도록 지원 가능하며, 

SSH forwarding 또는 SSH tunneling이라고 불리는 전달되는 데이터를 모두 암호화하는 방식으로,

로컬 시스템과 원격 서버 간의 SMTP, IMAP, POP3 트래픽 또한 보호할 수 있다.

 

이를 통해 중간에서 데이터를 가로채거나 엿보는 시도로부터 데이터를 보호할 수 있는 것이다.

위와 같은 특징으로

Telnet은 보안이 크게 중요하지 않은 내부 네트워크에서 사용되며, 

SSH는 민감한 정보를 다루는 환경이나 외부 네트워크를 통한 원격 접속 및 보안이 중요한 상황에서 사용된다.

Telnet은 기본적으로 23번 포트를 사용하고, SSH는 22번 포트를 사용한다.

 

이렇게 둘의 가장 큰 차이점은 암호화와 포트에서 차이가 있다.

 

 

DNS(Domain Name System)

도메인 네임 시스템 또는 도메인 네임 서비스라고 이야기 하며,

도메인 이름을 IP 주소로 변환하거나, 반대로 IP 주소를 도메인 이름으로 변환하는 시스템이다. 

 

즉, 사람이 기억하기 쉬운 도메인 형태(( ex : www.tistory.com )를 컴퓨터 네트워크에서 사용되는 IP 주소로 변환한다. 

이는 DNS를 사용하면 사람이 192.168.1.10와 같은 IP를 기억할 필요가 없다는 의미이다.

 

사람은 보통 IP 주소를 외우고 다니기는 힘들 것이다.

그렇기 때문에 우리 같은 사용자가 편하게 읽고 외울 수 있는 형태인

도메인의 형태로 보이도록 변환을 해주는 역할을 DNS가 하는 것이다.

 

DNS는 경우 보통 UDP에서 많이 사용하는데, 천천히 정리하면서 알아보자.

 

 

- DNS의 주요 기능

도메인 이름 해석(Name Resolution)

사용자가 웹 브라우저에 도메인 이름을 입력하면,

DNS 서버는 해당 도메인 이름에 대응하는 IP 주소를 찾아 웹 브라우저가 웹 서버와 통신할 수 있도록 도와준다.

 

이를 통해 네트워크에서는 실제 통신에 필요한 IP 주소를 사용할 수 있게 된다.

 

IP 주소를 알고 있는 경우

DNS는 해당 IP 주소를 해당하는 도메인 이름으로 변환 가능하다.

이는 IP 주소를 기반으로 한 네트워크 리소스를 사람이 이해하기 쉬운 형태로 표현하는 데 도움이 된다.

- DNS 서버의 종류

DNS 서버는 여러 종류로 나누어져 인터넷의 DNS 요청을 효율적으로 처리하고 분산시킬 수 있다.

 

루트 DNS 서버 (Root DNS Servers)

모든 DNS 쿼리(요청)의 시작 지점으로, 인터넷에 연결된 모든 장치에서 이 DNS 서버에 접근한다.

 

TLD DNS 서버 (Top-Level Domain DNS Servers)

최상위 도메인 (예: .com, .net, .org)에 대한 DNS 정보를 관리한다.

예를 들어, .com 도메인의 TLD DNS 서버는 .com 도메인에 속한 모든 도메인들의 정보를 가지고 있다.

 

이 서버는 .com 도메인에 대한 쿼리가 발생하면 해당 도메인의 IP 주소나 다른 관련 정보를 제공한다.

 

관리 도메인 DNS 서버 (Authoritative DNS Servers)

실제 도메인과 IP 주소의 관계를 기록, 저장, 변경하는 등

특정 도메인에 대한 DNS 정보를 관리하고 해당 도메인의 쿼리에 대한 응답을 담당한다.

 

실제로 다른 DNS 서버들에게 이 정보를 제공하여 네트워크에서 도메인 이름을 IP 주소로 해석하는 데 기여하며,

이외에도 여러 서버가 존재한다.

 

DNS에서 TCP / UDP 동작의 차이점?

더보기

DNS는 주로 UDP를 사용하여 동작하지만, 일부 상황에서 TCP도 사용된다.

 


UDP를 사용한 DNS 동작의 경우
DNS 쿼리-응답 패턴은 일반적으로 매우 작은 소량의 데이터를 다룬다.

이는 연결 설정 및 해제 과정이 없고(대량의 트래픽을 처리하고, 단순히 데이터 전송 집중 가능하다는 특징 존재), 
단순하고 작은 헤더의 크기(작은 패킷 크기를 가지고 있는 특징 존재)를 가지고 있는 UDP에 적합하다.

이에 따라 DNS 초기 설계에서 UDP를 사용하면서, DNS의 메시지 크기를 512바이트를 초과하지 않도록 제한했다.

결국 UDP를 사용하여 DNS 요청 및 응답 메시지를 간단하고 빠른 동작으로 처리하여,

효율적인 전송이 가능하게 된 것이다.

 

TCP를 사용한 DNS 동작의 경우
DNS 메시지 사이즈가 512바이트를 초과하는 경우에 사용된다.


메시지의 크기가 큰 경우 신뢰성 있는 연결을 보장하는 TCP는 DNS 메시지 손실 및 에러 문제를 해결할 수 있다,
즉, 대용량의 DNS 메시지를 전송해야 할 경우에 사용할 수 있다는 의미이다.

또한 보안 기능이 추가된 DNSSEC의 경우 

인증, 암호화 등으로 보안이 추가되어 DNS 메시지가 512바이트를 초과할 수 있다는 특징이 존재한다.

이는 UDP를 사용해서는 DNS에서 처리할 수 없는 크기의 메시지기에 TCP를 사용하는 것이다.
또한 암호화의 경우 키 교환을 위해 handshake 과정이 필요하므로 TCP가 필연적이다.

 


 

 

네트워크 계층(3계층) 프로토콜

 

네트워크 계층은 라우팅 및 패킷 전송을 담당하는 계층이다.

데이터의 최적의 전송 경로를 설정하여 안정적이고 효율적인 통신을 지원한다.

 

대표적인 네트워크 계층의 프로토콜 : IP(IPv4, IPv6), ICMP, ARP 등

 

 

IP(Internet Protocol, 인터넷 프로토콜 / IPv6, IPsec)

인터넷에서 가장 기본이 되는 프로토콜로, 모든 네트워크 통신에 사용된다.

 

IP는 상이한 기기 간에 통신을 할 때, 각 기기에 고유한 IP 주소를 할당하여(주소체계)

각 장치를 고유하게 식별하는 방식을 사용한다.

 

이때, IP 주소는 기기 자체가 아닌, 네트워크의 주소이므로 네트워크 접속 환경이 달라지면

기기의 할당되는 IP 주소 또한 달라진다는 점을 유의하자.

 

이 IP 주소는 네트워크에서 데이터를 패킷 단위로 나누어 전송하는 데 사용된다.

예를 들어, 사용자가 웹 페이지를 접속하거나 파일을 다운로드하려면 해당 웹 페이지나 파일을 전달할 주소가 필요한데,

이때 주소를 IP 주소라고 하며, 클라이언트는 이 IP 주소를 사용하여 서버에게 필요한 정보를 요청하는 것이다.

주로 IPv4와 IPv6 두 가지 버전이 사용된다.

 

IPv4(버전 4)

IPv4 주소는 2진수 8자리가 4번 반복되어 표현되기에 32비트 주소 체계이다.

하지만 가독성을 높이기 위해 10진수로 변환되어 0~255 범위를 가지고 점으로 구분하여 표현된다.

 

이진수 표현: 11000000.10101000.00000001.00001010

10진수 표현: 192.168.1.10

 

이러한 주소 체계는 네트워크 주소와 호스트 주소 두 가지로 구성되어 있다.

 

네트워크 주소 : 네트워크(여러 기기 들이 함께 속해 있는 그룹)에서 특정 네트워크를 식별한다.

호스트 주소 : 호스트(네트워크에 연결된 개별적인 기기) 주소는 해당 네트워크 내에서 특정 기기를 식별한다.

 

 IPv6(버전 6)

IPv4 주소는 32비트로 구성되어 있어, 실질적으로 사용 가능한 주소가 적어, 주소의 한계가 존재한다.

이러한 문제를 해결하기 위해 IPv6가 도입됐다.

 

16진수 4자리가 8번 반복되어 아래와 같이 콜론(:)으로 구분하여 표현되기에 128비트 주소 체계이다.

 

2001:0db8:85a3:0000:0000:8a2e:0370:7334

 

IPv6는 128비트로 확장되어 무한대에 가까운 주소를 제공하여 주소 고갈 문제를 해결하며,  

암호화 및 데이터 인증 등의 보안 기능을 제공한다.

 

IPv4에 비해 더 간단하고 효과적인 헤더 구조로 인해 인터넷 연결 속도 향상, 비용 및 효율 면에서 뛰어나다.

IPv6는 인터넷 초기부터 사용되어 왔고, 현재까지도 많이 사용되지만, 주소 고갈 문제로 IPv6 전환이 진행 중이다.

 

 IPsec(Internet Protocol Security, 인터넷 프로토콜 보안)

IP 버전에 상관없이 네트워크 통신의 보안을 강화하기 위한 프로토콜이다.

데이터의 기밀성, 무결성, 인증 등을 제공한다.

 

VPN에서 자주 사용되어 기업 네트워크, 원격 작업 환경에서 보안을 강화하는 데 사용된다.

IPv6는 IPsec을 기본적으로 지원하기에, 선택에 따라 활용 가능하다.


ICMP(Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜)

네트워크 메시지를 전달하는 데 사용되는 프로토콜이다.

 

인터넷상에서 서로 간의 통신을 할 때, 문제가 발생하면 그것에 대해 오류메시지를 반환하는 식으로 작동한다.

오류가 발생하면 어떠한 오류 때문에 현재 통신이 되지 않는지에 대해 알려주는 것이다.

 

네트워크 계층 중 여러 프로토콜이 존재하지만 특히 ICMP를 잘 기억하자.

 

이때, '메시지'는 네트워크에서 발생하는 여러 이벤트와 오류 상태를 포함하며 ICMP 메시지라고 한다.

 

ICMP는 IP의 일부로서, ICMP 메시지가 IP 패킷 내에 캡슐화되어 전송되며,

네트워크 장치 간에 통신 문제를 식별하고 해결할 수 있도록 한다.

이러한 ICMP는 라우터를 비롯하여 네트워크에 연결된 모든 디바이스가 ICMP 메시지를 처리할 수 있으며,

IPv4와 IPv6에서 모두 작성 가능하다.

ICMP 메시지는 오류 보고(시간 초과, 네트워킹 오류 등) 뿐만 아니라 네트워크 진단 / 네트워크 보안에도 활용할 수 있다.

 

여러 메시지들이 존재하지만 몇 가지만 추려서 알아보자.

 

Ping(Echo Request / Echo Reply, 에코 요청 및 응답)

네트워크 디바이스 간 통신이 원활한지 확인하기 위해 사용되는 메시지이다.

Echo Request는 응답을 요청하는 메시지이며, Echo Reply는 요청에 응답하는 메시지이다.

 

Destination Unreachable(목적지 도달 불가)

목적지 즉, 수신 디바이스에 도달할 수 없는 상태임을 알리는 데 사용된다.

 

목적지에 가지 못한다.. 현재 그 목적지에 해당하는 서버라는 대상이

현재 시점에서 네트워크 통신이 원활하지 않다는 것을 의미한다.

 

Time Exceeded(시간 초과)

패킷이 네트워크에서 일정 시간 동안 유지되지 못했거나,

호스트에서 응답을 받을 수 있는 시간이 초과되었음을 나타낼 때 사용된다.

 

출발지에서 목적지까지 가고자 할 때, TTL이라고 불리는 것을 통해서 하나하나 계산해서 넘어가는데,

거기에서 뭔가 응답 시간이 제대로 초과되지 않거나 모자랄 때 발생한다.

 

TTL(Time-to-Live)이란 패킷이 네트워크를 통과할 때마다 감소하는 값으로,

패킷이 네트워크를 거치는 동안 각 라우터에서 TTL 값이 1씩 감소한다.

 

이러한 TTL의 목적은 무한 루프에서 발생하는 문제를 방지하고,

패킷이 네트워크를 무한정으로 순환하는 것을 막기 위함이다.

 

TTL이 0이 되면 라우터는 패킷을 폐기하고 Time Exceeded 메시지를 보내고,

이를 통해 송신자는 패킷이 목적지에 도달하지 못하고 폐기되었음을 알 수 있다.

Redirect Message

현재 사용 중인 라우팅 경로를 개선할 수 있는 다른 경로가 있음을 라우터로 보내는 데 사용된다.

즉, 좀 더 괜찮은 경로로 갈 수 있다고 안내해 주는 목적으로 사용된다.

 

Source Quench(소스 억제)

목적지로 향하는 경로가 혼잡 상태일 때 발생한다.

 

이 메시지를 통해 송신자에게 데이터 전송 속도를 감소시키도록 요청할 수 있다.

즉, 과도한 트래픽이 발생할 때, 트래픽을 조절하는 것이다.

 

특히, Destination Unreachable, Time Exceeded, Redirect Message

위 세 가지는 어떠한 상황에 발생하는지 잘 알아두자.

위에서 네트워크를 진단 및 보안에도 활용 가능하다고 했는데, 어떤 식으로 활용할까?

더보기

Ping 요청 및 응답을 통해 네트워크 디바이스의 연결 가능 여부를 테스트 가능하다.

Traceroute 명령 또한 사용되는데, 해당 명령은 목적지까지 패킷이 이동하는 경로를 확인하는 도구이다.

 

즉, 네트워크에서 패킷이 어떻게 라우팅 되는지를 보여주며, Time Exceeded 메시지를 통해 중간 라우터를 식별한다.

 

네트워크 보안의 경우 방화벽을 사용하여 Ping 요청 및 응답과 같은 

특정 유형의 ICMP 메시지를 차단 및 필터링하여, 네트워크에 불필요한 ICMP 트래픽을 방지할 수 있다.

 

즉, 네트워크에서 발생하는 ICMP 트래픽을 지속적으로 감시하고 분석하여,

비정상적인 행위나 공격 시도를 탐지하면 해당 트래픽을 차단할 수 있다.

 


ARP(Address Resolution Protocol, 주소 해석 프로토콜)

IP 주소를 물리적 주소(MAC 주소)로 변환하는 데 사용된다.

ARP는 같은 로컬 네트워크에 속한 기기들 간의 물리적 주소를 해결하기 위해 사용된다.

 

즉, 상이한 두 기기간 통신을 할 때는 기본적으로 LAN 카드에 할당되어 있는

고유한 물리적 주소인 MAC 주소를 통해 데이터가 전달되기 때문에, 목적지의 물리적 주소(MAC 주소)를 알아야 한다. 

간략하게나마 작동 과정을 알아보자.


1. 송신 측이 수신 측에게 IP 패킷을 보내기 위해서 송신 측이 수신 측의 IP 주소를 알아냄.
2. 송신 측은 수신 측 IP 주소를 물리적 MAC 주소로 변환하기 위해 ARP 요청을 로컬 네트워크에 브로드캐스트(Broadcast)함.
3. 수신 측은 자신의 IP 주소와 관련된 MAC 주소를 알고 있다면, ARP 응답을 송신 측에게 직접 보냄.
4. 송신 측은 ARP 응답을 수신하면 수신 측 IP 주소에 대한 MAC 주소를 알게 되고, 이를 사용하여 패킷을 목적지 즉, 수신 측에게 전송.

우리가 계층 별 장비에서 알아봤던 트래픽을 전송하고 관리하는 스위치가 ARP가 작동되는 과정에서 ARP 요청과 응답을 전달한다.

또한 브로드캐스트 방식도 잠깐 알아봤었는데, 여기서 등장하기도 한다.

 

ARP를 같이 공부할 때는 RARP도 같이 엮어 보면 좋은데, RARP에서 R은 Reverse를 의미한다.

 

RARP는 맥주소를 가지고 IP주소를 찾기 위한 목적으로 사용된다.

즉, 목적지 MAC주소는 아는데, IP주소를 모를 경우 사용한다.

 

ARP와 RARP에 대한 내용을 찾아보면

2계층의 프로토콜인지 3계층의 프로토콜인지 헷갈릴 수 있다.

 

하지만 둘 다 맞는 말이다.

 

왜냐하면 ARP는 3계층의 IP 주소를 2계층의 MAC 주소로 해결하고,

RARP는 반대로 2계층의 MAC 주소를 가지고 3계층의 IP 주소를 찾는 것이기 때문이다.


따라서 두 프로토콜은 서로 다른 계층 간의 주소를 해결하는 데 사용되기에, 두 개의 계층이 오고 가는 게 맞다. 

 

나중에 웹 해킹 공격, 웹 공격 등을 공부하다 보면,

이 ARP를 이용해서 공격되는 것들이 생각보다 많다고 한다.

 

ARP-Spoofing, ARP-Poisoning, ARP-Redirect 등의 공격들이 존재하며,

이러한 공격들은 실제로 일어날 가능성이 있기에,

 

ARP가 어떠한 역할을 하는 프로토콜인지 정도는 알아둘 필요성이 있다.

 

 


 

 

이렇게 7계층과 3계층에 대한 프로토콜을 알아보았다.

4계층의 프로토콜인 TCP와 UDP는 세 번째 글에서 다루었으므로,

 

6계층, 5계층, 2계층, 1계층에 대한 프로토콜을 다음 글에서 마저 알아보자.

'IT_정보보안 > 인프라 & 보안기초' 카테고리의 다른 글

7. Firewall, IDS, IPS, DDOS  (2) 2023.12.04
6. 계층 별 프로토콜(2)  (0) 2023.11.28
4. 계층 별 장비  (2) 2023.11.13
3. TCP / UDP  (2) 2023.11.06
2. OSI 7 Layer  (1) 2023.11.01