티스토리 뷰
1. HTTP 프로토콜이란?
- HTTP (Hypertext Transfer Protocol)는 웹 인터넷상에서 서버와 클라이언트가 인터넷상에서 데이터를 주고 받기 위한 프로토콜입니다. 어떤 종류의 데이터든지 전송할 수 있도록 설계되어있으며, HTTP로 보낼 수 있는 데이터는 HTML문서, 이미지, 동영상, 오디오, 텍스트 문서 등 여러 종류가 있습니다.
* 서버 : 어떠한 자료에 대한 접근을 관리하는 네트워크 상 시스템 (요청에 대한 응답을 보냄)
* 클라이언트 : 그 자료에 접근할 수 있는 프로그램 (웹 브라우저, 앱 어플르케이션 등 .. ) - HTTP 프로토콜은 상태가 없는(stateless) 프로토콜입니다. 여기서 상태가 없다란 뜻은 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리가 된다는 뜻입니다. 즉 이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없다는 뜻입니다.
- HTTP 프로토콜은 일반적으로 TCP/IP 통신 위에서 동작하며 기본 포트는 80번입니다.
2. HTTP 프로토콜의 장점과 단점
2-1. 장점
- 불특정 다수를 대상으로 하는 서비스에 적합합니다.
- 상태가 없는(stateless) 프로토콜이기 때문에 웹 서비스를 많이 사용하더라도 접속유지는 최소한으로 할 수 있기 때문에, 더 많은 유저의 요청을 처리할 수 있습니다.
2-2. 단점
- 상태가 없는(stateless) 프로토콜이기 때문에 연결을 끊어버러기 때문에, 클라이언트의 이전 상태를 알 수 없습니다. 클라이언트가 과거에 로그인을 성공하더라도 로그 정보를 유지할 수 없습니다. HTTP는 cookie를 이용해서 이 문제를 해결하고 있습니다.
* Cookie : 클라이언트와 서버의 상태 정보를 담고 있는 정보조각입니다. 로그인을 예로 들자면, 클라이언트가 로그인에 성공 시 서버는 로그인 정보를 자신의 DB에 저장하고 동일한 값을 cookie 형태로 클라이언트에 전송합니다.
3. HTTP 프로토콜 과정
- connect : 클라이언트가 원하는 서버에 접속합니다.
- request : 클라이언트가 접속한 서버에 요청합니다. 요청을 보낼때는 요청에 대한 정보를 담아 서버에 보냅니다.
- response : 서버가 요청에 대한 응답결과를 클라이언트에게 보내는 것을 응답이라고 합니다. 응답이 끝나면 서버와 클라이언트 연결을 끊습니다. (stateless)
4. URL 과 HTTP 요청 메서드
4-1. URL(Unoform Resource Locators)
- URL과 HTTP는 독립된 다른 체계입니다. HTTP는 전송 프로토콜이고, URL은 자원의 위치를 알려주기 위한 프로토콜입니다.
- URL의 구조는 위와 같으며, 각 구성요소는 다음과 같습니다.
- protocol : 서로 다른 컴퓨터간에 통신을 하기 위한 규약으로, http는 웹 서버에 접속하기 위한 프로토콜입니다.
- host : 도메인 네임 또는 IP주소가 들어갑니다. 즉 컴퓨터의 주소를 표시하는 영역입니다.
- port : 포트는 컴퓨터에서 실행되고 있는 수많은 프로세스들의 주소입니다. 포트번호를 입력하지 않았을 경우 기본 포트번호가 적용됩니다. (http : 80번, https : 443번)
- resource path(경로) : 서버 프로그램 내에 짜인 로직의 경로입니다. 즉 소스가 있는 문서의 경로입니다.
- query : 쿼리는 URL에서 추가적인 데이터를 표현할 때 사용합니다. resource path 뒤 ? 를 기점으로 key=value 형태로 데이터를 표현합니다.
4-2. HTTP 요청 메서드
- GET : 존재하는 자원에 대한 요청
- POST : 새로운 자원을 생성
- PUT : 존재하는 자원에 대한 변경
- DELETE : 존재하는 자원에 대한 삭제
5. HTTP 상태 코드
HTTP 상태 코드(HTTP Status Code)는 서버에서 설정해주는 응답 정보입니다. 주요 상태 코드는 200번대부터 500번대까지 다양하게 있습니다.
- 2XX - 성공
200번대의 상태 코드는 대부분 성공을 의미합니다.
- 200 : GET 요청에 대한 성공
- 204 : No Content. 성공했으나 응답 본문에 데이터가 없음
- 205 : Reset Content. 성공했으나 클라이언트의 화면을 새로 고침하도록 권고
- 206 : Partial Conent. 성공했으나 일부 범위의 데이터만 반환
- 3XX - 리다이렉션
300번대의 상태 코드는 대부분 클라이언트가 이전 주소로 데이터를 요청하여 서버에서 새 URL로 리다이렉트를 유도하는 경우입니다.
- 301 : Moved Permanently, 요청한 자원이 새 URL에 존재
- 303 : See Other, 요청한 자원이 임시 주소에 존재
- 304 : Not Modified, 요청한 자원이 변경되지 않았으므로 클라이언트에서 캐싱된 자원을 사용하도록 권고. ETag와 같은 정보를 활용하여 변경 여부를 확인
- 4XX - 클라이언트 에러
400번대 상태 코드는 대부분 클라이언트의 코드가 잘못된 경우입니다. 유효하지 않은 자원을 요청했거나 요청이나 권한이 잘못된 경우 발생합니다.
- 400 : Bad Request, 잘못된 요청
- 401 : Unauthorized, 권한 없이 요청. Authorization 헤더가 잘못된 경우
- 403 : Forbidden, 서버에서 해당 자원에 대해 접근 금지
- 404 : NotFound, 서버에서 요청받은 리소스를 찾을 수 없습니다. (브라우저에 알려지지 않은 URL로 요청한 경우)
- 405 : Method Not Allowed, 허용되지 않은 요청 메서드
- 409 : Conflict, 최신 자원이 아닌데 업데이트하는 경우. ex) 파일 업로드 시 버전 충돌
- 5XX - 서버 에러
500번대 상태 코드는 서버 쪽에서 오류난 경우입니다.
- 500 : Internal Sever Error, 웹 사이트 서버에 문제가 있음을 의미하며 서버는 정확한 문제에 대해 구체적 설명을 할 수 없는 경우
- 501 : Not Implemented, 요청한 동작에 대해 서버가 수행할 수 없는 경우
- 502 : Bad Gateway, 서버가 게이트웨이로부터 잘못된 응답을 수신했을음 의미하며 인터넷상의 서버가 다른 서버로부터 유효하지 않은 응답을 받은 경우
- 503 : Service Unavailable, 서버가 과부하 또는 유지 보수로 내려간 경우
- 504 : Gateway Timeout : 웹 페이지를 로드하거나 브라우저에서 다른 요청을 채우려는 동안 한 서버가 액세스하고 있는 다른 서버에서 적시에 응답을 받지 못한 경우
🤔 정리 !
- HTTP 프로토콜은 프론트엔드 개발자라면 필수적으로 알아야하는 지식 !
- 1 ~ 5번의 소제목 모두 기본적이지만 중요한 내용이니 숙지하자 !
🔗 참고한 글
프런트엔드 개발자가 알아야하는 HTTP 프로토콜 Part 1
API 데이터 요청을 위해 꼭 알아야 하는 HTTP 프로토콜의 정의, HTTP Status Code, HTTP Methods 등
joshua1988.github.io
'개념들' 카테고리의 다른 글
비동기 HTTP 통신 종류 (ajax, fetch, axios) (4) | 2022.07.31 |
---|---|
Endpoint ? (feat. API) (3) | 2022.07.14 |
RESTful API ? (2) | 2022.07.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- next.js 환경변수
- Next.js
- 호이스팅
- 1급 함수
- 시맨틱 웹
- Virtual Scroll
- 목표 일기
- react
- 자바스크립트 동작원리
- redux
- 자바스크립트 비동기 동작원리
- array
- 렌더링 속도 개선
- 타입스크립트
- 매겨변수와 인자
- javascript
- next.js에 .gitignore가 적용되지 않을 때
- rewrites
- redirects
- 함수형 컴포넌트
- React로 쓰로틀링 디바운싱 구현
- 가상스크롤
- programmers
- debouncing
- useRef
- zustand
- vue
- typescript
- 1급 시민
- 1급 객체
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함