TCP/IP 표준 프로토콜(1) HTTP
EunHee-Jeong opened this issue · comments
WWW and HTTP
World Wide Web (WWW, Web)
- 가장 많이 사용되는 인터넷 서비스
- 정보를 HTML 형식으로 표현해 보여줌
- 여기에 사용되는 프로토콜 → HTTP
Hyper-Text Transfer Protocol (HTTP)
- 웹 요청과 응답 메시지를 교환하는 프로토콜
- 요청과 응답 → 보통 클라이언트-서버 간에서 이루어짐
WWW
-
브라우저 (= 클라이언트 프로그램)
-
컨트롤러
-
데이터를 받아들이고 보여줌
-
요청이 어떤
url
이냐에 따라 필요한 프로토콜을 선택해 서버에서 꺼내와 사용함-
프로토콜들 ⇒ HTTP, FTP, SSH, SMTP 등
- 각각의 프로토콜들은 OS 내의 TCP/IP 7계층과 연결되어 동작함
-
-
-
표현 형식
-
정적 ⇒ HTML
-
동적 ⇒ JavaScript, Java 등
-
-
HTTP
-
HyperText Transfer Protocol (줄여서 HTTP)
- 웹 페이지의 요청과 응답을 전달하는 프로토콜임
-
HTTP 클라이언트가 요청을 HTTP 서버에게 보내면, 서버가 응답하는 방식임
-
HTTP 서버의 default 포트 번호 ⇒ 80
- but 잘 사용하지 않음. 요청을 보내고 응답을 받을 때까지만 쓰고 연결을 끊기 때문임
-
HTTP 클라이언트는 시스템(OS)이 주는 임시 할당 포트 번호를 사용함
- 소켓으로 연결 시 → 포트 번호를 통해 연결됨
-
HTTP는 TCP 서비스를 이용함
- TCP 서비스 ⇒ 연결 지향, 신뢰적 프로토콜 ⇒ 데이터의 유실 및 변경 염려가 없음
-
예제
-
HTTP 요청과 응답 메시지 형식
-
Request message
-
Request line
- Method
- GET, PUT, DELETE 등의 서비스를 요청하는 부분
- URL
- 경로 (= 페이지, 그림 등의 주소)
- Version
- HTTP 버전
- cr, lf
Header line
을 구분
- Method
-
Header lines
- 여러 줄이 올 수 있음
- Value
- 헤더의 속성 값이 들어감
-
Blanck line
- 헤더와 바디를 구분지어주는 부분
-
body
- 서버측에 요청할 실질적인 정보가 들어가는 부분
- 옵셔널임
-
-
Response message
-
Status line
-
Header line
- 클라이언트가 요청한 문서의 옵션들이 들어감
- ex - 상태 코드
- 클라이언트가 요청한 문서의 옵션들이 들어감
-
Blank line
-
body
- HTML 문서에 해당되는 부분
-
-
-
HTTP 메시지 method
-
서버측에 보내는 요청에 해당함
-
GET, HEAD, PUT, POST, TRACE, DELETE, CONNECT, OPTIONS가 있음
- 행위 예시
- GET ⇒ 마우스 클릭, 주소 접근 등
- PUT ⇒ 서버에 파일을 올리는 것
- POST ⇒ 내용 수정
- DELETE ⇒ 내용 삭제
- 행위 예시
-
-
HTTP 요청 메시지 헤더 필드
-
User-agent
- 크롬이나 익스플로러의 버전에 해당함
-
Accept-encoding
- 클라이언트가 인식 및 처리할 수 있는 인코딩의 방식을 의미함
- 서버 측에서 응답 시 변환해서 보여줘야 함
-
Cookie
- 서버 측으로 올려 보내는 정보에 해당함
- 처음에 서버에서 클라이언트로 내려온 것을 저장하고 있다가, 헤더에 포함 시켜 보내줌
-
-
HTTP 응답 메시지 헤더 필드
-
이것 보다는 상태가 더 중요함
-
쿠키
- 서버에서 클라이언트 쪽으로 내려 보내는 정보임
- 클라이언트는 이를 브라우저에 저장하고 있다가, request 마다 넣어서 보내줌.
- 서버는 쿠키를 통해 클라이언트를 구분하고 추적할 수 있음 (= 상태를 판단할 수 있음)
-
-
예제
- 문서를 가져오는 예제
-
요청 메시지
GET
메서드를 이용하여 경로usr/bin/image1
의 그림을 가져옴- Request 라인은 GET 메서드와 URL을 보여주고, HTTP 버전 1.1을 사용함
- 헤더의 두 번째 라인은 클라이언트가 GIF나 JPEG 형식을 받을 수 있음을 나타냄
- body가 없음
-
응답 메시지
- 상태 라인과 헤더의 4개 라인이 있음
- 날짜, 서버, 컨텐츠 인코딩 (⇒ MIME), 문서의 길이 등임
- 문서의 body는 헤더 다음의 빈 줄 이후에 옴
- 상태 라인과 헤더의 4개 라인이 있음
-
프락시 서버
Proxy server
란?-
local network 내에 존재
-
서버로부터의 응답을 복사해 캐시에 저장하고, 요청을 보낸 클라이언트에게 보내줌
→ 클라이언트에게는 서버처럼 동작하고, 서버에게는 클라이언트처럼 동작함
-
같은 정보를 캐시에 저장하고 있기 때문에, 동일한 내용 요청 시 서버로 바로 요청하는 것이 아닌 캐시 내에 저장해서 가지고 있던 정보를 클라이언트에게 돌려줌
- 네트워크를 따로 이용하지 않고도 정보에 효율적으로 접근할 수 있으며, 속도를 향상시켜줌
-