본문 바로가기

Network

(17)
REST API 가 뭘까? 들어가기 전면접을 준비하면서 REST API가 무엇인지 이론적으로 수없이 접하고 글로 정리해 보기도 했습니다. 당시에는 단순히 '형식을 맞추는 것'이라 생각했지만, 실제 프로젝트를 진행하며 수백 개의 기술 포스팅을 남기다 보니 깨달은 점이 있습니다. 결국 REST API는 단순한 규칙을 넘어, '누가 봐도 이해하기 쉽고 관리하기 쉬운 코드'를 만들기 위한 개발자 사이의 가장 강력한 약속이라는 점입니다. 그래서 오늘은 모든 데이터 통신의 뿌리가 되는 API의 기본 개념부터 시작해, REST API의 철학까지 하나씩 짚어보며 정리해 보려 합니다. 그래서 API 가 뭔데 ?API는 서로 다른 운영체제나 언어로 작성된 프로그램들이 데이터를 주고받을 수 있도록 표준화된 엔드포인트(Endpoint)를 제공합니다. ..
[Network] CORS CORS (Cross-Origin Resource Sharing)CORS 문제는, 클라이언트가 다른 도메인(출처)에 있는 리소스를 요청할 때 발생하는 제한이다.SOP 정책 때문에 막혔던 다른 출처로의 요청을 CORS 설정을 거치게 되면 정상적으로 요청을 보낼 수 있게 된다.  동작 원리웹 브라우저는 보안상의 이유로 동일 출처 정책(SOP)을 따른다.동일 출처란 프로토콜, 호스트, 포트가 모두 동일한 경우를 말한다.클라이언트가 다른 출처의 리소스를 요청하면, 브라우저는 이를 차단한다.SOP (Same-Origin Policy) 출처를 판단할 때는 포트 뒤에 요소들은 제외하고 프로토콜, 호스트, 포트가 같을 때 동일한 출처로 판단하게 된다.SOP는 같은 출처끼리만 요청을 보낼 수 있는 것. 웹 브라우저는 보..
[Network] 프록시 서버 프록시 서버란?프록시 서버(Proxy Server)는 클라이언트와 서버 사이에서 중계 역할을 수행하는 서버이다.클라이언트가 직접 서버와 통신하지 않고 프록시 서버를 통해 요청을 보내고 응답을 받는다.이를 통해 보안, 성능, 익명성, 트래픽 제어 등의 이점을 얻는다.프록시는 다양한 형태로 제공되지만 가장 대표적인 리버스 프록시와 포워드 프록시를 알아보자. 리버스 프록시 (Reverse Proxy)리버스 프록시는 서버 측에 위치하여 클라이언트 요청을 받아 적절한 서버로 전달하고, 서버의 응답을 클라이언트로 반환한다.역할 및 특징:클라이언트는 실제 서버를 알 필요 없이 리버스 프록시를 통해 요청(서버의 IP 대신 프록시 IP를 사용).로드밸런싱, 보안(HTTPS 종단), 캐싱, 요청 필터링 등을 사용하여 서버..
[Network] DNS 도메인 네임 우리가 네이버 웹사이트에 접속하려고 하려면 내 컴퓨터에 있는 브라우저가 네이버 사이트를 제공하는 서버에다가 요청을 해서데이터들을 받아와야 한다. 하지만 우리가 전화번호를 이름과 같이 저장하는 것처럼 모든 서버의 IP 주소를 외울 순 없다.도메인 이름의 기본 형식은 이름과 확장자 두 가지로 구성되어 있다. 네이버 같은 경우에는 ‘naver’가 이름이고 ‘.com’이 확장자인 것이다. 이렇게 우리가 흔히 알고 있는 도메인은 바로 인터넷 주소이다. IP 주소는 기억하기 어렵기 때문에 영문이나 한글로된 인터넷 주소인 도메인을 사용하고 있다. 도메인 네임과 URL의 차이점은?웹 주소라고도 하는 Uniform Resource Locator(URL)에는 사이트의 도메인 이름, 프로토콜, 경로 등의 정보가..
[Network] HTTP와 HTTPS HTTP (Hypertext Transfer Protocol)웹에서 통신할 때 사용하는 가장 기본적인 프로토콜클라이언트와 서버가 주고 받는 메세지의 형식에 대한 약속이다. 1. 평문 통신이므로 도청이 가능하다.HTTP는 서버에서 브라우저로 전송되는 정보가 암호화되지 않는다.암호화 하지 않은 평문을 보내기 때문에 제 3자가 훔쳐볼 수 있다.  2. 완전성을 증명할 수 없으므로 변조가 가능하다.HTTP는 메세지가 중간에 변경되어도 알 수 없다.클라이언트에서 메세지를 보내도 공격자가 메세지를 변경해도 서버는 받은 메세지가 변경이 된지 알 수 없고클라이언트도 자신이 보낸 원본의 메세지가 잘 도착되었는지 알 수 없다.  3. 통신 상대를 확인하지 않으므로 위장이 가능하다.HTTP는 올바른 상대와 통신하고 있는지 ..
[Network] HTTP 버전별 특징 HTTP 0.x (0.9)초기 버전: 1991년 도입된 HTTP/0.9는 웹의 태동기 프로토콜이다. 특징텍스트 전송만 지원: HTML 파일 전송에만 사용, 이미지나 다른 파일 포맷 전송 불가. (응답도 HTML 파일 자체만 보내줌)헤더 없음: 요청 및 응답에 메타데이터가 없고 단순한 GET 요청만 지원. (HTTP 헤더 X, 상태 코드 X)비상태적: 연결이 단순히 요청-응답 후 종료. (서버와 클라이언트 간의 연결은 모든 요청 후에 닫힘)비보안: 보안에 대한 고려가 없었음.한계기능이 매우 제한적.확장성과 효율성이 부족.HTTP 1.0HTTP 포맷 형태의 시초 - 1996년 공식화. 특징헤더 도입: 클라이언트와 서버가 메타데이터를 교환 가능.다양한 요청/응답 코드 지원: 상태 코드 및 MIME 타입 지원...
[Network] Stateful vs Stateless Stateful와 Stateless애플리케이션 설계, 통신 프로토콜, 또는 컴퓨터 시스템에서 상태를 관리하는 방법에 따라 분류되는 개념이다.  StatefulStateful 시스템은 이전 요청 또는 작업의 상태를 저장하고, 이를 바탕으로 이후 요청을 처리한다. 특징클라이언트와 서버 간의 연결 지속성이 중요하다.상태 정보는 서버 또는 클라이언트에 저장된다.이전 요청과 다음 요청 간의 컨텍스트를 유지한다.요청 처리 속도는 상태를 참조해야 하므로 다소 느릴 수 있다. 장점사용자 경험이 부드럽고, 연속적인 작업을 쉽게 처리할 수 있다.상태를 유지하므로 복잡한 작업 처리에 유리하다.단점서버의 리소스를 많이 소비한다(예: 메모리 사용 증가).서버가 중단되면 상태 정보가 유실될 수 있다.클라이언트와 서버 간의 세션 ..
[Network] 프로토콜과 OSI 7 Layer 네트워크컴퓨터나 기타 기기들이 리소스를 공유하거나 데이터를 주고 받기 위해 유선 혹은 무선으로 연결된 통신체계 네트워크의 기능들에플리케이션 목적에 맞는 통신 방법 제공신뢰할 수 있는 데이터 전송 방법 제공네트워크 간의 최적의 통신 경로 결정목적지로 데이터 전송노드 사이의 데이터 전송네트워크 프로토콜사람과 사람간의 제대로 된 대화를 하려면 같은 언어를 사용하는 것처럼네트워크 간에도 통신 기능이 제대로 동작하기 위해서는 참여자들 사이에서 약속된 통신 방법이 있어야 한다.네트워크 통신을 하기 위해서 통신에 참여하는 주체들이 따라야 하는 형식, 절차, 규약즉, 네트워크 상에서 통신을 하기 위해서는 네트워크 프로토콜에 따라서 통신을 해야 한다는 것이다. 위에 보이는 네트워크의 기능들을 과연 단 하나의 프로토콜로 ..