728x90

컴퓨터 공학 & 통신 74

[http통신] http 메서드 종류

http 메서드는 아래와 같은 종류가 있다. 굵은 글씨로 표시된 메서드들이 가장 흔히 사용된다. GET POST PUT HEAD DELETE PATCH OPTIONS CONNECT TRACE 주요한 5가지 메서드 GET, POST, PUT, PATCH, DELETE에 대해 알아보자. GET 데이터를 읽기 요청 body를 사용할 수 없어, url을 기반으로 데이터를 요청한다. url을 기반으로 하기 때문에 2000자 미만 길이 제한이 있다. 성공 시 status code 200 캐싱이 가능하다. url을 기반으로 하여 요청 파라미터가 브라우저 기록에 남는다. url을 기반으로 하여 ASCII문자열만 보낼 수 있다. 사용자 이름, 비밀번호 등 민감한 정보를 전달할 때는 사용하지 않는다. POST 데이터 생성..

[개념 정리] 로그인 - 세션 기반 인증 VS 토큰 기반 인증

로그인 구현 방식으로는 대표적으로 세션 기반 인증 방식과 토큰 기반 인증 방식 두 가지가 있다. 프로젝트 진행 시에는 토큰 기반 인증 방식만 사용해보았는데, 각각의 특징과 장단점을 살펴보자. 세션 기반 인증 방식 세션: 서버와 클라이언트의 연결이 활성화된 상태. 세션ID: 웹 서버 또는 DB에 저장되는 클라이언트에 대한 고유한 ID. 세션 기반 로그인 프로세스는 아래와 같다. 최초 로그인 -> 세션 ID 생성 -> 서버에서 세션ID를 쿠키로 설정하여 클라이언트에게 전달 클라이언트가 서버에 요청을 보낼 때, 해당 세션 ID를 쿠키로 담아 전에 로그인한 아이디인지 확인 맞다면 로그인 유지 단점 사용자의 상태에 관한 데이터를 서버에 저장했을 때, 로그인 상태인 유저의 수가 늘어난다면 서버 메모리 과부하가 일어..

[개념 정리] 웹브라우저 캐시 - 로컬 스토리지, 세션 스토리지, 쿠키 비교 정리

캐시(cache)의 사전적 의미는 데이터나 값을 미리 복사해 놓은 임시 장소이다. 다시 혹은 자주 사용해야 하는 데이터를 임시로 저장해두어 요청 효율을 높이는 방식이라고 볼 수 있다. 웹브라우저의 임시 데이터 저장소 캐시에는 세 종류가 있다. 로컬 스토리지, 세션 스토리지, 쿠키 세 가지이다. 각각의 특징과 셋의 차이점에 대해 알아보자. 참고로, 이 내용은 기술 면접의 단골 질문에 반드시 포함되는 부분이니 꼭 외워두도록 하자. 로컬 스토리지(local storage) 로컬 스토리지는 웹 스토리지 객체로 브라우저 내에 {key: value} 형태로 오리진*에 종속되어 저장되는 데이터를 말한다. 오리진이 같다면 동일 브라우저 내에서 공유된다. 특징은 아래와 같다. 하나의 키에 하나의 값만 저장된다. 사용자가..

[개념 정리/네트워크] HTTPS와 TLS - 핸드 셰이크

SSL(Secure Socket Layer)은 SSL 1.0부터 시작하여, SSL 2.0, SSL 3.0 으로 버전이 올라가다, TLS(Transport Layer Security Protocol)1.0 으로 명칭을 변경한 후, TLS 1.3 버전까지 업데이트 되었다. 아래 내용은 TLS 1.3을 기반으로 한다. TLS는 전송 계층에서 보안을 제공하는 프로토콜이다. 클라이언트와 서버가 통신할 때, TLS를 통해 제3자가 메시지를 도청하거나 변조하지 못하도록 한다. TLS 핸드셰이크 TLS 핸드셰이크 과정을 차근 차근 살펴보자. 크게 보자면 사용할 TLS 버전을 정한 후, 사이퍼슈트, 서버의 공개 키, SSL 인증서를 기반으로 인증 작업을 수행한다. 이후, 대칭 암호화를 위해 세션 키를 생성한다. 1. C..

[개념 정리/네트워크] HTTPS와 TLS - 암호화

본격적으로 HTTPS와 TLS에 대해 정리하기 전에 바탕이 되는 개념인 암호화에 대해 정리해보자. 암호화 암호화란 승인된 당사자만이 정보를 이해할 수 있도록 데이터를 스크램블하는 방법이다. 암호화된 데이터를 복호화하기 위해서는 송신자와 수신자가 서로 동의한 키가 필요하다. 암호화 과정에서 키가 쓰이기도 한다. ciphertext = plaintext + key 스크램블 단어나 문자를 패턴에 따라 암화하지 않고, 무작위 방식으로 개별 데이터 비트를 섞는 것을 말한다. 예를 들어, 공통 128비트 고급 암호화 표준(Advanced Encryption Standard, AES)으로 암호화된 파일의 경우 이 파일을 구성하는 비트는 약 10회 스크램블 되며, 다른 컴퓨터가 키 없이 해독하려면 아주 오랜 시간이 걸..

[개념 정리/네트워크] HTTP 버전 1.0부터 3까지 변화 과정

HTTP 요청 기술은 버전 1.0부터 지금의 3까지 발전을 거듭해왔다. 각 버전별 특징과 변화에 대해 살펴보자. HTTP/1.0 HTTP/1.0은 1996년에 등장하여 수명이 짧은 연결이라고 한다. 각 HTTP 요청 당 한 번의 TCP 핸드셰이크가 발생하며, 기본적으로 한 연결 당 하나의 요청을 처리하도록 설계되었다. 연결할 때마다 TCP 연결을 다시 해야 하니 불필요한 연결이 반복되어 RTT(Round Trip Time)*이 늘어나는 문제점이 있었다. *RTT(Round Trip Time): 왕복 지연 시간, 신호를 전송하고 해당 신호의 수신 확인에 걸리는 시간을 더한 값이자, 어떤 메시지가 두 장치 사이를 와복하는 데 걸리는 시간. 이러한 문제를 해결하기 위해 나온 것이 HTTP/1.1이다. HTTP..

[개념 정리/네트워크] HTTP 헤더

사용자가 HTTP 요청을 하면 client와 server는 헤더(header)와 바디(body)를 주고 받는다. 바디(Body) 바디는 본문이라고 할 수 있으며, 서버에서 보내고자 하는 컨텐츠 본문인 JSON, html, image 등이 담긴다. 헤더(Header) 헤더는 바디를 설명하는 정보를 포함하여 여러가지 정보가 담긴 정보 묶음이다. 헤더는 콜론(:)으로 구별되는 key:value 형태로 설정된다. HTTP 요청 시 3가지의 일반 헤더, 요청 헤더, 응답 헤더가 자동으로 생성된다. 이 중 클라이언트가 설정하는 헤더가 요청 헤더, 서버에서 설정하는 헤더가 응답 헤더이다. 요청 헤더(Request Header) 요청 헤더는 클라이언트가 서버에 요청할 때 클라이언트가 설정하는, 또는 자동으로 설정되는 ..

[개념 정리/네트워크] 공인IP VS 사설IP, NAT

IP주소가 부족한 상황에서 공인IP(public IP)와 사설IP(private IP)를 구분하고, 중간에 NAT(Network Address Translation) 기술을 사용하여 IP주소 부족 문제를 해결한다. NAT(Network Address Translation) NAT는 패킷이 트래픽 라우팅 장치를 통해 전송되는 과정에서 패킷의 IP주소를 변경하고, IP주소를 다른 IP주소로 매핑하는 방법이다. 사설IP는 가상의 IP로, 동일한 공인IP를 사용하는 호스트끼리는 구별되지만 외부에서는 하나의 공인IP로 보여진다. NAT를 통해 내부 네트워크 IP가 노출되지 않는 것이 보안상 장점이다. 실생활에서 인터넷 회선 하나를 개통하여 공유기를 사용해 wifi를 만드는데, 이 경우 여러 대의 호스트가 하나의 ..

[개념 정리/네트워크] IP주소 체계 - 클래스풀 VS 클래스리스

아래 내용은 IPv4를 기반으로 한다. IP주소는 인터넷 주소로, 네트워크 주소와 호스트 주소, 두 부분으로 이루어진다. 네트워크 주소는 호스트들을 모은 네트워크를 지칭한다. 동일한 네트워크 주소 = 로컬 네트워크 호스트 주소: 호스트를 구분하기 위한 주소 네트워크 호스트(network host): 네트워크에 연결된 컴퓨터 또는 기타 장치 클래스풀 IP주소 체계(Classful IP Addressing) 네트워크 주소를 매기고, 그에 따라 네트워크의 크기를 다르게 구분하여, 클래스를 할당하는 주소체계이다. 구분하는 기준자 (1, 2, 3 옥텟)를 서브넷마스크라고 한다. Byte 1 Byte 2 Byte 3 Byte 4 Class A Net ID Host ID Class B Net ID Host ID Cl..

[개념 정리/네트워크] IPv4 VS IPv6 비교 정리

IP주소는 인터넷 주소로, IPv4와 IPv6 두 개의 버전으로 나뉜다. IPv4 IPv4는 32비트로 표현되는 주소 체계로 2^32개(41억 9천만 개)의 주소를 표현할 수 있다. 8비트 단위로 점을 찍어, 4개의 부분으로 구분하여, 8비트를 10진수로 표현한다. 현 시대에는 IPv4 주소 체계만으로는 부족하기 때문에, NAT, 서브네팅 등 여러 부수적인 기술을 함께 사용 중이다. 172 . 16 . 254 . 1 10101100 00010000 1111110 00000001 ---8bits--- ---8bits--- ---8bits--- ---8bits--- 32bits (4bytes) *8비트 = 옥텟 = 바이트 IPv6 IPv6는 128비트로 표현되는 주소 체계이며, 2^128개의 주소를 표현할 ..

728x90