A. HTTP는 HyperText Transfer Protocol의 약자로 서버-클라이언트 모델을 따르면서 request/response 구조로 웹 상에서 정보를 주고받을 수 있는 프로토콜. TCP/IP 기반으로 작동하며, HTTP의 가장 큰 특징은 Connectionless와 Stateless이다.
클라이언트가 HTTP request를 서버에 보내면 서버는 HTTP response를 클라이언트에게 보내는 구조. request message는 start line(method, path, http version),headers, body로 이루어져 있고 response message는 status line(http version, status code, status message), headers, body로 이러우져 있다.
http는 서버에 연결 후 요청에 응답을 받으면 연결을 끊어 버리는 connectionless 특성이 있다. 이로 인해 동시 접속을 최소화하여 많은 유저의 요청을 처리할 수 있다. 그러나 연결이 끊어졌으므로 클라이언트의 이전 상태를 알 수 없는 stateless특성이 생긴다. 이로 인해 cookie, session, jwt가 도입되었다.
💡여기서 잠깐! https는?💡
http는 정보를 text 형식으로 주고 받기 때문에 중간에 인터셉트할 경우 데이터 유출 문제가 발생할 수 있으므로 암호화를 추가한 프로토콜이 https이다.
A.GET 메소드는 클라이언트가 서버에게 리소스를 요청할 때 사용하는 메소드이고, POST 메소드는 서버에게 데이터 처리(주로 생성)를 요청할 때 사용하는 메소드이다.
GET 요청의 경우 필요한 정보를 특정하기 위해 URL 뒤에 Query String을 추가하여 정보를 조회하고, POST 요청의 경우 전달할 데이터를 Body 부분에 포함하여 통신한다.
GET 요청의 경우 URL 뒤의 Query String까지 포함해서 브라우저 히스토리에 남게 되고 캐시가 가능하지만, POST 요청의 경우 브라우저 히스토리에 남지 않고 캐시도 불가능하다.
PUT 메소드와 PATCH 메소드는 모두 서버의 리소스를 업데이트하는 메소드라는 공통점이 있으나 PUT 요청의 경우 모든 리소스를 수정,대체하고, PATCH 요청의 경우 일부 리소스만 수정한다.
A.HTTP status code는 클라이언트가 보낸 HTTP 요청에 대한 서버의 응답 코드로, 상태 코드를 통해 요청의 성공/실패 여부를 판단할 수 있다. 100번대부터 500번대까지 총 5개의 클래스로 구분되어 HTTP 요청에 대한 상태를 알려준다.
💡여기서 잠깐! 5개의 클래스?💡
- 1xx (정보): 요청을 받았으며 작업을 계속한다.
- 2xx (성공): 클라이언트가 요청한 동작을 성공적으로 수신하여 이해했고 성공적으로 처리하였다.
- 3xx (리다이렉션): 요청을 완료하기 위해 추가 작업 조치가 필요하다.
- 4xx (클라이언트 오류): 클라이언트의 요청에 문제가 있다.
- 5xx (서버 오류): 서버가 유효한 요청의 수행을 실패했다.
status code | message | |
---|---|---|
200 | OK | 요청이 성공함 (ex. 잔액조회 성공) |
201 | Created | 리소스 생성 성공 (ex. 게시글 작성 성공, 회원가입 성공) |
400 | Bad Request | 데이터의 형식이 올바르지 않는 등 서버가 요청을 이해할 수 없음 (ex. 올바르지 않은 형식의 데이터 입력 등) |
401 | Unauthorized | 인증되지 않은 상태에서 인증이 필요한 리소스에 접근함 (ex. 로그인 전에 사용자 정보 요청 등) |
403 | Forbidden | 인증된 상태에서 권한이 없는 리소스에 접근함 (ex. 일반 유저가 관리자 메뉴 접근 등) |
404 | Not Found | 요청한 route가 없음. 찾는 리소스가 없음 (ex. http://www.naver.com/nossi 등 존재하지 않는 route에 요청 등) |
502 | Bad Gateway | 서버에서 예상하지 못한 에러가 발생함 (ex. 예외처리를 하지 않은 오류가 발생 등) |
A. 1. 사용자가 브라우저에 url을 입력한다 2. 브라우저는 DNS를 통해 서버의 IP주소를 찾는다 3. 클라이언트에서 http request메세지를 보낸다 4. 서버에서 http request에 대한 response메세지를 보낸다 5. 도착한 http response message가 웹 브라우저에 의해 렌더링 된다.
출처 : 인프런 - 기출로 대비하는 개발자 전공면접 [CS 완전정복]