HTTP
Hyper Text Transfer Protocol[Port = 80]
웹에서 데이터를 주고 받는 클라이언트 - 서버 모델의 통신 규약이자, 웹 서버와 웹 클라이언트 사이에 멀티미디어 정보를 전송하는 프로토콜로 사용
무상태(stateless) 프로토콜로 각각의 요청 및 응답은 독립적으로 처리된다.(이전 요청을 기억하지 않는다)
HTTP 메시지는 시작줄, Header(헤더), Body(본문)으로 구성되며 Body는 없을 수 있다.
웹 서버의 자원(리소스)은 URI(Uniform Resource Identifier: 통합 자원 식별자)를 통해 얻는다.
URI
URL(Uniform Resource Locator: 통합 자원 지시자)
URN(Uniform Resource Name: 통합 자원 이름)
Status Code
서버가 클라이언트의 요청을 어떻게 처리했는지 알려주는 3자리 숫자(HTTP 요청에 대한 응답 코드)
| 전체 범위 | 정의된 범위 | 분류 | 주요 상태 코드 | |||
| 200~299 | 200~206 | 성공 | 200[OK] | 201[Created] | 202[Accepted] | 204[No Content] |
| 요청이 성공적으로 처리됨 | 새로운 리소스가 성공적으로 생성 | 요청을 접수하였으나 처리가 완료되지 않음 | 요청은 성공했으나 반환할 컨텐츠가 없음 | |||
| 300~399 | 300~305 | 리다이렉션 | 301[Moved Permanently] | 302[Found] | 304[Not Modified] | |
| 요청한 URL이 옮겨짐(옮겨진 URL 포함) | 요청한 URL이 옮겨짐(옮겨진 URL 포함) - 임시적 | 이전 요청 이후로수정되지 않음, 캐시 사용 가능 | ||||
| 400~499 | 400~415 | 클라이언트 에러 | 400[Bad Reqeust] | 401[Unauthorized] | 403[Forbidden] | 404[Not Found] |
| 잘못된 요청을 보냄 | 인증 필요 | 서버 측에서 요청 거부 | URL(리소스) 찾을 수 없음 | |||
| 500~599 | 500~505 | 서버 에러 | 500[Internal Server Error] | 501[Not Implemented] | 502[Bad Gateway] | 503[Service Unavailable] |
| 서버가 요청을 처리할 수 없는 에러가 발생함 | 서버가 해당 기능을 지원하지 않음 | 게이트웨이, 프록시에서 잘못된 응답을 받음 | 현재 서버가 요청을 처리할 수 없으나 나중에는 가능할 수 있음 | |||
Method
HTTP 요청에 대한 종류
| HTTP Method | 기능 및 설명 | Idempotency(멱등성) |
| GET | 서버로 (URI에 대한) 자원(리소스)을 달라고 요청한다. | O |
| POST | 입력한 데이터를 서버로 전송(CREATE)하기 위해 설계되었지만, GET, PUT(PATCH), DELETE 어느 것으로도 정의하기 애매한 것은 주로 POST 설계한다. |
X |
| PUT | 자원(리소스)이 존재하면 UPDATE, 없으면 CREATE한다. (일반적으로 CREATE보다는 UPDATE 용도로 필드 전체를 갱신하도록 설계한다.) |
O |
| PATCH | 자원(리소스)의 UPDATE(일반적으로 필드 중 일부를 업데이트 하도록 설계한다.) (지원하지 않는 웹 서버 혹은 브라우저가 많이 있다.) |
O |
| DELETE | URI에 대한 자원을 삭제한다.(서버가 해당 요청을 무시할 수 있도록 설계되었다.(해당 자원이 없거나 요청이 유효하지 않은 경우 등)) | O |
멱등성
동일한 요청을 1번 보내는 것과 여러번 반복해서 보내는 것이 서버 상태에 동일한 영향을 끼침을 보장하는 성질
서버의 장애나 통신 오류 등으로 인해 동일 요청이 여러 번 들어와도 중복 처리 없이 안정적으로 일관된 상태를 유지할 수 있게 만드는 성질
GET, PUT, PATCH, DELETE에서는 GET으로 1번, 10번 조회하든 서버의 정보에는 변화가 없다. PUT/DELETE도 1번이든 여러번 보내더라도 결과적으로 서버에 남는 리소스 상태가 동일하다는 의미이다.
POST는 1번, 여러번으로 반복해서 보내면 새로운 데이터가 연속해서 추가되기 때문이다.
HTTPS
Hyper Text Transfer Protocol Secure[Port = 443]
HTTP에 보안 계층(SSL/TLS)를 추가한 프로토콜이다.
TLS/SSL Hand-shake
- 모든 요청 및 응답 데이터를 암호화
- 공격자(해커)로부터 정보 달취를 방지한다.
- 인증서를 통해 클라이언트 - 서버 간 신원(위조사이트인지)를 확인
- TLS(Transport Layer Security) : 전송 계층 보안
- SSL(Secure Sockets Layer) : 보안 소켓 계층
TLS/SSL Hand-Shake
클라이언트와 서버가 암호화 통신을 안전하게 시작하기 전, 서로를 확인하고 암호화에 사용할 정보를 주고 받는 일련의 절차
TLS/SSL 세션을 맺는 초반부에 일어나는 절차, 서버와 클라이언트가 서로를 검증하고 강력한 보안 매개변수(사용할 버전, 암호화 방식, 세션키 등)을 합의
'CS > Network' 카테고리의 다른 글
| [Network] ARP, RARP (0) | 2025.09.06 |
|---|---|
| [Network] 포트(Port) (0) | 2025.08.18 |
| [Network] IP 주소 (0) | 2025.08.17 |
| [Network] MAC 주소 (0) | 2025.08.16 |
| [Network] TCP, UDP (0) | 2025.08.15 |