본문 바로가기

CS

[CS] HTTP란?

📝HTTP란?

Hyper Text Transfer Protocol라는 뜻으로 웹에서 데이터를 주고받울 수 있는 네트워크 프로토콜이다.

여기서 프로토콜은 규칙이라고 보면 된다. 이렇게 네트워크 규칙을 정해둠으로써 모든 프로그램이 해당 규칙에 맞추어 정보 교환을 가능하게 하는것이다.

나는 웹 개발자로서 클라이언트와 서버간 데이터를 전송해야하기에, 가장 중요한것중 하나인 HTTP에 대해 정리하려고 한다. (데이터 통신시 CORS, CORB와 같은 에러들도 해당 지식만 잘 안다면 충분히 해결이 가능하다)

http는 주로 80번 포트를 사용하여 서비스가 된다. 반면 https는 보안이 강화된 프로토콜로 기본 443 포트를 이용한다.

 

쉽게 정리하자면,

내 컴퓨터에서 서버로 데이터를 요청할때 HTTP 형식임을 주소창에 입력 해야 서버가 이것을 HTTP 형식으로 읽어본다음 요청사항을 리턴하고, 리턴받은 나의 PC에서는 해당 응답을 다시 HTTP 형식으로 해독하여 데이터를 사용할 수 있다.

 

 

📌HTTP 특징

- 초기에는 HTML과 같은 하이퍼 미디어를 주로 전송했지만, 최근에는 JSON, XML등 형태가 다양해졌다.

- HTTP는 클라이언트가 요청을 생성하기 위한 연결을 연 다음 응답을 받을 때까지 대기하는 전통적인 클라이언트-서버 모델을 따른다.

-  HTTP는 기본적으로 이전의 값을 가지고 있지 않는 stateless 프로토콜이기 때문에 상태를 유지하기 위해 쿠키와 세션의 개념을 활용한다.

 

- 클라이언트가 HTTP요청을 보내면 서버가 응답하도록 구현된다.

HTTP요청을 보낼때는 메소드가 항상 포함되며 이중 가장 중요한것이 Get과 Post이다. (그외 메소드가 많으며, put과 delete는 주로 RestApi를 구현할때 사용이 된다.)
get : 일반 웹페이지에서 값을 가지고올때 사용
post : 어떤 값을 변경하는 폼을 처리할때 사용

HTTP가 응답될때는 응답코드(status code) 값이 전달되어 HTTP요청의 처리 여부나 에러메세지 등을 알려주게 된다.

HTTP응답코드는 세자리수로 표현되며 다음과 같다.


- 1xxx : 정보전달
- 2xxx : 성공
- 3xxx : 리다이렉션 (웹페이지가 리다이렉트 될때)
- 4xxx : 클라이언트 에러
- 5xxx : 서버에러

 

💻  상태 유지를 위한 세션 사용

보통은 세션 ID를 이용해 세션을 유지하게 된다. 세션과 관련된 좋은 예로 로그인이 있다.
만약 세션을 유지하지 않게되면 http 프로토콜 자체가 로그인값을 가지지 않기때문에 웹사이트를 요청할때마다 로그인을 재수행 해야한다.
세션ID는 주로 쿠키를 이용해 전달된다. 쿠키란, 변수와 값이 쌍으로 이루어진 집합이며, 클라이언트와 서버간 데이터를 주고받기위해 사용된다.