hey_mi
heymi 스터디기록
2024.09.04

HTTP는 웹 서버와 웹 클라이언트 사이에서 데이터를 주고받기 위해 사용하는 통신 방식으로 TCP/IP 프로토콜 위에서 동작한다. 즉, 우리가 웹을 이용하려면 웹 서버와 웹 클라이언트는 각각 TCP/IP 동작에 필수적인 IP 주소를 가져야 한다는 의미이다.

HTTP란 이름대로라면 하이퍼텍스트(Hypertext)만 전송할 수 있어 보이지만, 실제로는 HTML이나 XML과 같은 하이퍼텍스트뿐 아니라 이미지, 음성, 동영상, Javascript, PDF와 각종 문서 파일 등 컴퓨터에서 다룰 수 있는 데이터라면 무엇이든 전송할 수있다.

예를 들어

웹 브라우저의 주소창에 https://www.naver.com을 입력하고 Enter 를 누르면 웹 클라이언트와 웹 서버 사이에 HTTP 연결이 맺어지고 웹 클라이언트는 웹 서버에 HTTP 요청 메시지를 보냅니다. 웹 서버는 요청에 따른 처리를 진행한 후에 그 결과를 웹 클라이언트에 HTTP 응답 메시지로 보냅니다. 이처럼 요청 메시지와 응답 메시지가 반복적으로 오가므로 우리는 웹을 사용할 수 있는 것입니다.

현재 100~500번 대까지 상태 코드가 정의되어 있는데 첫 번째 자리 숫자에 따라 다음과 같이 5가지로 분류해서 사용하고 있다.

상태코드 정의

- 1XX: Informational(정보 제공)

임시 응답으로 현재 클라이언트의 요청까지는 처리되었으니 계속 진행하라는 의미입니다

- 2XX: Success(성공)

클라이언트의 요청이 서버에서 성공적으로 처리되었다는 의미입니다.

- 3XX: Redirection(리다이렉션)

완전한 처리를 위해서 추가 동작이 필요한 경우입니다. 주로 서버의 주소 또는 요청한 URI의 웹 문서가 이동되었으니 그 주소로 다시 시도하라는 의미입니다.

- 4XX: Client Error(클라이언트 에러)

없는 페이지를 요청하는 등 클라이언트의 요청 메시지 내용이 잘못된 경우를 의미합니다.

- 5XX: Server Error(서버 에러)

서버 사정으로 메시지 처리에 문제가 발생한 경우입니다. 서버의 부하, DB 처리 과정 오류, 서버에서 익셉션이 발생하는 경우를 의미합니다.

1XX: Informational(정보 제공)

1XX Informational : 정보제공 [클라이언트의 요청을 받았으며 작업을 계속 진행하고 있다.]

100 Continue : 계속 [계속 진행하라]

101 Switching Protocols : 프로토콜 전환 [프로토콜을 전환하라]

102 Processing : 처리중 [처리중이다. / 서버가 처리하는데 오랜 시간이 예상되어 클라이언트에서 타임아웃이 발생하지 않도록 이 응답 코드를 보냅니다.]

2XX: Success(성공)

2XX : 성공 [클라이언트가 요청한 동작을 수신하여 이해하였고 승낙하였으며 성공적으로 처리하였다]

200 OK : 성공 [서버가 요청을 성공적으로 처리하였다.]

201 Created : 생성됨 [요청이 처리되어서 새로운 리소스가 생성되었다. 응답 헤더 Location에 새로운 리소스의 절대 URI를 기록합니다.]

202 Accepted : 허용됨 [ 요청은 접수하였지만, 처리가 완료되지 않았다.]

203 Non-Authoritative Information : 신뢰할 수 없는 정보 [응답 헤더가 오리지널 서버로부터 제공된 것이 아니다.]

204 No Content 콘텐츠 없음 [처리를 성공하였지만, 클라이언트에게 돌려줄 콘텐츠가 없다]

205 Reset Content 콘텐츠 재설정 [처리를 성공하였고, 브라우저의 화면을 리셋하라]

206 Partial Content : 일부 콘텐츠 [콘텐츠의 일부만을 보낸다]

207 Multi-Status : 다중 상태 [207 응답은 성공을 뜻하지만, / 각각의 처리 결과가 성공인지는 바디를 봐야 알 수 있습니다.]

208~299 Unassigned : 현재 할당되지 않은 상태 코드

3XX: Redirection(리다이렉션)

3XX Redirection : 리다이렉션 [클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.]

300 Multiple Choices : 여러 선택 항목 [선택 항목이 여러 개 있다. 지정한 URI에 대해서 콘텐츠 협상을 수행한 결과 서버에서 콘텐츠를 결정하지 못하고 클라이언트에게 복수 개의 링크를 응답할 때 사용합니다.]

301 Moved Permanently : 영구이동 [지정한 리소스가 새로운 URL로 이동하였다.]

302 Found : 다른 위치 찾음 [요청한 리소스를 다른 URL에서 찾았다.]

303 See Other : 다른 위치 보기 [다른 위치로 요청하라]

304 Not Modified : 수정되지 않음 [마지막 요청 이후 요청한 페이지는 수정되지 않았다.]

305 Use Proxy : 프록시 사용 [지정한 리소스에 엑세스하면 프록시를 통해야 한다.]

306 Unused : [예전 버전에서 사용하다가 현재는 사용하지 않는 상태 코드입니다.]

306 Temporary Redirect : 임시 리다이렉션 [임시로 리다이렉션 요청이 필요하다.]

308~399 Unassigned : 현재 할당되지 않은 상태 코드입니다.

4XX: Client Error(클라이언트 에러)

4XX Client Error : 클라이언트 애러 [클라이언트의 요청에 오류가 있다]

400 Bad Request : 잘못된 요청 [요청의 구문이 잘못되었다.]

401 Unauthorized : 권한 없음 [지정한 리소스에 대한 엑세스 권한이 없다]

402 Payment Required : 결제 필요 [지정한 리소스를 액세스하기 위해서는 결제가 필요하다.]

403 Forbidden : 금지됨 [ 지정한 리소스에 대한 액세스가 금지되었다. 401 인증 처리 이외의 사유로 리소스에 대한 액세스가 금지되었음을 의미합니다. 리소스의 존재 자체를 은폐하고 싶은 경우는 404 응답 코드를 사용할 수 있습니다.]

404 Not Found : 찾을 수 없음 [지정한 리소스를 찾을 수 없다]

405 Method Not Allowed : 허용되지 않은 메소드 [요청한 URI가 지정한 메소드를 지원하지 않는다.]

406 Not Acceptable : 수용할 수 없음 [클라이언트가 헤더에 지정한 항목에 관해 처리할 수 없다.]

407 Proxy Authentication Required : 프록시 인증 필요 [클라이언트는 프록시 서버에 인증이 필요하다.]

408 Request Timeout : 요청 시간초과 [요청을 기다리다 서버에서 타임아웃하였다.]

409 Conflict : 충돌 [서버가 요청을 수행하는 중에 충돌이 발생하였다.]

410 Gone : 사라짐 [지정한 리소스가 이전에는 존재하였지만, 현재는 존재하지 않는다.]

411 Length Required : 길이 필요 [요청 헤더에 Content-Length를 지정해야 한다.]

412 Precondition Failed : 사전 조건 실패 [조건부 요청에서 지정한 사전 조건이 서버와 맞지 않는다.]

413 Request Entity Too Large : 요청 객체가 너무 큼 [요청 메시지가 너무 크다 / 서버는 접속을 끊습니다.]

414 Request-URI Too Large : 요청 URL가 너무 긺 [요청 URI가 너무 길다.]

415 Unsupported Media Type : 지원되지 않는미디어 유형 [클라이언트가 지정한 미디어 타입을 서버가 지원하지 않는다. 예를 들어 서버가 지원하는 이미지는 JPG, PNG뿐인데 클라이언트가 GIF 형식의 이미지를 요청하는 경우입니다.]

416 Range Not Satisfiable : 처리할 수 없는 요청 범위 [클라이언트가 지정한 리소스의 범위가 서버의 리소스 사이즈와 맞지 않는다.]

417 : 예상 실패 [클라이언트가 지정한 Expect 헤더를 서버가 이해할 수 없다.]

418 ~ 421 Unassigned : [현재 할당되지 않은 상태 코드입니다.]

422 Unprocessable Entity : 처리할 수 없는 엔티티 [ 클라이언트가 송신한 XML이 구문은 맞지만, 의미상 오류가 있다.]

423 Locked : 잠김 [지정한 리소스는 잠겨있다.]

424 Failed Dependency: 의존 관계로 실패 [다른 작업의 실패로 인해 본 요청도 실패하였다.]

426 Upgraded Required : 업그레이드 필요함 [클라이언트의 프로토콜의 업그레이드가 필요하다.]

428 Precondition Required : 사전 조건 필요함 [사전 조건을 지정하는 헤더가 필요하다]

429 Too Many Requests : 너무 많은 요청 [클라이언트가 주어진 시간 동안 너무 많은 요청을 보냈다]

431 Request Header Fields Too Large : 너무 큰 헤더 [헤더의 길이가 너무 크다]

444 Connection Closed Without Response : 응답 없음/연결 닫음 [응답을 보내지 않고 연결을 종료]

451 Unavailable For Legal Reasons : 법적 사유로 불가 : [법적으로 문제가 있는 리소스를 요청하였다.]

452 ~ 499 Unassigned : 현재 할당되지 않은 상태 코드입니다.

5XX: Server Error(서버 에러)

5XX Server Error : 서버에러 [클라이언트의 요청은 유효한데 서버가 처리에 실패하였다.]

500 Internal Server Error : 내부 서버 오류 [서버에 에러가 발생하였다.]

501 Not Implemented : 구현되지 않음 [요청한 URI의 메소드에 대해 서버가 구현하고 있지 않다.]

502 Bad Gateway : 불량 게이트웨이 [게이트웨이 또는 프록시 역할을 하는 서버가 그 뒷단의 서버로부터 잘못된 응답을 받았다.]

503 Service Unavailable : 서비스 제공불가 [현재 서버에서 서비스를 제공할 수 없다. 보통은 서버의 과부하나 서비스 점검 등 일시적인 상태입니다.]

504 Gateway Timeout : 게이트웨이 시간초과 [게이트웨이 또는 프록시 역할을 하는 서버가 그 뒷단의 서버로부터 응답을 기다리다 타임아웃이 발생하였다.]

505 HTTP Version Not Supported : HTTP 버전 미지원 [클라이언트가 요청에 사용한 HTTP 버전을 서버가 지원하지 않는다.]

506 Unassigned : 현재 할당되지 않은 상태 코드입니다.

507 Insufficient Storage : 용량 부족 [서버에 저장 공간 부족으로 처리에 실패하였다.]

512 ~ 599 Unassigned : 현재 할당되지 않은 상태 코드입니다.

heymi 스터디기록
의 다른 카테고리
0
👍1
👏0
🤔
댓글 작성