네트워크
웹에서 자주 보게 되는 RFC 문서란 무엇일까?
RFC 문서란? 개발에서 말하는 RFC 문서는 IETF(Internet Engineering Task Force) 와 ISOC(Internet Society)에서 발행하는 기술적이고 조직적인 메모다. 프로토콜, 절차, 프로그램 및 개념들을 포함하는 인터넷 관련 내용을 다룬다. 많은 인터넷 표준은 RFC 로 문서화가 되어있고, 인터넷 표준을 연구하는 사람은 누구나 RFC 문서를 작성할 수 있다. RFC 는 Request for Comment (의견 요청) 의 약자로 인터넷 관련 문제에 대한 피드백과 토론을 요청하는 문서의 초기 의도를 반영한다. RFC 문서의 주요 내용 표준화 프로세스 모든 RFC 가 표준이 되진 않지만, 상당 수는 인터넷 프로토콜 및 기술에 대한 공식 표준이 된다. 표준화 과정에는 개발,..
HTTP 헤더란? (Http headers)
HTTP 헤더란? HTTP 통신의 핵심이 되는 중요한 컴포넌트 중 하나이다. 요청 혹은 응답의 필수 구성요소이다. 클라이언트와 서버 간의 메세지 전송 및 해석을 돕기 위해 메타데이터와 추가 정보를 제공한다. HTTP 헤더 포맷의 특징 키-밸류 (key-value) 쌍으로 이루어져 있다. 순수한 텍스트 (plain text) 로 이루어져 있고, 특정한 문법을 따른다. 콜론(:) 과 스페이스() 로 구분된다. 각 헤더는 하나의 줄로 표현되고, 각 줄은 하나의 헤더 필드를 나타낸다. 보통 아래처럼 생겼다. 네이버의 요청 헤더 (Request Header) 예시 :authority: www.naver.com :method: GET :path: / :scheme: https accept: text/html,app..
HTTP/1 에서 HTTP/2 로 가면서 얻는 개선점들 (HTTP1 에서 HTTP2로)
HTTP/1.x 에서 HTTP/2 로 HTTP/2 로 버전이 업되면서 HTTP/1.x 버전의 퍼포먼스 문제를 개선했다. HTTP/1.x 에서의 몇가지 대표적 문제점들 HTTP 바디와 달리 HTTP 헤더는 압축이 되지 않았다. 사실 연속된 HTTP 메세지를 보낼 때 마다 같은 HTTP 헤더가 반복되는 경우가 매우 많았기 때문에 이는 비효율적이었다. 다중 전송 (multiplexing) 이 불가능해서 서버 하나에 커넥션을 여러개 열어야 했다. 사실 Warm TCP 커넥션이 Cold TCP 커넥션보다 효율적이라는 점에서 생각해볼 필요가 있다. 이진 프로토콜 (Binary Protocol) HTTP/1.x 에서는 텍스트 프로토콜을 사용했는데, HTTP/2 에서는 이진 프로토콜을 사용한다. 이로 인해 데이터 구문..
Cold TCP Connection 과 Warm TCP Connection 이란?
Cold TCP Connection 이란? 아직 설정되지 않은 커넥션 혹은 오랫동안 유휴 상태인 커넥션을 말한다. 장기간 유휴 상태가 되면 타임아웃 혹은 기타 문제가 발생할 수 있기 때문에 연결을 다시 설정해야 할 수 있다. 연결을 다시 설정하면 TCP three-way handshake (SYN, SYN-ACK and ACK) 의 오버헤드가 발생한다. Warm TCP Connection 이란? 클라이언트와 서버간 여러 요청에 재사용 할 수 있는 이미 설정된 커넥션을 말한다. 영구 연결 (persistent) 혹은 연결 유지 (keep-alive) 커넥션이라고도 알려져 있다. three-way handshake 와 연관된 오버헤드를 최소화 할 수 있다. 연결을 재사용함으로써 데이터 전송을 즉시 시작할 수..
HTTP 응답 메세지의 구조
HTTP 응답 메세지의 구조 시작 줄 (Start line), 헤더 (Header), 바디 (Body)로 HTTP 요청 메세지의 구조와 기본 틀이 동일하다. 시작 줄 (Start line, Status line) 아래의 예를 보며 구조를 뜯어보자. HTTP/1.1 404 Not Found 프로토콜 버전: 주로 HTTP/1.1 버전을 사용한다. 상태 코드: 요청의 성공 실패 여부를 가리킨다. 예시에서는 404 가 반환됐다. 200: 성공, 404: 찾을 수 없음, 302: 임시적으로 이동 상태 텍스트: 상태 코드에 대해 사람이 이해하기 쉽도록 설명해주는 텍스트이다. 예시에서는 Not Found 가 404 의 의미를 설명하고 있다. 헤더 (Headers) 요청 메세지의 헤더와 동일하게 대소문자를 구분하지 않..
HTTP 요청 메세지의 구조
HTTP 요청 구조 (HTTP Request Structure) 크게 시작 줄 (Start line), 헤더 (Headers), 바디 (Body) 라는 3가지 파트로 분류된다. 시작 줄 (Start line) 시작 줄 (Start line) 에는 보통 3가지 정보를 포함한다. HTTP Method GET, PUT, POST, HEAD, OPTIONS 등의 메서드가 존재한다. 대략적으로 어떠한 액션이 수행될지에 대해 말해준다. URL 혹은 프로토콜, 포트, 도메인 절대 경로 절대 경로 (absolute path): 많은 HTTP 메서드에 가장 많이 쓰이는 형식이다. ? 를 포함한 쿼리 스트링이 뒤에 붙을 수 있다. POST / HTTP 1.1 GET /background.png HTTP/1.0 HEAD /..
HTTP Content-Type 헤더란?
HTTP Content-Type 헤더란? HTTP 통신에 이용되는 헤더 중 하나이다. HTTP 요청 혹은 응답으로 보내지는 데이터의 미디어 타입 (MIME type) 을 명시하는데 사용된다. HTTP 통신을 통해 받은 데이터를 어떻게 해석하고 처리할지에 대한 정보를 제공한다. 수신자는 이 정보를 기반으로 콘텐츠를 해석하므로 오류나 오해를 방지할 수 있다. Content-Type 에 들어가는 MIME type HTTP Content-Type 헤더의 값에는 MIME type (media type) 이 들어간다. 인코딩: Content-Type 에 추가적으로 들어갈 수 있는 것 인코딩은 MIME type 뒤에 붙어 해당 데이터를 어떤 인코딩 방식으로 읽어야 할지 알려준다. 예시로 Content-Type: te..
HTTP MIME type 이란?
MIME type 이란? MIME (Multipurpose Internet Mail Extensions) 표준에서 따오게 된 용어이다. 이는 1990년 초기에 개발되어 이메일에서 텍스트가 아닌 이미지, 오디오, 비디오 혹은 ASCII 가 아닌 문자열을 보내는데 사용되었다. MIME type 의 핵심 역할 파일 혹은 메세지의 콘텐츠 유형을 기술하는 표준화된 방법이다. 초기엔 이메일을 받은 클라이언트에게 올바른 해석을 통해 첨부파일을 보여주기 위함이 목적이었으나, 현재는 HTTP 에서 더 유명하다. MIME type 이 도입된 곳 HTTP 를 포함한 여러 인터넷 프로토콜에 도입됐다. 웹에서 전송되는 파일의 Content-Type 을 기술하는데 이용된다. HTTP 통신에서 Content-Type 헤더의 값으로..
OSI 5, 6, 7 (세션, 표현, 응용) 계층과 Updated TCP/IP Model
OSI 5(세션), 6(표현), 7(응용) 계층이 하나로 뭉친 이유 사실 OSI 7 Layer 라고 표현하는 7계층짜리 모델은 이미 시장에서 도태된 네트워크 시스템이다. 현대에는 OSI 7 Layer 모델의 일부를 계승한 TCP/IP 모델을 대부분 사용한다. 또, TCP/IP 모델에서도 한번 업데이트가 이루어져 사실상 Updated TCP/IP Model 이라 불리는 모델을 사용한다. TCP/IP 5 Layer Software Model 이라고 검색해보면 여러 정보가 나온다. 위의 그림은 3개의 모델 변천사를 정리해본 것이다. 최종 모델인 TCP/IP updated 모델을 보면, 4계층 밑으로는 OSI 7계층과 동일하며, 5, 6, 7 계층을 응용 계층(Application Layer)이라는 이름으로 통..
OSI 4계층 전송 계층 (Transport Layer) 알아보기
전송 계층 신뢰할 수 있는 데이터를 순차적으로 전달하는 역할을 한다. 상위 계층들이 데이터 전달의 유효성이나 효율성을 신경쓰지 않도록 만든다. 데이터가 중복되거나 누락되지 않고 오류없이 순서에 맞게 전송되도록 관리한다. 4계층을 배우기 전에 이전까지의 흐름을 알아보자. 1계층: 물리 계층 아날로그 신호를 받아 디지털 신호로 만들어 주거나 디지털 신호를 받아 아날로그 신호로 만들어준다. 더미 허브라는 통신 기기가 사용되었다. 더미 허브를 통해 브로드 캐스팅 방식으로 통신할 수 있다. 네트워크의 물리적인 특성을 정의하는 계층이다. 어떤 케이블 타입을 쓰는지, 커넥터 타입은 어떤지, 데이터 전송 속도는 얼마로 맞출건지에 대한 결정도 한다. 2계층: 데이터 링크 계층 네트워크 내 두 장치의 연결을 담당하는 계층..
HTTP 쿠키 (HTTP Cookie) 의 생성 옵션
쿠키 생성 옵션 쿠키는 생성할 때 몇가지 옵션을 줄 수 있다. HTTP 헤더에 들어간 쿠키 옵션 예제 Set-Cookie: =; Domain= Set-Cookie: =; Expires= Set-Cookie: =; HttpOnly Set-Cookie: =; Max-Age= Set-Cookie: =; Partitioned Set-Cookie: =; Path= Set-Cookie: =; Secure Set-Cookie: =; SameSite=Strict Set-Cookie: =; SameSite=Lax Set-Cookie: =; SameSite=None; Secure // Multiple attributes are also possible, for example: Set-Cookie: =; Domain=; S..
HTTP 쿠키 (HTTP Cookie) 란?
HTTP 쿠키란? HTTP 쿠키를 이해하기 전에 HTTP 공부가 선행된다. HTTP 통신 프로토콜을 모르면 쿠키만 공부해봐야 반쪽짜리 지식이다. HTTP 프로토콜은 기본적으로 무상태 (stateless) 프로토콜이다. 무상태란 통신 중에 아무것도 저장하지 않는 것을 말한다. 아무것도 저장하지 않기에 통신이 끝나면 아무것도 기억하지 못한다. HTTP 프로토콜이 무언가를 기억할 수 있게 하는 1가지 방법이 있는데, 이를 '쿠키'라 한다. 쿠키는 인터넷 통신의 매개체인 '브라우저'가 기억한다. 브라우저는 쿠키를 저장해두었다가 매 HTTP 요청마다 저장소에 있는 쿠키를 함께 보낸다. 사실, 무상태라는 것은 큰 장점이다. 상태가 없다면, 같은 것을 물어봤을 때 매번 똑같이 응답한다. ..