HTTP 프로토콜, TCP/IP 4계층 흐름


그림으로 배우는 http network 책을 보고 정리한 HTTP 프로토콜 기본, TCP/IP 4계층

1. 기본 개념

  1. 클라이언트
    • 서버에 리소스를 요청하는 주체 (웹 브라우저 등)
  2. WWW: World Wide Web
    • 멀리 떨어져 있는 학자들과 지식을 공유하기 위한 시스템으로서 팀 버너스 리에 의해 고안됨
    • HyperText를 열람할 수 있는 클라이언트 애플리케이션의 명칭이었음
    • 문서 기술 언어: HTML - HyperText Markup Language
    • 문서 전송 프로토콜: HTTP - HyperText Transfer Protocol
      • 웹은 HTTP라는 약속을 사용한 통신으로 이루어져 있다.
      • 웹에서 클라이언트 → 서버까지 일련의 흐름을 결정하는 것
    • 문서의 주소를 지정하는 방법: URL - Uniform Resource Locator

2. TCP/IP

인터넷 관련 프로토콜(약속)들을 모은 것.

  • 컴퓨터와 네트워크 기기가 통신하기 위해서는 서로 같은 방법으로 통신해야 한다.
    • 상대를 찾는 방법, 상대에게 이야기를 시작/종료하는 방법, 이야기하는 언어 등의 규칙
    • 케이블 규격, IP 주소 지정 방법, 떨어진 상대를 찾는 방법과 도달하는 순서, 웹 표시 순서 등
    • 서로 다른 하드웨어와 운영체제가 통신하기 위해서는 모든 요소에 규칙이 필요함
  • 인터넷 포함 일반적으로 사용하는 네트워크는 TCP/IP 프로토콜로 움직이며 HTTP도 그중 하나
  • IP 프로토콜을 사용하는 통신에서 사용되고 있는 프로토콜을 총칭해 TCP/IP라고 한다

- TCP/IP 4 계층

TCP/IP 계층(Layer)은 4계층으로 나뉘어져 있다. 사양이 변경될 경우 해당 계층만 바꾸면 된다. 연결되어 있는 부분 외의 각 계층은 자유롭게 설계 가능하다는 장점이 있다.

  • 송신 시 각 계층을 거칠 때 해당 계층에 필요한 정보를 추가한다.
  • 이렇게 정보를 감싸는 것을 캡슐화라고 한다.

  • 애플리케이션 계층: FTP, DNS, HTTP
    • 유저에게 제공되는 애플리케이션에서 사용하는 통신 방법
    • 어느 웹페이지를 보고 싶다는 HTTP request 지시
  • 트랜스포트 계층: TCP, UDP
    • 애플리케이션 계층에 네트워크로 접속되어 있는 2대 컴퓨터 사이의 데이터 흐름을 제공
    • 통신하기 쉽게 조각내어 안내 번호, 포트 번호를 붙여 네트워크 계층에 전달
  • 네트워크 계층
    • 네트워크 상의 패킷(전송하는 데이터의 최소 단위) 이동
    • 수신지 MAC 주소를 추가해 링크 계층에 전달
  • 링크 계층
    • 네트워크에 접속하는 하드웨어적 측면
    • 드라이버, NIC(Network Interface Card), 케이블 등

3. HTTP와 관계가 깊은 IP/TCP/DNS

  • 네트워크 흐름 요약
  1. 클라이언트의 요청 DNS 서버에 IP 주소 확인
  2. HTTP : 웹 서버에 보낼 HTTP 메시지 작성
  3. TCP : HTTP 메시지를 패킷으로 분해해 일련 번호 부여해 전송
  4. IP : 상대가 어디 있는지 찾아 중계해 가면서 배송
  5. TCP : 전달받은 패킷을 일련번호를 보고 조립
  6. HTTP: 웹서버에 대한 리퀘스트 내용을 처리

배송을 담당하는 IP(Internet Protocol)

  • 네트워크 층에 해당
  • 개개의 패킷을 상대방에게 전달하는 역할
    • 전달하려면 IP주소와 MAC(Media Access Control Address) 주소가 필요
    • IP 주소: 각 노드에 부여된 주소 (변경 가능)
    • MAC 주소: 네트워크 카드에 할당된 고유 주소 (변경할 수 없음)
  • IP는 프로토콜의 명칭이며 IP 주소와 혼동하면 안됨
  • IP 통신은 MAC 주소에 의존해 통신한다.
    • 통신 상대가 같은 랜선 내에 있을 경우는 적어, 여러 대의 컴퓨터, 네트워크 기기를 중계해 상대방에 도착
    • 다음 중계할 곳의 다음 MAC 주소를 사용해 목적지를 찾아가는 것 → ARP(Address Resolution Protocol) 프로토콜 사용
  • ARP는 주소를 해결하기 위한 프로토콜 중 하나
    • 수신지의 IP 주소를 바탕으로 MAC주소를 조사할 수 있다.
    • ARP에서 알려준 MAC주소로 보내서 라우터를 거쳐 수신측에 도착한다.
  • 라우팅
    • 네트워크 기기(컴퓨터, 라우터 등)는 대략적인 목적지만 알고 있다.
    • 택배 시스템과 유사. 다음 배송지만 알고 있으면 결과적으로 배송지에 도달함

신뢰성을 담당하는 TCP (Transfer Control Protocol)

  • 트랜스포트 층에 해당
  • 신뢰성 있는 바이트 스트림 서비스를 제공
    • 바이트 스트림 서비스: 용량이 큰 데이터를 보내기 쉽게 TCP segment라 불리는 단위 패킷으로 분해해 관리
    • 신뢰성 있는 서비스: 상대방에게 보내는 서비스
      • Three way handshaking: SYN, ACK라는 TCP 플래그를 사용해 보내졌는지 여부 확인

→ 대용량의 데이터를 보내기 쉽게 분해해 상대에게 보내고, 정확하게 도착했는지 확인하는 역할

이름 해결을 담당하는 DNS (Domain Name System)

  • 애플리케이션 계층에 해당
  • 도메인명 → IP주소, 혹은 그 반대로 조사

4. URI와 URL

URI는 리소스를 식별하기 위한 문자열 전반이지만, URL은 리소스의 장소(네트워크 상 위치)를 나타낸다. 때문에 URL은 URI의 서브셋이다. URI를 URL로 변경해도 아무 지장이 없다.

  • URI: 리소스 식별자
    • Uniform : 통일된 서식
    • Resource : 식별 가능한 모든 것 (도큐먼트, 이미지, 서비스 등)
    • Idenfiers : 리소스를 식별하기 위한 식별자
      • URI 스키마: http, ftp, mailto, telnet, file 등
  • URL: Uniform Resource Locator
  • URL 포맷
    • 서버 주소: DNS나 IP 주소
    • 서버 포트: 서버의 접속 대상이 되는 네트워크 포트 번호
    • 계층적 파일 패스: 특정 리소스를 식별하기 위해 서버 상의 파일 패스 지정
    • 쿼리 문자열: 파일 패스로 지정된 리소스에 파라미터를 넘겨줌
    • 프래그먼트 식별자: 취득한 리소스의 서브 리소스를 가리키기 위해 사용

Yeni

Backend Developer