계층 별 프로토콜의 특징

정지범·2023년 11월 25일
0

refactoring

목록 보기
4/19

OSI 7 Layer 를 공부하면서 계층별로 프로토콜들이 존재하는 것을 확인하였었습니다.
계층 별 프로토콜들의 특징을 알아보겠습니다.


L1-물리 계층

redRS-232

  • 보통 15m이하의 단거리에서 38400bps로 전송을 위한 직렬 인터페이스

케이블


L2-데이터링크 계층

Ethernet

  • 비연결성 모드, 전송속도 10Mbps 이상, LAN 구현 방식을 의미
  • CSMA/CD(공유 매체 방식)으로 동작하며, 네트워크 충돌 방지 + 효율적인 데이터 전송
CSMA/CD:여러 디바이스가 동시에 데이터를 전송하려고 할 때 충돌을 감지하고 처리하는 기능

L3-네트워크 계층

IP

  • IP 버전은 IPv4는 32비트 주소를 사용하고, IPv6는 128비트 주소를 사용하여 IP 주소 부족 문제를 해결
  • 패킷 스위칭을 기반으로 동작(데이터를 작은 패킷 단위로 분할하여 전송)-데이터를 효과적으로 전달
  • 호스트의 주소 지정

ICMP

  • 오류 및 제어 메시지 전달
  • "에코 요청" 메시지와 "에코 응답" 메시지를 사용하여 호스트 또는 라우터의 가용성을 테스트하는 데 사용(ping테스트)
  • TTL (Time-to-Live)값을 조절해 무한 루프 및 라우팅 루프를 방지하고, 패킷이 일정한 시간 이후에 삭제되도록 할 수 있다.

ARP

  • IP 주소에서 MAC 주소로의 매핑(네트워크에서 데이터 프레임을 보낼 때 목적지 디바이스를 식별하는 데 사용)

L4-전송 계층

TCP

  • 전송 제어 프로토콜. 연결 지향적으로 통신하며, 데이터의 손실 및 중복 전송을 방지합니다

UDP

  • 사용자 데이터그램 프로토콜. 비 연결 지향적으로 통신하며, 신뢰성 없이 빠른 속도의 데이터 전송을 지원합니다.

L5-세션 계층

NetBIOS

  • 네트워크 리소스 공유 및 이름 서비스를 관리하기 위한 프로토콜
  • 주로 로컬 네트워크에서 파일 공유, 프린터 공유 및 다른 네트워크 리소스에 대한 접근을 관리하는 데 사용
  • 보안적으로 취약할 수 있음, 사용자는 무단 액세스 및 데이터 노출을 방지해야 함

RPC (Remote Procedure Call)

  • Windows OS에서 사용하는 원력 프로시저 호출 프로토콜

WinSock(Windows Socket)

  • 유닉스 기반의 OS에서 TCP/IP 통신시에 사용하는 Socket을 Windows에서 구현한 것

L6-표현 계층

ASCII

  • 7비트의 인코딩으로 33개의 제어 문자와 95개의 영어문자로 이루어짐

L7-응용 계층

SSL

  • 네트워크 레이어(L3)의 암호화 방식, HTTP뿐만 아니라 FTP등에도 사용
  • 인증, 암호화, 무결성을 보장하는 프로토콜

HTTP

  • WWW(World Wide Web) 상에서 데이터를 주고 받을 수 있는 프로토콜
  • 주로 HTML문서를 주고 받는 것에 사용되고 TCP와 UDP를 사용
  • 80번 포트 사용

TELNET

  • 인터넷이나 로컬 영역 네트워크 연결에 쓰이는 네트워크 프로토콜
  • 보안 문제로 거의 사용되지 않으며 원격제어를 위해 SSH로 대체
  • TELNET 통신은 주로 텍스트 기반
  • 23번 포트 사용

SSH

  • SSH는 통신을 안전하게 암호화하여 중간자 공격, 데이터 도용 및 데이터 유출과 같은 보안 위협을 방지
  • 데이터를 암호화하여 전송
  • 클라이언트와 서버 간의 상호 인증을 수행(신뢰성 보장)
  • 원격 네트워크 서비스를 안전하게 터널링 하는데 사용
  • 22번 포트 사용

FTP

  • 파일을 전송하기 위한 주요 목적을 가진 프로토콜(원격 서버와 클라이언트 간에 파일을 업로드하거나 다운로드하는 데 사용)
  • 21번(제어 채널), 20번(데이터 채널) 포트 사용

    제어 채널: 클라이언트와 서버 간의 명령 및 상태 정보를 전송하기 위한 채널
    데이터 채널: 파일의 실제 내용이 데이터 채널을 통해 전송하기 위한 채널

SMTP(Simple Mail Transfer Protocol)

  • 이메일 전송을 위한 프로토콜
  • 송신자가 메일을 수신자에게 바로 보내는게 아니라, 송신자가 이메일 서버로 이메일을 보내는 데 사용
  • 수신된 이메일은 SMTP를 통해 수신자의 이메일 서버로 전달

POP3(Post Office Protocol version 3)

  • 이메일 수신을 위한 프로토콜
  • 이메일 서버에서 이메일을 송신자에게 가져오는 데 사용
  • 이메일 서버에서 이메일을 다운로드하면 서버에서 삭제되며, 클라이언트의 로컬 디바이스에 저장

IMAP(Internet Message Access Protocol)

  • 이메일 수신저장을 위한 프로토콜
  • 이메일 서버에서 이메일을 송신자에게 가져오는 데 사용
  • 이메일을 서버에 유지하고, 클라이언트가 여러 기기에서 동일한 이메일에 액세스할 수 있도록 함

ICMP(Internet Control Message Protocol)

특징

  • 네트워크 관리 및 진단
  • 에코 요청 및 응답
  • 오류 메시지

    1.Destination Unreachable(도달할 수 없음): 이 오류 메시지는 목적지 호스트 또는 네트워크에 도달할 수 없는 경우 생성된다. 예를 들어, 경로상에 장애물이 있거나 목적지 호스트가 비활성 상태인 경우에 발생할 수 있다.
    2.Time Exceeded (시간 초과): 이 오류 메시지는 TTL 필드의 값이 0이 되어 패킷이 폐기된 경우 생성된다. 이는 패킷이 무한 루프에 빠지는 것을 방지하고 네트워크 경로를 디버깅하는 데 사용된다.
    3.Redirect : 이 오류 메시지는 라우터가 패킷을 다른 경로로 보내도록 다시 지시하는 경우 생성된다. 이를 통해 효율적인 경로 선택을 지원한다.


SSH와 TELNET의 차이점

SSH(Secure Shell)와 Telnet은 둘 다 원격으로 다른 컴퓨터에 접속하여 명령어를 실행할 수 있는 프로토콜이지만, 그들 간에 중요한 차이가 있습니다.

  1. 보안:
  • SSH: SSH는 데이터를 암호화하여 전송합니다. 이는 통신이 안전하게 이루어짐을 의미하며, 중간에서 정보를 가로채거나 도청하는 것을 방지합니다.
  • Telnet: Telnet은 보안 기능이 없습니다. 사용자의 로그인 정보나 전송되는 데이터가 평문으로 전송되기 때문에 보안에 취약합니다.
  1. 인증:
  • SSH: 대부분의 경우 SSH는 공개 키 인증 및 비밀번호를 통한 인증을 지원합니다.
  • Telnet: 주로 비밀번호 인증을 사용하며, 이는 보안에 취약한 부분 중 하나입니다.
  1. 포트 번호:
  • SSH: 기본적으로 22번 포트를 사용합니다.
  • Telnet: 기본적으로 23번 포트를 사용합니다.
  1. 암호화:
  • SSH: 데이터를 안전하게 전송하기 위해 암호화를 사용합니다.
  • Telnet: 암호화를 사용하지 않으므로 데이터가 평문으로 전송됩니다.
  1. 사용 운영체제:
  • SSH: 대부분의 현대 운영체제에서 지원하며, 보안상의 이유로 권장됩니다.
  • Telnet: 보안 취약성으로 인해 현대 시스템에서는 사용을 권장하지 않습니다.

HTTP와 HTTPS의 차이점

HTTP(Hypertext Transfer Protocol)와 HTTPS(Hypertext Transfer Protocol Secure)는 웹에서 정보를 주고받기 위한 프로토콜입니다.

  1. 보안:
  • HTTP: 데이터를 암호화하지 않고 평문으로 전송합니다. 따라서 중간에서 데이터를 가로채거나 도청할 수 있습니다.
  • HTTPS: 데이터를 SSL(또는 TLS) 프로토콜을 사용하여 암호화하여 전송합니다. 이는 중간에서의 데이터 도청을 방지하고 외부 공격자로부터 데이터를 안전하게 보호합니다.
  1. 포트 번호:
  • HTTP: 기본적으로 80번 포트를 사용합니다.
  • HTTPS: 기본적으로 443번 포트를 사용합니다.
  1. 인증:
  • HTTP: 통신 상에서 서버나 클라이언트의 정체성을 확인하지 않기 때문에, 중간자 공격(man-in-the-middle attack)에 취약합니다.
  • HTTPS: SSL/TLS 프로토콜을 사용하여 서버 및 클라이언트 간의 안전한 통신을 보장하며, 인증서를 통해 상대방의 정체성을 확인합니다.
  1. 암호화된 연결 설정:
  • HTTP: 기본적으로 암호화를 사용하지 않습니다.
  • HTTPS: SSL/TLS 프로토콜을 사용하여 데이터를 암호화하므로, 데이터의 안전성이 보장됩니다.
  1. URL 표시:
  • HTTP: URL은 "http://"로 시작합니다.
  • HTTPS: URL은 "https://"로 시작합니다. 브라우저에서는 일반적으로 안전한 연결을 나타내기 위해 URL 앞에 잠금 아이콘이 표시됩니다.
  1. 사용 목적:
  • HTTP: 주로 정보를 전달하고 문서를 가져오는 데 사용됩니다.
  • HTTPS: 보안이 중요한 정보(예: 로그인 정보, 결제 정보)를 전송하는 데 사용됩니다.

DNS(Domain Name System)

  • 도메인 이름을 IP 주소로 변환하거나, 역으로 IP 주소를 도메인 이름으로 변환할 수 있습니다.
  • DNS는 주로 UDP를 사용하여 동작합니다. UDP는 연결 지향이 아니기 때문에 빠르고 경량적인 데이터 전송이 가능합니다. 그러나 큰 DNS 쿼리나 응답이 있는 경우 TCP를 사용할 수도 있습니다.
  • 53번 포트 사용

DNS가 TCP를 사용하는 경우

1. Zone-Transfer

  • Master DNS와 Slave DNS 서버 간에 Zone 파일을 동기화하기 위한 프로토콜
  • DNS Zone Transfer는 일반적으로 TCP 프로토콜을 사용합니다. UDP는 단일 패킷의 크기 제한으로 인해 큰 데이터를 전송하기에는 부적합하기 때문입니다. 따라서 Zone Transfer는 안정적이고 신뢰성 있는 TCP 연결을 통해 이루어집니다.
  • 취약점
    • Zone Transfer는 별도로 설정하지 않으면 모든 호스트에 열려있다.
    • Zone 파일이 큰 곳은 Zone Transfer에 대한 부하가 크다
    • 스크립트나 다수의 호스트를 이용하여 Zone Transfer에 지속적으로 접근하면 서비스 거부 공격이 가능하다.
    • 사용하고 있는 IP대역, 방화벽 등 보안 장비의 IP정보 등이 노출될 수 있다.
  • 보안대책
    • DNS를 Master/Slave로 운영하지 않는다면 Zone Transfer를 사용하지 않도록 설정한다.
    • Zone Transfer를 운영해야 할 경우 Slave를 특정하여 운영한다.
  options {
  	allow-transfer {none};
  };
options {
  allow-transfer {211.1.2.3};
  };

2. 메시지가 512byte를 초과하는 경우

  • Naver.com 나 google.com 처럼 www로 매핑된 서버가 많이 있는 경우 메시지 사이즈가 512byte를 넘을 수 있는데 그럴 경우 TCP를 통해 질의하여 응답을 받는다.

DNS가 UDP를 사용하는 경우

1. 빠른속도

  • DNS는 신뢰성보다 속도가 더 중요한 서비스이기 때문에 TCP보다 UDP가 더 적합하다.
  • UDP는 512 bytes를 넘어가지 않는 패킷만 전송이 가능하고 오버헤드가 없어서 속도가 빠른데, DNS가 전송하는 데이터 패킷 사이즈가 매우 작으므로 UDP가 유리하다.

2. 연결 상태를 유지할 필요가 없다.

  • TCP는 호스트 간의 연결 상태를 유지한다. 이때 TCP의 패킷 안에는 여러 정보가 담겨 있지만, UDP는 어떤 정보도 기록하지 않고, 유지할 필요도 없다. 따라서 DNS 서버는 TCP보다 많은 클라이언트를 수용할 수 있으므로 연결 상태를 유지하지 않고 정보 기록을 최소화할 수 있는 UDP를 채택하였다.

참고

https://leo-xee.github.io/CS/protocol/
https://12bme.tistory.com/80
https://blog.naver.com/kostry/220899042020

profile
안녕하세요

0개의 댓글