HTTP: HTTP Network Basic (1) 웹과 네트워크

Lumpen·2024년 5월 8일
0

HTTP

목록 보기
1/8

찾아봐야 할 것들

TCP/IP
UDP
네트워크 계층
HTTP
FTP
DNS

HTTP

웹은 지식 공유를 위해 고안되었다
HTTP 프로토콜을 사용하며
클라이언트 - 서버 - 클라이언트의 흐름을 갖는다
등장 당시 텍스트를 위한 프로토콜이었지만
여러가지 응용 방법으로 기능이 계속 추가되었다
웹이라는 틀을 넘어 다양하게 사용되고 있다

네트워크의 기본은 TCP/IP

네트워크는 TCP/IP 라는 프로토콜에서 움직이고 있다
HTTP 는 그 중 하나의 프로토콜이다

TCP/IP

컴퓨터와 네트워크 기기가 상호 통신하기 위해서는
같은방법으로 통신해야 한다
통신을 위해서 규칙이 필요한데
이러한 규칙을 프로토콜이라고 부른다

프로토콜에는 여러가지가 있다
케이블 규격, IP 주소 지정 방법, 통신 상대를 찾기 위한 방법,
통신이 도달하는 순서, 웹을 표시하는 순서 등

인터넷과 관련된 모든 프로토콜을 모은 것을 TCP/IP 라고 부른다
TCP 와 IP 를 가리켜 TCP/IP 로 합쳐서 부르기도 하지만
IP 프로토콜 통신에서 사용하는 모든 프로토콜을 총칭해서
TCP/IP 라고 부르기도 한다

계층으로 관리하는 TCP/IP

TCP/IP 에서 중요한 개념은 계층(layer)이다
TCP/IP는 4가지 계층으로 나뉘어 있다

  • 애플리케이션 계층
  • 트랜스포트 계층
  • 네트워크 계층
  • 링크 계층

이렇게 계층화된 것은 메리트가 있기 때문이다
객체지향과 같은 느낌이다
모듈별로 캡슐화 하여 메시지로 소통하는
응집도를 높이고 결합도를 낮추는 것

애플리케이션 계층

애플리케이션에서 사용하는 통신의 움직임을 결정한다
TCP/IP 에는 여러가지 공통 애플리케이션이 준비되어 있다
FTP, DNS 등이 애플리케이션의 한 가지
HTTP 도 애플리케이션 계층에 포함된다

트랜스포트 계층

애플리케이션 계층에 네트워크로 접속되어 있는
2대의 컴퓨터 사이의 데이터 흐름을 제공한다
트랜스포트 계층에는 서로 다른 성질을 가진
TCP 와 UDP 두 가지 프로토콜이 있다

네트워크 계층

네트워크 계층은 네트워크 상 패킷의 이동을 다룬다
패킷이란 전송하는 데이터의 최소 단위다
네트워크 계층에서는 경로를 결정하기도 한다
인터넷의 경우에는 전송 도중에 여러 컴퓨터와 네트워크 기기를 거쳐
상대에게 데이터가 전송된다

링크 계층

네트워크에 접속하는 하드웨어적인 면을 다룬다
운영체제가 하드웨어를 제어하기 때문에 디바이스 드라이버와
네트워크 인터페이스 카드를 포함한다
케이블 등과 같이 물리적으로 보이는 부분도 포함한다
하드웨어적 측면은 모두 링크 계층의 역할이다

TCP/IP 통신의 흐름

HTTP 통신은 송신측

  • 클라이언트의 애플리케이션 계층에서 웹 페이지를 보고 싶다라는 HTTP 리퀘스트를 지시한다
    이후
  • 트랜스포트 계층(TCP) 에서는 애플리케이션 계층에서 받은 데이터(HTTP 메시지)를
    통신하기 쉽게 조각내어 안내 번호와 포트 번호를 붙여 네트워크 계층에 전달한다
  • 네트워크 계층(IP) 에서는 수신지 MAC 주소를 추가하여 링크 계층에 전달한다
  • 링크 계층에 전달된 데이터는 송신을 위한 준비가 된 것이다

수신측 서버는 링크 계층에서 데이터를 받아들여
순서대로 애플리케이션 계층까지 전달된다
애플리케이션 계층까지 도착하면
클라이언트가 발신했던 HTTP 리퀘스트 내용을 수신할 수 있게 된다

송신측에서는 각 계층을 거칠 때 반드시 헤더를 추가한다
각 헤더에는 해당 계층마다 계층에 필요한 정보가 담겨있다
수신측에서 각 계층을 거칠 때마다 반드시 해당 계층에서 사용한 헤더를 삭제한다
이렇게 정보를 감싸는 것을 캡슐화라고 부른다

HTTP와 관계가 깊은 프로토콜

TCP/IP 중에서 HTTP 와 관계가 깊은 프로토콜은
IP/TCP/DNS 가 있다

배송을 담당하는 IP

IP 는 네트워크 계층에 해당된다
인터넷을 활용하는 거의 대부분의 시스템이 IP 를 이용하고 있다
IP 는 IP 주소와 별개로 프로토콜의 명칭이다
IP 의 역할은 패킷을 전달하는 것이다
상대방에게 패킷을 전달하기 위해 IP 주소와 MAC 주소가 필요하다
IP 주소는 각 노드에 부여된 주소를 가리키고
MAC 주소는 각 네트워크 카드에 할당된 고유 주소다
IP 주소는 변경 가능하지만 기본적으로 MAC 주소는 변경할 수 없다

통신은 ARP 를 이용하여 MAC 주소에서 한다

IP 통신은 MAC 주소에 의존해서 한다
통신 상대가 같은 랜선 내에 있을 경우는 적고
여러 대의 컴퓨터와 네트워크 기기를 중계해서 상대방에게 도착한다
중계 중에는 계속 다음 MAC 주소를 사용하여 목적지를 찾아간다
이때, ARP 라는 프로토콜이 사용된다
ARP 주소를 해결하기 위한 프로토콜 중 하나로
IP 주소를 바탕으로 MAC 주소를 조사할 수 있다

라우팅

누구도 인터넷 전체를 파악하고 있지는 않다
목적지까지 중계를 하는 도중 컴퓨터와 라우터 등의
네트워크 기기는 목적기 도착하기까지 대략적인 목적지만을 알고 있다
이 시스템을 라우팅이라고 부른다

신뢰성을 담당하는 TCP

TCP 는 계층으로 말하자만 트랜스포트 층에 해당하는데
신뢰성 있는 바이트 스트림 서비스를 제공한다

바이트 스트림 서비스 란 용량이 큰 데이터를 보내기 쉽게
TCP 세그먼트라고 불리는 단위로 작게 분해하여 관리하는 것을 말한다

TCP 는

  1. 대용량의 데이터를 보내기 쉽게 분해 후
  2. 상대에게 보내고
  3. 정확하게 도착했는지 확인하는 역할을 담당한다

데이터를 확실하게 보내는 방법

TCP 는 3way handshaking 방법을 사용한다
패킷을 보내고 바로 끝내는 것이 아니라 잘 보내졌는지 여부를 확인한다
이는 SYN 와 ACK 라는 TCP 플래그를 사용한다

  1. 송신측에서 최초 SYN 플래그로 상대에게 접속함과 동시에 패킷을 보내고
  2. 수신측에서는 SYN/ACK 플래그로 송신측에 접속함과 동시에
    패킷을 수신한 사실을 전한다
  3. 끝으로 ACK 플래그를 보내 패킷 교환이 완료되었음을 전한다

통신이 도중에 끊어지면 TCP 는 그 즉시 같은 수순으로 패킷을 재전송 한다

이름 해결을 담당하는 DNS

DNS 는 HTTP 와 같이 응용 계층 시스템에서
도메인 이름과 IP 주소 이름 확인을 제공한다
컴퓨터는 IP 주소와는 별도로 호스트 이름과 도메인 이름을 붙일 수 있다

송신측에서 DNS 에 도메인 이름으로 IP 주소를 요청하여 응답을 받고
IP 주소로 웹페이지에 접근한다
접근한 IP 주소에 해당하는 MAC 주소로 접근하는 것

URI 와 URL

웹 페이지를 표시하기 위해 입력하는 주소가 URL
URI 는 리소스 식별자

Uniform
통일된 서식을 결정하는 것으로 여러가지 리소스 지정 방법을 같은 맥락에서
구별없이 취급할 수 있게 한다
새로운 스키마 (http: 와 ftp 등) 도입을 용이하게 한다

Resource

리소스는 식별 가능한 모든 것 이라고 정의되어 있다
문서 파일뿐 아니라 이미지 등 모두 리소스이다

Identifier

식별 가능한 것을 참조하는 오브젝트로 식별자라고 불린다
URI 는 스키마를 나타내는 리소스를 식별하기 위한 식별자다
스키마는 리소스에 이름을 붙이는 방법이다

HTTP 의 경우에는 http 를 사용한다
그 외에도 ftp, file 등이 있다

URI 는 리소스를 식별하기 위한 문자열 전반을 나타낸다

URL 은 리소스의 장소 (네트워크 상의 위치) 를 나타낸다

URL 은 URI 의 서브셋이다

URI 와 URL 을 혼용하여 써도 지장은 없다

스키마

http 와 https 같은 스키마를 사용,
리소스를 얻기 위해 사용하는 프로토콜을 지시한다
대소문자는 무시되고 콜론을 하나 붙는다
data: 와 javascript: 같이 데이터와 프로그램을 지정할 수 있다

자격정보(크리덴셜)

서버로부터 리소스를 취득하려면 자격정보가 필요하다
유저명과 패스워드를 지정할 수 있는 옵션이 있다

서버 주소

완전 수식 형식인 URI 에서는 서버 주소를 지정할 필요가 있다
NDS 이름이나 IP 주소를 지정한다

서버 포트

서버의 접속 대상이 되는 네트워크 포트 번호를 지정한다
생략하면 디폴트

계층적 파일 패스

특정 리소스를 식별하기 위해서 서버 상의 파일 패스를 지정한다
UNIX 디렉토리 지정 밥법과 비슷하다

쿼리 문자열(옵션)

파일 패스로 지정된 리소스에 임의 파라미터를 넘겨주기 위해 쿼리 문자열을 사용한다

프래그멘트 식별자(옵션)

주로 취득한 리소스에서 서브 리소스(도큐먼트 중간에 위치)를 가리키기 위해서
프래그멘트 식별자가 사용된다

실제 사양대로 되지 않을 수 있다

HTTP 에는 기술 사양을 정한 몇 가지 RFC 문서가 있다
기본적으로 RFC 사양을 따르지만 간혹 아닌 경우도 있다
RFC 대로 만든 웹 서버는 그렇지 않은 서버에 접근하지 못할 수 있다
RFC 를 따르지 않는 웹의 규모가 큰 경우도 있기 때문에
사양대로 동작하지 않을 수 있다
profile
떠돌이 생활을 하는. 실업자, 부랑 생활을 하는

0개의 댓글