[HTTP 완벽 가이드] 1. HTTP: 웹의 기초 - 1장 HTTP개관

yoon Y·2022년 10월 13일
0

1장. HTTP 개략적으로 살펴보기


1. HTTP: 인터넷의 멀티미디어 배달부

  • HTTP는 전 세계의 웹 서버로부터 대량의 정보를 빠르고, 간편하고, 정확세게 사람들의 pc에 설치된 웹 브라우저로 옮겨주는 전송 규칙 체계이다.

2. 웹 클라이언트와 서버

  • 클라이언트는 웹서버에게 Http요청을 보낸다.
  • 웹 서버는 데이터(웹 리소스)를 저장하고, 클라이언트가 요청한 데이터를 http응답으로 돌려준다.
  • 가장 흔한 클라이언트는 웹 브라우저로, 서버에세 http요청을 보내 데이터를 받아 화면에 보여준다.

3. 리소스

  • 리소스는 웹 콘텐츠의 원천으로 서버에서 관리하고 제공한다.
  • 가장 단순한 리소스는 웹 서버 파일 시스템의 정적 파일이다.
    • 텍스트 파일 , html파일, JPEG이미지 등등...
  • 동적 콘텐츠 리소스도 있다.
    • 서버에서 요청에 따라 콘텐츠를 생산하는 프로그램을 이용해 동적 리소스를 가져온다.
    • 사용자가 누구인지, 어떤 정보를 요청헸는지 몇 시인지에 따라 다른 콘텐츠를 생성한다.

3-1. MIME타입

인터넷은 수천가지 데이터 타입을 다루기 때문에 MIME타입이라는 데이터 포맷 라벨을 붙인다.

  • 원래 각기 다른 전자메일 시스템 사이에서 메세지가 오갈 떄 겪는 문제점을 해결하기 위해 설계되었다.
  • 이메일에서 잘 동작했기 때문에 HTTP에서도 멀티미디어 콘텐츠를 기술하고 라벨을 붙이기 위해 채택되었다.
  • 서버에서 받은 데이터가 클라이언트에서 다룰 수 있는 데이터인지 MIME타입을 통해 확인한다.
  • 주 타입과 부 타입이 있고 사선으로 구분한다. (ex- text/html, text/plain, image/jpeg)

3-2. URI

웹 서버 리소스는 각자 이름을 갖고 있기 떄문에 클라이언트가 관심있는 리소스를 지목할 수 있다.
URI는 리소스를 고유하게 식별하고 위치를 지정하는 것으로 URL, URI 두가지 종류가 있다.

  • URL
    • 특정 서버의 한 리소스에 대한 구체적인 위치를 서술한다.
    • 스킴(프로토콜)+서버주소+리소스 로와 이름으로 구성된다.
  • URN
    • 리소스의 위치에 영향 받지 않는 유일무이한(절대적인) 이름 역할을 한다.
    • 리소스의 위치를 옮기거나 복사를 하더라도 고유한 이름을 통해 식별할 수 있다.

4. 트랜잭션

클라이언트와 서버가 http요청, 응답을 하는 상호작용을 의미한다.
http트랜잭션은 요청 명령과 응답 결과로 구성되어있고 http메세지라고 불리는
정형화된 데이터 덩어리를 이용해 이루어진다.

  • 웹브라우저는 시각적으로 풍부한 웹페이지를 가져올 때 대량의 http트랜잭션을 수행한다.
    • 처음에 HTML을 가져오기 위한 트랜잭션 수행
    • 이후 html에 첨부된 리소스들을 가져오기 위한 트랜잭션들 수행(다른 서버에서 가져올 수도 있음)
  • 요청 시에 http메서드를 같이 전달해 서버에게 어떤 동작이 취해져야하는지 알려준다.
  • 응답 시에 상태 코드를 전달해 요청의 성공 유무와 사유를 알려준다.
  • http메세지는 시작줄 - 헤더 - 본문으로 구성된다.
    • 시작줄: 요청 시 무엇을 해야하는지, 응답 시 무슨일이 일어났는지 나타낸다. (text만)
    • 헤더: 이름:값 형태의 필드로 구성된다. (text만)
    • 본문: 클라이언트, 서버로 전달할 데이터로 어떤 종류의 데이터든 들어갈 수 있다.

5. TCP커넥션

TCP/IP란?

  • 인터넷 통신과 관련한 프로토콜들의 집합. === 인터넷 표준 프로토콜
  • 컴퓨터에서 데이터가 들어오고 나가는 과정을 4계층으로 나누고 계층 별로 프로토콜을 그룹짓는다. (4. 애플리케이션(HTTP), 3. 전송(TCP), 2. 인터넷(IP), 1.네트워크 엑세스)

참고 링크

http는 애플리케이션 계층 프로토콜로 네트워크 통신의 핵심적인 세부 사항에 대해서 신경 쓰지 않고,
데이터 전송은 신뢰성 있는 인터넷 전송 프로토콜인 TCP에게 맡긴다.

실제 데이터를 전송하기 전에 클라이언트와 서버 사이에 TCP커넥션을 맺어야한다.
이를 위해서는 서버의 ip주소와 그 서버에서 실행중인 프로그램의 포트 번호를 알아야 한다.

  1. 브라우저 주소창에 url을 입력하면 브라우저가 서버 도메인주소와 포트번호를 추출한다.
  2. DNS를 통해 도메인 주소를 ip로 변경하고 포트번호와 함께 전송계층(TCP)로 전달한다.
  3. 전달된 ip와 포트번호를 이용해 서버와 클라이언트가 TCP커넥션을 맺는다.
  4. 브라우저는 서버에 http요청을 보낸다.
  5. 서버는 브라우저에 HTTP응답을 돌려준다.
  6. 커넥션이 끊기면 브라우저는 문서를 보여준다.
profile
#프론트엔드

0개의 댓글