본문 바로가기

네트워크

(8)
[네트워크] 동일 출처 정책과 허용 방안을 알아보자. 🤔 동일 출처 정책 (Same-Origin Policy), 왜 등장하게 된 걸까? 기존에 웹 브라우저는 하나의 서버에게 요청하고, 서버는 HTML 파일을 반환해주게 되고 추가 요청을 한다 해도 어디까지나 같은 도메인에서 이루어지는 일이었다. 당연시 여겨지는 일이었기 때문에 다른 도메인에서 접근하는 것은 악성 접근이나 악의적인 행동으로 간주될 수밖에 없었고, 같은 도메인이 아니면 요청 자체를 막는 선택을 하게 되었다. 이러한 정책은 '동일 출처 정책'이라 한다. 즉, 웹 보안을 위해 프로토콜, 호스트, 포트번호가 일치하는 서버로만 요청을 보낼 수 있게 하는 정책이다. 😟 하지만! 오늘날, 웹 사이트가 애플리케이션 수준으로 성장하게 되고, 단순히 문서 제공만 하는 것이 아니라 다양한 편의정보들을 제공하게 된..
[네트워크] TCP, UDP는 무엇인가? 이 글은 TCP, UDP를 참고하여 작성된 글입니다. 📤 전송 계층 전송 계층은 앤드 포인트 간에 신뢰성 있는 데이터 전송을 담당하는 계층이다. 데이터를 순차적이고, 안정적인 전달을 가능케 하며, 해당되는 포트의 프로세스에 데이터를 전달하는 역할을 한다. 이러한 역할을 하는 전송계층이 없다면, 송신자가 보낸 데이터의 순서가 보장될 수 없다. 또한, 송신자의 데이터 전달 속도와 수신자의 데이터 수신 속도가 맞지 않는다면, 데이터가 누락될 수 있으며, 네트워크의 데이터 속도가 느리다면 이 또한 혼잡 문제를 일으킬 수 있다. 이를 흐름 문제, 혼잡 문제라 한다. 🧐 TCP (Transmission Control Protocol) 란 무엇일까? 앤드 포인트간에 신뢰성 있는 데이터를 전송할 수 있도록 하기 위한 ..
[네트워크] 브라우저 주소창에 URL 입력시 일어나는 일들 👨‍💻 브라우저 주소창에 URL을 입력하면 일어나는 일들을 순서대로 알아보자. 웹 브라우저 주소창에 URI를 입력한다. 웹 브라우저가 URI를 해석하고, URI의 형식과 다르다면 기본 검색 엔진으로 검색한다. 올바른 URI 형식이라면, URI의 호스트 부분을 인코딩한다. HSTS (HTTP Strict Transport Security) 목록에 있다면 HTTPS, 없다면 HTTP로 요청을 보낸다. 여기서 HSTS란 요청한 웹 서버가 HTTPS로 설계되어 있다면, 클라이언트 웹 브라우저에게 HTTPS로 요청하라고 알리는 보안 기능이다. 요청한 도메인이 웹 브라우저, 로컬에 캐싱되어 있는지 확인한다. 캐싱되어 있다면, 캐싱되어 있는 데이터를 참조한다. 캐싱되지 않았다면, DNS(Domain Name Serv..
[네트워크] 쿠키와 세션에 대해 알아보자. 이 글은 쿠키와 세션을 참고하여 작성된 글입니다. 🧐 쿠키, 세션이 왜 필요할까? HTTP의 특징 중 하나인 무상 태성은 클라이언트의 요청을 각각의 독립적인 것으로 여기는 특징이 있다. 즉, 서버는 클라이언트의 상태를 저장하지 않기 때문에 클라이언트의 상태에 맞게 자원을 전달하는 것이 불가능하다. 클라이언트의 상태를 저장하지 않는다는 것은 만약 로그인되어 있는 상태에서 새로고침을 했다면, 다시 로그인 절차를 유지하게 된다. 쿠키와 세션은 이러한 단점을 보완하기 위해 생겨났다. 🤔 쿠키란 무엇일까? 쿠키(Cookie)는 클라이언트 로컬에 저장되는 데이터 조각이다. 이는 키(key)와 값(value)으로 구성되어 있다. HTTP 응답 해더에 set-Cookie 속성을 통해 서버에 요청을 보낸 클라이언트에게 ..
[네트워크] URI, URL, URN 그 차이를 알아보자. 🤔 URI 란 무엇일까? Uniform Resource Identifier의 약자로 통합 자원 식별자라 한다. URI에는 자원의 위치를 표현한 URL(Uniform Resource Locator)과 자원의 고유한 이름을 표현한 URN(Uniform Resource Name)이 있다. 즉, URL과 URN은 URI의 포함된 관계이다. 🤔 URL 이란 무엇일까? URL은 위에서 언급한 바와 같이 자원의 위치를 표현하고, 해당 위치에서 어떻게 자원을 얻을 것인가에 대한 정보가 포함되어 있다. 이는 그 자원의 위치를 담고 있기 때문에 유일하게 그 곳에 존재한다면, 그 자원을 식별할 수 있는 식별자로서의 역할도 가능하다. 하지만, 그 위치에 여러 자원이 함께 있다면, 위치만으로 자원을 유일하게 식별할 수 없게 된..
[네트워크] REST API란 무엇인가? 이 글은 REST API를 참고하여 작성된 글입니다. 🤔 REST란 무엇일까? REpresentational StateTransfer의 약자로, 웹 상에서의 통신 체계에 있어 범용적인 스타일을 규정한 아키텍처이다. 쉽게 말하자면, 어떤 자원에 대해 CRUD(CREATE, READ, UPDATE, DELETE) 연산을 수행하기 위해 요청을 보낼 때, URI를 통해 자원을 표현하고, METHOD를 통해 자원에 대한 행위를 정의하고, 자원의 형태(Representation of Resource) 구성을 REST 라 한다. 🤔 API란 무엇일까? Application ProgrammingInterface의 약자로, 구글맵 API, 카카오 비전 API와 같이 응용 프로그램을 통해서 데이터를 제공받거나 기능을 사용..
[네트워크] HTTPS란 무엇인가? 이 글은 생활코딩-HTTPS를 참고하여 작성된 글입니다. 🤝 HTTPS (Hyper Text Transfer Protocol) + Over Secure Socket Layer 이전 글에서 HTTP를 공부했었는데, 이 규약은 평문 텍스트로 데이터를 주고받기 때문에 보안에 매우 취약하다는 문제점이 있었다. HTTPS는 이를 해결하기 위해 Over Secure Socket Layer라는 개념을 도입하여 보안을 강화한 프로토콜이다. HTTP는 TCP와 직접 통신했는데, HTTPS에서 HTTP는 SSL과 통신하게 되고, SSL이 TCP와 통신하게 된다. 🤔 우선, 용어 정리가 필요하다. HTTPS와 SSL HTTP는 응용 계층에서 사용되는 프로토콜이다. 이 HTTP를 표현계층에서 사용되는 SSL(Secure So..
[네트워크] HTTP란 무엇인가? 이 글은 HTTP를 참고하여 작성된 글입니다. 🤝 HTTP (Hyper Text Transfer Protocol) 클라이언트와 서버가 콘텐츠(주로, html 문서)를 주고받기 위해서 사용하는 공통의 약속이다. HTTP는 주로 평문 텍스트로 데이터를 주고받기 때문에 서버와 클라이언트가 주고받는 메시지의 보안이 매우 취약하다는 단점이 있다. 🤔 HTTP의 대표적인 특징은 무엇이 있을까? 👋 비연결 지향 클라이언트가 서버에게 자원을 요청한 후, 응답을 받게 되면 연결을 끊어버린다. 이는, 많은 클라이언트와 연결이 지속되면 서버에 부하가 발생할 수 있는 문제를 예방하기 위해서이다. 하지만, 요청할 때마다 연결해야 하는 비용이 발생한다는 단점이 있다. HTTP 1.1 버전부터는 지속적인 연결 속성인 Connect..