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

TCP (Transmission Control Protocol)

Connected service transport layer protocol. Basic protocol on the Internet. Offering reliable data transfer, flow control, and congestion control.

Reliable via sequence number and ack number
3-way handshaking(connect) and 4-way handshaking(disconnect)
Prevent receiver buffer overflow, congestion control
Full-duplex, Point to Point
1:1 communication
Ensure the data sending sequence
Check the data is safely arrived

연결형 서비스를 지원하는 전송 계층 프로토콜. 3-way handshaking을 통한 연결 설정으로 신뢰성 제공. 데이터 흐름 제어, 혼잡제어 제공.


>Server creates socket, allocate address, wait for connection, response to request

>Client creates socket, allocate address, request connection



UDP (User Datagram Protocol)

Non-connected service. There is no signal when sending or receiving data. Sender does not have to check the data is accurately transferred.

비연결형 서비스를 지원하는 전송계층 프로토콜. 보내는 쪽에서 일방적으로 데이터를 전달하며, 송신자는 수신자가 데이터를 받았는지 체크할 필요가 없다. 비연결형으로 TCP의 3-way handshaking 같은 연결 과정을 거치지 않는다. 따라서 안정성은 떨어지지만 속도는 훨씬 빠르다.

None reliability than TCP

Less packet overhead (less network load)

Error check field in header

No connection setting like TCP

DNS, NFS, SNMP, RIP ..etc

1:1, 1:n, n:m communication

Transfer sequence is variable


>Server creates socket, allocate address, data communicate

>Client creates socket and data communicate

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

HTTP - 2. Message  (0) 2018.07.06
HTTP 1. HTTP  (0) 2018.07.02
About https  (0) 2018.06.11
HAProxy – 오픈 소스 로드 밸런서  (0) 2018.05.24
포트 미러링  (0) 2018.05.24

RAID (Redundant Array of Independent Disk)


For enhancing disk performance or recovering the data loss.

디스크 성능 향상, 용량 확장, 데이터 유실로 부터 복구하기 위한 기술


RAID 0 - Disk Stripping

Maximum capacity: Number of disk * capacity of each disk

Store the data as a block to each disk

블록으로 쪼개진 데이터를 각각의 디스크에 나누어 저장한다.

+Fast, I/O load balanced
-No safety on disk fault

RAID 1 - Disk Mirroring

Maximum capacity: (Number of disk / 2) * capacity of disk

Store the data to each disk and all of them is duplicated

데이터를 각 디스크에 나누어 중복하여 저장한다.

+Safe on disk fault
+Performance is better than single disk
-Capacity is half of them
-Less performance of writing

RAID 2 - Striping and ECC with Hamming Code

Basically same as RAID 0 but ECC is stored for error correction

RAID 0으로 데이터를 저장하고 동일한 형태로 ECC 데이터도 저장하여 에러 수정을 가능케 하지만 RAID 4  등장으로 더이상 사용하지 않는다.

RAID 3, 4 - Stripping with Parity

Maximum capacity: (Number of disk - 1) * capacity of disk

Store the data like RAID 0 and use disk to store the parity. RAID 3 stores data as byte when RAID 4 stores as a block.

RAID 0와 마찬가지로 데이터를 분산 저장하며, 에러 체크 및 수정을 위한 Parity 정보 또한 저장한다. RAID 3과 4의 차이점은 데이터 저장 단위이며 각각 byte, block 이다.

+Good read performance
-Bad write performance

RAID 5 - Stripping with Distributed Parity


Overcome the weakness of parity on RAID 3, 4. Distributed data and parity.


RAID 3, 4의 약점을 극복하기 위하여 한 곳에 모여있는 Parity 정보를 분산하여 저장하는 방식이다.


+Mainly used RAID level

+Fault tolerance

-Slow rebuilding


RAID 0+1 - Stripping and Mirroring

데이터를 분산 저장한 후 복제하는 방식

RAID 1+0 - Mirroring and Stripping

데이터를 복제하여 저장한 뒤 분산 저장하는 방식

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

WEB WAS 개념  (0) 2018.05.24
Netbackup 개념  (0) 2018.05.24


-IDS (Intrusion Detection System) 침입 탐지 시스템

It detecting abnormal activation on network like misuse(rule-based), anomaly(statistical) detection. Collect, reduct and filter, detect, and act.


네트워크 상의 이상을 감지하는 시스템으로, 규칙 기반 오용탐지, 통계 기반 이상 탐지로 나뉜다. 데이터를 수집하고 필터링한 뒤 탐지하고 대응하는 시퀀스를 가진다. 방화벽보다 능동적이며 침입에 대한 추적이 가능하지만 즉각 대응이 어렵다.


+Aggressive than the FW

+Tracking

- Does not act immediately.


>Rule based (misuse detection): save the patterns like system log, network info, well-known method on the DB

+ Less false positive.

- Keep update the list and could not detect new one.


>Statiscal (anomaly detection): collect normal action and detect on user action that is not a normal

+Could detect unknown acttion

+Easier to manage the DB than rule-based

-Take times to detect

-Hard to judge the normal action

-Highly false positive.


>Host-based IDS

Working on the host. Logging and tracking users on the OS who doing what.

-Could not detect all-round network

-Decline host performance

>Network-based IDS

Auditing and logging(TCP dump) network resources at the stand-alone from the network.

+Hide from outside because it does not have IP address

-If the packet is encrypted, can not detect the intrusion.

-Affect performance from network traffic condition.





-IPS (Intrusion Prevention System): IDS + FW 침입 방지 시스템

Active security system to minimize damage from attack. IDS just detect the abnormal situation and IPS decide the security policy using the data from IDS. And also observing network traffic. The module can see, analyze the packet, and the other module decide the act like FW. Signiture-based and Heuristic method like IDS.


공격에 대한 피해를 최소화하기 위해 만들어진 시스템으로 IDS의 탐지 기능과 FW의 차단 기능을 모두 가지고 있다. IPS 또한 네트워크 트래픽을 감시한다. 따라서 IDS와 달리 즉각적인 대응이 가능하며 Zero Day Attack에 대한 대책이 될 수 있다.


+ Acting immediately.

>Signature based

Detect same as IDS rule-based detection

>Heuristic based

Anomaly detection and prevention

>Host IPS

SW based IPS installed on the server.

>Network IPS

HW based and independent from the host.



-Firewall 방화벽

On L3/L4, using IP and Port information beside IDS and IPS covoring L3 to L7.


방화벽은 Access Control List를 통해 트래픽에 대한 보안 정책을 설정한다. IDS나 IPS와 달리 L3/L4에서 동작한다.


Location of FW

-Screening Router

-Single homed host

-Dual homed host

-Screened host gateway

-Screened subnet


-Could not defense virus and bringing network overhead

-Weakness on internal attack, bypass, and new type attack


>Packet filtering

+Fast and good performance.

-Can be bypassed to manipulate the source and destination's address and port


>Statefull

+More secure than packet filtering because it using packet status data

-Status data could be lost because of DDoS attack which occurs status table overflow


>NAT

Static, Dynamic NAT and PAT


>Proxy FW

Application level proxy FW and Circiut level FW



-Web Firewall 웹 방화벽

On L7, observing with string data in the http(Request and Response message) which is decoded at the lower layer. Control the access with ACL(Rule set based) which has IP and PORT. Checking the URL


L7에서 동작하며 하위 계층에서 복호화된 실질적인 데이터에서 HTTP 메세지를 분석, 대응이 가능하다. URL 단위 탐지와 파일에 대한 제어 기능도 포함한다.

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

Intermediate CA - SSL / TLS  (0) 2019.09.27
VDI  (0) 2018.06.18

+ Recent posts