HTTP란?
- HyperText Transfer Protocol의 약자. 웹에서 서버와 클라이언트 간 통신을 하기 위한 규약(메세지 형태). 웹에서 일어나는 모든 데이터 교환의 기초.
- 전통적인 클라이언트-서버 모델. request와 response로 동작. 클라이언트가 서버에 요청하면 서버에서 요청에 대한 응답을 하는 방식.
- TCP/IP 기반 응용 계층 프로토콜(TCP/IP란??)
HTTP 특징
비연결성(Connectionless)
클라이언트와 서버가 한 번 연결을 맺고 요청에 대한 응답을 마치면 연결을 끊어버리는 특성
무상태(Stateless)
수신자(일반적으로 서버)가 세션 정보를 보유하지 않는 통신 프로토콜을 무상태 프로토콜이라고함. Connectionless로 인한 것.
- 세션 정보 보존으로 인하여 발생하는 부하를 제거하여 성능 향상을 기대할 수 있음.
- 진행중인 대화를 처리하기 위한 스토리지의 동적 할당이 필요없기 때문에 서버 설계를 단순화함.
단, 동일한 클라이언트의 모든 요청에 대해서도 일일이 연결을 맺고 끊어야 하므로 이에 대한 오버헤드가 발생. 이를 해결하기 위한 여러 가지 방법이 있는데 쿠키, 세션, OAuth, JWT 등이 있음.
웹 페이지 직접 까보기
Chrome 웹 브라우저를 사용하는 경우 웹 페이지에서 마우스 오른쪽을 클릭해서 [Inspect]를 클릭하면 개발자 도구로 진입하게 되는데, 여기서 [Network]탭을 누르면 웹 브라우저와 웹 서버 간 통신하는 내용을 볼 수 있다.
Request, Response에 해당하는 메시지에 어떤 내용이 실려 있는지에 대한 다양한 정보를 확인할 수 있다. 각각의 항목이 어떤 것을 의미하는지는 차근차근 알아봐야할 것 같다.
HTTP 상태코드
HTTP 요청이 성공적으로 완료되었는지 알려주는 응답 상태 코드. 5가지 클래스가 있는데 각 클래스의 첫 숫자에 따라 다음과 같은 내용을 의미한다.
- 1XX (정보) : 요청을 받았으며 프로세스를 계속한다.
- 2XX (성공) : 요청을 성공적으로 받아 인식했고 수용했다.
- 3XX (리다이렉션) : 요청완료를 위해 추가 조치 필요.
- 4XX (클라이언트 오류) : 요청 문법이 잘못되었거나 요청을 처리할 수 없다.
- 5XX (서버 오류) : 서버가 명백히 유효한 요청에 대해 응답에 실패.
자세한 내용은 아래 링크를 통해 확인할 수 있다.
다음에 알아볼 것들
- http 와 https 의 차이
- Cache란(cache-control, pragma)
- 쿠키, 세션, OAuth, JWT, 웹 스토리지...
- 프록시(proxy)
- 네트워크 모니터링 툴(크롬 개발자 도구, wireshark,... )
- REST API
참고자료
'TIL' 카테고리의 다른 글
[TIL] #8. HTML&CSS - 레이아웃 (0) | 2021.03.17 |
---|---|
[TIL] #7. Semantic Web, Semantic Tag (0) | 2021.03.16 |
[TIL] #5. sys.stdin.readline() (0) | 2021.03.03 |
[TIL] #4. sorted()와 sort() (0) | 2021.02.28 |
[TIL] #3. List Comprehension (0) | 2021.02.25 |