[모두의네트워크&그림으로 배우는HTTP&Network] 5주차 공부

김서영·2021년 10월 10일
0

네트워크 스터디

목록 보기
5/12


HTTP와 연계하는 웹 서버

1대로 멀티 도메인을 가능하게 하는 가상 호스트

HTTP/1.1에서는 하나의 HTTP 서버에 여러 개의 웹 사이트를 실행할 수 있음. 이를 위해 가상 호스트(Virtual Host)라는 기능을 사용.

HTTP를 사용해 클라이언트가 서버에 액세스할 때는 www.hackr.jp와 같이 호스트 명이나 도메인 명이 자주 사용.
인터넷에서 도메인명은 DNS에 의해 IP 주소로 변환되고 액세스.

같은 IP 주소에서 다른 호스트명과 도메인 명을 가진 여러 개의 웹 사이트가 실행되고 있는 가상 호스트의 시스템이 있기 때문에, HTTP 리퀘스트를 보내는 경우에는 호스트명과 도메인 명을 포함한 URL을 지정하거나, 반드시 Host 헤더 필드에서 지정.

프록시

서버와 클라이언트의 양쪽 역할을 하는 중계 프로그램.
클라이언트로부터의 리퀘스트를 서버에 전송, 서버로부터의 리스폰스를 클라이언트에 전송.

클라이언트로부터 받은 리퀘스트 URL을 변경하지 않고 그 다음의 리소스를 가지고 있는 서버에 보내는데 리소스 본체를 가진 서버를 오리진 서버(Origin Server)라 부름.

HTTP 통신을 할 때, 프록시 서버를 여러 대 경유하는 것도 가능. 체인과 같이 여러 대 경유해서 리퀘스트랑 리스폰스를 중계함. 중계할 땐, Via 헤더 필드에 경유한 호스트 정보를 추가해야 함.

프록시를 사용하는 이유

  1. 캐시를 사용해서 네트워크 대역 등을 효율적으로 사용하기 위해
  2. 조직 내에 특정 웹 사이트에 대한 액세스 제한, 액세스 로그를 획득하는 정책을 지키기 위해

프록시 기준

캐싱 프록시(Cashing Proxy)

프록시로 리스폰스를 중계하는 때에는 프록시 서버 상에 리소스 캐시를 보존해 두는 타입의 프록시. 프록시에 다시 같은 리소스에 리퀘스트가 온 경우, 오리진 서버로부터 리소스를 획득하는 것이 아니라 캐시를 리스폰스로서 되돌려줌.

투명 프록시(Transparent Proxy)

프록시로 리퀘스트와 리스폰스를 중계를 할 때 메세지 변경을 하지 않는 타입의 프록시.반대로 메세지에 변경을 가하는 타입의 프록시를 비투과 프록시라고 함.

게이트웨이

다른 서버를 중계하는 서버. 클라이언트로부터 수신한 리퀘스트를 리소스를 보유한 서버인 것처럼 수신. 경우에 따라 클라이언트는 상대가 게이트웨이라는 것을 알지 못하는 경우도 있음.

프록시와 매우 유사. 게이트웨이의 경우, 그 다음에 있는 서버가 HTTP 서버 이외의 서비스를 제공하는 서버. 클라이언트와 게이트웨이 사이를 암호화하는 등으로 안전하게 접속함으로써 통신의 안전성을 높이는 역할 등을 함. 예를 들어, 게이트웨이는 데이터베이스에 접속해 SQL 쿼리를 사용해 데이터를 얻는 곳에 이용할 수 있음.

터널

요구에 따라서 다른 서버와의 통신 경로를 확립. 이 때, 클라이언트는 SSL 같은 암호화 통신을 통해 서버와 안전하게 통신을 하기 위해 사용. 서로 떨어진 두 대의 클라이언트와 서버 사이를 중계하며 접속을 주선하는 중계 프로그램.

터널 자체는 HTTP 리퀘스트를 해석하지 않음. 터널은 통신하고 있는 양쪽 끝의 접속이 끊어질 때 종료.

리소스를 보관하는 캐시

캐시(Cache)는 프록시 서버와 클라이언트의 로컬 디스크에 보관된 리소스의 사본을 가르킴. 캐시를 사용하면 리소스를 가진 서버에의 액세스를 줄이는 것이 가능하기 때문에 통신량과 통신 시간을 절약할 수 있음. 캐시 서버는 프록시 서버의 하나로 캐싱 프록시로 분류.

캐시는 유효 기간이 있어 클라이언트의 요구나 캐시의 유효 기간 등에 의해 오리진 서버에 리소스의 유효성을 확인하거나 새로운 리소스를 다시 획득하러 감.

캐시 서버 뿐만 아니라, 클라이언트가 사용하고 있는 브라우저에서도 캐시를 가질 수 있음. 인터넷 임시 파일이라고 부름. 브라우저가 유효한 캐시를 가지고 있는 경우, 같은 리소스의 액세스는 서버에 액세스하지 않고 로컬 디스크로부터 불러옴.

HTTP 헤더

메세지 헤더
개행 문자(CR+LF)
메세지 바디

메세지 헤더에는 클라이언트와 서버 처리에 필요한 주요 정보가 거의 다 들어 있음.
메세지 바디에는 사용자와 리소스를 필요로 하는 정보가 있음.

리퀘스트의 HTTP 메세지

리퀘스트 라인
리퀘스트 헤더 필드
일반 헤더 필드
엔티티 헤더 필드
그 외

리스폰스의 HTTP 메세지

상태 라인
리스폰스 헤더 필드
일반 헤더 필드
엔티티 헤더 필드
그 외
## HTTP 헤더 필드 HTTP 헤더 필드는 HTTP 메세지를 구성하는 요소의 하나. HTTP 프로콜 중에서 클라이언트와 서버 간의 통신에서 리퀘스트에도 리스폰스에도 사용됨. 부가적으로 중요한 정보를 전달하는 역할. 메세지 바디의 크기나 사용하고 있는 언어, 인증 정보 등을 브라우저나 서버에 제공하기 위해 사용.

HTTP 헤더 필드의 구조

헤더 필드 명 : 필드 값
Content-Type:text/html
Keep-Alive:timeout=15,max=100

4종류의 HTTP 헤더 필드

일반적 헤더 필드(General Header Fields)

리퀘스트 메세지와 리스폰스 메세지 둘 다 사용하는 헤더.

리퀘스트 헤더 필드(Request Header Fields)

클라이언트 측에서 서버 측으로 송신된 리퀘스트 메세지에 사용되는 헤더. 리퀘스트의 부가적 정보와 클라이언트의 정보, 리스폰스의 콘텐츠에 관한 우선 순위 등을 부가.

리스폰스 헤더 필드(Response Header Fields)

서버 측에서 클라이언트 측으로 송신한 리스폰스 메세지에 사용되는 헤더. 리스폰스의 정보와 서버의 정보, 클라이언트의 추가 정보 요구 등을 부가.

엔티티 헤더 필드(Entity Header Fields)

리퀘스트 메세지와 리스폰스 메세지에 포함된 엔티티에 사용되는 헤더. 콘텐츠 갱신 시간 등의 엔티티에 관한 정보 부가.

End-to-end 헤더와 Hop-by-hop 헤더

End-to-end 헤더

리퀘스트나 리스폰스의 최종 수신자에게 전송. 캐시에서 구축된 리스폰스 중 보존되야 하고, 다시 전송되지 않으면 안됨.

Hop-by-hop 헤더

한 번 전송에 대해서만 유효하고 캐시와 프록시에 의해 전송되지 않는 것도 있음. HTTP/1.1과 그 이후에서 사용되는 Hop-by-hop 헤더는 Connection 헤더 필드에 열거.

  • Connection
  • Keep-Alive
  • Proxy-Authenticate
  • Proxy-Authorization
  • Trailer
  • TE
  • Transfer-Encoding
  • Upgrade

네트워크 계층: 목적지에 데이터 전달하기

네트워크 계층의 역할은 네트워크 간의 통신을 가능하게 하는 것.
이에는 라우터라는 네트워크 장비가 필요.

라우터

가정에서 라우터를 설치하면 인터넷에 연결할 수 있고, 멀리 해외로도 데이터를 보낼 수 있음. 라우터는 데이터의 목적지가 정해지면 해당 목적지까지 어떤 경로로 가는 것이 좋은 지를 알려주는 기능을 함.

이때 필요한 것이 IP 주소. IP 주소는 어떤 네트워크의 어떤 컴퓨터인지를 구분할 수 있도록 하는 주소.

IP 주소로 목적지를 지정하는 것뿐만 아니라 데이터를 어떤 경로로 보낼 지도 결정함. 목적지 IP 주소까지 어떤 경로로 데이터를 보낼지 결정하는 것을 라우팅(routing)이라 함.

라우팅 테이블(routing table)이 있어 경로 정보를 등록.

IP

네트워크 계층에는 IP(Internet Protocol)라는 프로토콜이 있음. 네트워크 계층에서는 캡슐화할 때 IP헤더를 붙임.

1. 버전2. 헤더 길이3. 서비스 유형4. 전체 패킷 길이
5. ID (일련번호)6. 조각 상태7. 조각의 위치
8. TTL9. 프로토콜10. 헤더 체크섬
11. 출발지 IP주소(32비트)
12. 도착지 IP주소(32비트)

데이터에 IP 헤더가 추가된 것을 IP 패킷이라고 함.

IP 주소의 구조

IP 주소는 인터넷 서비스 제공자 (ISP)에게 받을 수 있음. IP 버전에는 IPv4(32비트)와 IPv6(128비트)가 있음. IPv6가 IPv4보다 더 많은 IP 주소를 만듦.

공인 IP 주소와 사설 IP 주소가 있는데 인터넷에 직접 연결되는 컴퓨터나 라우터에는 공인 IP 주소를 할당하고, 회사나 가정의 랜에 있는 컴퓨터는 사설 IP 주소를 할당. 공인 IP 주소는 ISP가 제공.

공인 IP 주소를 아끼기 위해, 공인 IP는 라우터에만 할당. 랜 안에 있는 컴퓨터에는 랜의 네트워크 관리자가 자유롭게 사설 IP 주소를 할당하거나 라우터의 DHCP 기능을 사용하여 주소를 자동으로 할당.

MAC 주소 VS IP 주소

MAC 주소는 48비트로 구분하기 쉽도록 16진수로 표시.
IP 주소는 32비트로 구분하기 쉽도록 10진수로 표시.

IP 주소의 클래스 구조

IPv4의 IP 주소는 32비트. 비트로 구분하지만 네트워크 ID를 크게 만들거나 호스트 ID를 작게 만들어 네트워크 크기를 조정할 수도 있음. 네트워크 크기는 클래스 라는 개념으로 구분.

클래스 이름내용클래스 이름내용
A 클래스대규모 네트워크 주소D 클래스멀티캐스트(multicast) 주소
B 클래스중형 네트워크 주소E 클래스연구 및 특수용도 주소
C 클래스소규모 네트워크 주소

A 클래스는 처음 8비트가 네트워크 ID, 다음 24비트가 호스트 ID
1.0.0.0 ~ 127.255.255.255

B 클래스는 처음 16비트가 네트워크 ID, 다음 16비트가 호스트 ID
128.0.0.0 ~ 191.255.255.255

C 클래스는 처음 24비트가 네트워크 ID, 다음 8비트가 호스트 ID
192.0.0.0 ~ 223.255.255.255

종류공인 IP 주소의 범위
A 클래스1.0.0.0~9.255.255.255
11.0.0.0~126.255.255.255
B 클래스128.0.0.0~172.15.255.255
172.32.0.0~191.255.255.255
C 클래스192.0.0.0~192.167.255.255
192.169.0.0~223.255.255.255
종류사설 IP 주소의 범위
A 클래스10.0.0.0~10.255.255.255
B 클래스172.16.0.0~172.31.255.255
C 클래스 192.168.0.0~192.168.255.255

네트워크 주소와 브로드캐스트 주소의 구조

IP 주소에는 네트워크 주소와 브로드캐스트 주소가 있음. 이 두 주소는 특별한 주소로 컴퓨터나 라우터가 자신의 IP로 사용하면 안되는 주소.
네트워크 주소는 전체 네트워크에서 작은 네트워크를 식별하는 데 사용. 네트워크 전체를 대표하는 주소.
브로드캐스트 주소는 네트워크에 있는 컴퓨터나 장비 모두에게 한 번에 데이터를 전송하는 사용되는 전용 IP 주소.

서브넷의 구조

서브넷팅은 네트워크를 분할하는 것, 서브넷은 분할된 네트워크.
클래스를 서브넷팅하여 작은 네트워크로 분할하게 되면, 기존에 네트워크 ID, 호스트 ID로 구성된 것이 네트워크 ID, 서브넷 ID, 호스트 ID로 나누어지게 됨.

서브넷 마스크

서브넷 마스크는 네트워크 ID와 호스트 ID를 식별하기 위한 값.
A 클래스는 255.0.0.0
B 클래스 255.255.0.0
C 클래스 255.255.255.0

C 클래스의 IP 주소를 서브넷팅 해보자면,
일반적으로 네트워크 ID가 24비트지만, 네트워크 ID를 28비트로 변경하면 4비트를 호스트 ID에서 빌리게 되는 것.
따라서, 네트워크 ID 24비트, 서브넷 ID 4비트, 호스트 ID 4비트.

라우터의 구조

라우터는 네트워크를 분리할 수 있음.
한편, 스위치(레이어 2 스위치)만 있는 네트워크에서는 모든 컴퓨터와 스위치가 동일한 네트워크에 속하게 됨. 허브도 마찬가지로 네트워크를 분리할 수 없음.

컴퓨터가 다른 네트워크에 데이터를 전송하려면 라우터의 IP 주소를 설정해야함. 이것은 네트워크의 출입구를 설정하는 것으로 기본 게이트웨이(default gateway)라고 함.
컴퓨터는 다른 네트워크로 데이터를 보낼 때 어디로 전송해야하는 몰라서 일단 네트워크의 출입구를 지정하고 라우터로 데이터를 전송.
추가로 라우터의 라우팅 기능이 필요.

라우팅

경로 정보를 기반으로 현재의 네트워크에서 다른 네트워크로 최적의 경로를 통해 데이터를 전송.

경로 정보가 등록되어 있는 테이블이 라우팅 테이블. 수동으로 등록하는 방법은 소규모 네트워크에 적합, 자동으로 등록하는 방법은 대규모 네트워크에 적합.

라우터 간에 라우팅 정보를 교환하기 위한 프로토콜을 라우팅 프로토콜이라고 함. 이를 설정하여 라우터 간에 경로 정보를 서로 교환하고 그것을 라우팅 테이블에 등록해 나가는 것.
대표적으로 RIP, OSFP, BGP 등이 있음.

profile
하지만 저는 이겨냅니다. 김서영이죠?

0개의 댓글