728x90

6주차 Workbook

REST/RESTful

HTTP URI를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.

자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 것.일반적으로 REST API를 제공하는 웹서비스를 Restful 하다고 나타낸다.

(JSON혹은 XML을 통해 데이터를 주고받는것.)

 

HTTP Method

GET

GET메소드는 주로 데이터를 읽어올때 사용된다. Read할 때 주로 사용된다.

POST

POST메소드는 데이터를 생성할때 사용된다. Create 할때 주로 사용된다. POST메소드를 통해 데이터를 삽입하여 DB에 insert하여 새로운 데이터를 생성해준다.

PATCH

리소스 중 일부를 업데이트 할 때 사용한다. 특정 정보만 수정할 때 사용한다. Update

PUT

리소스의 모든 것을 업데이트 할 때 사용한다. 유저 정보를 모두 수정할 때 사용한다.

DELETE

특정 리소스 삭제를 요청할 때 사용한다.

이외의 다른 메소드

CONNECT, OPTION, TRACE 등의 메소드가 존재한다.

 

HTTP Response Code 의미

1xx : 요청을 받았으며 프로세스를 계속 진행한다.(조건부 응답)

→ 서버가 요청을 받았으며, 서버에 연결된 클라이언트는 계속 진행하라

2xx : 요청을 성공적으로 받아들였습니다.(성공)

→ 요청이 성공적으로 처리되었습니다.

3xx : 요청 완료를 위해 추가 작업이 필요합니다.(리다이렉션 완료)

→ 클라이언트에서 요청을 마치기 위해 추가 동작을 해주어야 합니다.

4xx : 요청 문법이 잘못됐거나 처리할 수 없는 요청입니다.(클라이언트 오류)

→클라이언트에 오류가 있습니다.

5xx : 서버가 유효한 요청에 대한 충족을 실패했습니다.(서버오류)

→서버에 오류가 있습니다.

 

Reverse Proxy

클라이언트로부터 요청을 받아 Rever Proxy에서 웹서버로 요청을 전송한다.

웹서버에서 요청을 처리한다. 서버에서 처리한 응답을 클라이언트로 보내는 것이 아니라 Reverse Proxy로 반환 하는 것이다. 이후 Reverse Proxy에서 응답을 클라이언트로 반환한다.

서버와 클라이언트 사이에 통신을 중계해주는 서버가 하나 생기는 것이다.

보안성이 높아진다.

728x90

'study > UMC(University MakeUs Challenge)' 카테고리의 다른 글

API  (0) 2021.11.04
데이터베이스  (0) 2021.11.04
OS와 서버  (0) 2021.11.04
네트워크와 프로토콜  (0) 2021.11.04
728x90

5주차 WorkBook

실습

Spring boot를 통해 Create, Read만 구현해 보는 실습과제였다.

DB는 4주차에 실습한 BaeMin디비의 User Table을 사용했다.

 

Model

GET, POST시 보낼 데이터 형식이다.

GetUserRes의 객체를 생성하여 받아오는 데이터를 저장한다.

PostUserReq를 통해 새로운 유저 레코드를 형성해준다.

PostUserRes는 PostUserReq를 통해 생성된 UserIdx를 반환한다.

 

UserController

getUser 메소드는 User테이블의 모든 데이터를 가져오는 메소드이다.

postUser는 데이터를 전송하여 User테이블에 user를 추가하는 메서드이다.

각각 localhost의 /users에 GET메서드로하냐 POST메서드로 하냐 차이이다.

GET 메서드 데이터 전송시 getUser 실행, POST메서드 전송시 postUser실행

 

Controller를 통해 쿼리가 들어오면 이후 데이터 처리를 Provider에서 하는것같다.

 

Provider에서 userDao의 각 메서드들을 호출한다. getUser는 userRes()를 호출하고 postUser는 addUser를 호출한다.

userRes에서 Select query문을 통해 데이터를 가져오는것같다. 받은 데이터를 GetUserRes의 각 getInt, getString을 통해 각각 데이터를 넣어준다. BaeMin.user 테이블의 모든 데이터를 가져와서 GetUserRes 오브젝트에 저장하고 해당 결과를 return해준다.

 

Post를 통해 테이블에 유저를 추가해주는 addUser이다. Insert into 를 통해 각각 데이터들을 createUserParams 오브젝트에 담아 디비에 삽입한다. 이후 리턴값으로는 addUser된 User의 idx가 반환된다.

실제 User Table

 

Get메서드로 users에 데이터를 보낸후 반환결과이다.(GET    localhost:8080/users)

User 테이블의 데이터들을 모두 가져온다.

Post메소드로 데이터를 전송했을  때 이다. Body에 필요한 값들을 채워주고 데이터를 전송한경우 return으로 해당 User의 userIdx를 가져오는것을 볼 수 있다.

이후 UserTable이다.

Post메소드로 해당 값들을 전송한경우 테이블에 값이 추가된것을 볼 수 있다.

 

어노테이션이나 데이터의 플로우를 아직 정확하게 모르는 상황이다. 이후 추가적인 학습을 통해 어노테이션과 Spring boot에서의 데이터 플로우 등을 더 학습할 예정이다.

 

키워드정리

API

API(Application Programming Interface) : 응용 프로그램에서 사용가능하도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할수 있게 만든 인터페이스

API를 사용하면 개발자들이 어플리케이션 코드를 작성하는 방법을 표준화 함으로써, 개발자간의 협업을 용이하게 만들어주고 간소화를 통해 빠른 프로세스 처리를 가능하게 해준다.

 

Http 패킷

웹의 어플리케이션 계층 프로토콜이며 웹 상(웹서버 ↔ 웹 클라이언트) 에서의 통신에 사용되는 프로토콜이다.

 

Http 메소드

GET

서버의 정보를 조회 하기 위해 설계된 메서드이다.

데이터를 Body에 담지않고 URL에 쿼리스트링을 붙여 전송합니다.

대량 데이터전송이 불가능하다.

 

POST

데이터 생성/변경 등을 위해 설계된 메서드이다.

GET 메소드와 다르게 Body에 정보를 담아서 서버에 전송합니다.

GET과 달리 대용량 데이터전송이 가능하며 Body에 데이터가 전송되기 때문에 url에서 확인되지않는다.

 

데이터 포맷

Header와 Body로 구성된다.

Header

1.요청 메소드 : GET, POST, PUT, OPTIONS 등이 명시된다.

2.요청 URL : 요청하는 서버의 URL

3.HTTP 프로토콜 버전 : 웹 브라우저가 사용하는 프로토콜 버전

4.상태코드 : 응답 헤더에 존재하는 요청의 성공 여부 (200, 400, 402)전송할 데이터

Body

전송할 데이터를 입력한다.

 

API Sheet

구현할 기능, HTTP메소드, URL, 개발여부 등을 정리하여 표로 만든것이다.

 

path variable

경로를 변수로서 사용하는 것이다. 

게시물의 경우 각각의 유저가 본인들의 게시글을 확인해야한다.

/post/6 이라고 설정해주면 userIdx가 6인 user의 게시물들을 볼수 있게 처리하는것이다.

 

728x90

'study > UMC(University MakeUs Challenge)' 카테고리의 다른 글

REST API / HTTP  (0) 2021.11.15
데이터베이스  (0) 2021.11.04
OS와 서버  (0) 2021.11.04
네트워크와 프로토콜  (0) 2021.11.04
728x90

4주차 WorkBook

실습

QuickDBD를 통해 데이터베이스의 테이블들의 구조와 속성간의 관계를 정립하였다.

AWS에 RDS 를 구축하여 해당 디비에 값을 연결하고 값을 저장하고 어플리케이션(배달의민족)의 이미지대로 데이터를 추출하는 쿼리문을 짜보았다.

키워드 정리

RDBMS

관계형 데이터 베이스 관리 시스템이다.

SQL

DDL : Data Definition Language (데이터 정의 언어)

CREATE - 데이터베이스, 테이블등을 생성한다.

ALTER - 테이블을 수정한다.

TRUNCATE - 테이블을 초기화한다.

DROP - 데이터베이스, 테이블을 삭제한다.

 

DML : Data Manipulation Language(데이터 조작어)

SELECT : 데이터를 조회한다.

UPDATE : 데이터를 수정한다.

DELETE : 데이터를 삭제한다.

INSERT : 데이터를 삽입한다.

 

DCL : Data Control Language (데이터 제어어)

GRANT : 데이터베이스 사용자에게 특정 작업에 대한 권한을 부여한다.

COMMIT : 트랜 잭션의 작업이 정상적으로 완료되었음을 알려준다.

ROLLBACK : 트랜잭션의 작업이 비정상적으로 종료 되었을 때 원래의 상태로 복구한다.

REVOKE : 데이터베이스 사용자에게 특정 작업에 대한 권한을 박탈, 회수한다.

 

DataBase 용어

테이블(Table)

행과 열로 구성된 데이터 모음

서로 연관된 데이터 집합

 

행(Row)

테이블을 구성하는 데이터들 중 가로로 묶은 데이터 셋. 일반적으로 하나의 행이 한 객체에 대한 정보를 담고있다.

튜플, 레코드 라고도 부른다.

 

열(Colum)

테이블에서 세로로 묶은 데이터 셋이다. 일반적으로 열은 그 테이블의 속성을 의미한다.Name필드, id 필드 등등

관계형 데이터 베이스에서 속성(Attribute)라고도 부른다.

 

스키마(Schema) (외부 스키마 / 개념 스키마 / 내부 스키마)

스키마

데이터베이스의 골격 구조를 나타내는 일종의 도면. 데이터베이스의 각 레코드의 크기, 키의 정의, 레코드 간의 관계 등을 정의한다.

 

외부 스키마

사용자의 입장에서 정의한 데이터베이스의 구조, 데이터들의 형식 등을 화면을 통해 사용자에게 어떻게 보여줄 것인가에 대한 명세.

하나의 데이터베이스에 여러개의 외부 스키마가 있을 수 있다.

 

내부 스키마

데이터베이스가 어떻게 저장장치에 저장될지에 대한 명세. 물리적인 저장장치와 데이터베이스간의 관계를 정의하므로 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마.\

 

개념 스키마

조직체 전체를 관장하는 입장에서 DB를 정의한 스키마. DB에 하나만 존재한다.

데이터 베이스의 구조와 제약조건에 대한 전반적인 명세

 

 

유일성과 최소성

최소성

키를 구성하는 속성들 중 꼭 필요한 최소한의 속성들로만 키를 구성하는 성질

굳이 없어도될 속성은 X

 

유일성

하나의 키값으로 튜플을 유일하게 식별할 수 있는 성질

ex) 주민등록번호

 

슈퍼키

유일성을 만족하는 속성 또는 속성들의 집합. 키값이 같은 튜플은 존재할 수 없다.

유일성은 만족하지만 최소성은 만족하지 않는다.

 

대체키

기본 키로 선택되지 못한 후보키들 기본키를 대신할 자격이 있으나 null값을 가질 수 있는 속성, 값이 자주 변경될 수 있는 속성 등의 이유로 기본키로 선택받지 못한 나머지 키들

 

후보키

슈퍼 키 중에서 최소성을 만족하는 키. 유일성과 최소성 모두를 만족하는 속성 또는 속성들의 집합이다.

 

기본키

여러 후보키 중에서 하나를 선택한 키가 기본키가된다. 하나의

null값을 가질 수 없다. 기본키로 정의된 속성에는 동일한 값이 중복될 수 없다. 값이 자주 변경되는 값은 기본키가 될 수 없다.

 

외래키

관련이 있는 여러 테이블 사이에서 데이터의 일관성을 보장해주는 수단이자, 두개의 테이블을 연결해 관계를 맺어주는 기준이 되는 키이다.

 

 

1:1 관계 / 1:N관계 / N:M관계

1:N관계 : 하나의 레코드가 다른 여러개의 레코드와 관계될 때 1:N관계를 가진다.

N: M 관계 : 여러 레코드가 여러 레코드와 관계될 때 N:M을 가진다.

1:1관계 : 서로다른 두개의 레코드가 1대1로 관계될때 1:1관계를 가진다.

728x90

'study > UMC(University MakeUs Challenge)' 카테고리의 다른 글

REST API / HTTP  (0) 2021.11.15
API  (0) 2021.11.04
OS와 서버  (0) 2021.11.04
네트워크와 프로토콜  (0) 2021.11.04
728x90

3주차 WorkBook

실습

AWS에 EC2 인스턴스를 생성하고 해당 서버에 Nginx, mysql, php 등을 설치하여 연동하고 Workbench 를 통해 해당 서버의 mysql을 조작해보았다.

가비아를 통해 AWS 서버의 도메인을 받았다.

 

OS

Operating System의 약칭으로 시스템 하드웨어를 관리하고 응용 프로그램을 실행시킬 수 있는 시스템 소프트웨어이다.

Linux

Linux는 오픈소스 운영체제이며 무료로 사용가능하다.

WINDOW보다 가벼운 특징이 있어 웹서버, 클라우드, 안드로이드, 임베디드 등등 다양한곳에 사용된다.

OS 커널의 일종인 리눅스 커널을 사용하는 운영체제를 가리키는 말이다.

IP

Internet Protocol의 약자로 인터넷 프로토콜에서 각 장치를 나타내는 IP주소를 가리키는 말로 쓰인다. 인터넷상에서 사용되는 각장치의 주소이다.

URL

URL은 프로토콜, 호스트, 경로 매개변수 등으로 구성된다.

URL은 웹을 뒷받침하는 주소체계이다. 웹에 존재하는 파일을 다른 파일과 구별하는 효과적인 식별자이다.

Domain

직역하면 분야 영역, 범위 등을 뜻하는 단어이다. 인터넷 상에서 어떤 사이트(영역)을 지칭하기 위해 사용된다.

Name Server

www.naver.com을 입력하면 해당하는 IP주소로 변환해주는 역할을 하는 서버이다.

도메인 이름을 IP로 변환해주는 역할을 한다.

Sub Domain

ex) example.com 의 웹사이트의 서브도메인으로 shop.exampe.com이 있을 수 있다.

도메인네임 서버 계층에서 서브도메인(sub domain)또는 하위 도메인은 도메인의 일부인 도메인이다.

Redirection

출력방향을 다른곳으로 바꾸는것을 의미한다.

ex) example.com/page1 URL을 웹서버에 요청했을 때 서버에서 example.com/page2 로 다시 요청하라고 지시하여 example.com/page2 가 출력되게한다.

Redirection : 다시 지시.

AWS원격 컴퓨터를 사용할 수 있는 서비스이다.

아마존 웹서비스는 아마존 닷컴의 클라우드 컴퓨팅 사업이다.

AWS EC2

Amazon EC2를 사용하면 하드웨어에 선투자할 필요가 없어 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다.

Elastic Compute Cloud로 클라우드에서 확장 가능한 컴퓨팅 용량을 제공하는 서비스 입ㄴ다.

728x90

'study > UMC(University MakeUs Challenge)' 카테고리의 다른 글

REST API / HTTP  (0) 2021.11.15
API  (0) 2021.11.04
데이터베이스  (0) 2021.11.04
네트워크와 프로토콜  (0) 2021.11.04
728x90

2주차 Work Book

  • 클라이언트-서버 통신
    • 프로토콜
      • HTTP
      • HTTP(Hypertext Protocol) : 웹상에서 사용하는 프로토콜 일반적으로 80포트 사용
      • HTTPS보안기술이 적용되어 통신의 안전성이 확보되었다. 보통 443포트사용Secure Sockets Layer라는 암호규약
      • 전달되는 내용이 다른사람에게 노출되거나 전달되는 내용이 악의적으로 변경되는것을 막을 수 있다.
        • SSL
      • Secure Sockets Layer라는 암호규약
      • 전달되는 내용이 다른사람에게 노출되거나 전달되는 내용이 악의적으로 변경되는것을 막을 수 있다.
        • FTP
      • TCP/IP기반에서 서버와 클라이언트 사이의 파일전송을 위한 프로토콜이다. 보통 20, 21번포트를 사용한다.
      • File Transfer Protocol
        • SFTP
      • 보안 파일 전송 프로토콜로 불리며 22번 포트를 사용한다. ssh와 같은 방식을 사용한다고 한다. ssh는 secure shell이다.
        • MYSQL
      • SQL을 사용하는 공개소스의 관계형 데이터베이스 관리 시스템(RDBMS)를 사용하기 위한 포트로 일반적으로 3306번을 사용한다.
        • SSH
      • 시큐어 쉘(Secure Shell)은 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해주는 포트입니다.
    • OSI 7 계층
    • 네트워크 계층
      • 1Layer - Physical Layer : 하드웨어 전송 기술로 이루어진 계층이다. 전기적인, 기계적인 신호를 주고받는 역할을 한다. 비트 0,1의 통신단위로 통신한다.
      • 2Layer - Data Link Layer : 데이터 링크 계층은 Point to Point간의 전송을 보장하기 위한 계층이다. DataLink 계층의 대표적인 장비로는 스위치와 브릿지가 있다. MAC주소가 Data Link계층에 해당한다. 전송단위는 Frame이다.
      • 3Layer - Network Layer : IP주소를 제공하는 계층이다. 네트워크 계층에서는 대표적으로 노드들을 거칠 때 마다 라우팅 해주는 역할을 담당한다. 대표적인 라우팅 장비로는 공유기가 있다. 전송단위는 Packet이다.
      • 2Layer - Data Link Layer : 데이터 링크 계층은 Point to Point간의 전송을 보장하기 위한 계층이다. DataLink 계층의 대표적인 장비로는 스위치와 브릿지가 있다. MAC주소가 Data Link계층에 해당한다. 전송단위는 Frame이다.
      • 5Layer - Session Layer : 데이터를 만들어내는 계층이다. 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다. 해당 계층에서 TCP/IP 세션을 만들고 없애는 책임을 진다.
      • 6Layer - Presentation Layer : 표현 계층은 코드간의 번역을 담당하여 사용자 시스템에서 데이터 형식상 차이를 다루는 부담을 덜어준다. MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어진다. 데이터의 압축 인코딩 등이 이 계층에서 다루어진다.
      • 7Layer-Application Layer : 응용 계층은 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다. 우리가 사용하는 사용자 인터페이스를 제공하는 프로그램등을 말한다. HTTP, FTP등의 프로토콜이 응용 계층에 속한다. 
        • TCP/IP
          • TCP
          • TCP(Transmission Control Protocol)은 IP 네트워크의 두 컴퓨터 간의 연결 지향 통신을 위한 전송 계층 호스트 간 프로토콜 입니다.
          • TCP의 경우 신뢰성있는 통신을 보장한다. 데이터가 전달되는 과정에서 여러 스위치 라우터 등등을 거치면서 데이터가 잘못 전달되는 현상이나 전달이 안되는 경우 오류제어, 흐름제어를 통해 신뢰성있는 데이터가 전달될 수 있도록 한다.
          • TCP는 4Layer인 TransPort 계층에 위치한다. 웹 브라우저들이 서버에 연결할 때도 사용한다.
            • IP
          • IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서가 다를 수 있다.
          • Internet Protocol의 패킷 전송과 정확한 순서를 보장하기 위해 TCP를 사용한다.
          • 패킷 통신방식의 인터넷 프로토콜IP(인터넷 프로토콜)이다.
  • IP
    • Packet
      • Header
      • HTTP 메시지를 생성한 일시, 클라이언트와 서버간 연결에 대한 옵션 설정 등이 포함되어있다.
      • HTTP Method, Request target, HTTP Version 등이 명시되어있다.
      • Host : 요청이 전송되는 target의 host url
      • User-Agent : 요청을 보내는 클라이언트에 대한 정보(웹브라우저 정보)
      • Accept : 해당 요청이 받을 수 있는 응답(response) 타입.
      • Connection : 해당 요청이 끝난후 클라이언트와 서버가 계속해서 네트워크 커넥션을 유지할 것인지, 끊을 것인지에 대해 지시하는 부분Content-Length : 메세지 body의 길이
      • 또한 Body에 대한 정보들이나 Cookie등도 가지고 있다.
      • Content-Type : 해당 요청이 보내는 메시지 Body의 타입(JSON, application/json)
      • Content-Length : 메세지 body의 길이
      • Body
      • Body가 없는 request도 많다.
      • Request의 실제 메세지/내용
    • IPv4
    • IP주소의 종류중 하나로 32비트 길이의 식별자로 0.0.0.0 ~ 255.255.255.255까지의 숫자의 조합으로 이루어진다. 총 네구간으로 나누어져 있으며 최대 12자리 번호로 이루어져 있다. 전세계 공용으로 사용되어왔으며 인터넷 사용자 수가 급증하면서 IPv4주소가 고갈될 문제에 쳐해있다. 이러한 고갈문제를 해결하기 위해 IPv6가 등장했다.
    • IPv6
    • IPv4주소체계를 128비트 크기로 확장한 차세대 인터넷 프로토콜 주소이다. 16비트씩 8부분으로 16진수로 표기
    •  
    • Domain
    • ip에 이름을 부여한 것이다.
    • ex) www.naver.com , google.com
  • Port
    • 서버에서 포트란?
    • IP를 집주소라고 한다면 Port는 해당 집의 문이다.웹서버의 경우 80번포트를 이용하며 IP주소와 80번포트를 통해 웹서버의 웹사이트로 접속이 가능하다.
    • 프로세스별로 할당된 번호이며 해당 번호를 통해 다른 컴퓨터와 데이터를 주고받을 수 있다.
    • 서버의 컴퓨터로 들어오는 문.
    • 프로토콜별 포트 번호 정리
    • 22 : 원격 로그인 SSH 포트
    • 25 : SMTP 메일 메세지 전송 프로토콜
    • 80 : HTTP 웹페이지 포트
    • 443 : HTTPS HTTP over SSL 프로토콜
    • 123 : NTP Network Time Protocol
    • 53 : DNS 포트
    • 23 : Telent 포트
    • 20,21 : FTP 포트
  • 포트리스닝 : 접속요청을 기다리는 상태이다.
  • 포트의 LISTEN 상태
  • 인바운드 / 아웃바운드
  • 아웃바운드 : 서버외부로 나가는것. 서버→클라이언트
  • 인바운드 : 클라이언트가 서버에 접속하는 것. 서버내부로 접속하는것
  • 데몬(Daemon)
  • 컴퓨터가 원활하게 운영되도록 도와준다.
  • 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램
  • Port forwarding공유기 내부망의 컴퓨터들을 가리키도록 설정하는것
    • 공유기
      • WAN광범위한 지역단위로 구성하는 네트워크를 의미한다. WAN이 LAN과 LAN을 연결하는 역할을 한다.
      • Wide Area Network로 넓은 지리적 거리/장소를 넘나드는 통신 네트워크 또는 컴퓨터 네트워크이다.
      • LAN
      • 근거리 통신망, Local Area Network를 의미하며 집, 사무실 학교 등 가까운 지역을 한데 묶는 컴퓨터 네트워크이다.
    • 외부 IP (공인 IP)
    • 공인IP라고 이름붙은 이유는 외부에서 내 컴퓨터로 접속하기위해 해당 IP를 사용해야하기 떄문이다.
    • 집(공유기내부)이 아닌 외부와 통신할 때 사용하는 IP
    • 내부 IP (사설 IP)내부네트워크 내에서는 내부 IP로 통신이 가능하다.
    • 집(공유기)에 형성되어있는 내부 네트워크에 접속된 기기들에 할당되는 IP주소이다. 내부 IP로는 외부와 통신할 수 없다.
    • 외부 포트
    • 외부에서의 접속을 위한 포트
    • 내부 포트
    • 포트포워딩을 위한 포트
    • 외부에서 연결했을때, 지정된 내부 PC에서 어떤포트를 사용할 것인가.
    • 게이트웨어
    • 네트워크통신을 할때 반드시 통과해야하는 곳이다.
    • 네트워크에서 다른 네트워크 간단히 말하면 LAN에서 다른 LAN 으로 이동할 때 거쳐야하는 지점을 말한다.
    • 방화벽
    • 네트워크 패킷들을 모니터링하며 외부 패킷들중 감엽될수 있거나 정상패킷과 다른패킷들을 못들어오게 막아준다.

추가 개념 키워드

  • TCP vs UDP
    • UDP
    • 통신을 할때 데이터를 받았다는 신호 또는 보낸다는 신호를 거치지않는다.
    • 신뢰성이 낮다. TCP보다 빠르다.
    • 비연결형 통신규약
  • DNS(Domain Name Server)이름과 IP를 1대1로 매핑하여 관리한다.
  • IP주소를 www.google.com과 같이 사람이 읽을 수 있는 이름으로 변환해주는 서버.
  • Proxy
    • Forward proxy
    • 클라이언트에서의 요청을 Proxy에서 server로 요청하고 해당 결과를 Proxy에서 client에게 전달해주는것
    • Reverse proxy
    • 클라이언트에서 서버로 요청할때 서버가아닌 Proxy를 거치는 것이다. Proxy에서 데이터를 받은후 내부 Server로 해당 요청을 전달한다.
  • 네트워크 장비
    • 라우터
    • 서로 다른 네트워크 간의 중계역할을 해준다.
    • 패킷의 목적지 IP 에대해 최적의 경로를 제공하며 데이터패킷을 목적지까지가는 다음 장치로 전향시킨다.
    • 허브
    • 충돌영역을 분할할때 사용한다고 한다.
    • 신호를 증폭 시켜 LAN의 전송 거리를 연장 시킨다.
    • 스위치
    • MAC주소 테이브르을 가지고 있어 목적지 MAC 주소를 가진 장비가 연결된 포트로 프레임을 전송한다.
    • 공유기
    • 하나의 IP로 여러 PC나 장비에서 공유하여 동시에 인터넷을 사용할 수 있게 한다.
  • 이더넷(Ethernet)
  • 이더넷은 LAN, MAN, WAN에서 많이 사용되는 네트워크 규격이다.
  • 물리계층에서 신호와 배선, 데이터 링크 계층에서 MAC패킷과 프로토콜을 정의하였다.
  • MAC 주소
  • 데이터 링크ㅡ 계층에서 통신을 위한 인터페이스에 할당된 고유 식별자이다.
728x90

'study > UMC(University MakeUs Challenge)' 카테고리의 다른 글

REST API / HTTP  (0) 2021.11.15
API  (0) 2021.11.04
데이터베이스  (0) 2021.11.04
OS와 서버  (0) 2021.11.04
728x90

IDA에 내장되어있는 Python 기능이다.

내부의 소스코드 실행가능

 

idc.ScreenEA() : 현재 위치의 주소를 리턴한다.

here() : 현재 위치의 주소를 리턴

 

MainEA() : 최소주소를 리턴

MaxEA() : 최대 주소를 리턴

Segment 출력

SegName(address) : address에 대한 세그먼트 이름을 리턴

SegStart(address) : address에 대한 세그먼트 시작 주소를 리턴

SegEnd(address) : adadress에 대한 세그먼트 마지막 주소를 리턴

 

세그먼트별 주소 출력 소스코드

for seg in Segments():

       print SegName(seg), hex(SegStart(seg)),hex( SegEnd(seg))

 

함수 목록 출력

Functions(start_addr, end_addr) : 함수 목록을 리스트 형태로 리턴(범위 지정 가능)

GetFuncName(function_address) : 함수 주소의 이름을 리턴

 

함수목록 출력 소스코드

for func in Functions() :

       print GetFunctionName(func), hex(func)

 

 

현재 코드의 디스어셈블리 코드 출력하기

GetDisasm(here())

NextHead(here()) : 다음 명령 주소

PrevHead(here()) : 이전 명령 주소

 

 

 

함수의 주소 받아오기

GetFunction(address, attr) : address에 해당하는 함수의 attr(함수의 시작 or 끝 주소) 리턴

    - Attr : FUNCATTR_START ( 함수의 시작), FUNCATTR_END(함수의 끝)

 

현재 함수 디스어셈블 출력하기 소스코드

ea = here()

start = GetFunctionAttr(ea, FUNCATTR_START)

end = GetFunctionAttr(ea, FUNCATTR_END)

cur_addr = start

while cur_addr <= end:

print hex(cur_addr), GetDisasm(cur_addr)

cur_addr = NextHead(cur_addr, end)

플래그 받아오기

GetFunctionFlags(address) : address의 플래그 값을 리턴

Flags

FUNC_LIB : 라이브러리 코드를 찾는데 사용

FUNC_STATIC : 정적함수로 컴파일된 함수를 식별하는데 사용

FUNC_FRAME : 프레임 포인터 push ebp를 사용하는 함수를 식별하는데 사용

FUNC_BOTTOMBP : FUNC_FRAME과 마찬가지로 프레임 포인터 pop ebp를 추적하는데 사용

FUNC_THUNK : 다른 함수로 점프하는 간단한 함수인 THUNK를 식별하는데 사용

 

라이브러리 함수 목록 및 주소 출력 코드

for func in Functions():

        flags = GetFunctionFlags(func)

        if flags & FUNC_LIB:

                 print hex(func), "FUNC_LIB", GetFunctionName(func)

 

 

 

 

 

 

 

 

728x90

'study > 리버싱' 카테고리의 다른 글

IDA - 사용법 및 단축키  (0) 2021.02.04
728x90

IDA 사용법

 

IDA는 바이너리 파일을 어셈블리어로 디스어셈블(disassemble) 해주는 프로그램 입니다.

바이너리 -> 어셈블리어 -> C언어 까지 변환을 해줍니다.

 

IDA를 통해 특정 바이너리를 열었을때

위처럼 바이너리의 함수들과 해당 함수들의 어셈블리어 코드들을 확인할 수 있다.

 

Hex-Ray

특정 함수 선택 및 f5 입력

어셈블리어를 C언어 소스코드로 변환해서 보여준다.

Search

Alt + T : 문자열 및 어셈블리어 검색

 

function list

Ctrl + p

함수목록을 보여주고 더블클릭시 해당 함수로 이동이 가능하다.

파일의 정보

TEXT View에서 가장 위쪽에 파일의 대략적인 정보를 확인할 수 있다.

 

 

어셈블리어 코드 수정하기

수정하고싶은 어셈블리 코드 클릭후 Alt + F2

어셈블리어 구문 삽입

바이너리 수정이아닌 분석 소스코드만 수정

 

 

Text View -> Layout Graph

Space bar 입력

text view상태에서 space를 입력하면 아래처럼 그래프 모드로 전환된다.

 

 

Stack Frame 확인하기

아래의 초록색 변수를 더블클릭하면 각 함수의 Stack Frame을 확인할 수 있고 각 변수들의 위치도 확인할 수 있다.

 

 

Jump to structure offset

이동하고 싶은 주소를 입력하면 해당 주소로 이동

단축키 : g

 

 

Search name

Ctrl + L

 

문자열 목록확인

Shift + F12

문자열 및 api 확인 가능

더블클릭시 해당 주소로 이동

이전단계로 돌아가기

ESC

ida에서 진행한 이동을 이전단계로 돌아간다.

 

xref call 따라가기

단축키  : x

특정함수 클릭 후 x를 입력하면 해당함수를 호출한 위치가 나온다. 더블클릭시 이동가능

 

함수 또는 변수 이름 바꾸기

단축키 : N

N입력시 아래처럼 함수명이나 이름을 변경할 수 있다.

 

북마크 기능

특정 주소 클릭 후 Alt + m

북마크 설명 설정

북마크 주소 목록 출력

Ctrl + M

북마크로 설정한 주소들이 출력된다.

 

 

IDA Debugging 모드

break point

F2

break point로 설정할 소스코드를 클릭하고 F2를 입력하면 아래사진처럼 bp가 설정된다.

Process run

F9

F9를 입력하면 process가 실행된다.

F7 : step into

F8 : step over

F5 : IDA View에서는 hexray 기능이고 debugging 모드에서는 run 기능이다.

Ctrl + F2 : 디버깅 종료

 

728x90

'study > 리버싱' 카테고리의 다른 글

IDA Python  (0) 2021.02.06

+ Recent posts