본문 바로가기

스파르타코딩클럽

BASE 개념 정리 (Ip, , routing, HTTP)

IP - internet protocal

인터넷을 사용하는 장치들의 주민등록번호라고 생각하면 쉬운 개념. 컴퓨터의 경우 OS도 다르고, 프로그램들은 구현된 언어가 모두 다르기 때문에 네트워크에서 이들이 서로 통신할 수 있도록 공통된 '조약' 이다. 현재 인터넷에서 사용하는 표준 프로토콜은 ipv4를 사용하고 있으나, 주소가 부족해지는 고갈 문제 때문에 조만간 ipv6로 대체될 예정이다. 

 

ipv4 - 총 12자리이며 4부분으로 나뉜다. 각 부분은 0~255까지 3자리의 수로 표현된다 (예시 : 61.211.123.22) 약 43억개의 주소가 있으며, 2011년에 모든 ipv4 주소가 소진되었다.

 

ipv6 - 주소 고갈과 데이터 보안을 강화하기 위해서 제안되었다 2의 128승 개의 주소를 사용할 수 있다.

 

라우팅(Routing) 

라우팅은 네트워크상에서 주소를 이용하여 통신 데이터를 목적지까지 보낼 최적의 경로를 선택하는 과정을 말하며, 이 과정을 수행하는 장치를 라우터라고 한다. 최적의 경로 선택을 위한 데이터베이스를 라우팅 테이블이라고하며, 라우팅 테이블은 목적지 네트워크 주소와 라우터의 출구 포트 정보, 최적 경로 산출을 위한 메트릭(metrics)등의 정보를 포함한다. 

 

HTTP (hypertext transfer protocol) 

www 상에서 정보를 주고 받을 수 있는 프로토콜이다. 클라이언트와 서버 사이에 이루어지는 요청(request) / 응답(response) 에 대한 규약이라고 이해하면 된다. 클라이언트인 웹 브라우저가 HTTP를 통해서 서버로부터 정보를 요청(request)하면 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다 (html, js, css, image 파일 등등) 

출처 : https://www.researchgate.net/figure/HTTP-request-response-model_fig3_311571526

HTTP request, response

출처 : https://developer.mozilla.org/ko/docs/Web/HTTP/Messages

HTTP 요청 시작 줄 

1. HTTP methods 

GET, POST, PUT, HEAD, OPTIONS 등을 사용해 서버가 수행해야 할 동작을 나타낸다. GET은 리소스를 클라이언트로 가져와 달라는 의미이며, POST는 데이터가 서버로 들어가야 함을 의미한다 (리소스를 새로 만들거나 수정, 클라이언트로 다시 돌려 보낼 임시 문서를 생성하기 위함)

2. 요청 타겟 

주로 URL 도는 프로토콜, 포트, 도메인의 절대 경로로 나타낼 수 있으며 요청 컨텍스트에 의해 특정지어 진다. 요청 타겟 포맷은 HTTP 메소드에 따라 달라지며, 포멧에는 origin 형식, absolute 형식, authority 형식, asterisk 형식 등이 있다. 가장 일반적으로 사용되는 형식은 origin 형식이며, GET, POST, HEAD, OPTIONS 메소드와 함께 사용한다.

3. HTTP 버전

메세지의 남은 구조를 결정하기 때문에 응답 메세지에서 써야 할 HTTP버전을 알려주는 역할을 한다.

 

HTTP header

요청에 들어가는 HTTP헤더는 대소문자 구분없는 문자열 다음에 콜론 (':')이 붙으며, 그 뒤에 오는 값은 헤더에 따라 달라진다. 헤더는 값을 포함해서 한 줄로 구성되지만 상황에 따라 더 길어질 수 있다. Key : Value 값으로 되어있으며 아래와 같은 정보가 있다.

Host : 요청을 보내는 목표(타겟) 의 주소.

User-Agent : 요청을 보내는 클라이언트에 대한 정보 (크롬, 사파리, 파이어폭스 등)

content-Type : 해당 요청이 보내는 메세지 body의 타입 (json, form-data 등)

content-Length : body 내용의 길이

출처 : https://developer.mozilla.org/ko/docs/Web/HTTP/Messages

본문(Body)

요청의 마지막 부분에 들어가지만 모든 요청에 본문이 들어가지는 않는다. GET, HEAD, DELETE처럼 리소스를 가져오는 요청은 보통 본문이 필요하지 않다.

 

HTTP 응답 상태 줄

HTTP 응답의 시작 줄을 상태 줄 (status line) 이라고 하며, 아래와 같은 정보를 포함하고 있다.

1. 프로토콜 버전 (일반적으로 HTTP/1.1)

2. 상태 코드 (요청의 성공 여부를 나타냄. 200, 404, 302 등등)

3. 상태 텍스트 - 짧고 간결하게 상태 코드에 대한 설명을 글로 나타내어 HTTP 메세지 이해를 도와줌

 

HTTP 응답 header

다른 헤더와 동일한 구조를 가지고 있으며 응답의 추가 정보(meta data)를 담고 있다. 응답에서만 사용되는 헤더의 정보들이 있다.

(예 : Server : Apache)

https://developer.mozilla.org/ko/docs/Web/HTTP/Messages

HTTP 응답 본문(body)

요청의 바디와 동일하다. 응답의 형태에 따라서 데이터를 전송할 필요가 없을 경우에는 Body가 없을 수도 있다.

가장 많이 사용되는 Body의 데이터 타입은 JSON