클라이언트는 입력란에 지정된 URL에 의지해서 웹 서버에게 의뢰를 하고, 리소스를 얻는다.
이때 클라이언트~서버까지의 흐름을 HTTP 프로토콜이 결정한다.
멀리 떨어져 있는 팀원과 지식을 공용하기 위해 WWW가 고안되었으며, 이후 일련의 시스템 명칭으로 고정되며 발전. HTTP는 초기에 텍스트 전송을 위한 프로토콜이었으나 현재 웹을 넘어 다양한 분야에서 응용되고 있다.
일반적인 네트워크는 TCP/IP 프로토콜을 이용하며, HTTP는 그 중 하나이다.
프로토콜
: 서로 다른 하드웨어와 OS간 통신을 하기 위해 필요한 규칙
TCP/IP
: 인터넷과 관련된 프로토콜을 모은 것.
: 4가지 계층으로 나뉘며, 각 계층은 계층이 연결되어 있는 부분만 결정되어 있어 내부 구조를 자유롭게 설계할 수 있다. 이러한 계층 구조는 아래 두 가지 장점을 갖는다.
(1) 변경이 필요할 때 특정 계층만 바꾸면 된다.
(2) 설계를 편하게 할 수 있다.
TCP/IP 4계층
(1) 애플리케이션 계층 : 유저에게 제공되는 애플리케이션에서 사용하는 통신의 움직임 담당.
(Ex. FTP, DNS, HTTP)
(2) 트랜스포트 계층 : 네트워크로 연결된 둘 이상의 컴퓨터 사이의 데이터 흐름 제공.
(Ex. TCP, UDP)
(3) 네트워크 계층 (= 인터넷 계층)
: 네트워크 상에서 패킷의 이동을 다룬다.
: 여러가지 경로 선택지에서 어떻게 상대 컴퓨터에게 패킷을 보낼지 하나의 길을 정한다.
(4) 링크 계층 (=데이터 링크 계층 / 네트워크 인터페이스 계층)
: 네트워크에 접속하는 하드웨어적 면을 다룬다.
: 디바이스 드라이버, 네트워크 인터페이스 카드(NIC), 케이블 등 물리적으로 보이는 하드웨어적 측면을 모두 포함한다.
TCP/IP 통신의 흐름 + 캡슐화
(1) 송신 흐름 : 애플리케이션 - 트랜스포트 - 네트워크 - 링크
: 각 계층을 거칠 때 헤더로 불려지는 해당 계층마다 해당 계층에서 필요한 정보 추가
(2) 수신 흐름 : 링크 - 네트워크 - 트랜스포트 - 애플리케이션
: 각 계층을 거칠 때 헤더로 불려지는 해당 계층마다 해당 계층에서 사용한 정보 삭제
HTTP와 관련이 깊은 TCP/IP의 세 가지 프로토콜
(1) IP 주소 : 각 노드에 부여된 주소. 변경 가능하며, MAC 주소에 의존해 통신한다.
(2) MAC 주소 : 각 네트워크 카드에 할당된 고유 주소. 변경할 수 없다.
쓰리웨이 핸드셰이킹
SYN, ACK라는 TCP 플래그를 사용해 상대에게 패킷이 잘 보내졌는지 여부를 확인한다.(1) 송신 시 SYN 플래그로 상대에게 접속하고 패킷 전송
(2) 수신 시 ACK 플래그로 송신측에 접속하고 패킷 수신 사실을 전달
(3) 송신측이 ACK 플래그를 보내 패킷 교환이 완료되었음을 전달
이때 통신이 도중에 끊어지면 TCP는 동시에 같은 수순으로 패킷을 재전송한다.
URL (Uniform Resource Locator)
: 웹 페이지를 표시하기 위해 입력하는 주소
: 리소스를 식별하기 위해 문자열 전반을 나타낸다.
URI (Uniform Resource Identifiers)
: 스키마를 나타내는 리소스를 식별하기 위한 식별자
※ 스키마 - 리소스를 얻기 위한 수단에 이름을 붙이는 방법
: 리소스의 장소(=네트워크 상의 위치)를 나타낸다.
URL 포맷
(1) 상대 URL : 브라우저 기준 URI에서 상대적 위치를 지정
(2) 완전 수식 절대 URI & URL : 필요한 정보를 전체 저장
절대 URI 포맷
(1) 자격 정보 (크리덴셜) : 서버에서 리소스를 취득하기 위해 사용.
(2) 서버 주소 : DNS 주소 또는 IPv4, IPv6 주소를 대괄호로 묶어서 지정
(3) 서버 포트 : 서버 접속 대상인 네트워크 포트 번호. 생략시 디폴트 포트
(4) 계층적 파일 패스 : 특정 리소스 식별하기 위해 사용
(5) 쿼리 문자열 : 파일 패스로 지정된 리소스에 파라미터 넘겨주기 위해 사용. 옵션
(6) 프래그먼트 식별자 : 취득 리소스에서 서브 리소스를 가리키기 위해 사용. 옵션