강의 : 2) 웹의 동작 (HTTP 프로토콜 이해)
1. 웹에서 사용하는 언어 - HTTP (Hyper Text Transfer Protocol)
정리: 서버와 클라이언트가 인터넷 상에서 데이터를 주고 받기 위한 프로토콜
(1) 특징
- 어떤 종류의 데이터도 전송 가능 : 이미지, 동영상, 오디오, 텍스트
- 서버/클라이언트 모델을 따름 : 클라이언트가 서버에게 요청을 보내면, 서버가 클라이언트에게 응답을 보내는 형태
- 불특정 다수를 대상으로 하는 서비스에 적합
- 클라이언트와 서버가 계속 연결된 형태가 아니기 때문에, 클라이언트와 서버 간 최대 연결 수보다 훨씬 많은 요청과 응답을 처리 가능
- 클라이언트와 서버가 응답 후 연결을 끊어버리는 것을 stateless라고 하는데, 이 때문에 클라이언트의 이전 상황을 알 수가 없음
(클라이언트 - 서버의 연결 -> 클라이언트의 요청 -> 서버의 응답 -> 서버에서 연결 해제)
- stateless 한 특성 때문에 정보 유지를 위해 Cookie와 같은 기술이 등장
(2) 역사
CERN의 팀 버너스 리의 팀이 HTML과 웹 브라우저, 웹 브라우저 관련기술, HTTP를 발명!!
HTTP 0.9 가 최초 문서화 된 HTTP 버전
지금은 HTTP v 2.0까지 나온 상태이지만 현재(?) 많이 사용되고 있는 버전은 HTTP v1.1이라고 한다.
(3) 클라이언트 요청 데이터 포맷
1) 요청 헤더
GET /servlet/qieru?a=10&b=90 HTTP/1.1 Host: www.sk.com User-agent: mozilla/4.0 Accept-language: kr |
* 첫 번째줄 구성요소 : GET /servlet/qieru?a=10&b=90 HTTP/1.1
구성요소 | 내용 | EX |
요청 메소드 | 메소드에 따라 필요한 요청 자원이 바디에 붙어서 간다. 이경우는 GET이기 때문에 요청바디가 비어있다. | GET |
요청 URI | 요청하는 자원의 위치를 명시해주는 부분 | /servlet/qieru?a=10&b=90 HTTP/1.1 |
HTTP 프로토콜 버전 | 웹 브라우저에서 사용하는 프로토콜의 버전을 명시 | HTTP/1.1 |
* 두 번째 줄 부터 헤더 정보 여러 줄:
{
헤더 명 : 헤더 값,
헤더 명 : 헤더 값
}
2) 빈줄 부분
3) 요청 바디
GET메소드라서 비어있음 |
(4) 서버의 응답 데이터 포멧
1) 응답 헤더
* 첫 번째줄 구성 요소
첫 번째 줄 구성요소 | 내용 | |
응답 HTTP 프로토콜의 버전 | HTTP/1.1 | |
응답 코드 | 200 | |
응답 메시지 | OK |
* 두 번째 줄 부터 응답 헤더 여러 줄
{
헤더 명 : 헤더 값,
헤더 명 : 헤더 값
}
{
Date: 날짜
Server: Apache/1.3.0(Unix)
Last-Modified: 날짜
Content-Length:
Content-Type:
}
* 빈줄 부분
2) 응답 바디 : 실제 응답 리소스 데이터
2. 인터넷(네트워크 통신)의 이해
- WWW(World Wide Web, 웹)은 인터넷의 기능 중 하나임.
- 하나의 컴푸터에 여러 개의 서버가 동작 가능하고, 각각의 서버는 포트를 통해 구분되어 동작
ex) 웹: 80, 이메일: 25...
- 인터넷은 보통 TCP/IP라는 약속으로 연결되어 있음.
- 인터넷의 한 종류인 웹에서는 서로 통신하기 위해 http를 사용 : 사실은 application layer에서 http 프로토콜, transport layer에서는 tcp/ip 프로토콜 사용. 결국 둘다 사용.
3. URL ( Uniform Resource Locater)
- 정리: 웹 상에서 여러 자원들(이미지, 동영상 등)의 위치를 나타내기 위해 사용
- 구성
(1) 접근 프로토콜
(2) 자원이 있는 서버의 IP 주소 / 도메인 주소 (= 서버 컴퓨터 주소) + 포트번호 (해당 서버 컴퓨터 내의 서버 포트 번호)
(3) 문서의 경로와 문서 이름
'Studying > 아직 미지정' 카테고리의 다른 글
웹 강좌 기록 2 - 웹 프론트엔드, 웹 백 엔드 (0) | 2019.10.20 |
---|---|
Redux의 reducer함수, store, createStore (0) | 2019.09.25 |
React Redux를 사용하는 이유, mapStateToProps, mapDispatchToProps (0) | 2019.09.25 |
CSRF 공격, Django CSRF 공격 방지 모듈 제 (0) | 2019.09.23 |