프로토콜, telnet, ssh, nc

Gunter·2024년 2월 22일

프로토콜이란

  • 컴퓨터의 상호 간 통신을 위해 미리 정해놓은 특별한 통신규약

  • 프로토콜의 기본 구성요소

구성요소설명
구문(Syntax)데이터의 구조나 형식을 말하는 것으로 부호화, 신호 레벨 등을 규정
의미(Semantics)전송의 조작이나 오류 제어를 위한 제어 정보에 대한 규정
순서(Timing)접속되어 있는 개체 간의 통신 속도의 조정이나 메시지의 순서 제어

 

TCP/IP

컴퓨터 기종에 관계없이 정보 교환이 가능하게 해주는 통신 프로토콜

 
IP는 전송하려는 자료를 패킷으로 나누고 목적지 주소를 지정한 뒤 운반
TCP는 IP 프로토콜에 의해 만들어진 패킷이 목적지 주소에 올바른 순서로 도달할 수 있게 제어하며, 패킷이 중간에 유실되지 않게 함

TCP/IP 의 구조

  • 1계층 : 네트워크 인터페이스 계층
    이더넷 카드 등으로 연결된 물리적인 네트워크를 의미

  • 2계층 : 인터넷 계층
    전송 계층에서 받은 패킷을 목적지까지 효율적으로 전달하는 역할

**IP (Internet Protocol)**
네트워크 계층에서 호스트의 주소 지정과 패킷 분할 및 조립 기능을 담당하며
데이터의 세그먼트를 패킷(Packet)으로 만들어 전송하는 역할

**ICMP (Internet Control Message Protocol)**
메시지에 대한 오류 보고와 이에 대한 피드백을 원래 호스트에 보고하는 역할

**ARP (Address Resolution Protocol)**
특정 프로토콜에 의해 필요할 때마다 목적지 호스트의 하드웨어의 주소를 찾는 역할
  • 3계층 : 전송 계층
    응용 계층으로부터 받은 데이터를 세그먼트(Segment) 형태로 만들어
    네트워크를 통해 수신자에게 전달하는 역할

    TCP (Transmission Control Protocol)
    세그먼트가 수신자에게 제대로 전달되었는지 응답(Ack)을 주고받아
    IP에 의해 전달되는 패킷의 오류를 검사하고 재전송을 요구
    패킷을 전송할 두 지점을 네트워크상에 있는 최단 경로를 찾아서
    1:1로 직접 연결한 뒤 패킷을 주고받아 전송과 오류 수정에 있어 신뢰도가 높으나,
    두 지점을 직접 제어하기 때문에 상대적으로 많은 전송 시간 필요
    
    UDP (User Datagram Protocol)
    비연결 전송 프로토콜로 세그먼트를 보내기만 하고 응답(Ack)을 주고받지 않음
    세그먼트가 제대로 전달되었는지 확인하지 않으며 오류 수정도 하지 않음
    TCP에 비해 속도가 빠르며 직접 연결에 따른 네트워크 부하를 줄일 수 있음
  • 4계층 : 응용 계층
    전송 계층 프로토콜을 사용하여 호스트 간의 연결을 확립

 


🌟 telnet 및 사용방법

 
telnet - 원격 호스트와 텍스트 기반으로 통신하기 위한 프로토콜 도구. TCP/IP 프로토콜을 사용하며, 특정 포트에 접속해 원격 서버와 통신할 수 있다.

telnet 설치

$ sudo apt-get install telnetd telnet

telnet 서버인 telnetd 패키지와 telnet 클라이언트인 telnet 패키지를 설치해야 한다.

telnet 서버 시작 및 중지

$ sudo systemctl start telnetd
$ sudo systemctl stop telnetd

telnet 클라이언트 포트를 지정해 서버 연결

$ telnet <호스트> <포트>

ex) 원격 서버의 IP 주소가 '192.168.0.1' 이고 telnet 서비스가 23번 포트에서 실행중이면

$ telnet 192.168.0.1 23

호스트의 공인 IP 주소 확인

curl ifconfig.me

 


🌟 ssh 및 사용방법

SSH(Secure Shell) - 네트워크 상에서 암호화된 통신을 제공하는 프로토콜. 원격 서버에 안전하게 접속할 수 있도록 도와준다.

SSH 접속 명령어

ssh [옵션] [사용자명]@[호스트주소]
  • 옵션 -p : 원격 서버의 SSH 포트 번호를 지정. 기본 포트 번호인 22번이 아닌 다른 포트 번호를 사용하는 경우에 입력
  • 사용자명 : 원격 서버에 접속할 사용자 계정의 이름을 지정. 기본적으로 root 계정이 가장 높은 권한을 가지며, 추가적으로 생성된 다른 계정도 사용 가능
  • 호스트 주소 : 접속하려는 원격 서버의 IP 주소나 도메인 이름을 입력.

기본적인 접속 예시

ubuntu 사용자 계정으로 123.456.789.0 IP 주소를 가진 서버에 접속하려면 다음과 같이 입력

ssh ubuntu@123.456.789.0

다른 포트 번호를 사용한 접속

포트번호가 2222인 서버에 user1 계정으로 접속하려면 다음과 같이 입력

ssh -p 2222 user1@123.456.789.0

더 자세한 설명 -> https://velog.io/@hyeseong-dev/리눅스-ssh란

 


🌟 nc 및 사용방법

nc - netcat의 약자로, TCP/UDP 프로토콜을 사용하는 네트워크 환경에서 데이터를 읽고 쓰는 유틸리티. 상대 서버의 포트가 열렸는지 확인하거나, 직접 서버가 되어 원격 서버에서 접속이 가능한지 확인하는 용도로 사용.

nc 설치하기

$ yum install nc

기본적인 사용법

$ nc [options] [host] [port]
옵션설명
-uudp 연결
-p소스 포트 지정
-lLISTEN 모드로 포트 띄움
-z단순 포트 스캔만 진행
-v더 많은 정보 확인

0개의 댓글