Http

김기현·2022년 2월 7일
0
post-thumbnail

웹개발자라면 당연히 알고 있어야 할 핵심 프로토콜인 HTTP! HTTP란 무엇일까요?

HTTP

HTTP(HyperText Transfer Protocol)의 두문자로, 인터넷에서 데이터를 주고받을 수 있는 프로토콜입니다. 즉 컴퓨터끼리의 HTML파일을 주고받을 수 있도록 소통을 위한 통신규약입니다.

Https는 '통신 약속'이고 약속은 조항들이 있기 마련인데요, 요청과 응답, 그리고 Stateless가 이 조항들의 핵심입니다.

Request(요청) / Request(응답)

서버의 역할은 request에 대한 request를 보내주는 것입니다. 보내는 주체는 주체에게 요청을 보내고 받는 주체는 요청을 보낸 주체에게 응답을 보냅니다.
예를 들어 컴퓨터의 전원을 키고 브라우저를 열어 유튜브 영상 링크를 열면 그 순간 컴퓨터는 서버에게 "해당 영상을 주세요"라고 요청을 보내고 이에 대한 응답을 컴퓨터에게 보냅니다.

Stateless

State + less : 상태 없음은 잊어서는 안될 HTTP의 특징입니다. 각각의 HTTP 요청과 응답(통신)은 독립적이기 때문에 이전 상태의 내용을 전혀 알지 못합니다. 따라서 매 통신마다 필요한 정보를 담아서 보내야만 합니다. 만약 쇼핑 리스트 저장, 아이디 비밀번호 저장 등과 같이 요청과 응답의 진행과정에서 연속된 데이터 처리가 필요하기에 쿠키, 세션, 로컬스토리지, 로그인 토큰이 만들어진 것입니다.

Request 구조

Request 메세지 구조는 크게 세가지로 이루어져있습니다.

1. Start Line

요청의 첫번째 줄에 해당합니다. 그리고 start line은 세가지로 구성되어있습니다.

  • HTTP Method
    요청이 의도한 액션을 정의하는 부분입니다. GET, POST, DELETE가 많이 쓰입니다.
  • Request target
    해당 request가 전송되는 목표 url입니다.
  • HTTP Version
    HTTP 버전을 뜻합니다.
2. Headers

해당 요청에 대한 추가 정보를 담고 있는 부분입니다.

*key : Value 값으로 되어있는 곳(JS의 객체, Python의 딕셔너리 형태)

Headers: {
    Host:  				# 요청을 보내는 목표의 기본주소(www.apple.co.kr)
    User-Agent: 		# 요청을 보내는 클라이언트의 정보(chrome, firefox, safari)
    Content-Type: 		# 해당 요청이 보내는 메세지의 body 타입(application/json)
    Content-Length: 	# body 내용의 길이
    Authorization:  	# 회원 인증/인가를 위해 로그인 토큰을 담는 곳
}
3. Body

해당 요청의 실제 내용으로 주로 POST메서드를 이용합니다.

Body: {
    "user_email": "jun.choi@gmail.com"
    "user_password": "wecode"
}
profile
피자, 코드, 커피를 사랑하는 피코커

0개의 댓글