본문 바로가기

Web | Network

(15)
Web - REST, REST API, RESTful REST (Representational State Transfer) REST는 Representational State Transfer의 약자로써, 한국어로 직역하면 대표적인 상태 전달이라는 뜻이다. 이는 월드 와이드 웹 (WWW) 과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식으로써, 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한으로 활용할 수 있는 아키텍처 스타일이다. REST는 기본적으로 네트워크 상에서의 Client 와 Server 사이의 통신 방식 중 하나이며, 이를 차용하는 회사 또는 서비스가 많기 때문에 꼭 알아두어야 할 개념이다. 가장 간단하게 이야기하면, 자원의 표현에 따라서 상태를 전달한다는 뜻이다. 이 또한 어..
Web - 웹 소켓 (Web Socket) 과 Socket.io 웹 소켓 (Web Socket) 웹 소켓은 HTML 5에 추가된 스펙으로, 실시간 양방향 데이터 전송을 위한 기술이다. HTTP와는 다르게, WS라는 프로토콜을 사용한다. 따라서 브라우저와 서버가 WS 프로토콜을 지원한다면 사용할 수 있다. 최신 브라우저의 대부분은 웹 소켓을 지원하고, 노드에서는 ws나 Societ.IO 같은 패키지를 통해서 웹 소켓을 사용할 수 있다. 웹 소켓이 나오기 이전에는 HTTP 기술을 사용하여 실시간 데이터 전송을 구현했었다. 그 중 한가지가 폴링 (polling) 이라는 방식인데, HTTP가 클라이언트에서 서버로 향하는 단방향 통신이므로, 주기적으로 서버에 새로운 업데이트가 있는지 확인하는 요청을 보낸 후, 있다면 새로운 내용을 가져오는 단순 무식한 방법이었다. 그러나 HT..
Web - CORS (Cross Origin Resource Sharing) CORS (Cross Origin Resource Sharing) 란? CORS (Cross Origin Resource Sharing) 는 추가 HTTP 헤더를 사용하여 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제이다. 즉 웹 애플리케이션은 리소스가 자신의 출처 (도메인, 프로토콜, 포트 등) 와 다를 때, 교차 출처 HTTP 요청을 실행한다. 쉽게 말하자면, 흥부네가 놀부네에 가서 밥을 얻을 수 있는 권한을 얻는 것이다. 예) https://domain-a.com 의 프론트 엔드 자바스크립트 코드가 XMLHttpRequest를 사용하여 https://domain-b.com/data.json 을 요청하는 경우. 보안 상의..
Web - 쿠키와 세션 (Cookie and Session) 클라이언트에서 보내는 요청에는 큰 단점이 존재한다. 바로 누가 요청을 보내는지 모른다는 것이다. 물론 요청을 보내는 IP 주소나 브라우저의 정보를 받아올 수는 있다. 그러나 여러 컴퓨터가 공통으로 IP 주소를 가지거나 한 컴퓨터를 여러 사람이 사용할 수도 있기 때문에, 이는 정답이 되지 못할 수도 있다. 그렇다면 로그인을 구현하면 되지 않느냐? 맞는 말이다. 그러나 로그인을 구현하기 위해선 쿠키와 세션에 대해 알고 있어야 한다. 가령 로그인한 후에는 새로고침을 해도 로그아웃이 되지 않는다. 이는 클라이언트가 서버에 유저에 대한 정보를 지속적으로 알려주기 때문이다. 쿠키 (cookie) HTTP 프로토콜의 특징은 비연결 (Connectionless) 을 지향하며 상태정보를 유지하지 않는 다는 것 (Stat..
Network - TCP와 UDP TCP (Transmission Control Protocol) 와 UDP (User Datagram Protocol) 모두 OSI 7 계층 중 전송 계층에서 사용하는 프로토콜로써, 데이터의 교환을 위한 프로토콜인데, 쓰임새와 작동방식이 다르다. OSI 7 계층에 관련된 것은 아래를 참고. https://lgphone.tistory.com/157 Network - OSI 7 계층 (OSI 7 Layers) OSI 7 계층 OSI 7 계층은 국제표준화기구 (ISO) 에서 개발한 모델로, 네트워크 프로토콜 디자인과 통신을 계층으로 나눠 설명한 것이다. 쉽게 말하여, 국제표준화기구에서 만든 네트워크 통신의 7단 lgphone.tistory.com TCP (Transmission Control Protocol)..
Web - HTTP 그리고 HTTPS (HTTP and HTTPS) HTTP HTTP는 HyperText Transfer Protocol의 약자로, 80번 포트를 사용하는, 웹 상에서 정보를 주고 받을 수 있는 통신 규약 (Protocol) 이다. 주로 HTML (HyperText Markup Language) 문서를 주고 받을 때 사용된다. TCP와 UDP를 사용한다. 특징 1. 비연결 (Connectionless) - 클라이언트가 요청을 서버에 보내고 서버가 응답을 클라이언트에 보내면 바로 연결이 끊긴다. 2. 무상태 (Stateless) - 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며, 상태 정보를 유지하지 않는다. 동작과정 1. 사용자가 웹 브라우저에 URL 주소를 입력한다. 2. DNS 서버에 웹 서버의 호스트 이름을 IP 주소로 변경 요청한다. 3. 웹..
Network - TCP/IP TCP/IP 위키백과에 따르면 TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 조절 프로토콜인 TCP로 이루어져 있으며, IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다. TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다. HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP 위에서 동작하기 때문에, 묶어서 TCP/IP로 부르기도 한다. 따라서, TCP/IP는 하나의 프로토콜이 아닌 TCP와 IP를 합쳐서 부르는 말이다. 또한, TCP/IP를 사용하겠다는 것은 IP 주소 체계를 따르고 IP Rouing을 이용해 목적지에 도달하며, TCP의 특성을 활용해 송신자와 수신..
Network - OSI 7 계층 (OSI 7 Layers) OSI 7 계층 OSI 7 계층은 국제표준화기구 (ISO) 에서 개발한 모델로, 네트워크 프로토콜 디자인과 통신을 계층으로 나눠 설명한 것이다. 쉽게 말하여, 국제표준화기구에서 만든 네트워크 통신의 7단계 과정을 말하는 것이다. Layer 7 응용 계층 (Application Layer) Layer 6 표현 계층 (Presentation Layer) Layer 5 세션 계층 (Session Layer) Layer 4 전송 계층 (Transport Layer) Layer 3 네트워크 계층 (Network Layer) Layer 2 데이터 링크 계층 (Data Link Layer) Layer 1 물리 계층 (Physical Layer) Layer 5 - Layer 7을 Upper Layer라고 하고, Lay..