1HOON
논리적 코딩
1HOON
전체 방문자
오늘
어제
  • HOME (186)
    • ☕️ JAVA (28)
      • WhiteShip Java LIVE Study (6)
      • Effective JAVA (10)
    • 🔮 KOTLIN (4)
    • 🌱 SPRING (51)
      • 스프링 인 액션 (22)
      • JPA (18)
    • ☕️ JAVASCRIPT (6)
    • 📃 DATABASE (40)
      • ORACLE (37)
      • MSSQL (2)
    • 🐧 LINUX (4)
    • 🐳 DOCKER (5)
    • 🐙 KUBERNETES (4)
    • 🏗️ ARCHITECTURE (8)
    • 📦 ETC (26)
      • TOY PROJECT (5)
      • RECRUIT (1)
      • 그냥 쓰고 싶어서요 (14)
    • 🤿 DEEP DIVE (1)
    • 🚽 Deprecated (9)
      • PYTHON (3)
      • AWS (2)
      • HTTP 완벽가이드 (3)
      • WEB (1)

블로그 메뉴

  • 홈
  • 방명록
  • 관리

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
1HOON
🚽 Deprecated/HTTP 완벽가이드

1장 : HTTP 개관

🚽 Deprecated/HTTP 완벽가이드

1장 : HTTP 개관

2018. 12. 16. 23:22

1장 HTTP 개관


미디어 타입

- HTTP는 웹에서 전송되는 객체 각각에 MIME 타입이라는 데이터 포맷 라벨을 붙인다. 

- MIME 타입은 '/' 으로 구분된 주 타입과 부 타입으로 이루어진 문자열 라벨이다. MIME 타입의 목록은 Mozilla MDN 에서 확인 가능하다.


URI(Uniform Resource Identifier)

- URI는 정보 리소스를 고유하게 식별하고 위치를 지정하며, URL과 URN으로 나뉜다.

- URL(Uniform Resource Locator, 통합 자원 지시자)

* 특정 서버의 한 리소스에 따라 구체적인 위치를 서술한다. 그렇기 때문에 리소스가 정확히 어디에 있고 어떻게 접근할 수 있는지 알려준다.

* 대부분의 URL은 세 부분으로 이루어진 표준 포맷을 따른다.

https://logical-code.tistory.com/103

① 스킴(Scheme) : 리소스에 접근하기 위해 사용되는 프로토콜. 보통 http:// 였으나 보안 이슈로 인한 SSL 적용으로 https:// 가 많다.

② 서버의 인터넷 주소

③ 웹 서버의 리소스

* 대부분의 URI는 URL이다.

- URN(Uniform Resource Name)

* 콘텐츠를 이루는 한 리소스에 대해 그 리소스의 위치에 영향을 받지 않는 유일무이한 이름

* 리소스를 옮기더라도 문제없이 동작한다.

* 리소스의 이름을 유지하는 한 여러 종류의 프로토콜로 접근해도 문제가 없다.


메서드

- 모든 HTTP 요청 메시지는 한 개의 메서드를 갖는다.

- 보통 아래 메서드를 이용한다.

 

 HTTP 메서드

 설명

 

 GET

 서버에서 클라이언트로 지정한 리소스를 보낸다.

 

 PUT

 클라이언트에서 서버로 보낸 데이터를 지정한 이름의 리소스로 저장한다.

 

 DELETE

 지정한 리소스를 서버에서 삭제한다.

 

 POST

 클라이언트 데이터를 서버 게이트웨이 애플리케이션으로 보낸다.

 

 HEAD

 지정한 리소스에 대한 응답에서 HTTP 헤더 부분만 보낸다.


메시지

- 시작줄 : 요청이라면 무엇을 해야하는지, 응답이라면 무슨 일이 일어났는지 나타낸다.

- 헤더

* 각 헤더 필드는 ':' 으로 구분되어있는 하나의 이름과 하나의 값으로 구성된다.

* 헤더 필드를 추가하려면 그냥 한 줄을 더하기만 하면 된다.

* 빈 줄로 끝난다.

- 본문

* 요청의 본문은 웹 서버로 데이터를 실어 보내고 응답의 본문은 클라이언트로 데이터를반환한다.

* 헤더와 달리 임의의 이진 데이터를 포함할 수 있다.(이미지, 비디오, 오디오 등)


TCP/IP

- HTTP는 애플리케이션 계층 프로토콜이다.

- TCP/IP는 아래 세가지 항목을 보장한다.

* 오류 없는 데이터 전송

* 순서에 맞는 전달 → 데이터는 언제나 보낸 순서대로 도착한다.)

* 조각나지 않는 데이터 스트림

- TCP와 IP가 층을 이루는 패킷 교환 네트워크 프로토콜의 집합

- 일단 TCP 커넥션이 맺어지면 클라이언트와 서버 간의 교환되는 메시지가 없어지거나 손상되거나 순서가 뒤바뀌어 수신되는 일은 결코 없다.

 

HTTP 

 애플리케이션 계층

 

TCP

 전송 계층

 

IP

 네트워크 계층

 

네트워크를 위한 링크 인터페이스

 데이터 링크 계층

 

물리적인 네트워크 하드웨어

 물리 계층

- HTTP를 이용해서 서버의 HTML 리소슬르 보여주는 과정

1. 서버의 URL에서 호스트명을 추출한다.

2. 서버의 호스트명을 IP로 변환한다.

3. URL에 포트번호가 있다면 추출한다.

4. 웹 서버와 TCP 커넥션을 맺는다.

5. 서버에 HTTP 요청을 보낸다.

6. 서버로부터 HTTP 응답을 받는다.

7. 커넥션이 닫히면 문서를 보여준다.


웹의 구성요소

- 프락시

* 클라이언트와 서버 사이에 위치한 HTTP 중개자

* 클라이언트와 서버 사이에 위치해 클라이언트의 모든 HTTP 요청을 받아 서버에 전달한다.

* 주로 보안을 위해 사용되며 요청과 응답을 필터링한다.

- 캐시

* 많이 찾는 웹 페이지를 클라이언트 가까이 보관하는 HTTP 창고

* 웹 캐시와 캐시 프락시는 자신을 거쳐가는 문서들 중 자주 찾는 것의 사본을 저장해두는 HTTP 프락시 서버

* 다음번에 클라이언트가 같은 문서를 요청하면 그 캐시가 갖고있는 사본을 받을 수 있다.

* 클라이언트는 멀리 떨어진 웹 서버보다 근처의 캐시에서 훨씬 더 빨리 문서를 다운받을 수 있다.

- 게이트웨이

* 다른 서버들의 중개자로 동작하는 특별한 서버

* 주로 HTTP 트래픽을 다른 프로토콜로 변환하기 위해 사용된다.

* 스스로가 리소스를 갖는 진짜 서버인 것처럼 요청을 다루기 때문에 클라이언트는 자신이 게이트웨이와 통신하고 있음을 알아채지 못한다.

- 터널

* 단순히 HTTP 통신을 전달하기만 하는 특별한 프락시

* 주로 비 HTTP 데이터를 하나 이상의 HTTP 연결을 통해 그대로 전송해주기 위해 사용된다.

* SSL에 이용되며, HTTP/SSL 터널은 HTTP 요청을 받아들여 목적지의 주소와 포트 번호로 커넥션을 맺고 이후에는 암호화된 SSL 트래픽을 HTTP 채널을 통해 목적지 서버로 전송할 수 있게 된다.



Git-hub (https://github.com/ParkIlHoon/logical-code/blob/master/HTTP%20The%20Definitive%20Guide/Chapter01/Opening%20of%20HTTP.md)

반응형
저작자표시 비영리 변경금지

'🚽 Deprecated > HTTP 완벽가이드' 카테고리의 다른 글

4장 : 커넥션 관리  (0) 2019.08.25
2장 : URL과 리소스  (0) 2018.12.24
  • 미디어 타입
  • URI(Uniform Resource Identifier)
  • 메서드
  • 메시지
  • TCP/IP
  • 웹의 구성요소
'🚽 Deprecated/HTTP 완벽가이드' 카테고리의 다른 글
  • 4장 : 커넥션 관리
  • 2장 : URL과 리소스
1HOON
1HOON

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.