HTTP 의 무상태성과 비연결성
HTTP status code
- 10x : 요청이 수신되어 처리 중, 처리의 경과 상황 등을 통지
- 20x : 통신 성공, 요청이 정상 처리됨
- 30x : 리다이렉트, 요청을 완료하려면 추가 작업 조치가 필요함을 나타냄
- 40x : 클라이언트 오류 , 요청의 문법이 잘못되었거나 요청을 처리할 수 없다
- 400 bad request : 잘못된 요청, 서버가 요청의 구문을 인식하지 못했다. ex. 파라미터가 String이어야 하는데 int를 보냄. 잘못된 문법
- 403 forbbiden : 권한 없음, 서버가 요청을 거부한다. 예를 들면 사용자가 리소스에 대한 필요 권한을 갖고 있지 않다.
- 401 unauthorized : 인증 안됨. 인증이 필요하다고 알려주는 것.
- 404 not found : 찾을 수 없음. 서버가 요청한 페이지(리소스,자원,경로)를 찾을 수 없다. 예를 들어 서버에 존재하지 않는 페이지에 대한 요청이 있을 경우 서버는 이 코드를 제공한다. ex. 올바르지 않은 URL
- 50x : 서버 오류 , 서버가 명백히 유효한 요청에 대해 처리를 실패했다.
Socket 으로 바로 통신하는 것 대비 HTTP 는 비효율적인데도 왜 많은 앱들은 HTTP 를 쓰는 걸까요?
차세대 프로토콜로 논의중인 HTTP/3 은 UDP 기반의 QUIC 이라는 기술로 구현되어 있습니다. UDP 는 TCP 대비 안정성이 떨어지는 프로토콜이라고 하는데, 그럼에도 왜 UDP 를 채택한 걸까요?
SSL (또는 TLS) 가 어떻게 동작하는지 말씀해주세요.
HTTP 는 Stateless (상태가 없는) 통신 프로토콜이라고 합니다. 따라서, 상태가 없다면 가령 HTTP 를 쓰는 서비스는 매번 로그인을 해 줘야 하거나 사용자 정보를 저장하는 일이 불가능합니다. 그런데 실제론 그렇지 않죠. 어떻게 이런 불편함을 해소했을까요?
HTTP(s) 프로토콜에서 바이너리 데이터를 전송하는 방식에 대해 설명해주세요.
Socket 으로 웹 페이지를 크롤링하는 HTTP 클라이언트를 직접 구현해야 한다면, 어떻게 하시겠습니까?