HTTP(HyperText Transfer Protocol)
- 컴퓨터들의 통신 규약(protoco) 중 하나로, 웹에서 사용하는 프로토콜
- 통신 간 사용하는 형식이라고 생각하면 쉽다
- ex) 우편 형식 : 사람이 알아보는 형식
- HTTP 형식 : 컴퓨터가 알아보는 형식
HTTP 는 크게 요청 (HTTP Request)과 응답 (HTTP Response)으로 나뉘어져 있다
HTTP Request
- 한 컴퓨터가 다른 컴퓨터에 리소스 요청을 보낼 때 사용
- 클라이언트의 목적에 따라 다르게 분류
- ex) 네이버에 접속할 때 웹 페이지를 달라고 요청할 수도 있고, 로그인 할 때에는 정보가 맞는지 확인을 해달라고 요청할 수도 있음
CRUD 에 사용되는 HTTP 메소드
- GET : 특정 리소스를 달라고 할 때에 사용
- 예시: 페이지 로딩할 때
- POST : 서버 측의 특정 리소스를 저장할 때 사용
- 예시: 회원가입을 할 때에 특정 유저의 정보를 서버에 저장
- PUT/PATCH : 서버 측의 특정 리소스를 업데이트 할 때 사용
- PUT 은 데이터 전부를 바꿀 때, PATCH 는 부분적으로 변경할 때 사용
- 예시: 사용자 닉넴임 변경
- DELETE : 서버 측의 특정 리소스를 삭제할 때 사용
- 예시: 유저 탈퇴
- 이러한 요청들을 특정 방법으로 사용하도록 정해진 것은 아님
- DELETE 메소드를 사용해 회원가입을 진행할 수 있고 GET 으로 업데이트도 할 수 있음
- 어느 HTTP 메소드인지에 따라 제한은 있음
- GET 이나 DELETE 와 같은 경우에는 주소에만 데이터를 담아 넘길 수 있음
- API 를 제작할 때에는 보통 REST 가이드라인을 따라 제작
HTTP Response
- 응답 또한 HTTP 규약에 따른다
- 클라이언트 측에서 요청을 보내게 되는 경우 서버 측에서도 다양한 응답을 보냄
- 응답은 상태 코드(Status Code)를 가짐
HTTP 상태 코드
- 100 번대 : 정보 응답
- 200 번대 : 성공 응답
- 300 번대 : 리다이렉션 메시지
- 400 번대 : 클라이언트 에러 응답
- 500 번대 : 서버 에러 응답
HTTP 예시
웹 페이지에서 오른쪽 클릭 후, 검사를 들어가면, Network 탭에서 실제 HTTP 요청과 응답을 볼 수 있다
내 블로그 주소를 눌러보았다.
- Request Method : HTTP 요청 메소드 중 GET, 리소스를 가져온다는 뜻
- Status Code : 200 은 'OK', 성공했다는 뜻. 여기에서는 GET 요청이 성공적이었다는 뜻
- Request URL : 누가 요청을 하고 있는지를 담고 있음
- Remote Address : 어느 리모트 서버에 요청을 하고 있는지 알려줌. 현재는 211.249.222.3 의 443 포트에 요청을 보내고 있음
- Referrer Policy : 요청을 보내는 곳이 당사자인지, 타 웹사이트에서 연결된 건지 등을 알려줌. 현재는 'unsafe-url' 로 현 웹사이트에서 보내고 있음
HTTPS(HyperText Transfer Protocol Secure)
- Secure ? 안전!
- 아이디, 비번 그대로 보내는 HTTP
- 아이디, 비번을 암호화해서 보내는 HTTPS
다양한 프로토콜의 종류
- HTTP : Hyper Text Transfer Protocol
- HTTPS : Hyper Text Transfer Protocol Secure
- FTP : File Transfer Protocol
- SFTP : Secure File Transfer Protocol
- Telnet : TErminaL NETwork
- POP3 : Post Office Protocol version 3
- SMTP : Simple Mail Transfer Protocol
- SSH : Secure Shell
- SSL : Secure Socket Layer
- SOAP : Simple Object Access Protocol
- ARP : Adress Resolution Protocol
REST API
- REST: REpresentational State of Transfer
- 분산 하이퍼미디어 시스템을 위한 소프트웨어의 아키텍쳐를 어떻게 형성할 지에 대한 가이드라인
- 총 6개의 가이드라인이 존재하는데 다 따르게 된다면 해당 아키텍쳐를 'RESTful' 이라고 부르게됨
- 웹에서 활용하게 되는 API 가 REST 의 가이드라인들은 다 따르면 해당 API 를 RESTful API 라고 부를 수 있음
- 전부 따르지 않더라도 큰 의미에서 REST API 라고 부름
REST Architectural constraints
- Client–server architecture(서버-클라이언트 구조) : 서버와 클라이언트의 역할을 분명하게 구분
- Statelessness(무상태성) : 각각의 요청에 대한 정보를 저장하지 않고 별개의 요청으로 처리
- Cacheability(캐시 가능) : 캐시 기능을 이용하여 같은 URI에 대한 반복 요청을 효율적으로 처리
- Layered system(계층 구조) : 클라이언트와 서버의 통신 사이에 보안이나 로드 밸런싱 등을 위한 중간 계층을 추가할 수 있음
- Code on demand (주문형 코드) : 서버는 실행 가능한 코드를 전송하여 클라이언트의 기능을 확장하거나 정의 가능
- Uniform interface(일관된 인터페이스) : 플랫폼에 상관없이 사용할 수 있음, 리소스 타입에 상관없이 같은 형태의 요청
'Computer Science > Network' 카테고리의 다른 글
캡슐화와 역캡슐화란? (0) | 2024.02.25 |
---|---|
TCP/IP 란? (0) | 2023.04.24 |
IP, DNS, Port(포트), Server(서버) 란? (0) | 2023.01.13 |