HTTP
Hypertext Transfer Protocol이며, 인터넷의 멀티 미디어 배달부
HTTP는 신뢰성 있는 프로토콜을 사용하기에 데이터가 전송 중 손상되거나 꼬이지않았음을 보장한다.
웹 클라이언트와 서버
리소스
- 정적 리소스: 예시로 텍스트 파일, HTML 파일, JPEG 이미지 파일, AVI 동영상 파일 등이 존재한다.
- 동적 리소스: 사용자, 요청 정보, 시간대에 달라지는 콘텐츠, 정적인 컨텐츠의 반대
미디어 타입
- MIME 타입(MultiPurpose Internet Mail Extensions)
- HTTP 객체 데이터에 MIME 타입을 붙이는데 이를 통해 브라우저는 다룰 수 있는 객체인지 판단한다.
- MIME 타입은 사선으로 구분된 주 타입과 부 타입으로 이루어진 문자열 라벨이다:
{주 타입}/{부 타입}
- 아래 사이트는 MIME 타입의 예시를 볼 수 있다.
- https://developer.mozilla.org/ko/docs/Web/HTTP/MIME_types/Common_types
URI
- 서버 리소스 이름은 통합 자원 식별자(Uniform Resource Identifier)로 불린다.
- 또한 URI는 URL, URN으로 나뉜다.
URL
- 통합 자원 제시자(Uniform Resource Locator)
- 특정 서버의 한 리소스에 대한 구체적인 위치 서술
- 스킴, 인터넷 주소, 리소스로 구분된다.
요즘 시대에 URI는 대부분 UR이다.
URN
- 통합 자원 이름(Uniform Resource Name)
- 위치에 영향 받지않는 리소스의 유일무이한 이름
- 전망이 분명 밝은 방식이지만 인프라 부재로 늦어지고 있다.
따라서 통상적인 관례로 URI와 URL을 같은 의미로 사용한다.
HTTP 트랜잭션
- 웹 서버와 클라이언트가 리소스를 주고 받는 상호작용 덩어리
앞서 얘기한 요청과 응답의 프로세스를 하나의 단위인 트랜잭션이라 말한다.
HTTP 메서드
- 웹 개발자라면 익숙하게 사용하고있는 GET, POST, PUT, DELETE, PATCH 등이 메서드에 속한다.
- 아래는 자세한 정보를 담은 HTTP 메서드 링크이다.
- https://developer.mozilla.org/ko/docs/Web/HTTP/Methods
HTTP 상태 코드
- 서버가 클라이언트에게 보내는 요청에 대한 처리에 대한 정보를 뜻한다.
- 종류가 매우 많기 때문에 아래의 링크를 참고하는게 좋을 것이다.
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
HTTP 메세지
- 요청 메세지(클라이언트 → 서버)
- 응답 메세지(서버 → 클라이언트)
- 시작줄 + 헤더 + 본문으로 이루어져있다.
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages
TCP 커넥션
TCP/IP
- HTTP: 애플리케이션 계층 프로토콜, 네트워크 세부사항은 신경을 쓰지않는다.
- TCP/IP: 오류없는 데이터 전송, 순서에 맞는 전달, 조각나지 않는 데이터 스트림을 보장한다.
- 쉽게 말해 무손실 보장, 도착 순서 보장, 언제든 어떤크기든 전송 가능을 뜻한다.
- TCP와 IP가 층을 이루는 패킷 교환 네트워크 프로토콜의 집합
- TCP 커넥션이 맺어지면 교환되는 메세지가 유실되거나 손상되거나 순서가 결코 바뀌지 않는다.
- IP + PORT 번호를 알아야 TCP 커넥션 가능
HTTP 1.1
- 현재의 HTTP 버전을 뜻한다.
프락시
- 클라이언트 대신 서버에 접근하는 서버
캐시
- 자주 접근하는 데이터를 캐싱하여 서버의 접근 빈도를 줄이고 속도를 높인다.
게이트웨이
- 다른 서버의 중개자로 작동하는 서버
- 게이트웨이는 주로 HTTP 트래픽을 다른 프로토콜로 변환하는데 사용한다.
셀프 테스트
- 통상적인 관례 상 URI와 URL은 같은 의미이다.( O / X )
- HTTP 메세지는 세 부분으로 나눌 수 있다. 3개를 모두 말해보시오.
- TCP/IP가 제공하는 이점 2가지를 말해보시오.
- 현대의 HTTP버전은 0.9가 아닌 1.0이다.( O / X )
- 브라우저 캐시의 장점을 말해보세요.
궁금한 점
- 트랜잭션에 대한 논의가 많은데 데이터베이스의 여러 테이블에 쓰기 동작을 할 경우 트랜잭션과 같이 한 단위로 묶어서 동작한다. 성공적인 요청이 이뤄져야 성공적인 렌더링을 진행하는 것처럼 한 단위의 작업이기에 책에서 트랜잭션이라 한 것 같다. 저는 이렇게 이해했습니다.
- 프록시는 NginX처럼 중간의 거쳐가는 서버로 이해하고 있어서, 웹 서버에 접근하기 이전에 거쳐가는 서버라 이해하고 있다. 실제로 프론트엔드 배포 환경에서만 NginX를 설치한 것 처럼 물리적인 위치는 서버와 같을 필요는 없는 것 같다.
- 게이트 웨이와 터널과 같은 개념이 크게 와닿지는 않아서 조금 더 학습해야할 것 같다.