HTTP METHOD와 그 역할
·
여러가지/이것저것
REST API 설계 시, HTTP 메서드의 적절한 사용은 API가 명확하고 직관적으로 동작하게 하는 데 중요한 역할을 합니다. 각 HTTP 메서드는 특정한 CRUD 연산과 대응되며, 이를 통해 리소스에 대한 다양한 액션을 정의합니다. 여기에 대한 간단한 요약은 다음과 같습니다: GET: 리소스를 조회하는 데 사용됩니다. 서버에서 데이터를 가져와 클라이언트에게 제공하지만, 서버의 상태를 변경하지 않습니다. CRUD에서 Read에 해당합니다. POST: 새 리소스를 생성할 때 사용됩니다. 서버에 데이터를 전송하여 새로운 리소스를 생성하도록 요청합니다. CRUD에서 Create에 해당합니다. PUT: 리소스를 수정하거나 존재하지 않을 경우 새로운 리소스를 생성합니다. 주어진 리소스의 전체를 업데이트할 때 사..
GET과 POST의 차이점
·
여러가지/이것저것
GET 요청은 서버로부터 정보의 표현을 요청하는데 사용되며, 일반적으로 데이터를 조회할 때 사용되고, 이 정보는 캐싱될 수 있습니다. 반면, POST 요청은 서버에 정보 생성을 요청하며, 서버의 상태를 변경시키고, 주로 데이터를 생성하거나 수정할 때 사용되며, 멱등성이 유지되지 않습니다. [추가질문] 멱등성(Idempotency)은 같은 연산을 여러 번 수행해도 결과가 달라지지 않는 성질을 말합니다. 네트워크 프로토콜과 API 설계에서, 특정 HTTP 메서드가 멱등성을 가지면, 그 메서드를 여러 번 호출해도 서버의 상태가 처음 호출했을 때와 동일하게 유지됨을 의미합니다. 예를 들어, HTTP 메서드 중 GET, PUT, DELETE는 멱등 메서드로 분류됩니다. GET은 데이터를 조회만 하기 때문에 서버의..
HTTPS 공개키 암호화로 안전한 키 교환, 비밀키 암호화로 효율적인 데이터 통신을 보장/ 두 암호화 방식 사용
·
여러가지/이것저것
HTTPS에서 공개키 암호화와 비밀키(대칭키) 암호화를 복합적으로 사용하는 이유는 각각의 암호화 방식이 가진 장점을 최대화하고 단점을 보완하기 위해서입니다. 이 두 암호화 방식을 함께 사용함으로써, HTTPS는 안전하고 효율적인 데이터 전송을 보장합니다. 공개키 암호화의 사용 - 목적: 주로 비밀키를 안전하게 교환하기 위해 사용됩니다. 공개키 암호화에서는 두 개의 키(공개키와 개인키)를 사용하는데, 하나는 데이터를 암호화하는 데 사용하고, 다른 하나는 암호화된 데이터를 복호화하는 데 사용합니다. 이 중 공개키는 누구나 접근할 수 있지만, 개인키는 키의 소유자만이 보유하고 있습니다. - 장점: 데이터를 안전하게 교환할 수 있고, 인증서를 통한 서버의 신원 인증에도 사용됩니다. - 단점: 계산 과정이 복잡하..
HTTP, HTTPS 차이점
·
여러가지/이것저것
HTTP와 HTTPS 간의 주요 차이점 중 하나는 보안성에 있습니다. HTTP(Hypertext Transfer Protocol)는 웹 서버와 클라이언트 간의 통신을 위한 프로토콜이지만, 데이터를 암호화하지 않고 평문으로 전송합니다. 이 때문에 데이터가 네트워크를 통해 이동하는 동안 제3자에 의해 쉽게 가로채거나 수정될 수 있습니다. HTTP의 취약점 - 데이터 도청: 데이터가 암호화되지 않은 상태로 전송되기 때문에, 해커들이 중간에서 데이터를 가로채 정보를 읽을 수 있습니다. 이는 개인정보, 로그인 자격 증명, 금융 정보 등의 민감한 데이터에 대한 위험을 증가시킵니다. - 데이터 변조: 중간자 공격(Man-In-The-Middle, MITM)을 통해, 해커들이 전송 중인 데이터를 변경하거나 손상시킬 수..
TCP 3, 4 way handshake
·
여러가지/이것저것
TCP의 3-way handshake 과정은 TCP/IP 네트워크 통신에서 매우 중요한 역할을 하며, 이를 통해 두 통신 장비 간의 신뢰할 수 있는 연결을 수립합니다. 여기서 "가상 회선"이라 함은 물리적인 회선이 아닌, TCP 연결을 통해 생성되는 논리적인 경로를 의미합니다. 이 과정을 통해 데이터의 정확한 전송을 보장합니다. 단계별로 살펴보면 다음과 같습니다: 1. 연결 수립(3-way Handshake) - SYN: 클라이언트는 서버에게 연결을 요청하는 SYN 패킷을 보냅니다. 이때, 클라이언트는 자신의 초기 시퀀스 번호(Sequence Number)를 임의의 난수로 설정하여 전송합니다. 이 초기 시퀀스 번호는 이후 데이터 전송에서 순서와 무결성을 보장하는 데 사용됩니다. - SYN-ACK: 서버는..
TCP와 UDP의 차이점
·
여러가지/이것저것
TCP는 연결 지향형 프로토콜이고 UDP는 데이터를 데이터그램단위로 전송하는 프로토콜입니다. TCP는 가상 회선을 만들어 신뢰성을 보장하도록(흐름 제어, 혼잡 제어, 오류 제어) 하는 프로토콜로 따로 신뢰성을 보장하기 위한 절차가 없는 UDP에 비해 속도가 느린편입니다. TCP는 그래서 파일전송과 같은 신뢰성이 중요한 서비스에 사용되고, UDP는 스트리밍, RTP와 같이 연속성이 더 중요한 서비스에 사용됩니다. +) 하지만 UDP도 신뢰성을 UDP자체에서 보장하지 않는 것 뿐이지, 개발자가 직접 신뢰성을 보장하도록 할 수 있습니다. 그래서 HTTP/3은 QUIC이라는 프로토콜을 기반으로 하는데, QUIC은 UDP를 기반으로 합니다. 즉, UDP 자체는 신뢰성을 보장하지 않지만, 추가적인 정의를 통해 신뢰..
웹 통신의 큰 흐름 : HTTP://WWW.GOOGLE.COM/ 을 접속할 때 일어나는 일
·
여러가지/이것저것
웹 통신의 큰 흐름 : HTTP://WWW.GOOGLE.COM/ 을 접속할 때 일어나는 일 브라우저가 URL에 적힌 값을 파싱해서 HTTP Request Message를 만들고 OS에 전송 요청을 합니다. 이 때, Domain으로 요청을 보낼 수 없기 때문에 DNS Lookup을 수행합니다. DNS 룩업 과정은 크롬의 경우 브라우저 -> 호스트파일 -> DNS Cache의 순서로 도메인에 매칭되는 ip를 찾습니다. 일반적으로 설명하는 DNS Lookup은 루트 도메인서버에서부터 서브도메인 서버순으로 찾게됩니다. 이 요청은 프로토콜 스택이라는 OS에 내장된 네트워크 제어용 소프트웨어에 의해 패킷에 담기고 패킷에 제어정보를 덧붙여 LAN 어댑터에 전송하고, LAN 어댑터는 이를 전기신호로 변환시켜 송출합니다..
FastAPI를 이용한 TDD 개발 - 8
·
프로그래밍 언어/파이썬
Code Coverage 코드 커버리지는 테스트 중에 실행되는 코드의 양을 측정한 것입니다. 테스트 스위트에 코드 적용 범위를 추가하면 테스트에서 다루지 않는 코드 영역을 찾을 수 있습니다. Coverage.py 는 Python 기반 애플리케이션에서 코드 적용 범위를 측정하는 데 널리 사용되는 도구입니다. 이제 pytest를 사용하고 있으므로 pytest-cov를 사용하여 Coverage.py를 pytest와 통합하겠습니다 . requirements.txt에 추가적으로 라이브러리와 버전을 작성합니다. pytest-cov==4.1.0 `.coveragerc` 파일을 이용하여 coverage report 를 수정 할 수 있습니다. project 디렉토리에 추가해주도록 합니다. [run] omit = test..