웹은 HTTP로 나타낸다

웹 브라우저는 지정된 URL에 의지해서 웹 서버로부터 리소스(파일 등의 정보)를 받음

  • 클라이언트(Client) : 서버에 의뢰를 하는 웹 브라우저
  • HTTP(HyperText Transfer Protocol) : 웹의 클라이언트에서 서버까지 일련의 흐름
  • 프로토콜(Protocol) = 약속, 규칙
    • 서로다른 하드웨어, 운영체제 간에 통신하기 위한 규칙
  • 웹은 HTTP라는 프로토콜(약속)을 통해 통신

HTTP 버전

  • HTTP/1.0 : 초기의 사양, 아직 현역으로 사용중
  • HTTP/1.1 : 현재 가장 많이 사용되는 버전
  • HTTP/2.0 : HTTP/1.1의 차세대로 나왔지만 아직 널리 사용되기에는 시간이 걸릴듯

네트워크 기본은 TCP/IP

  • TCP/IP : 인터넷과 관련된 프로토콜들의 모음
    • 응용 계층(Application Layer)
      • 애플리케이션에 사용하는 통신의 움직임 결정
      • FTD, DNS, HTTP 등
    • 전송 계층(Tranport Layer)
      • 응용계층에 네트워크로 접속된 2대 컴퓨터 사이 데이터 흐름 제공
      • TCP(Transmission Control Protocol), UDP(User Data Protocol)
    • 네트워크 계층(Network Layer) = 인터넷 계층
      • 네트워크 상에서 패킷의 이동을 다룸
      • 어떠한 경로(절차)로 패킷(packet)을 보낼지 결정

      패킷(packet) : 전송하는 데이터 최소 단위

    • 데이터 링크 계층(Data Link Layer) = 링크 계층
      • 네트워크에 접속하는 하드웨어적인 면을 다룸
  • 계층화(Layer)의 메리트
    1. 사양이 변경된 해당 계층만 변경 가능(유지보수)
    2. 설계가 편리함 -> 자기 자신 계층만 고려하면 됨, 나머지 부분 고려X

TCP/IP 통신의 흐름

TCP/IP로 통신을 할 때 계층을 순서대로 거쳐 상대와 통신함

송신하는 측은 애플리케이션 계층부터 내려가고 수신하는 측은 반대로 올라감

예시) HTTP

  1. 애플리케이션 계층 HTTP 클라이언트(송신): HTTP리퀘스트요청
  2. 전송 계층 TCP(송신): 안내 번호와 포트 번호를 붙여 네트워크 계층에 전달
  3. 네트워크 계층 IP(송신): 수신지 Mac 주소해서 데이터 링크 계층에 전달
  4. 데이터 링크 계층 네트워크(송신): 네트워크를 통해 송신할 준비
  5. 데이터 링크계층 네트워크(수신): 데이터를 받아들여 순서대로 위의 계층에 전달
  • 송신측 : 각 계층을 거칠 때 마다 헤더 추가(해당 계층에 필요한 정보)
    • 헤더 추가하는 과정을 캡슐화
  • 수신측 : 각 계층을 거칠 때 마다 헤더 삭제

HTTP와 관계가 깊은 프로토콜은 IP/TCP/DNS

IP(Internet Protocol) -> 배송 담당

  • 네트워크 계층(Network Layer)
  • 개개의 패킷을 상대방에게 전달하는 역할
  • IP 주소와 MAC 주소 요소가 중요
    • IP 주소 : 각 노드에 부여된 주소, 변경 가능
    • MAC 주소 : 각 네트워크 카드에 할당된 고유 주소, 변경 불가능
  • MAC 주소에 의존해서 통신
  • ARP : 수신지의 IP 주소를 바탕으로 MAC 주소를 찾는 프로토콜

MAC 주소(Media Access Control Address)
ARP(Address Resolution Protocol)

TCP(Transfer Control Protocol) -> 신뢰성 담당

  • 전송 계층(Tranport Layer)
  • 큰(대용량) 데이터를 보내기 쉽게 TCP 세그먼트(단위 패킷)으로 분해하여 상대에게 보내고,
    정확하게 도착했는지 확인하는 역할 -> 쓰리웨이 핸드쉐이킹 사용

쓰리웨이 핸드쉐이킹(three way handshaking)

  • SYN과 ACK라는 TCP 플래그를 사용
  • 통신이 도중에 끊기면 TCP는 패킷을 재전송함

DNS(Domain Name System) -> 이름 담당

  • 응용 계층(Application Layer)
  • 도메인 이름과 IP 주소 이름 확인을 제공
  • 도메인명에서 IP 주소를 조사 하거나 반대로 IP 주소에서 도메인명을 조사하는 서비스를 제공

URI와 URL

URI(Uniform Resource Identifiers) -> 리소스 식별자

리소스를 식별하기 위해 문자열 전반을 나타냄

  • Uniform
    • 통일(Uniformity)된 서식을 결정
    • 리소스 지정 방법을 같은 맥락에서 구별없이 취급할 수 있음
    • 새로운 스키마(http:, ftp 등) 도입을 용이하게 함
  • Resource
    • 식별 가능한 모든 것
  • Identifier
    • 식별 가능한 것을 참조하는 오브젝트이며 식별자로 불림

URL(Uniform Resource Locator)

리소스(자원)의 주소(네트워크 상의 위치)를 나타냄

  • URI의 하위 종류

URL 포맷

  1. 완전 수식 절대 URI or 완전 수식 절대 URL
    • 전체 경로를 다 기술한 URI
  2. 상대 URL
    • 전체 경로 중 기준 URI부터 상대적 경로 표현

예시) 절대 URI 포맷

  • 스키마(Scheme)
    • http:https:를 사용하여 리소스를 얻기위한 프로토콜
    • 대소문자 무시, 마지막에 콜론(:)
  • 자격정보(Credential) -> 옵션
    • 서버로부터 리소스 취득을 위해 필요
    • 유저명과 패스워드를 지정가능
  • 서버 주소
    • 완전 수식 형식 URI에서 사용
    • DNS이름, IPv4 주소, IPv6 주소 사용
  • 서버포트 -> 옵션
    • 서버의 접속 대상인 네트워크 포트 번호
    • 생략하면 디폴트(default) 포트(80)가 사용
  • 계층적 파일 패스
    • 특정 리소스 식별을 위해 서버 상의 파일 패스를 지정
    • UNIX 디렉토리 지정 방법과 비슷
  • 쿼리 문자열 -> 옵션
    • 파일 패스로 지정된 리소스에 임의의 파라미터를 넘겨주기 위해 사용
  • 프래그멘트 식별자 -> 옵션
    • 주로 취득한 리소스에서 서브 리소스(도큐먼트 중간에 위치)를 가리키기 위해 사용

느낀점

HTTP/1.1의 차기 버전으로 HTTP/2.0이 나왔다고 했는데 어떤게 다른지 궁금해졌다. 기회가 된다면 찾아보고 어떻게 적용되고 사용되는지 눈으로 확인해보면 좋을거 같다는 생각이 들었다. 전체적으로 완벽히 이해가 안되는 부분이 있는데 직접 사용되는 예를 못봐서 그런거 같다.

reference

그림으로 배우는 HTTP & Network Basic
웹과 네트워크의 기본 - 02