Web Server


Connection Sequence


1.     클라이언트 커넥션 수락
클라이언트에서 웹 서버로 TCP 커넥션을 요청하면, 서버는 커넥션을 맺고 여기에서 IP 주소를 추출하여 클라이언트를 확인한다. 커넥션은 커넥션 리스트에 추가되고 모니터링 된다. 서버는 언제든지 거절하거나 닫을 수 있다.

A.     클라이언트 식별
Reverse DNS
를 사용하여 클라이언트 IP를 클라이언트 호스트명으로 변환하도록 설정한다. 클라이언트 호스트 명을 구체적인 접근 제어와 로깅을 위해 사용하며, hostname lookup은 시간이 걸릴 수 있어 웹 트랜잭션이 느려질 수 있기 때문에, hostname resolution을 꺼 두거나 특정 컨텐츠에 대해서만 켜 놓는다.
아파치에서는 HostnameLookups 설정 지시자를 사용한다.

B.      ident
IETF ident
프로토콜을 지원하는 서버는 identd를 실행하는 클라이언트의 신원을 확인 가능하다. 하지만 조작이 쉽고, 이를 사용하는 클라이언트가 많지 않아 잘 동작하지 않는다. 또한 방화벽에서도 ident 트래픽을 막아 놓는다.
아파치에서는 IdentityCheck 지시어로 사용 가능하며 가용 정보가 없으면 ‘-‘으로 채운다.

2.     요청 메시지 수신
커넥션에 데이터가 도착하면, 데이터를 읽어 요청 메시지를 파싱한다. 요청 메시지 컴포넌트는 CRLF를 기준으로 구분하며, 파싱된 데이터가 어느정도 이해가 가능한 분량이 될 때까지 메모리에 임시 저장한다.

A.     단일 스레드 웹 서버
한 번에 하나의 요청을 처리하며, 완료되어야 다음 커넥션이 처리된다. 처리 도중 다른 커넥션은 무시되므로 로드가 적은 서버나 진단도구에서만 적당하다.

B.      멀티프로세스와 멀티스레드 웹 서버
여러 개의 요청을 처리하기 위해 복수의 프로세스 / 스레드를 할당한다. Worker pool 시스템으로 스레드를 미리 생성 가능하다. 프로세스나 스레드 최대 개수에는 제한을 걸어 부하를 줄여야 한다.

C.      다중 I/O 서버
대량의 커넥션 지원을 위해 사용하며, 커넥션을 다중화 한다. 많이 사용되는 아키텍처이며, 커넥션에 대해 조금씩 작업을 수행하여 리소스 낭비가 적다.

D.     다중 멀티스레드 웹 서버
멀티 스레드, 커넥션 다중화를 결합한 아키텍처이다.

3.     리소스 매핑, 접근

A.     Docroot
여러 종류의 리소스 매핑을 지원하는 웹 서버의 가장 단순한 형태는, 서버의 파일 시스템 및 파일 이름을 URI로 사용하는 것이다.
/item/sample.jpg
를 요청 받으면, 서버에 설정된 docroot를 기준으로 /usr/local/httpd/html/item/sample.jpg를 반환하는 형식이다.
httpd.conf
설정 파일에 DocumentRoot를 설정할 수 있다.

                         i.         가상 호스팅 docroot
분리된 docroot를 설정하여 한 웹 서버에서 여러 개의 사이트를 호스팅 한다. URI, Host 헤더에서 얻은 IP 주소, 호스트명 등을 이용해 식별한다.

                        ii.         사용자 홈 dir docroot
/~
사용자명/index.html (실제위치=/home/사용자/public_html) 과 같은 URI 형식으로 해당 사용자의 개인 docroot를 가리킬 수도 있다.

B.      디렉터리
디렉터리를 가리키는 URI 요청 시 다음과 같은 액션을 취할 수 있다.

                         i.         에러 반환

                        ii.         Index 파일 반환

                       iii.         디렉터리 탐색 내용을 담은 HTML 페이지 반환

대부분의 서버는 요청 URL에 대응하는 디렉터리 안에서 index.html(index.html) 파일을 찾는다.
아파치에서는 DirectoryIndex 지시자를 사용 가능하다.

C.      동적 컨텐츠 리소스 매핑
실행 가능한 경로명을 포함한 URI로 요청을 받으면 대응하는 디렉터리에서 프로그램을 찾아 실행을 시도한다. cgi, java-servlet, ASP 등이 있다.

D.     Server-Side Includes (SSI)
웹 페이지 내에서 다른 파일 내용을 읽어 삽입하는 방법. 모든 페이지에 공통적인 내용이나 코드 최적화를 위해 사용하며, 클라이언트로 응답하기 전에 처리한다.

E.      접근 제어
IP
기반으로 제어하거나, 비밀번호를 요구

4.     응답

A.     응답 엔터티
본문의 MIME 타입과 관련된 Content-Type, Content-Length 헤더와 본문을 응답 메시지에 포함 시킨다.

B.      MIME 타입 결정

                         i.         mime.types
파일 이름의 확장자 사용하여 타입 구분. 확장자 별 MIME 타입이 명시된 파일 탐색

                        ii.         magic typing
파일의 내용을 검사해서 알려진 패턴에 대한 테이블(매직 파일)에서 찾는 방법. 표준 확장자 없이 이름 지어진 경우에 사용된다.

                       iii.         Explicit typing
확장자나 내용에 상관없이 MIME 타입을 갖도록 설정

                       iv.         Type negotiation
한 리소스가 여러 종류의 형식에 속하도록 설정하는 방식. 특정 파일이 특정 타입을 가지게 하도록 설정 가능.

C.      리디렉션

                         i.         영구 이전: 301 Moved Permanently

                        ii.         임시 이전: 303 See Other, 307 Temporary Redirect

                       iii.         URL 증강: 상태 정보를 내포한 새 URL로 리디렉트하고, 트랜잭션 간 상태를 유지하는 방법.

                       iv.         부하 균형: 부하가 덜 심한 서버로 리디렉트. 303, 307

                        v.         클라이언트 정보를 가진 타 서버로 리디렉선

                       vi.         디렉터리 이름 정규화: 클라이언트 요청에서 빠진 / 문자를 서버에서 동작 가능하게 추가한 URI로 리디렉트

     5. 로깅
        트랜잭션 완료 후 수행 결과에 대해 로그파일 기록.



Virtual Host


여러 도메인을 하나의 서버에서 호스팅 하는 방법으로, 서버의 리소스(메모리, CPU )을 공유한다. 웹 서버는 기본적으로 메인 호스트가 있고 이 외의 호스트는 모두 가상 호스트이다.

l  Name based
같은 IP에서 도메인 네임이 다른 가상 호스트 운용하는 방식으로, DNS의 다수의 도메인 네임이 하나의 서버를 가리킨다.

l  IP based
가상 호스트 별로 각 IP 주소 1개씩 부여하는 방식

l  Port-based
동일한 호스트에 가상 호스트마다 포트만 다르게 지정하는 방식,

l  Default
특정 호스트에 해당 사항이 없을 때 기본적으로 응답할 호스트

l  Host Header
헤더에 가상 호스트명과 포트번호를 명시하여 사용하는 방식

 

Stabilized Web Server


서버 다운, 트래픽 폭증, 네트워크 장애/손실 등에 예방이 필요함


-       미러링 서버 팜
스위치의 IP를 이용해 서비스를 하고, 마스터 및 복제 서버에 부하를 분산하는 방식. 지역적으로 분산 복제하는 것도 가능하다.


-       HTTP 리디렉션
마스터 서버에서 요청을 받아 복제 서버로 리디렉트. 마스터 서버로 트래픽이 집중되고, 사용자 입장에서 대기 시간이 발생하며, 리디렉션 서버 이상 시, 사이트 문제로 직결된다. 따라서 다른 리디렉션과 조합하여 사용한다.


-       DNS 리디렉션
컨텐츠의 URL4개의 IP 주소를 가리킬 수 있고, DNS 서버가 클라이언트에게 전송할 주소를 선택


n  DNS 라운드 로빈
서버 팜 전체에 대한 부하 균형 유지를 위해 DNS 호스트 명 분석 기능을 사용. 서버에 대한 클라이언트의 상대적인 위치나 서버의 현재 상태를 고려하지 않음. 다중 주소를 사용하여 lookup 한 번 종료마다 주소를 순환 한다.

u  로드 밸런싱 알고리즘: 부하가 적은 서버를 우선순위에 둠

u  근접 라우팅 알고리즘: 지리적으로 분산된 서버들 중 가까운 서버로 보냄

u  결함 마스킹 알고리즘: DNS 서버에서 네트워크 헬스 체크하여 장애 우회 라우팅



HTTP 데이터 전달

1.     게이트웨이: 서로 다른 프로토콜과 애플리케이션 간 HTTP 인터페이스.
요청을 받고 응답을 보내는 포털 역할이며, 동적인 컨텐츠를 생성하거나 데이터베이스에 질의할 수 있다. 또는 CGIAPI를 통해 애플리케이션 프로그램에 연결된다.

n  프로토콜 게이트웨이: <클라이언트 프로토콜>/<서버 프로토콜>로 구분하며, 서버 측 게이트웨이는 클라이언트와 HTTP로 통신하고 반대는 서버와 HTTP로 통신한다.
브라우저에 게이트웨이를 명시하여 대리 서버(리버스 프록시)로 설정 가능하다. HTTP/FTP 게이트웨이의 경우, 브라우저는 게이트웨이로 HTTP 프로토콜로 통신한다.

ü  HTTP/*: 서버 측 웹 게이트웨이

ü  HTTP/HTTPS: 서버 측 보안 게이트웨이

ü  HTTPS/HTTP: 클라이언트 측 보안 가속 게이트웨이. SSL 가속기로, 보안 트래픽을 복호화 하여 일반 HTTP로 트래픽을 생성한다. 효율적으로 복호화 하는 암호화 하드웨어를 내장하여 내부 서버 부하를 줄여준다.

n  리소스 게이트웨이: 특정 URL에 대한 HTTP 요청에 따라 프로그램을 실행하고, 프로그램의 출력을 수집하고, HTTP 응답으로 회신한다.

ü  CGI (Common Gateway Interface): 최초의 API, 웹서버가 사용하는 표준화된 인터페이스 집합. Perl, C, shell 등 다양한 언어로 구현이 가능하며, 단순하다. 하지만 모든 요청마다 새 프로세스를 만들어야 하므로 부하가 심해졌고, 데몬으로 동작하는 Fast CGI 개발로 해결되었다.

ü  확장 API: 웹 개발자가 직접 만든 모듈을 HTTP와 연결할 수 있는 장치로, 서버 동작을 변경하거나, 처리능력을 끌어올리기 위해 사용된다. MSFrontPage Server Extension이 있다.

2.      애플리케이션 인터페이스: 서로 다른 형식의 웹 애플리케이션이 통신하는 데 사용

n  SOAP (Simple Object Access Protocol): 웹 어플리케이션이 HTTP 헤더만으로는 더 복잡한 데이터를 교환하기 힘들기 때문에 개발된 프로토콜 집합으로 HTTP 메시지에 XML 데이터를 담는 방식에 관한 표준이다.

3.     터널: HTTP 커넥션을 통해 HTTP가 아닌 트래픽 전송. 방화벽이 HTTP 만을 허락하는 경우에 사용될 수 있다.

n  터널 커넥션
웹 터널은 HTTPCONNECT 메소드를 사용한다. HTTP/1.1에서 지원하며, 터널 게이트웨이가 임의의 목적 서버와 포트에 TCP 커넥션을 맺고 클라이언트와 서버 간 데이터를 무조건 전달 요청을 한다.

n  커넥션이 이루어지면 응답을 받지 않고도 데이터를 보낼 수 있지만 게이트웨이에서 처리가 가능해야 한다. 한 쪽의 커넥션이 끊길 경우, 끊기기 전의 데이터는 그대로 전송되고 반대편 커넥션도 끊기며, 남아있는 데이터는 버려진다.

n  SSL 터널링: 암호화된 SSL 트래픽 전송을 위해 HTTP 커넥션으로 전송

n  터널 인증: 프록시 인증 기능은 클라이언트가 터널을 사용할 권한이 있는지 검사하는 용도로 사용된다. 터널 오용 최소화를 위해 게이트웨이는 HTTPS 전용 포트인 443 등과 같이 특정 포트만 터널링을 허용해야 한다.

 


Relay


단순 HTTP 프록시 일종으로, 한번에 한 개의 홉에 데이터 전달하는 방법. 트래픽만 전달하는 간단한 프록시 구현으로, 단순 필터링이나 진단, 컨텐츠 변환 시 사용된다. 때문에, 헤더의 Keep-Alive 커넥션에 행이 걸리는 문제가 있기 때문에 사용 시 주의 해야 한다


'System Engineering > Network' 카테고리의 다른 글

HTTP - 7. Authentication  (0) 2018.07.24
HTTP - 6. Proxy  (0) 2018.07.24
HTTP 4. DNS  (0) 2018.07.24
HTTP - GET, PUT, POST  (0) 2018.07.24
HTTP - 3. URI, URL  (0) 2018.07.12

DNS

네트워크 상의 도메인 네임을 IP 주소에 매핑해 주는 시스템으로, 초기에 호스트 네임 별로 IP 주소 정보를 시스템 안의 hosts.txt 파일로 관리하던 것이 관리 대상이 증가하고, 기술의 발달에 따라 분산 구조로 관리가 가능하도록 개발된 시스템이다.
DNS
도메인 네임은 a-z, A-Z, 0-9, 하이픈(-) 문자만 허용한다.


DNS Components


-       TLD: Top Level Domain. 루트 도메인 하위의 상위 도메인

Country code TLD

Generic TLD

국가적 성격

국제적 성격

kr, jp, us, uk, it

com, org, net, edu, gov, mil

 

-       SLD: Second Level Domain. 도메인 등록 조직, 국가 등 소속 기관의 성격으로 분류. gTLD의 하위 도메인일 경우, 최종 사용자가 정의한 도메인을 등록하여 사용한다.


-       Third Level Domain: SLD 하위 도메인으로, gTLD를 제외하고 최종 사용자에 의해 정의된 도메인

Sub Domain: 사용 목적에 따라 최종 사용자에 의해 정의된 도메인. a.b.com의 경우 a 가 서브 도메인에 해당한다.

 


Name Server

  도메인 네임 스페이스에 대한 정보를 저장하는 호스트. 일반적으로 네임 스페이스에 대한 정보를 파일 형태로 가지고 있고, 해당 존에 대한 권한을 가지고 있다. 마스터/슬레이브 구성의 네임 서버의 경우, 보조 네임 서버에서 마스터 네임 서버의 존 파일을 읽어 서비스 한다. 또한 캐싱 기능으로 TTL 값을 이용한다. 한번 들어온 질의에 대하여 응답을 저장해 두고, 같은 질의 시 해당 응답을 돌려준다.

 

Zone

네임 스페이스 내부의 일부분으로, 해당 존의 네임 서버는 도메인 파일이 아닌 존 파일을 읽는다.



Resolver 
   
OS에 포함된 네트워크 소켓 라이브러리에 포함된 프로그램으로, 브라우저 등 DNS 클라이언트의 요청을 네임 서버로 전달하고, 메인 네임과 IP 주소를 받아 클라이언트에 제공하는 기능을 수행.

 


-       Recursive DNS
일반적인 재귀적 네임 서버. 클라이언트로 최종 결과값을 반환하며, 리졸버로부터 질의 요청이 들어온 경우, 네임 서버가 직접 탐색하여 결과를 반환한다.


-       Iterative DNS
루트 네임서버, 일부 TLD 네임 서버의 형태. 자신이 직접 관리 하지 않는 질의는 응답이 가능한 네임 서버 목록으로 응답하는 방식.



-       PQDN (Partially Qualified Domain Name): 호스트 네임으로 시작하지만 루트 도메인까지 명시되지 않은 도메인.

-       FQDN (Fully Qualified Domain Name): 호스트 네임부터 네임 스페이스의 루트까지 표시된 도메인 네임. DNS 존 파일에서는 PQDN과 구분하기 위해 도메인 끝에 마침표를 붙여 FQDN임을 식별한다.



DNS zone, 도메인 네임과 관련된 정보를 갖는 레코드로, 각 값들이 이름과 값으로 바인딩 된다. 이 정보들이 DNS 네임 서버 내에 레코드 집합으로 구성된다. DNS 쿼리에 대해 1개 이상의 레코드 값을 포함한 DNS 메시지를 응답한다.

Record type

설명

NAME

VALUE

A

호스트 네임에 대한 IPv4 주소

호스트 네임

IP 주소

AAAA

호스트 이름에 대한 IPv6 주소

호스트 네임

IP 주소

NS

, 도메인 네임에 대한 권한 네임 서버의 호스트네 임

도메인 네임

호스트 네임

CNAME

별칭 호스트 네임에 대한 공식 호스트 네임

별칭 호스트 네임

공식 호스트 네임

SOA

DNS zone 시작. 모든 zone1개의 SOA 레코드를 가짐

Zone 이름, 마스터 네임 서버 이름, 관리자 메일 주소, 보조 네임 서버의 갱신 시간 등

PTR

포인터. IP 주소에 대한 도메인 네임(RDNS)

4.4.8.8.in-addr.arpa  google-public-dns-b.google.com

HINFO

호스트 정보

 

MX

메일 서버 별칭에 대한 호스트 네임

메일서버 별칭

호스트 네임

TXT

텍스트. 다양한 정보 기입

 

 

-       AXFR (Authoritative Zone Transfer)
마스터 네임 서버에서 보조 네임 서버로 전체 존 파일을 전송하는 것

-       IXFR (Incremental Zone Transfer)
존 파일의 이전 값과 비교하여 변경된 부분만 전송하는 것. 권한 서버가 요청 받은 내용이 부족할 경우 무시되고 AXFR 응답을 보낸다.


리소스 레코드는 도메인 네임에 설정할 수 있는 데이터 타입이다도메인 네임을 키 값으로 하여 이를 도메인 네임에 필요한 데이터를 설정하는데사전에 정의된 데이터 타입과 포맷으로 해야 한다도메인 네임과 IP 주소 매치를 위해 사용된다

  -A 리소스 레코드: Host Address란 의미로 도메인 네임에 매치되는 IPv4를 정의한다

Name 

Class 

TTL 

Type 

Address 

www.naver.com 

IN 

 

202.xxx.xx.xxx 

Ø  Class: IN(InterNet) 외에도 있지만 현재 대부분 IN사용
  TTL: 
요청된 리소스 리코드는 TTL에 명시된 시간 소요 후 삭제되어 재요청이 필요생략 시 SOA 리소스 레코드에 정의된 default TTL 적용 

Ø  NS (Name Server) 리소스 레코드도메인 존의 네임서버를 정의

Ø  CNAME 리소스 레코드: Canonical Name. 도메인 네임에 별칭을 매치해당 도메인 네임에 대한 리소스 레코드를 동일하게 접근하여 사용하므로정보를 CNAME이 상속받는다
   ex) www.naver.com IN CNAME naver.com 
참조 시 naver.com 리소스 레코드를 참조하여 정보를 반환한다

-SOA 리소스 레코드: Start of a zone Of Authority. 존에 대한 권한 시작을 의미하나의 도메인 존에 반드시 하나의 SOA가 존재하는 특수 레코드로도메인 존의 default 설정과 마스터 네임 서버 지정 등에 사용된다

Name 

TTL 

Class 

Type 

Master NS 

Responsible person 

Serial; Refresh; Retry; Expire; Minimum; 

naver.com 

 

IN 

SOA 

ns.naver.com 

admin.ns.naver.com 

(

Name: 상위 도메인 존에게 위임 받은 도메인 존의 도메인 네임 
  
마스터 네임 서버: NS 리소스 레코드와 A 리소스 레코드를 통해 도메인 존에 대한 리소스 레코드 생성변경삭제 등의 권한을 위임 받음
  Responsible person: 
도메인 존 관리 담당자 메일 주소 
  Serial: 
도메인 존 파일에 대한 버전 정보정보 변경 시 증가이 값을 기반으로 슬레이브 네임 서버가 마스터 네임서버의 최신 리소스 레코드 정보를 획득한다
  Refresh: 
슬레이브 네임 서버가 마스터 네임서버에 도메인 존 파일 버전을 질의하는 초단위 시간으로해당 시간만큼 대기 후 마스터에 질의 
  Retry: 
슬레이브 네임 서버가 마스터 네임 서버에 질의 실패 시 재시도 하는 초 단위 시간으로 Refresh 보다 작은 값 작성 
  Expire: 
슬레이브 네임 서버가 질의 실패 시 마스터로부터 얻은 정보의 유효 시간 초 단위 작성해당 도메인 존에 대한 질의 무시 
  Minimum: 
도메인 존 파일에 있는 리소스 레코드들의 default TTL 값 작성(초 단위

SOA 끝 필드의 각 설정 값들은 기본 초 단위이며, D, H, W로 각각 일시간주로 작성 가능하다.

 

-MX 리소스 레코드: 수신 메일  서버를 정의. 호스트명이나 도메인 네임으로만 정의가 가능하다. IP 주소 입력 시 도메인으로 인식하여 존재하지 않는 도메인이 되어버린다. 레코드 입력 시 마지막에 . 붙인 FQDN 사용한다.


'System Engineering > Network' 카테고리의 다른 글

HTTP - 6. Proxy  (0) 2018.07.24
HTTP - 5. Web Server  (0) 2018.07.24
HTTP - GET, PUT, POST  (0) 2018.07.24
HTTP - 3. URI, URL  (0) 2018.07.12
TCP/IP - 2. IP  (0) 2018.07.10

GET, POST, PUT

GET

URL?(query string)으로 파라미터 전달

           - URL?id=user&page=1 형식
           -
서버에서 데이터를 가져와 보여주는 용도


기본적으로 서버로 부터 리소스를 가져올 때 사용하며, 데이터를 서버로 전달하는 경우, URL이 길어져 브라우저에서 제한하는 URL 길이에 걸려 데이터가 잘리는 상황이 발생한다.


기본적으로 URI 표준은 길이 제한이 없으나, 브라우저 마다 URL을 제한하거나, 서버 측에서 처리 가능 길이가 제한되는 등의 상황이 있다.


ex) 게시판 글 중에서 특정 ID 값을 전달하여 해당하는 글을 가져오는 경우

POST

메시지 Body 안에 포함 되어 숨겨져서(인코딩 되어) 전달
           - HTML FORM submit
형태
           -
서버의 값, 상태를 변경

서버 측에서 데이터를 전달받아 수행하는 형태로 사용된다.


또한 리소스의 위치를 지정하지 않고 생성할 때 사용된다.  PUT과 달리 멱등성이 존재하지 않는다.


ex) 게시판에 글을 작성하고 SUBMIT을 하는 경우


PUT

리소스를 서버측에 생성 또는 갱신하기 위해 사용되며, 리소스의 특정 위치를 지정한다. 멱등성(Idempotent)이라는 특수성이 부여되는데, 같은 PUT 요청을 몇 번 하더라도 항상 결과가 같을 경우에 성립한다.

POST와 달리 요청 시 리소스의 정확한 위치를 가지고 요청한다.

ex) 게시판의 특정 글을 수정하는 경우


'System Engineering > Network' 카테고리의 다른 글

HTTP - 5. Web Server  (0) 2018.07.24
HTTP 4. DNS  (0) 2018.07.24
HTTP - 3. URI, URL  (0) 2018.07.12
TCP/IP - 2. IP  (0) 2018.07.10
TCP/IP - 1. TCP  (0) 2018.07.10

URI, URL

URI

Uniform Resource Identifier

통합 자원 식별자. URL URN으로 구성된 일반적인 개념이다리소스의 이름, 위치, 또는 둘 모두를 포함할 수 있다.

ref: https://code.i-harness.com/ko/q/2b088


URL

Uniform Resource Locator

특정 리소스 한개의 구체적인 위치를 나타낸다.크게사용되는 프로토콜을 알리는Scheme, 서버 주소, 리소스컴포넌트로 나뉜다. 


URL컴포넌 

설명 

스킴 

프로토콜 

사용자 이름 

리소스 접근에 필요한 이름 

비밀번호 

사용자 비밀번호.사용자 이름에콜론(:)으로기술 

호스트 

호스트명 또는 IP 주소 

포트 

호스트의 포트 

경로 

/로 구분하는 서버의 리소스 

파라미터 

입력 파라미터.이름,쌍으로 이루어지고 세미콜론(;)으로구분.여러 개가능 

질의 

애플리케이션에 파라미터전달 시사용.URL끝에 ?구분 

프래그먼트 

리소스 조각 또는 그 일부분.URL특정 객체를 가리킬 경우 서버로 전달되지 않음. 클라이언트에서만 사용하며 URL 끝에서 #으로구분 

 

-URL의 문자집합은 표현 문자가 적은(안전한) US-ASCII에 이스케이프 문자열을 추가하여 이동성과 완성도를 높였다

-이스케이프 문자열은 %’로 시작하여 ASCII 코드로 표현되는 두개의 16진수 숫자로 이루어져 있다

(Ex. 공백: 32 (0x20) -> http://.../a%20space) 

-특수 목적(인터넷 게이트웨이, 프로토콜에서의 혼동 등)의 예약 문자들이 있고 이 문자들을 해당 목적 외로 사용하려면 반드시 인코딩 후 사용해야 한다

 

Scheme

주어진 리소스에 접근하는 방식을 알려주는 정보이다.URL해석하는 애플리케이션이 어떤 프로토콜을 사용하여 리소스를요청해야 하는지를알려준다.알파벳으로 시작하고, ':'으로나머지URL구분한다. 

 

Port  

웹 상의 리소스를 찾을 때, 해당 리소스를 가진 서버를 찾는필요한 두가지 정보는 호스트와 포트이고, HTTP 기본 포트는 80을 사용한다. 

 

Username & Password

사용자 이름과 비밀번호 컴포넌트는 해당 서버에 접근하기 위해 필요한 정보로, 사용자 이름의 기본값은 'anonymous'이다. 입력 위치는 "SCHEME://username:password@HOST"형식으로 사용한다. 

 

Parameter

URL사용하는 애플리케이션이 리소스에 접근할 때, 프로토콜 파라미터가 필요하다. 서버가 요청을 처리하기 위해 필요한 것으로, 애플리케이션이 정확한 요청을 하기 위해 필요한 입력 파라미터를 받는데 사용한다.이름쌍의 리스트로 ';'로 구분하여 사용한다
(ex. ftp://HOST/pub/gnu;type=d) 

 

Query string

데이터베이스 등의 서비스들은요청 받을리소스 형식의 범위를 좁히기 위해 질문이나 질의를 받을 수 있다. 게이트웨이를 가리키는 URL 경로에 '?'붙인 뒤,질의 컴포넌트를 붙여전달한다.질의 컴포넌트 포맷에 제약사항은 없으며 '&'로 나뉜 '이름=' 형식의 문자열을 사용한다. 

(ex. .../check.cgi?iteem=1&color=blue) 

 

Fragment

리소스 내의 특정 부분을 가리킬 수있도록 하는컴포넌트로, HTML 내의 특정 이미지 등을 지시할 수 있다. 클라이언트는 서버에프래그먼트를전달하지 않는다. 브라우저가 서버로부터 전체 리소스를 받은 후,프래그먼트를사용하여 원하는 리소스의 일부를 보여준다. 

 


Relative URL

BaseURL기준으로 './doc.html'같이 URL 내의 리소스를간결히기술하는데 사용한다.프래그먼트이거나URL일부이며, 브라우저는 절대 URL 간 상호 변환이 가능해야 한다

 

Convert to absolute URL

스킴이 비어 있을 경우 base url 스킴을 상속받으며, 각 컴포넌트를 검사한다. 컴포넌트가 모두 비어 있을 경우 마찬가지로 base url의 컴포넌트를 상속받는다상속 후 경로에서 ./, ‘…/./’을 제거하고 상대 컴포넌트와 새로운 절대 URL로 합친다

 

Base URL

상대 URL을 절대 URL로 변환하기 위해 찾는 기준. <BASE> HTML 태그로 리소스에서 명시적으로baseurl기술하기도 한다.
-base
URL없는 경우 절대URL으로만으로이루어질 수 있으나 불완전하거나 깨진URL수도 있다.
-
리소스에 base url이 명시되어 있지 않은 경우 리소스의 URL base url로 사용된다.



URL Expansion

브라우저에서 사용자 입력 중에 자동으로 URL을 확장해 주는 기능으로, 사용자에게 빠른 URL 입력을 도와준다.  

Host expansion

호스트 명 확장휴리스틱만을 사용해서 입력 호스트 명을 전체 호스트 명으로 확장. naver를 입력하면 앞 뒤로 www, com을 붙여준다. 해당 단어를 포함한 사이트를 찾지 못할 경우 몇 가지 제안하는 URL을 보여주기도 한다

History expansion

히스토리 확장: 과거에 사용자가 방문했던 URL 기록을 저장해 놓고, 입력된 URL 앞 글자를 포함하는 완결된 형태의 URL을 선택할 수 있도록 해 준다.

'System Engineering > Network' 카테고리의 다른 글

HTTP 4. DNS  (0) 2018.07.24
HTTP - GET, PUT, POST  (0) 2018.07.24
TCP/IP - 2. IP  (0) 2018.07.10
TCP/IP - 1. TCP  (0) 2018.07.10
HTTP - 2. Message  (0) 2018.07.06

TCP/IP

IP

-인터넷 프로토콜의 약자로 네트워크에 연결된 호스트, 서버들이 가진 고유의 주소를 의미한다
-TCP/IP 
프로토콜 계층의 네트워크 계층에서 사용하는 프로토콜 
-IPv4
에서 32bit의 숫자로 구성된 논리 주소이고, 1byte마다 점으로 구분한 10진수 형태로 표현된다
-
논리적으로 IP 주소의 범위는 0.0.0.0 ~ 255.255.255.255 이다
-
네트워크 주소와 호스트 주소로 구분하며앞 쪽 네트워크 주소를 제외한 나머지가 호스트 주소에 해당한다.

CLASS 

비트 구분 

사용 가능 주소 범위 

호스트 수 

0으로 시작 0xxx xxxx 

1.0.0.0 ~ 126.255.255.255 

2^24 - 2 

10으로 시작 10xx xxxx 

128.0.0.0 ~ 191.255.255.255 

2^16

110으로 시작 110x xxxx 

192.0.0.0 ~ 223.255.255.255 

2^8 - 2 

-D 클래스는 IP 멀티 캐스팅용, E 클래스는 자원 확보 예비용으로 분류하며 실제 사용하는 것은 A,B,C 클래스 이다

-네트워크 주소에서 모두 0 또는 1인 경우 특별한 의미의 주소로 제외시킨다
-0.0.0.0
은 사용하지 않는 주소, 127.x.x.x는 시스템 루프백 주소(가상 할당)로 사용하지 않는다

-A 클래스네트워크 주소로 8bit, 호스트 주소로 24bit 사용 
-B 
클래스네트워크 주소 16bit, 호스트 주소로 16bit 사용 
-C 
클래스소규모 네트워크에서 가장 많이 사용하는 클래스로네트워크 주소 24bit, 호스트 주소로 8bit 사용 
-D 
클래스주소는 224 ~ 239까지로 시작하며멀티캐스트 용도로 사용한다
*
멀티캐스트데이터 수신 대상이 네트워크에 연결되어 있고, 1:n으로 통신하는 방식 
-E 
클래스주소는 240 ~ 255까지로 시작하는 예비용 주소

 

l  사설 주소 
공인 IP 주소 부족 현상 해결을 위해외부와 내부 네트워크 간 장비를 사용하여 연결 시 모든 호스트에 공인 IP를 할당하지 않고 내부 DHCP를 통한 사설 IP 주소 사용하는 방법외부로 나갈 때는 장비에 연결된 공인 IP 주소를 사용하고들어올 때는 다시 사설 IP에 맞게 변환하여 사용한다

클래스 

10.0.0.0 ~ 10.255.255.255 

클래스 

172.16.0.0 ~ 172.31.255.255 

클래스 

192.168.0.0 ~ 192.168.255.255 

 

l  데이터그램
-IP 
계층의 패킷을 데이터그램이라 하며헤더와 데이터 부분으로 구성된다
-
헤더의 크기는 20~60바이트로패킷 전달 시 필요한 모든 정보를 포함한다.

IP 버전 
4
비트 

헤더 길이 
4
비트 

서비스 유형 
8
비트 

총 길이 (최대 2^16-1 바이트
16
비트 

식별 
16
비트 

플래그 
3
비트 

단편 오프셋 
13
비트 

라이프 타임(TTL) 
8
비트 

프로토콜(상위 계층
8
비트 

헤더 checksum 
16
비트 

송신지 IP 주소 

수신지 IP 주소 

옵션 

-서비스 유형라우터가 처리해야 하는 데이터 그램 규정을 나타내며, TOS라는 서브 필드를 갖는다. 8비트 중 4번째 비트부터 유형 정의

TOS bit 

유형 

TOS bit 

유형 

0000 

표준 

0100 

높은처리율 

0001 

최소 비용 

1000 

낮은 지연 

0010 

높은 신뢰성 

 

 

 -식별네트워크 상에서 패킷이 더 작게 분할되는 경우 재결합 시 사용되는 정보 
-
플래그패킷 분할 제어 
-
단편 오프셋분할된 조각의 원본 데이터에서의 자리 표시 역할 
-
식별플래그단편 오프셋을 함께 사용하여 패킷 재결합에 사용한다
-TTL: 
패킷이 네트워크 상에서 생존 가능한 시간을 규정수신지를 찾지 못하는 패킷이 네트워크상에서 돌아다니는 것을 방지하기 위해 데이터그램이 통과하는 최대 라우터 수 제어한다라우터 통과 시 1씩 감소하고 0이 되는 경우 라우터에서 폐기. OS, 프로토콜별로 미리 정해져 있다
-Checksum: TCP/IP 
프로토콜에서 많이 사용되는 오류 제어 방법으로패킷 전송 중 발생하는 헤더 부분의 오류를 검사한다수신 측에서 패킷과 checksum을 계산하여 조건을 통해 폐기 여부를 결정한다. Header 비트 합의 1의 보수를 사용한다


IPv6

IP주소가 필요한 단말들이 많아지면서, IPv4 주소 고갈로 이어질 수 있기 때문에 등장했다. 128bit로 구성되며 16bit 마다 :’으로 구분한다기존 IPv4 주소를 IPv6 주소로 표현할 때에는 하위 32비트에 주소를나머지는 0으로 채우는 방식을 사용한다
주소 표기 시에 16진수 32개로 표현하며 4개마다 :’으로 구분하여 표기한다또한 두 개의 콜론 사이에서 앞쪽의 0은 생략 가능하다. 0으로만 구성된 섹션은 0을 모두 지우고콜론 2개로 대치가 가능하며한 번만 허용된다

ABCD : 0000 : 0000 : 0000 : 0000 : CDCD : 0001 : DDDD >> ABCD :: CDCD : 1 : DDDD 

-IPv6 데이터그램은 기본 헤더와 페이로드로 구성된다

IP 버전 

우선순위 

흐름 레이블 

페이로드 길이 

다음 헤더 

홉 제한 

송신지 주소 

수신지 주소 

페이로드 확장 헤더 

상위 계층 데이터 패킷 

-우선순위동시 접속에 대한 패킷 우선순위 규정 
-
흐름 레이블데이터 특정 흐름을 다루도록 설계된 것 
-
페이로드 길이기본 헤더를 제외한 데이터그램 전체 길이 

 

l  IPv4 to IPv6 통신 

-IP 전환 
전환 기술은 IP 버전 별 각 네트워크 망 간 변환기를 사용하여 상호 연동게이트웨이를 이용하여 주소체계를 호환하는 기술이다서버와 클라이언트가 다른 방식의 IP를 가질 때 사용된다

Ø  응용계층 게이트웨이 방식트랜잭션(변환서비스를 위한 ALG(Application Layer Gateway), ALG가 두 프로토콜을 동시에 지원할 때 변환 메커니즘으로 사용 가능하다응용 계층에서 변환되며각 서비스는 IP 각 프로토콜로 밀폐되어 있어 FTP, DNS, telnet 등 응용 프로토콜에 내장된 주소 변환 시 용이하다
*ALG: 
특정 어플리케이션 프로토콜을 관리하는 소프트웨어 구성 요소어플리케이션 서버와 인터넷 사이 중간 매개체 역할엔드포인트 서버로 인식되며서버로의 트래픽을 허용/거부를 제어트래픽 분석리소스 할당게이트웨이로의 트래픽 전달 동적 정책 정의

Ø  전송 계층 릴레이 방식: TCP/UDP  IP 세션을 중간에서 릴레이
1. TCP 
요청이 릴레이 서버에 도착하면네트워크 계층은 수신지가 서버의 주소가 아니어도 TCP 요청을 TCP 계층으로 전송서버는 TCP 패킷을 받아 송신지 호스트와 TCP 연결
2. 
서버는 실제 수신지로 TCP 연결을 하나 더 생성 뒤 2개의 연결이 구축되면하나에서 데이터를 읽어 나머지 연결에 기록한다

Ø  헤더 변환 방식네트워크 계층에서 IP 패킷 헤더를 변환하는 방식

-듀얼 스택하나의 시스템에서 IPv4 IPv6 프로토콜 모두 처리하는 기술 

-터널링 방법: IPv6 네트워크 사이에 인접 IPv4 네트워크에 터널을 만들어 통신하는 기술 


'System Engineering > Network' 카테고리의 다른 글

HTTP - GET, PUT, POST  (0) 2018.07.24
HTTP - 3. URI, URL  (0) 2018.07.12
TCP/IP - 1. TCP  (0) 2018.07.10
HTTP - 2. Message  (0) 2018.07.06
HTTP 1. HTTP  (0) 2018.07.02

TCP/IP

인터넷에서 컴퓨터 간의 통신이 가능하도록 표준화된 프로토콜이다. 대부분의 인터넷에서 사용하는 프로그램은 이 프로토콜을 이용하여 데이터를 교환한다. 48bit MAC 주소, IP주소, 포트 넘버를 사용한다.


ref: http://blog.boson.com


Network Access Layer

-하위 물리, 데이터 링크 계층을 정의하지 않고, 모든 표준 및 임의 네트워크를 지원 가능하도록 한다

-송신측 네트워크 접속 계층에서는 상위에서 전달받은 패킷에 MAC 주소 정보가 있는 헤더를 추가하여 프레임을 만들어 전송한다

-수신측 데이터 링크 계층에서 헤더를 제거하여 상위로 전달한다


Network Layer

 네트워크의 패킷 전송을 제어한다데이터 전송 시 경로 선택 및 네트워크 주소 체계 관리를 위해 IP가 사용된다수신측 하위 계층에서 전달받은 패킷의 헤더 정보를 확인한 후, 헤더를 제거하여 상위 계층으로 전달한다.

ref: https://www.hardwaresecrets.com



Transport Layer

상위 계층에서 두 호스트 간 데이터 전송을 담당하며 TCP UDP를 사용한다

 네트워크 양단의 송수신 호스트 간 신뢰성 있는 전송기능을 제공한다

 전송되는 패킷에 오류와 중복이 없게 하고, 순서대로 받을 수 있도록 신뢰성 있는 전송을 보장하는 프로토콜이며, 그만큼 헤더의 오류코드에 대응할 수 있는 정보가 있다.


Application Layer

FTP, SMTP, SNMP 등이 포함되며, 사용자가 사용하는 응용프로그램에서 사용되는 프로토콜이다.



TCP

연결형 서비스를 지원하는 전송 계층 프로토콜로, 3-way handshaking을 통한 연결 설정으로 신뢰성, 데이터 흐름 제어, 혼잡 제어를 제공한다. 시퀀스 넘버와 ack 넘버를 통해 순차적이고 신뢰성 있는 전송을 지원한다. 수신자 버퍼 오버플로우를 예방 가능하며 데이터가 안전하게 도착했는지 체크한다


Port

TCP와 상위 계층 간 데이터 전달 시 이동 통로여러 포트를 사용해 상위 계층과 따로 통신하기 때문에동시에 다수의 데이터를 동시 전송이 가능하다. 0 ~ 65,534의 정수 범위를 가진다이메일 서비스 등 클라이언트가 편리하게 접속 가능하도록 해당 서비스에 미리 할당해 놓은 번호를 사용한다

TCP Segment and Header

-Sequence number: 0 ~ 2^32 -1 범위의 번호로초과 시 0으로 되돌아온다수신지 TCP에 세그먼트의 첫 번째 바이트가 시퀀스 넘버라는 것을 알린다

-Acknowledgement number: 수신 노드가 송신 노드에서 수신하려는 바이트 번호로마지막 성공 시퀀스 넘버 + 1이다
-
플래그프로토콜 동작 제어용 비트 단위 플래그 
-
윈도우 크기데이터 버퍼인 윈도우의 사이즈


3-way Handshaking - 연결 설정 시퀀스

4-way Handshaking - 연결 종료 시퀀스

TCP Flow control

TCP 데이터 전송 시 수신측 윈도우(버퍼크기를 지정하여 단일 패킷 단위 ACK 전송으로 지연을 예방할 수 있다또한 수신 측에서 ACK 신호에 다음 패킷 위치를 명시하면송신 측에서 송신측 윈도우를 해당 패킷으로 이동하여 윈도우 크기만큼 전송을 시작하는 슬라이딩 윈도우 방식을 사용한다.


TCP Connection control

    일반적으로 TCP 커넥션은 클라이언트와 서버 간 연결 수립 후 데이터를 주고받은 뒤 커넥션을 끊고 통신이 필요하면 다시 커넥션을 설정한다. 하지만 이는 연결 수립에 따르는 시간이 추가적으로 소요되기 때문에 이에 대한 해결책으로 Persistent connection이 등장했다. 연결은 한번만 설정하고, 지속적으로 데이터를 주고받을 수 있다. 하지만 이 또한 데이터를 주고받을 때 하나의 데이터를 받았다는 응답도 처리해야 하는 TCP 특성상 지연이 발생할 수 있다.
 HTTP Pipelining
으로 이를 해소할 수 있는데, 연결 수립 후 데이터를 여러 번 받은 뒤, 순차적으로 여러 번 응답하는 방식이다.


'System Engineering > Network' 카테고리의 다른 글

HTTP - 3. URI, URL  (0) 2018.07.12
TCP/IP - 2. IP  (0) 2018.07.10
HTTP - 2. Message  (0) 2018.07.06
HTTP 1. HTTP  (0) 2018.07.02
Protocol: TCP and UDP  (0) 2018.06.18

HTTP - 2

HTTP 동작 방식

클라이언트와 서버 간 TCP 연결을 설정하고 HTTP Request 메시지를 전송한다. 이 때 연결은 새로 만들어 지거나 여러 개가 만들어질 수 있다. 

서버는 클라이언트로 HTTP Response 메시지를 전달한다. 이 후 커넥션을 닫거나 다른 요청을 위해 재사용한다. 


HTTP Message

메시지는 요청, 응답으로 나뉘며, Start Line, Header, Body로 나뉜다. 

Requests and responses share a common structure in HTTP

-요청 메시지는 서버에게 리소스에 대해 서버의 동작을 요청한다.  
-응답 메시지는 요청 메시지 수행 결과에 대한 상태 정보와 결과 데이터를 클라이언트에 돌려준다.  
-본문은 메소드에 따라 비어 있는 경우도 있다.


HTTP Method

http header functions

  • -GET: 가장 흔히 쓰이는 메소드로, 주로 서버에 리소스를 요청하기 위해 사용한다. 

  • -OPTIONS: 서버에서 지원하는 메소드를 확인하기 위해 사용하는 메소드


  • -HEAD: GET과 동작은 같지만, 응답 메시지에 헤더만을 포함한다. 리소스 확인, 상태코드 확인, 헤더 확인 등의 목적으로 사용된다. HTTP/1.1 준수를 위한 필수 구현 항목이다.



HTTP Status Code

세 자리 숫자로 이루어진 상태코드는 요청 메시지에 대한 결과를 클라이언트에게 알려준다. 전체 범위에서 정의된 범위에 따라 코드가 의미하는 분류가 나뉜다.  (WebDAV – HTTP 확장 메소드 지원)


ref: http://designtaxi.com


100-199: 정보성 상태 코드

200-299: 성공 상태 코드

300-399: 렉션 상태 코드 

400-499: 클라이언트 에러 상태 코드

500-599: 서버 에러 상태 코드 



HTTP Headers

이름-값 쌍으로 이루어지는 필드로 0개 이상의 헤더 목록을 나타내며, CRLF(빈 줄)로 헤더의 끝과 본문의 시작을 구분한다.  
 
● General Headers: 메시지 종류에 상관없이 기본적인 정보를 제공하는 헤더  
  • -일반 캐시 헤더: 캐시 기능을 명시하는 헤더  

Connection  

클라이언트와 서버가 요청/응답 연결에 대한 옵션을 정함. (close, Keep-Alive)  

Date  

메시지가 만들어진 일시  

MIME-Version  

사용된 MIME version  

Transfer-Encoding  

메시지에 사용된 인코딩 방식  

Via  

메시지가 거쳐온 프록시, 게이트웨이 명시  

Cache-Control  

메시지와 함께 캐시 지시자를 전달  


● Request Headers: 요청 메시지에서 클라이언트의 정보 등을 담은 헤더  
  • -Accept 관련 헤더: 클라이언트가 원하는 것과 원하지 않는 것에 대한 정보 명시  
    -조건부 요청 헤더: 클라이언트 요청에 제약 조건 명시  
    -요청 보안 헤더: 리소스 요청 시 필요한 인증과 관련된 헤더  
    -프록시 요청 헤더: 프록시 기능을 위한 헤더  

Client-IP  

클라이언트가 실행된 컴퓨터의 IP  

From  

클라이언트 사용자의 메일 주소  

Host  

요청 대상 서버의 호스트명, 포트  

Referer 

현재 요청 URI가 있는 URL(이전 페이지)  

UA-*  

클라이언트 관련 정보 (ex Color, CPU 등)  

User-Agent  

요청 보낸 어플리케이션 이름  

Accept  

서버가 보내도 되는 미디어 종류  

Accept-Charset  

서버가 보내도 되는 문자 집합  

Accept-Encoding  

서버가 보내도 되는 인코딩  

Accept-Language  

서버가 보내도 되는 언어  

Expect  

요청에 필요한 서버 행동 열거  

If-Match  

주어진 엔터티 태그와 일치하는 경우 해당 앤터티를 가져온다  

If-None-Match  

If-Match와 반대로 일치하지 않는 경우  

If-Modified-Since  

주어진 날짜 이후 리소스 변경이 없을 경우 요청 제한  

If-Range  

문서 특정 범위 요청  

If-Unmodified-Since  

주어진 날짜 이후 리소스 변경 시 요청 제한  

Range  

범위 요청을 지원하는 서버에 리소스 특정 범위 요청  

Authorization  

클라이언트가 서버에 제공하는 인증 자체에 대한 정보  

Cookie  

서버에 토큰 전달 시 사용  

Cookie2  

요청자가 지원하는 쿠키 버전 명시  

Max-Forwards  

요청이 서버로 가면서 거치는 프록시 등의 최대 횟수  

Proxy-Authorization  

프록시에서 인증 시 필요  

Proxy-Connection  

프록시에서 연결 맺을 때 사용  

 

● Response Headers: 응답 메시지에서 사용되는 헤더로, 클라이언트에 정보 제공한다.  

  • -협상 헤더: 서버 리소스에 대한 정보  

Age  

응답 메시지가 오래된 정도  

Public  

특정 리소스에 대해 지원하는 요청 메소드 목록  

Retry-After  

현재 리소스가 사용 불가능할 경우 다시 사용 가능해지는 일시  

Server  

서버 애플리케이션 이름, 버전  

Title  

HTML 문서 제목  

Warning  

사유 구절보다 더 자세한 경고 메시지  

Accept-Ranges  

서버가 자원에 대해 받아들일 수 있는 범위의 형태  

Vary  

서버가 응답에 영향을 줄 수 있는 헤더 목록  

Proxy-Authenticate  

프록시에서 클라이언트로 보낸 인증 요구 목록  

Set-Cookie  

서버가 클라이언트를 인증하 도록 클라이언트 측에 토큰을 설정하기 위해 사용  

WWW-Authenticate  

서버에서 클라이언트로 보낸 인증요구 목록  

 

● 엔터티 헤더: 요청과 응답 메시지 양 측에서 사용되며, 엔터티와 그 내용에 대한 정보 제공  

  • -콘텐츠 헤더: 엔티티의 콘텐츠에 대한 구체적인 정보 제공  
    -엔터티캐싱 헤더: 엔터티캐싱에 대한 정보  

Allow  

해당 엔터티에 수행 가능한 요청 메소드 목록  

Location  

클라이언트에 실제 위치 명시. URI에 대한 Redirect를 명시한다.  

Content-Base  

상대 URL 계산을 위한 Base URL  

Content-Encoding  

적용 된 인코딩 방식  

Content-Length  

본문 길이, 크기  

Content-Location  

리소스 실제 위치. Location 헤더와 달리 요청받은 리소스 타입의 절대 URL을 명시한다. 터티 데이터와 연관된 내용이다.  

Content-Range  

전체 리소스에서 엔터티가 해당하는 범위 바이트로 표현  

Content-Type  

엔터티의 종류  

ETag 

엔터티 태그  

Expires  

엔터티 유효 일시  

Last-Modified  

최근 엔터티가 변경된 일시  


ref: http://www.google.com (all images)

'System Engineering > Network' 카테고리의 다른 글

TCP/IP - 2. IP  (0) 2018.07.10
TCP/IP - 1. TCP  (0) 2018.07.10
HTTP 1. HTTP  (0) 2018.07.02
Protocol: TCP and UDP  (0) 2018.06.18
About https  (0) 2018.06.11

HTTP

 server client에 대한 이미지 검색결과



-웹 서버상의 다양한 컨텐츠를 이용하기 위해서 클라이언트와 통신을 하게 되는데, 이 때 사용하는 프로토콜이HTTP이다. 

-클라이언트가 서버로HTTPRequest메시지를성공했을 때,서버에서클라이언트로HTTPResponse메시지를보내준다. 



-메시지는 서버를 기준으로 인바운드/아웃바운드 송신된다. 또한 항상 다운스트림으로 요청을 받고 다운스트림으로 응답을 전달한다. 

-웹 서버는 리소스를 기반으로 컨텐츠를 제공하고 관리한다. 리소스는 다양한 형태로 되어있으며, 정적 또는 동적 데이터로 구분할 수 있다. 


MIME

-많은 수의 데이터 타입을 다루기 때문에, 웹 전송 객체에 MIME(MultipurposeInternetMailExtensions)이라는데이터포맷 라벨을 붙인다. 다른 이메일 시스템 사이에서 메시지를 주고받을 때 생기는 문제점을 해결하기 위해 설계되었다. 

-MIME 타입은 /로 구분하고,Primaryobjecttype과Specificsubtype으로이루어진 문자열이다. (ex.Content-type: Text/html,text/plain,image/gif) 

-클라이언트는 웹 서버 리소스를URI를통해 찾아볼 수 있다.

HTTP version

HTTP/1.1: HTTP 설계의 구조적 결함 교정, 성능 최적화, 잘못된 기능 제거, 웹 애플리케이션과 배포 지원이 가능해졌다. 

 

HTTP/2.0: 지연 시간을 줄이고 요청/응답 다중화, 오버헤드 최소화, 요청 우선순위 지정 및 서버 푸시 지원. 서버와 클라이언트 간 데이터 프레임이 지정되는 방식과 전송되는 방식 수정. 전체 프로세스를 관리하며 애플리케이션의 모든 복잡성을 새 프레이밍 계층 내에 숨겨서, 기존 애플리케이션 수정 없이 전달 가능하다. HTTP/1.x 서버 및 클라이언트와는 호환되지 않는 바이너리 프레이밍 계층이라는 것이 도입되어 2.0이 되었다. 프레이밍은 클라이언트와 서버에 의해 자동으로 수행되며 기존과 차이점은 없다. 

 

HTTP/1.1 문제점들

-HTTP Connection 마다 하나의 요청을 처리하도록 설계 되어있어 동시전송이 불가능하고, 요청과 응답이 순차적으로 이루어진다. 따라서 HTTP 문서 내의 다수의 리소스를 처리할 때 리소스 개수에 비례하여 Latency가 길어진다. 이를 Pipelining으로 개선해, connection 당 다수의 파일을 요청/응답 받을 수 있도록 한다. 하지만 이 또한 문제점이 있는데, 여러개의 파일을 요청했을 때 첫 번째 응답이 완료되기 까지 대기하는 HTTP Head Of Line Blocking이 발생한다. 임시방편으로 Image Spriting을 통해 이미지를 한 파일로 묶어두고 좌표값을 통해 읽는 방식으로 해결할 수 있다. 

-Connection 당 하나의 요청 처리로 인해 매 요청마다 connection을 생성하게 되고 3-way handshake의 반복으로 Round Trip Time 증가와 네트워크 지연을 초래한다. 

-마찬가지로 매 요청 마다 중복된 헤더값을 전송하게 된다. 


WEB 구성 요소

- 프록시는 서버와 클라이언트 중간에서 요청을 수집하고 필터링하여 서버로 전달하는 보안 중개자 역할을 한다. 

- 게이트웨이는 서로 다른 프로토콜을 사용하는 클라이언트와 서버 사이에서 변환하는 역할을 한다. 

- 터널: RAW 데이터를 그대로 전달해주는 HTTP 애플리케이션으로, SSL 트래픽을 HTTP 채널을 통해 서버로 전송하는 방식이다. 

- 에이전트: HTTP 요청을 만들어주는 클라이언트 프로그램 



ref: http://www.google.com (all images)

'System Engineering > Network' 카테고리의 다른 글

TCP/IP - 1. TCP  (0) 2018.07.10
HTTP - 2. Message  (0) 2018.07.06
Protocol: TCP and UDP  (0) 2018.06.18
About https  (0) 2018.06.11
HAProxy – 오픈 소스 로드 밸런서  (0) 2018.05.24

VDI (Virtual Desktop Infrastructure)

VDI is the solution of end user security control. Not just a PC virtualization.

VDI는 데스크탑 가상화 기술로, 단순히 PC 가상화 목적이 아닌 엔드 유저, 즉, 시스템 내부 단말 사용자들에 대한 보안 통제를 위해 사용 되는 개념이다.


'System Engineering > Security' 카테고리의 다른 글

Intermediate CA - SSL / TLS  (0) 2019.09.27
IPS & IDS (feat. FW)  (0) 2018.06.18

How to provide a service, the method.

- Devops
- MSA (Micro Service Architecture)

Container Orchestration

1. Google - Kubernetes (a.k.a K8S)
> Confirmed by Google and it's Data Center

2. Docker - Swarm

3. Apache - mesos

4. VMware - Pivotal


5. Redhat - Openshift == Docker + Kubernetes + Redhat


Evolution

PM > VM > (Cloud) IaaS > LXC > Docker

In Business

Data Center is invested resources. So that is business does not want cost increasing.
Primary object of cost down is the 'Electricity'. Then the PM becomes that it is not very efficiency. And now VM is on.

Enterprise wants business, but many of SMB(Small Medium Business) does not.


데이터센터는 초기 구축 비용을 제외 하고는 시간이 지남에 따라 유지 보수를 해야하는 자원이다.

데이터센터 인프라 자체에서 비즈니스적인 수익이 창출되지 않는다. 따라서 유지되는 비용을 줄이는 것이 최선이고, 그 우선순위가 가장 높은것이 전기 소모다.  비용적인 측면에서 PM은 그다지 효율적이지 않다는 결론이 나왔고, VM이 도입 된 것이다.


대기업은 비즈니스를 원하지만, 대부분의 중소기업은 그들이 만드는 흐름에 맞출 뿐 이다.


Microsoft supports Docker native now.


Maintenance

>HW: Parallel process, duplex

>SW: TCP/IP to Restful to NW distribution. Application distribution(MSA)


- Server virtualization

- Container: Application platform virtualization. Orchestration, automation, easy to manage (compare with VM).


IaaS and PaaS must have SDN


PM vs Container


-Interact VM kernel and Host Kernel brings resource issue that indicates performance.

-Distributed deployment issue brings network problem

-Host kernel updated or application code edit could be a problem

-VM OS resource also needed

>> Monolithic Architecture

>> Need to scale-up not a scale-out.


+Native structure brings performance enhancement

+App isolation via namespace(linux kernel function)

+Without guest OS > OS system configuration without kernel

+Host subordinate kernel

-If kernel is down, affect on all of applications

=Uusing cgroups(control groups) to limit the host's resources


Docker container: LXC + Distributed Deployment and Management Concepts

LXC is OS container as a light weight VM. One application in one container.


리눅스 컨테이너는 경량화된 VM이라고 보면 된다. 도커 컨테이너에서 1개의 어플리케이션은 1개의 컨테이너에서 사용한다.



Orchestration

IaaS based + SDDC(Software Defined Data Center which means programming engaged)


'Cloud > Docker - PaaS' 카테고리의 다른 글

Docker 개념  (0) 2018.05.24

+ Recent posts