Network

[Network] 프로토콜 정리 - ARP, FTP, FTPS, TELNET, SSH, SSL/TLS

Papya_j 2024. 7. 28. 04:35

이전에 주요 프로토콜에 대한 정리를 진행했는데 이번엔 전에 다뤘던 프로토콜을 제외하고 다른 프로토콜에 대한 정리를 진행해보겠다. ARP, FTP, FTPS, TELNET, SSL/TLS, SSH에 대해서 다룰 예정이다. 이전 프로토콜에 대한 정보들은 밑의 게시글 링크를 들어가면 확인할 수 있다.

https://papya3086.tistory.com/8

 

[Network] 주요 프로토콜 정리 - HTTP, HTTPS, TCP, UDP, IP, ICMP

오늘은 네트워크의 계층들 중 전송 계층에서 사용하는 프로토콜에 대해 설명하겠다.전송계층은 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층으로, 쉽게 말해 데이터의 전달을 담당

papya3086.tistory.com

 

 


ARP

주소 결정 프로토콜(Address Resolution Protocol, ARP)은 네트워크 상에서 IP 주소를 물리적 네트워크 주소로 대응(bind)시키기 위해 사용되는 프로토콜이다. 여기서 물리적 네트워크 주소는 이더넷 또는 토큰링의 48 비트 네트워크 카드 주소를 뜻한다. ARP는 1982년 인터넷 표준 STD 37인 "RFC 826"에 의해 정의되었다.

 

출처 : 위키백과

 

ARP는 네트워크 상에서 IP 주소를 물리적 네트워크 주소로 대응 시키기 위해 사용되는 프로토콜이다.

LAN (Local Area Network, 로컬 네트워크)에서 단말기 끼리 통신 시에 IP 주소와 MAC 주소를 이용하게 되는데 이 때 이 두개를 매칭시켜서 IP주소에 해당되는 단말기가 소유한 MAC 주소를 제대로 찾아갈 수 있게 하는 역할을 한다.

 

* LAN이란?

근거리 통신망, 로컬 영역 네트워크(local area network, LAN), 구내 정보 통신망은 네트워크 매체를 이용하여 집, 사무실, 학교 등의 건물과 같은 가까운 지역을 한데 묶는 컴퓨터 네트워크이다.

 

출처 : 위키백과

 

이해하기 쉽게 ARP Request가 미치는 영역이라는 정의도 있다.

가정용 Wi-Fi 네트워크와 소규모 비즈니스 네트워크는 LAN의 일반적인 예시이다.

이와 상반되는 개념으로 WAN (Wide Area Network)가 있다. 

 

* MAC 주소란?

네트워크 계층 중 Data-Link Layer 계층에서 통신을 위해 네트워크 인터페이스에 할당된 고유 식별자로 NIC (Network Interface Card)를 가진 단말이라면 평생 사용되는 고유 주소를 의미한다.

LAN에서 통신할 때 실질적으로 사용되는 주소가 바로 MAC 주소이다.

 

따라서 컴퓨터나 네트워크 장가 가지고 있는 NIC에는 MAC주소가 존재한다. 

 

IP주소만이 아닌 IP주소를 매칭시켜 MAC주소로 연결시킨 후 통신하는 과정이 왜 필요한가?

-> IP는 고유적이긴 하나 중복되는 경우도 있다. 이럴 때 어떤 단말기와 통신을 원하는지 모르는 상황이 발생하는데 이때 MAC주소를 통해 매칭하게 된다면 정확한 단말기나 장치에 연결하여 통신이 가능하다.

 


다시 ARP로 돌아와서 ARP는 IP주소와 MAC주소를 1대1 매칭 시킨 후 IP를 이용하여 통신할 때 정확한 MAC주소까지 같이 고려하여 목적지를 제대로 찾을 수 있게 하는 역할을 한다.

 

이때 IP주소와 MAC주소를 1:1 대응한 후 테이블로 정리하여 목적지에 맞게 전달하는 역할을 하는 것이 ARP Table 이다.

 

이는 각 컴퓨터 혹은 네트워크마다 가지고 있으며 각각 MAC 주소와 TYPE Ports를 가지고 있다. 

 

ARP Table 생성 과정 (같은 LAN에 존재시)

1. A에서 같은 로컬의 다른 장치인 B와 통신하려고 할 때 Host는 'B가 어디있는지 찾고 있다'라는 의미인 ARP 쿼리 패킷을 BroadCast 한다.

2. 해당 네트워크 내부의 다른 장치들은 B가 자신이 아님을 알고 버리지만 B는 이를 인지하고 A에게 MAC주소를 제공하는 유니캐스트를 진행한다.

3. A는 B에 해당하는 IP, MAC 주소를 Table에 기록후 저장. 이후에는 B에게 바로 보내기 가능

 

ARP Table 생성 과정 (다른 LAN에 존재시)

0. 라우터에 걸쳐서 통신이 이루어져아 한다

1. A는 B의 MAC 주소가 아닌 B로 가는 길에 존재하는 라우터의 MAC주소를 적는다.

2. 라우터는 메시지를 받은 후 목적지 IP가 B를 향하는 것을 인지한다.

3. 이후 라우터는 패킷에서 자신의 MAC주소가 적혀있는 것을 지우고 B의 MAC주소로 바꾼다. 또한 송신지를 A가 아닌 라우터 자신걸로 바꾼다.

4. 이후 B에게 전달 된다.

 


FTP

File Transfer Protocol의 약자. 파일을 전송하는 통신 규약.

- 기본으로 21포트 사용 (바꿔서 사용하기도 함)

 

명령어를 전달하는 21포트와 데이터를 전달하는 20(혹은 랜덤) 포트가 있음.

 

https://nhj12311.tistory.com/76

 

Active Mode : 클라이언트가 서버에게 명령어를 사용해 데이터를 가져갈 때 먼저 포트를 통해 요청 후 받아오는 것

Passive Mode : 클라이언트가 서버에게 명령어를 사용해 데이터를 업로드 할 때 먼저 포트를 통해 요청 후 업로드

 


FTPS

https와 비슷한 개념이다. FTP버전의 보안버전.

TLS/SSL 방식을 사용하여 안전하게 암호화 하여 클라이언트와 서버의 통신을 진행함. (밑에서 이 부분은 더 자세하게 개념설명을 진행하겠다) 

비대칭형 암호화 방식을 통해 공개키와 비공개키로 암호화와 복호화를 진행한다.

https://www.msp360.com/resources/blog/sftp-vs-ftps/

 

https://nhj12311.tistory.com/76

위 그림을 참고하면 이해가 더 쉽다.

 


TELNET

인터넷이나 LAN 연결에서 쓰이는 네트워크 프로토

원격 접속 서비스 -> 특정 사용자가 네트워크를 통해 다른 컴퓨터에 연결하여 사용하는 프로토콜

- TCP/IP 기반 프로토콜

- 원격 접속 서비스

- TCP 23 포트(Default)



SSH

Secure Shell의 약자.

보안 텔넷이라고도 불림. 다른 사용자가 세션을 엿듣지 못하게 세션을 숨기는 텔넷 응용프로그램.

보안버전의 프로그램이라고 생각하면 된다.

암호화 되어서 비밀번호가 전달되기 때문에 보안에 적합하다. 보안텔넷 SSH를 이용하여 접속 시에 텔넷 세션이 받아지지 않고, 사용하기 위해서는 PC에 SSH 클라이언트의 프로그램을 설치해야 한다.

 

1. 먼저, 서버 컴퓨터에서 SSH 서버를 설정하고 실행해야 합니다. 대부분의 리눅스 배포판에서는 OpenSSH가 기본적으로 포함되어 있습니다. (윈도우의 경우, OpenSSH를 설치해야 할 수도 있습니다. )

2. 서버 컴퓨터에서 원격 사용자 계정을 설정해야 합니다. 이 계정은 다른 사람이 접속할 때 사용할 것입니다.

3. 다른 사람의 공개키를 서버 컴퓨터의 원격 사용자 계정의 'authorized_keys'파일에 추가해야 합니다.

이렇게 하면, 해당 사용자는 개인키를 사용하여 해당 계정으로 SSH 접속이 가능해집니다.

 

출처 : https://velog.io/@jeongbeom4693/SSH%EC%99%80-Telnet

 


Telnet vs SSH

사용자가 쓰는 것에는 큰 차이가 없음.

작업을 하기위해 사용자와 서버간의 통신 방법 차이

- Telnet : byte stream 형식으로 주고 받음

- SSH : DES, RSA 등 암호화 방식을 이용하여 통신을 주고 받음

 

따라서 SSH가 보안적인 측면에서 더 좋음.

압축 기술도 사용하여서 크게 트래픽이 늘어나지는 않지만 약간의 부하가 발생할 수는 있음.

 


SSL/TLS

SSL (Secure Socket Layer)

- https가 사용되는 방식. 암호화 기반 인터넷 보안 프로토콜. 전달되는 모든 데이터 암호화

- 1995년에 개발되었지만 1996이후 업데이트가 되고 있지 않음. 알려진 취약점이 여러가지 있어서 사용 중단 권고

 

TLS (Transfer Layer Security)

- 위와 같은 작동 방식. 웹에서 전송되는 데이터 암호화. SSL의 업데이트 버전 (SSL 3.0인 최종버전과 TLS 최초버전은 차이가 크지 않음)

 

작동 방식

클라이언트와 서버간의 Handshake를 통해 인증이 이루어 진다. 데이터 무결성을 위해 디지털 서명을 하여 조작 여부 확인

 

Handshake 단계는 지원하는 암호화 알고리즘, 키 교환 알고리즘에 따라 달라지는데 일반적으로는 RSA 키 교환 알고리즘이 사용된다.(비대칭형 암호화 알고리즘)

HandShake 과정 (with RSA)

  1. 클라이언트 -> 서버 메세지 전송 - 이때 핸드셰이크가 시작된다. 이 메세지에는 TLS 버전, 암호화 알고리즘, 무작위 바이트 문자열이 포함된다.
  2. 서버 -> 클라이언트 메세지 전송 - 클라이언트의 메세지에 응답으로 서버의 SSL인증서, 선택한 암호화 알고리즘, 서버에서 생성한 무작위 바이트 문자열을 포함한 메세지를 전송한다.
  3. 인증 - 클라이언트가 서버의 SSL인증서를 인증 발행 기관에 검증한다. 
  4.  예비 마스터 암호 - 클라이언트는 무작위 바이트 문자열을 공개 키로 암호화된 premater secret 키를 서버로 전송한다.
  5. 개인 키 사용 - 서버가 premaster secret 키를 개인 키를 통해 복호화한다. (개인 키로만 복호화 가능)
  6. 세션 키 생성 - 클라이언트와 서버는 클라이언트가 생성한 무작위 키, 서버가 생성한 무작위 키, premaster secret 키를 통해 세션 키를 생성한다. 양쪽은 같은 키가 생성되어야 한다.
  7. 클라이언트 완료 전송 - 클라이언트는 세션 키로 암호화된 완료 메세지를 전송한다.
  8. 서버 완료 전송 - 서버도 세션 키로 암호화된 완료 메세지를 전송한다.
  9. 핸드셰이크 완료 - 핸드셰이크가 완료되고, 세션 키를 이용해 통신을 진행한다.

출처 : https://kanoos-stu.tistory.com/46

 

 

 

참고

https://aws-hyoh.tistory.com/70

https://as-backup.tistory.com/9

https://kanoos-stu.tistory.com/46

https://velog.io/@jeongbeom4693/SSH%EC%99%80-Telnet

https://nhj12311.tistory.com/76