1.1 웹은 HTTP로 나타낸다
웹 브라우저 등의 클라이언트(Client)는 주소 입력란에 지정된 URL을 입력하여 웹 서버로부터 리소스를 얻음
이 때 일련의 흐름을 결정하는 것이 HTTP(HyperText Transfer Protocol)
1.2 HTTP는 이렇게 태어났고 성장했다
- 1989년
CERN(유럽 입자 물리학 연구소)에서 여러 문서를 상호간에 관련짓는 하이퍼텍스트(HyperText)에 의해 참조할 수 있는 WWW(World Wide Web)의 기본 개념이 등장
이러한 WWW를 구성하는 기술로서 문서 기술 언어인 HTML(HyperText Markup Language), 문서 전송 프로토콜 HTTP, 문서 주소 지정 방법인 URL(Uniform Resource Locator)이 제안됨 - 1990년 11월
CERN에서 세계 최초의 웹 서버 및 웹 브라우저 개발 - 1993년 1월
NCSA(미국 슈퍼 컴퓨터 응용 연구소)에서 현 웹 브라우저의 선조격인 모자이크(Mosaic) 개발
이 무렵에 CGI(Common Gateway Interface)를 사용할 수 있는 웹 서버도 등장 - 1994, 1995년
넷스케이프 내비게이터(Netscape Navigator) 및 인터넷 익스플로러(Internet Explorer) 출시
이 무렵에 웹 서버 표준중 하나인 아파치(Apache)와 HTML 2.0 발행
- HTTP/0.9
1990년 등장, 정식 사양인 HTTP 1.0 이전이라는 의미 - HTTP/1.0
1996년 5월 정식 사양으로 공개, RFC1945 발행
여전히 많은 서버상에서 현역으로 가동중 - HTTP/1.1
1997년 1월 공개, 현재 가장 많이 사용되며 계속 RFC가 갱신되는중
(2023.2.27 기준 RFC9112가 최신 - https://www.rfc-editor.org/rfc/rfc9112)
- 이후 HTTP/2와 HTTP/3도 도입되어 사용중
HTTP에는 기술 사양을 정한 RFC(Request for Comments) 문서가 존재
일반적으로 RFC 사양에 정해져있는 내용을 애플리케이션에 구현할 경우 사양대로 구현함
기본적으로 HTTP를 사용하는 클라이언트 및 서버는 RFC를 따르지만, 독자적으로 사용하거나 확장하는 경우도 존재
1.3 네트워크의 기본은 TCP/IP
HTTP는 TCP/IP이라는 프로토콜 집합에 속함
이 때 프로토콜이란 서로 다른 하드웨어 및 운영체제 등등의 네트워크 기기들이 서로 통신을 하기 위해 필요한 규칙을 의미
그중 인터넷과 관련된 프로토콜들을 모은 것이 TCP/IP(Transmission Control Protocol/Internet Protocol)
TCP/IP는 애플리케이션 계층 / 트랜스포트 계층 / 네트워크 계층 / 링크 계층의 4계층으로 이루어져있음
이는 계층을 나누어 사양 변경을 쉽게 하고, 설계를 편하게 하기 위함
- 애플리케이션 계층
유저에게 제공되는 애플리케이션에서 사용하는 통신의 움직임을 결정
애플리케이션에는 FTP / DNS 등이 있으며, HTTP도 이 계층에 포함됨 - 트랜스포트 계층
애플리케이션 계층에 네트워크로 접속되어있는 두대의 컴퓨터 사이 데이터 흐름을 제공
TCP(Transmission Control Protocol)와 UDP(User Data Protocol) 두 가지 프로토콜이 존재 - 네트워크 계층(또는 인터넷 계층)
네트워크 상에서 전송되는 데이터의 최소 단위인 패킷의 이동 경로를 다룸 - 링크 계층(또는 데이터 링크 계층 / 네트워크 인터페이스 계층)
디바이스 드라이버 및 네트워크 인터페이스 카드(NIC), 케이블(등의 여러 전송 매체)과 같이 네트워크 접속에 사용되는 하드웨어적 측면을 다룸
TCP/IP 통신시 송신측은 애플리케이션 계층에서 출발하여 링크 계층으로, 수신측은 링크 계층에서 출발하여 애플리케이션 계층으로 데이터가 이동
이 과정에서 헤더를 추가하고 제거하는 캡슐화와 역캡슐화가 진행됨
ex) HTTP 통신
- 송신측 클라이언트의 애플리케이션 계층인 HTTP 클라이언트에서 웹 페이지를 지정한 HTTP 리퀘스트를 지시
- 트랜스포트 계층인 TCP에서는 리퀘스트를 통신하기 쉽게 조각낸 뒤 포트 번호 등의 정보가 들어있는 헤더를 추가
TCP 헤더가 추가된 데이터를 TCP 세그먼트라고 함 - 네트워크 계층인 IP에서는 수신지 MAC 주소가 포함된 헤더를 추가
IP 헤더가 추가된 데이터를 IP 데이터그램이라고 함 - 링크 계층에서 헤더를 추가한 뒤 수신측 서버로 이동
Ethernet 헤더가 추가된 데이터를 네트워크 프레임이라고 함 - 수신측 서버에서는 역으로 링크 계층, 네트워크 계층, 트랜스포트 계층, 애플리케이션 계층을 거치며 헤더를 제거
1.4/1.5 HTTP와 관계가 깊은 프로토콜은 IP/TCP/DNS
IP
IP(Internet Protocol)는 네트워크 계층에 해당하며, 인터넷을 활용하는 대부분의 시스템이 이용
개개의 패킷을 상대방에게 전달하는 역할을 하며 이 때 IP 주소와 MAC(Media Access Control address)가 필요
- IP 주소 : 각 노드에 부여된 주소, 변경가능
- MAC 주소 : 각 네트워크 카드에 할당된 고유주소, 변경 불가능
IP 통신에서는 ARP(Address Resolution Protocol)이라는 프로토콜을 사용해 MAC 주소를 사용하여 목적지를 탐색
ARP는 수신지의 IP 주소를 바탕으로 MAC 주소를 찾아냄
TCP
TCP(Transfer Control Protocol)은 트랜스포트 계층에 해당하며, 신뢰성을 담당
용량이 큰 데이터를 TCP 세그먼트라는 단위 패킷으로 작게 분해하여 관리하는 바이트 스트림 서비스를 제공
이 때 'SYN'과 'ACK'라는 TCP 플래그를 사용한 3-way Handsahaking 방법을 통해 상대에게 데이터가 제대로 전달되었는지를 판별
DNS
DNS(Domain Name System)은 응용 계층에서 도메인 이름 및 IP 주소 이름 확인을 제공
즉, IP 주소 대신 사용하는 이름인 도메인명에서 IP 주소를 조사하거나 반대로 IP 주소로부터 도메인명을 조사하는 서비스를 제공
1.6 각각과 HTTP와의 관계
- 클라이언트에서 도메인명으로 웹페이지를 요청
- DNS가 해당 도메인명에 대한 IP주소를 반환
- 클라이언트의 HTTP가 웹 서버에 보낼 HTTP 메시지인 리퀘스트를 작성
- 클라이언트의 TCP가 해당 HTTP 메시지를 통신하기 쉽도록 분해하여 일련번호를 부여, 패킷을 전송
- IP가 해당 패킷들을 목적지로 중계해가며 전송
- 서버의 TCP가 상대방으로부터 패킷을 수신하여 일련번호를 보고 패킷을 조립
- 서버의 HTTP가 웹 서버에 대한 리퀘스트 내용을 처리
- 이후 리퀘스트의 처리 결과를 마찬가지로 TCP/IP 통신을 순서대로 거치며 클라이언트에 반환
1.7 URI와 URL
URI(Uniform Resource Identifiers)
각각의 키워드느 RFC2396에 따로 정의되어있음
- Uniform
통일된 서식 결정, 여러 종류의 리소스 지정 방법을 같은 맥락에서 구별없이 취급할 수 있도록 함
새로운 스키마(http:, ftp 등)의 도입을 용이하게 함 - Resource
식별 가능한 모든 것, 도큐먼트 파일 뿐만 아니라 이미지 및 서비스 등 다른 것과 구별할 수 있는 모든 것을 리소스라고 함
단일 뿐 아니라 복수의 집합도 리소스로 파악 가능 - Identifier
식별 가능한 것을 참조하는 오브젝트, 식별자라고 불림
즉, URI는 스키마(리소스를 얻기위한 수단에 이름을 붙이는 방법)를 나타내는 리소스를 식별하기 위한 식별자
HTTP의 경우 'http'를 사용하며, 그 외에도 'ftp' / 'mailto' / 'telnet' / 'file' 등 공식 URI 스키마가 30여개 존재
URL(Uniform Resource Locator)
URI의 서브셋으로 리소스의 장소(네트워크 상의 위치)를 나타냄
- 완전 수식 (또는 절대 수식) URL
필요한 정보 전체를 지정
ex) http://user:pass@www.example.jp:80/dir/index.htm?uid=1#ch1- http:// : 스키마, 대문자 소문자는 무시되며 'data:' 혹은 'javascript:'와 같이 데이터나 프로그램 지정 가능
- user:pass : 자격정보(크리덴셜), 서버로부터 리소스를 취득하기 위해 필요한 유저명과 패스워드로 옵션임
- www.example.jp : 서버주소, DNS 이름 또는 IPv4 주소 또는 대괄호로 묶은 IPv6 주소를 지정
- :80 : 서버포트, 서버의 접속 대상이 되는 네트워크 포트 번호, 생략시 디폴트 포트 사용
- /dir/index.htm : 계층적 파일 경로, 특정 리소스 식별을 위한 서버 상의 파일 경로 지정
- uid=1 : 쿼리 문자열, 파일 경로로 지정된 리소스에 임의의 파라미터를 넘겨주기 위해 사용
- ch1 : 프래그먼트 식별자, 취득한 리소스에서 서브 리소스를 가리키기 위해 사용
- 상대 URL
기준 URL에서 상대적 위치를 */image/log.gif와 같이 지정
'개인공부 > Http Network Basic' 카테고리의 다른 글
5장 - HTTP와 연계하는 웹 서버 (0) | 2023.02.28 |
---|---|
4장 - 결과를 전달하는 HTTP 상태 코드 (0) | 2023.02.27 |
3장 - HTTP 정보는 HTTP 메시지에 있다 (0) | 2023.02.27 |
2장 - 간단한 프로토콜 HTTP (0) | 2023.02.27 |
댓글