개발자를 위한 네트워크 지식과 명령어
네트워크는 현대 디지털 시대에서 매우 중요한 역할을 합니다. 그러므로 개발자로서 네트워크 지식을 습득하는 것이 매우 중요합니다. 이 문서에서는 개발자가 알아두면 유용한 네트워크 지식과 명령어를 소개합니다.
TCP/IP
TCP/IP는 인터넷에서 통신에 사용되는 프로토콜입니다. 개발자는 TCP/IP 프로토콜에 대한 기본 지식을 가지고 있어야 합니다.
IP 주소
IP 주소는 네트워크상에서 컴퓨터를 식별하기 위한 주소입니다. IP 주소는 32비트의 이진수로 표현되며, 일반적으로 네 개의 숫자로 표현됩니다. 예를 들어, 192.168.0.1과 같은 형식입니다.
IP 주소는 공인 IP 주소와 사설 IP 주소로 나뉩니다. 공인 IP 주소는 인터넷 서비스 제공업체(ISP)에서 제공하는 IP 주소로 공공 네트워크에서 사용되며, 사설 IP 주소는 개인이나 기관의 로컬 네트워크에서 사용되는 주소입니다. 사설 IP 주소는 일반적으로 다음과 같은 범위 내에서 할당됩니다.
- 10.0.0.0 ~ 10.255.255.255: 대규모 네트워크에서 사용되며, 대부분 기업이나 대학 등에서 사용합니다.
- 172.16.0.0 ~ 172.31.255.255: 중간 규모의 네트워크에서 사용되며, 대개 회사나 학교 등에서 사용합니다.
- 192.168.0.0 ~ 192.168.255.255: 소규모 네트워크에서 사용되며, 일반 가정이나 작은 회사에서 사용합니다.
서브넷 마스크
서브넷 마스크는 IP 주소를 네트워크 부분과 호스트 부분으로 나누는 역할을 합니다. 서브넷 마스크는 IP 주소와 같이 표기되며, 255.255.255.0과 같은 형식입니다.
서브넷 마스크를 사용하여 네트워크 주소와 호스트 주소를 구분할 수 있습니다. 서브넷 마스크가 255.255.255.0일 경우, 네트워크 주소는 IP 주소의 첫 번째 세그먼트에서 세 번째 세그먼트까지의 값입니다. 호스트 주소는 IP 주소의 네 번째 세그먼트의 값입니다.
게이트웨이
게이트웨이는 하나의 네트워크에서 다른 네트워크로 데이터를 전송하는 역할을 합니다. 게이트웨이는 일반적으로 라우터로 구현됩니다.
게이트웨이는 IP 주소와 함께 사용됩니다. 게이트웨이 IP 주소는 다른 네트워크로 데이터를 전송할 때 사용됩니다.
명령어
ping
ping 명령어는 네트워크 상의 호스트에게 패킷을 보내 응답을 확인하는 명령어입니다. ping 명령어는 다음과 같이 사용합니다.
# ping [호스트 이름 또는 IP 주소]
ping www.google.com
traceroute
traceroute 명령어는 목적지 호스트까지의 경로를 추적하는 명령어입니다. traceroute 명령어는 다음과 같이 사용합니다.
# traceroute [호스트 이름 또는 IP 주소]
traceroute www.google.com
netstat
netstat 명령어는 현재 시스템의 네트워크 상태를 확인하는 명령어입니다. netstat 명령어는 다음과 같이 사용합니다.
# netstat [-a | -n | -o | -p 프로토콜 | -s | -r]
netstat -an | grep :80
프로토콜
HTTP
HTTP(Hypertext Transfer Protocol)는 인터넷에서 가장 많이 사용되는 프로토콜 중 하나로, 웹 페이지를 전송하는 데 사용됩니다. HTTP는 클라이언트가 서버로 요청을 보내고, 서버가 클라이언트에게 요청에 대한 응답을 보내는 방식으로 동작합니다. HTTP는 TCP/IP 프로토콜을 기반으로 하며, 포트 번호 80번을 사용합니다.
HTTPS
HTTPS(Hypertext Transfer Protocol Secure)는 HTTP와 같은 프로토콜이지만, 보안 기능이 추가된 버전입니다. HTTPS는 웹 페이지의 보안을 위해 사용됩니다. HTTPS는 클라이언트와 서버 간의 통신을 암호화하여, 중간자 공격 등의 공격으로부터 보호합니다. HTTPS는 TCP/IP 프로토콜을 기반으로 하며, 포트 번호 443번을 사용합니다.
FTP
FTP(File Transfer Protocol)는 파일 전송 프로토콜로, 파일을 서버와 클라이언트 간에 전송하는 데 사용됩니다. FTP는 데이터 전송을 위한 새로운 TCP 연결을 만들어 사용합니다. 일반적으로, FTP는 TCP 포트 번호 20번과 21번을 사용합니다. 포트 번호 20번은 데이터 전송을 위한 포트이고, 포트 번호 21번은 제어 연결을 위한 포트입니다.
SMTP
SMTP(Simple Mail Transfer Protocol)는 전자 메일을 보내는 데 사용되는 프로토콜입니다. SMTP는 TCP/IP 프로토콜을 기반으로 하며, 포트 번호 25번을 사용합니다. SMTP는 클라이언트가 메일 서버에게 메일을 보내는 방식으로 동작합니다.
POP3
POP3(Post Office Protocol version 3)는 전자 메일을 받는 데 사용되는 프로토콜입니다. POP3는 클라이언트가 메일 서버에서 메일을 가져오는 방식으로 동작합니다. POP3는 TCP/IP 프로토콜을 기반으로 하며, 포트 번호 110번을 사용합니다.
IMAP
IMAP(Internet Message Access Protocol)는 전자 메일을 받는 데 사용되는 프로토콜입니다. POP3와는 달리, IMAP는 서버에 저장된 메일을 클라이언트에서 관리합니다. 이러한 이유로, IMAP는 클라이언트와 서버 간의 통신이 더 복잡하고 느립니다. IMAP는 TCP/IP 프로토콜을 기반으로 하며, 포트 번호 143번을 사용합니다.
프록시 서버
프록시 서버는 클라이언트와 서버 간에 중계하는 서버입니다. 클라이언트가 서버에 직접 접근하는 것이 아니라, 프록시 서버를 통해 서버에 접근하게 됩니다. 이를 통해 클라이언트와 서버 간에 직접적인 통신이 이루어지지 않으므로 보안성이 높아집니다.
프록시 서버는 다음과 같은 기능을 수행합니다.
- 캐시 기능: 클라이언트가 요청한 정보를 캐시에 저장해놓고, 같은 요청이 들어올 경우 캐시에서 정보를 가져옵니다. 이를 통해 네트워크 병목 현상을 줄일 수 있습니다.
- 필터링 기능: 프록시 서버는 클라이언트와 서버 간의 모든 패킷을 확인할 수 있으므로, 특정한 패턴의 패킷을 차단하거나 수정할 수 있습니다.
- 익명성 제공: 클라이언트가 프록시 서버를 통해 서버에 접근하게 됩니다. 이를 통해 클라이언트의 IP 주소를 숨길 수 있습니다.
프록시 서버는 HTTP, HTTPS, FTP 등 다양한 프로토콜을 지원합니다. 프록시 서버를 사용하는 방법은 다음과 같습니다.
# curl을 사용하여 프록시 서버를 이용하여 <http://www.example.com에> 접근하는 예
curl -x http://[프록시 서버 주소]:[프록시 서버 포트] <http://www.example.com>
프록시 서버를 설정하려면 다음과 같은 단계를 따릅니다.
- 프록시 서버 호스팅 회사에서 서버를 구입하고, 서버 운영 체제를 설치합니다.
- 프록시 서버 운영 체제에 필요한 소프트웨어를 설치합니다. 대표적으로 Squid, NGINX, HAProxy 등이 있습니다.
- 리눅스 운영 체제에서 프록시 서버를 이용하여 http://www.example.com에 접근하는 방법은 다음과 같습니다.
- proxychains 패키지를 설치합니다. Ubuntu에서는 다음과 같은 명령어로 설치할 수 있습니다.
- sudo apt-get install proxychains
- /etc/proxychains.conf 파일을 열어 프록시 서버의 IP 주소와 포트 번호를 설정합니다.
- # dynamic_chain # ... # socks4 127.0.0.1 9050 http 프록시서버IP 프록시서버포트
- proxychains 명령어를 사용하여 프록시 서버를 통해 웹 페이지에 접근합니다.
- proxychains curl <http://www.example.com>
- 위와 같이 설정하면 curl 명령어를 이용하여 http://www.example.com에 접근할 때, 프록시 서버를 통해 접근하게 됩니다.
- 클라이언트에서 프록시 서버를 사용하도록 설정하는 방법은 다음과 같습니다.
- Windows
- "제어판"을 엽니다.
- "인터넷 옵션"을 선택합니다.
- "연결" 탭을 선택합니다.
- "LAN 설정"을 선택합니다.
- "프록시 서버 사용"을 선택합니다.
- "주소"와 "포트"를 입력합니다.
- "확인" 버튼을 클릭합니다.
- macOS
- "시스템 환경설정"을 엽니다.
- "네트워크"를 선택합니다.
- "고급" 버튼을 클릭합니다.
- "프록시" 탭을 선택합니다.
- "웹 프록시(HTTP)"와 "보안 웹 프록시(HTTPS)"를 선택합니다.
- "주소"와 "포트"를 입력합니다.
- "확인" 버튼을 클릭합니다.
- 예시
- "제어판"을 엽니다.
- "인터넷 옵션"을 선택합니다.
- "연결" 탭을 선택합니다.
- "LAN 설정"을 선택합니다.
- "프록시 서버 사용"을 선택합니다.
- "주소"에 192.168.0.1를 입력하고 "포트"에 8080을 입력합니다.
- "확인" 버튼을 클릭합니다.
- Windows
- 만약 프록시 서버의 주소가 192.168.0.1이고 포트 번호가 8080이라면, Windows에서는 다음과 같이 설정할 수 있습니다.
결론
위에서 소개한 네트워크 지식과 명령어는 개발자가 네트워크를 다룰 때 매우 유용합니다. 이 문서에서 제공한 내용을 토대로 개발자는 더욱 효율적인 네트워크 관리를 할 수 있습니다. 또한, 이 문서에서 다루지 않은 다른 네트워크 지식과 프로토콜도 함께 공부하여 개발 업무에서 더욱 능숙하게 활용할 수 있도록 노력해야 합니다.
'Linux' 카테고리의 다른 글
[AWS] EC2 에서 JDK 11 설치 (0) | 2023.03.27 |
---|---|
[SCP] AWS SCP 파일전송 및 사용법 정리 (0) | 2023.03.27 |
[Linux] 프로세스 확인 & 죽이기 Kill 명령어 (0) | 2022.10.12 |
리눅스 grep 명령어 사용법 (0) | 2022.07.29 |
리눅스 파일 찾기, 파일속 문자열 찾기 (0) | 2020.06.20 |
댓글