Linux Programming #7

박진우·2022년 8월 5일
0

Linux

목록 보기
7/7

◽ Curl

Curl이란 Cilent URL의 약자로 서버와 통신할 수 있는 커맨드 명령 툴로, 웹 개발에 많이 사용되는 무료 오픈소스다.

클라이언트 에서 커맨드 라인, 소스코드로 손 쉽게 웹 브라우저 처럼 활동할 수 있도록 해주는 기술이라고 할 수있다.

Curl을 사용함으로써 패킷과 메세지를 네트워크로 전송이 가능하고, DICT,FTP,POP3,HTTP/s 등 이외에도 수 많은 프로토콜을 지원한다는 장점이 있다.




◽ 네트워크 경로 확인 (traceroute)

네트워크는 수 많은 소규모 네트워크로 연결되어 있다.

따라서, 원격지에 위치한 목적지로 데이터를 전달하기 위해서는 많은 게이트웨이를 거쳐야 합니다.

목적지에 도착하기 위해 어떠한 게이트웨이를 거쳐 갔는지 알려면 trace명령 을 이용해 네트워크 경로를 확인

  • 목적지를 유튜브 도메인으로 설정하고, 유튜브까지 가는 경로를 확인한다.




◽ 웹 페이지 접속 경로 강제 변경

문자로 된 도메인 이름(예: www.naver.com)은 사람이 기억하기 쉽도록 작성한 이름이고, 네트워크/통신을 위해서는 숫자로 된 IP 주소로 변경해야 합니다.

도메인 이름을 숫자IP로 변경하기 위해서는 먼저 로컬 컴퓨터에 있는 호스트 파일을 살펴보고, 찾을 수 없다면 DNS 서비스를 사용한다.


  • 1) 먼저 /etc/hosts 파일을 열고, 127.0.0.1 www.naver.com 내용을 추가한다.

  • 2) 웹 브라우저를 시작하고, www.naver.com을 입력한다.

이때 네이버에 접속하지 못하고, 가상 머신에서 동작하고 있는 Apache2 웹 서비스 에 접속한다.




◽ nmap


nmap은 network mapper의 줄임말로 네트워크 탐색과 보안감사를 하는 오픈소스 툴입니다.

또한 네트워크상의 어떤 호스트가 작동중인지, 그 호스트가 어떤 서비스를 하는지, 운영체제가 무엇인지, 어떤 패킷필터,방화벽을 쓰는지 등을 알아내기 위해 raw ip 패킷을 사용한다.


1. 네트워크에 연결된 활성화된 장비의 IP 주소 목록

2. 특정 Host에 활성화 된 장비의 IP 목록

3. 서비스하고 있는 소프트웨어 정보

4. 운영체제 종류


nmap -v A.B.C.D

A.B.C.D 번 IP를 가진 호스트가 실행중인 서비스포트번호 정보





◽ tcpdump

‘tcpdump’는 Kali 리눅스에는 기본적으로 설치되어 있으며, 터미널에서 사용 가능한 패킷 모니터링(패킷 캡처) 도구입니다.


네트워크에서 돌아다니는 패킷을 모니터링 할 수 있으며, 네트워크 프로토콜 개발 시 디버깅 목적으로 사용하거나, 네트워크 상태를 진단하는데 사용합니다.

  • 1) 터미널 2개를 실행하고,터미널 1에서 $sudo tcpdump src 210.115.229.76 -A 라고 입력하고 실행한다.

  • 2) 터미널 2에서 $curl 210.115.229.76 이라고 입력

  • 3) 터미널 1에는 210.115.229.76 웹 서버에서 보낸 결과를 캡처한 내용이 출력되는 것을 볼 수 있다!




◽ 리눅스 프로그래밍

앞의 리눅스 포스팅에서도 간단한 프로그래밍을 해봤지만 kali linux에서도 간단한 리눅스 프로그래밍을 해보려 한다.

  • hello.c 라는 텍스트 파일을 만들고, “Hello world!\n”를 출력하는 소스코드를 작성한다.




◽ 소스코드 컴파일

  • 먼저 앞서 만든 hello.c라는 c언어 코드를 컴파일 하여 hello.exe 라는 실행파일 만든다.

  • gcc hello.c -o hello.exe 컴파일 시 -o hello.exe 라는 옵션 때문에 실행 파일을 hello.exe 라는 이름으로 생성한다.




◽ 다중 스레드

'fork()’를 호출하는 순간 자식 프로세스가 생성된다.

생성된 자식 프로세스는 ‘fork()’ 를 호출하는 구문 직후부터 이어서 실행한다.

부모 프로세스자식 프로세스동일한 코드실행하지만, 각자 pid 변수에 저장 하고 있는 값이 서로 다르기 때문에, switch-case 구문에 의해 서로 다른 코드를 실행하게 된다.

자식 프로세스pid 변수에 0을, 부모는 pid에 자식 프로세스 ID를 저장

  • 이 때 자식 프로세스는 printf 를 총 2번 실행하고, 부모 프로세스는 printf를 총 3번 실행한다.

  • P1 > C1 > C2 > P2 > P3 의 순서로 출력한다.

0개의 댓글