그림으로 배우는 http network 책을 보고 정리한 HTTP 프로토콜 기본, TCP/IP 4계층
1. 기본 개념
- 클라이언트
- 서버에 리소스를 요청하는 주체 (웹 브라우저 등)
- 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
- 네트워크 흐름 요약
- 클라이언트의 요청 DNS 서버에 IP 주소 확인
- HTTP : 웹 서버에 보낼 HTTP 메시지 작성
- TCP : HTTP 메시지를 패킷으로 분해해 일련 번호 부여해 전송
- IP : 상대가 어디 있는지 찾아 중계해 가면서 배송
- TCP : 전달받은 패킷을 일련번호를 보고 조립
- 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 주소
- 서버 포트: 서버의 접속 대상이 되는 네트워크 포트 번호
- 계층적 파일 패스: 특정 리소스를 식별하기 위해 서버 상의 파일 패스 지정
- 쿼리 문자열: 파일 패스로 지정된 리소스에 파라미터를 넘겨줌
- 프래그먼트 식별자: 취득한 리소스의 서브 리소스를 가리키기 위해 사용
PREVIOUSDB 인덱스란?
NEXT프록시, 게이트웨이