-
HTTP에 대해 설명해주세요.CS지식 모음 2023. 3. 30. 13:45
HTTP(Hyper Text Transfer Protocol)
- 인터넷에서 클라이언트와 서버가 데이터를 주고받을 수 있는 프로토콜(규칙)입니다.
- 클라이언트는 데이터를 서버로 요청하는 요청자이며, 흔히 웹브라우저가 그 역할을 하고 응용프로그램에서는 HTTP요청을 위해 사용하는 라이브러리가 클라이언트 역할을 합니다.
- 서버는 클라이언트가 요청한 데이터를 제공하는 제공자이며, 이미지,HTML파일처럼 파일을 제공하는 서버,API서버 등 다양하게 있습니다.
- HTTP통신에서는 서버가 제공하는 결과를 응답(Response)라고 합니다.
- 80번 port를 이용합니다.
- HTTP 통신을 위해 저는 Axios 라이브러리를 사용해본적이 있습니다.
HTTP 메세지 구조
HTTP Request 구조
HTTP Request 메세지는 크게 3부분으로 구성됩니다.
RequestLine / Header / Body
- Request Line : GET/HTTP/1.1 (HTTP request의 첫 라인으로 이 부분도 3부분으로 구성되어 있습니다.)
- HTTP Method : GET / POST / PUT / DELETE (해당 Request가 의도한 action을 정의하는 부분)
- Request target(요청 URL) : ex)/login
- HTTP 버전
- Header
- 해당 request에 대한 추가 정보를 담고있는 부분
- Key:Value 값으로 되어있다. ex)HOST:google.com
- 자주 사용되는 header 정보
- Host : 요청이 전송되는 targer의 host url => ex)google.com
- User-Agent : 요청을 보내는 클라이언트의 대한 정보 => ex)웹브라우저에 대한 정보
- Accept: 해당 요청일 받을 수 있는 응답(response) 타입
- Connection : 해당 요청이 끝난후에 클라이언트와 서버가 계속해서 네트워크 컨넥션을 유지할 것인지 끊을지에 대해 지시하는 부분
- Content-Type : 해당 요청이 보내는 메세지 body의 타입 ex) json을 보내면 application/json
- Content-Length : 메세지 body의 길이
- Body
- 해당 request의 실제 메세지/내용
- body가 없는 request도 많습니다. ex) GET Request들은 대부분 body가 없는 경우가 많습니다.
HTTP Response 구조
Response도 request와 마찬가지로 크게 3부분으로 구성되어 있습니다.
Status(Response) Line / Header / Body
- Status(Response) Line : HTTP/1.1 404 Not Found
- Response의 상태를 간략하게 나타내주는 부분으로 3부분으로 구성되어 있습니다.
- HTTP 버전
- status code : 응답 상태를 나타내는 코드. 숫자로 되어 있는 코드. 404
- status text: 응답 상태를 간략하게 설명해주는 부분. Not Found
- Header
- Response의 header와 동일합니다.
- 다만 response에서만 사용되는 header값들이 있습니다. ex User-Agent대신 Server헤더가 사용됩니다.
- Body
- Response의 body와 일반적으로 동일합니다.
- Request와 마찬가지로 모든 response가 body가 있지는 않습니다.
- 데이터를 전송할 필요가 없을 경우 body가 비어있게 됩니다.
자주 쓰이는 HTTP Methods
GET
- 이름 그대로 어떠한 데이터를 서버로부터 받아(GET)올때 주로 사용하는 Method
- 데이터 생성/수정/삭제 없이 받아오기만 할때 사용됨
- 가장 간단하고 많이 사용되는 HTTP Method
- 언급한대로 주로 데이터를 받아올때 사용되기 때문에 request에 body를 안 보내는 경우가 많다.
POST
- 데이터를 생성/수정/삭제 할때 주로 사용되는 Method
- 데이터를 생성 및 수정 할때 많이 사용하기 때문에 대부분의 경우 request body가 포함되서 보내진다.
여기까지 구글링을 참고하여 정리해봤는데요. 이걸 풀어서 얘기하려면 좀 복잡할 것 같아요.
만약 면접에서 이 주제에 대해 질문이 들어온다면 전 이렇게 대답할 것 같습니다.
HTTP에 대해 설명해주세요.
HTTP는 인터넷에서 클라이언트와 서버가 데이터를 주고받을 수 있는 프로토콜 입니다.
클라이언트는 흔히 웹브라우저가 그 역할을 하고 응용프로그램에서는 HTTP요청을 위해 사용하는 라이브러리가 클라이언트 역할을 합니다.
이 라이브러리 중에서 저는 Axios를 사용하여 보다 쉽게 HTTP 통신을 한 경험이 있습니다.HTTP 메세지구조에 대해 설명해주세요.
HTTP 메세지는 크게 두부분으로 나뉩니다.
HTTP Request 메세지, HTTP Response 메세지가 있는데요.Request 메세지는 클라이언트가 서버에게 보내는 요청 메세지입니다.
Request 메세지는 또 크게 세부분으로 나뉘는데요.
첫번째 요청메서드,URI,HTTP 버전 정보가 포함된 Start Line과
두번째 키,벨류 형식으로 클라이언트가 서버에 전달하는 추가정보를 담고있는 Header,
세번째 클라이언트가 서버에게 전달하는 데이터를 포함할 수 있는 Body가 있습니다. Body는 필수적이지 않고 대부분의 GET Request들은 Body가 없습니다.Response 메세지는 서버가 클라이언트에게 보내는 응답 메세지입니다.
Response메시지도 크게 세부분으로 나뉘는데요.
첫번째 상태코드, 상태메세지, HTTP버전정보가 포함된 Start Line 과
두번째 키,벨류 형식으로 서버가 클라이언트에게 전달하는 추가정보를 담고있는 Header,
세번째 서버가 클라이언트에게 전달하는 데이터를 포함할 수 있는 Body가 있습니다.
마찬가지로 Body는 필수적이지 않고 데이터를 전송할 필요가 없을 경우 Body는 비어있게 됩니다.전체적인 흐름을 파악하고, 저 답변의 키워드들을 외우면 답변하는데는 큰 무리 없을 것 같습니다.
'CS지식 모음' 카테고리의 다른 글
React에 대한 면접질문 및 답변 리스트 (0) 2023.03.30 캐시(Cache)에 대하여 설명해주세요. (0) 2023.03.29 프레임워크와 라이브러리의 차이점을 설명해주세요. (0) 2023.03.29 parameter와 argument의 차이 (0) 2023.03.28 Hoisting과 TDZ 대하여 (0) 2023.03.28