FTP, SSH, 프로토콜, 포트번호

HIHI JIN·2023년 8월 20일
1

네트워크

목록 보기
3/5

프로토콜

디바이스 간의 데이터를 교환하기 위한 통신규약
(사람이 디바이스라면 프로토콜은 디바이스가 소통하기 위해 사용하는 언어인 korea language protocol이라 할 수 있다.)
통신규약 : 컴퓨터나 원거리 통신 장비 사이에서 메세지를 주고 받는 양식과 규칙의 체계
송신자와 수신자사이에 "데이터 구조를 이런식으로 하고 이건 이런 의미이고, 속도는 어느정도로 보내자"라는 약속을 한 것

프로토콜의 기본 요소
구문(Syntax) : 전송하고자 하는 데이터의 형식(Format), 부호화(Coding), 신호 레벨(Signal Level) 등을 규정
의미(Semantics) : 두 기기 간의 효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보를 규정
시간(Timing) : 두 기기 간의 통신 속도, 메시지의 순서 제어 등을 규정

프로토콜 종류

프로토콜의 기능
세분화(Fragmentation)
송신 측에서는 긴 데이터 블록을 손쉽게 전송할 수 있도록 크기가 똑같은 작은 블록으로 나누어 전송

재합성(Assembly)
수신 측에서 쪼개진 작은 데이터 블록을 재합성하여 원래의 메시지로 복원하는 기능

캡슐화(Encapsulation)
각 프로토콜에 적합한 데이터 블록을 만들려고 데이터에 정보를 추가하는 것
플래그, 주소, 제어 정보, 오류 검출 부호 등을 부착하는 기능

연결 제어(Connection Control)
비연결 데이터 전송(데이터그램)과 연결 위주 데이터 전송(가상회선)을 위한 통신로를 개설·유지·종결하는 기능

흐름 제어(Flow Control)
데이터양이나 통신속도 등이 수신 측의 처리 능력을 초과하지 않도록 조정하는 기능

오류 제어(Error Control)
데이터 전송 중 발생할 수 있는 오류나 착오 등을 검출하고 정정하는 기능

순서 결정(Sequencing)
연결 위주의 데이터를 전송할 때 송신 측이 보내는 데이터 단위 순서대로 수신 측에 전달하는 기능

주소 설정(Addressing)
발생지, 목적지 등의 주소를 명기하여 데이터를 정확하게 전달하는 기능

동기화(Synchronization)
두 통신 객체의 상태(시작, 종류, 검사 등)를 일치시키는 기능

다중화(Multiplexing)
하나의 통신로를 여러 개로 나누거나 회선 여러 개를 하나의 통신로로 변환시켜 다수의 가입자가 동시에 사할 수 있도록 하는 기능

전송 서비스(Transmission Service)
통신 객체를 사용하기 쉽도록 별도로 추가 서비스(패리티 검사, 보안도, 서비스 등급, 우선순위 등)를 제공하는 기능

포트번호

포트 : 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위
포트번호 : 포트는 번호로 구별되고 그 번호가 포트번호

IP : Internet Protocol의 줄임말로, 인터넷상에서 사용하는 주소체계
네트워크 상에서 다른 PC에 접속하기 위해서는, PC를 가리키는 주소를 알아야 한다.
네트워크에 연결된 특정 PC의 주소를 나타내는 체계인 IP 주소와 그 주소에 진입할 수 있는 정해진 통로가 PORT(포트)이다.
포트 번호는 IP주소와 함께 쓰여 해당하는 프로토콜에 의해 사용된다.

ex. 터미널에서 리액트를 실행하면 나타나는 화면에는, 로컬 PC의 IP 주소인 127.0.0.1뒤에 :3000이 포트번호
리액트를 실행했을 때에는 로컬 PC의 IP 주소로 접근하여, 3000번의 통로를 통해 실행 중인 리액트를 확인할 수 있다.

이미 사용 중인 포트는 중복해서 사용할 수 없다.
만약 다른 프로그램에서 3000번 포트를 사용 중이라면, 3001번 포트 번호로 리액트가 실행된다.
포트 번호는 0~ 65,535까지 사용할 수 있다.
그 중에서 0 ~ 1023번 까지의 포트 번호는 주요 통신을 위한 규약에 따라 이미 정해져 있다.
포트번호를 바꾸는 것도 가능하다.

각 프로토콜 별 포트번호

  • 잘 알려진 포트 : 0번 ~ 1023번
  • 등록된 포트 : 1024번 ~ 49151번
  • 동적 포트 : 49152번 ~ 65535번

반드시 알아야 할 잘 알려진 포트번호
20 : FTP 데이터 포트
21: FTP 제어 포트
22 : SSH
80 : HTTP
443: HTTPS

FTP

File Transfer Protocol
주로 파일 전송에 사용되는 통신규약
FTP서버에 파일들을 업로드, 다운로드할 수 있게 해주는 프로토콜
FTP서버와 FTP클라이언트 간의 통신에서 이루어진다.

기본 포트는 21이지만 바꿔서 사용하는 경우도 있다.
명령어를 전달하는 21포트 / 데이터를 전달하는 20(혹은 랜덤)포트가 있다.
FTP는 TCP기반으로 만들어져 데이터를 전달하는 방식에 따라 액티브/패시브 모드가 있다.

FTP는 서버에서 서비스를 열면 클라이언트에서 접속해서 명령어들을 이용해 데이터를 가져가거나 업로드하는 방식
액티브모드 : 클라이언트가 서버에 접속하는 것이 아닌 서버가 클라이언트에 접속하는 것
클라이언트가 서버에 21번 포트(커맨드 포트)로 접속한 후 자신이 사용할 2번째 포트(데이터 포트, 랜덤)를 서버에 미리 알려준다. -> 서버는 클라이언트 요청에 응답한다. -> 서버의 20번 포트는 클라이언트가 알려준 2번째 포트(데이터 포트, 랜덤)로의 접속을 시도한다. -> 클라이언트가 서버의 요청에 응답한다.
패시브모드 : 클라이언트가 21번 포트(커맨드 포트)로 접속을 시도한다. -> 서버에서는 2번째 포트(데이터 포트, 랜덤)를 클라이언트에게 알려준다. -> 클라이언트는 다른 포트(데이터 포트, 랜덤)를 열어서 서버가 알려준 포트(데이터 포트, 랜덤)로 접속을 시도한다. -> 서버가 클라이언트 요청에 응답한다.

FTP는 명령어 방식으로 커맨드 창이나 여러가지 gui프로그램(파일질라 등)으로 이용가능하다.
보안이 좋지 않다.

SSH

Secure Shell
원격 호스트에 접속하기 위해 사용되는 보안 프로토콜
보안이 탄탄한 통신방법
shell : 명령어와 프로그램을 사용할 때 쓰는 프로토콜, 사용자로부터 명령을 받아 그것을 해석하고 실행하는 역할
기존 원격 접속은 ‘텔넷(Telnet)’이라는 방식을 사용했는데, 암호화를 제공하지 않기 때문에 보안상 취약하다는 단점!
이를 암호화하는 SSH 기술이 등장했고, 현재 원격 접속 보안을 위한 필수적인 요소로 자리잡았다.
클라우드 서비스에서 제공하는 서버는 기본적으로 원격 접속을 해서 접근하고 사용하여, NBP나 AWS와 같은 클라우드 서비스를 제공하는 곳에서 서버 생성시 필수적으로 SSH 보안 과정을 거친다.

SSH를 구성하는 가장 핵심적인 키워드는 ‘KEY(키, 열쇠)’
클라이언트와 서버는 각각의 키를 보유하고 있으며, 이 키를 이용해 연결 상대를 인증하고 안전하게 데이터를 주고 받는다.
키를 생성하는 방식 2가지 : 대칭키/비대칭키(또는 공개 키) 방식

비대칭키 방식 :
클라이언트와 서버가 서로의 정체를 증명하는 과정
클라이언트 또는 서버가 key pair(키쌍, 공개키(.pub파일)와 개인키(.pem파일) 2개)를 생성
클라이언트가 key pair를 생성했을 경우, 공개키를 서버에 전송.
공개키이므로 전송과정 중 유출되도 문제없음
서버는 공개키를 받아서 공개키로 만들어진 랜덤한 값을 생성하여 클라이언트에게 보냄
서버에서 받은 랜덤한 값을 클라이언트가 가진 개인키로 푼 결과 값을 다시 서버에 전송한다.
서버는 클라이언트로부터 전송받은 값을 자신이 처음에 낸 값과 비교하여 공개 키에 해당하는 올바른 개인키가 맞다면 접속을 허용해준다.
최초 접속 시 클라이언트와 서버 간의 인증 절차가 비대칭키 방식을 통해 완료된다.
공개키와 개인키는 키페어이므로 다른 공개키나 개인키를 이용해 풀어낼 수 없다.
개인키는 클라이언트와 서버 간의 사이를 증명해주는 수단

대칭키 방식 :
서로가 누군지 알았으니 정보가 새어나가지 않도록 정보를 암호화해서 주고받는 과정
비대칭키 방식과 달리 한개의 키만을 사용하고 이것이 대칭키
클라이언트 또는 서버가 하나의 대칭키를 만들어 서로 공유한다.
공유된 대칭키를 이용해 정보를 암호화하면 받은 쪽에서 동일한 대칭 키로 암호를 풀어 정보를 습득하게 된다.
정보 교환이 완료되면 교환 당시 썼던 대칭키는 폐기.
나중에 새로 접속할 때마다 새로운 대칭 키를 생성해 사용.

실제로 클라우드 서비스를 사용할 때는 서버쪽에서 직접 키 페어를 생성하여 클라이언트에게 .pem파일(개인 키)를 제공한다.

별도로 포트설정을 하지 않는다면, 기본포트는 22번
하지만 무작위 공격으로 SSH포트에 대한 공격을 시도할 수 있으므로 임의의 포트번호로 변경이 필요하다.

profile
신입 프론트엔드 웹 개발자입니다.

0개의 댓글