티스토리 뷰
/* 글 정리 중..!*/
Q. 웹이란 무엇인가?
https://wogh8732.tistory.com/10
# 네트워크란?
> 컴퓨터와 컴퓨터를 연결해 주는 망의 개념으로 컴퓨터 네트워크의 의미로 사용된다.
> 다른 사람들과 소통을 할수 있게 도와주는 구조가 바로 네트워크이다.
# 인터넷이란?
> 인터넷은 통신 프로토콜을 이용해 정보를 주고받는 컴퓨터 네트워크이다.
> 네트워크를 구현하여 모든 컴퓨터를 하나의 통신망 안에 연결하고자 하였다.
> 네트워크와 다르지않다. inter-net 이다. 네트워크와 네트워크를 연결해 놓은 네트워크이다. 즉 인터넷이 더 큰 개념이라고 생각하면 된다.
# 웹 구성요소
웹 브라우저(클라이언트) / 웹 서버(서버) / HTTP / HTML
WAS / DB / DNS / 브랑우저
# Web이란?
> 웹이란 World Wide Web의 줄임말로 WWW라고 부른다.
> 정보의 그물망이라고 보면 되는데 쉽게 말하면 많은 정보가 서로 얽혀있는 무었인가라고 생각하면된다.
> 웹에는 수많은 웹사이트들이 있고 각각의 웹사이트는 웹 페이지라는 것으로 이루어진다.
> 웹 서비스란 인터넷에 연결된 전 세계 컴퓨터의 모든 문서들을 연결하여 언제 어디서든지 정보 검색을 가능하게 해주는 서비스를 말한다.
> 인터넷 서비스 종류
> WWW(웹 서비스) / 이메일전송 서비스(SMTP,POP3,MAP) /
> 파일전송 서비스(FTP) / 원격 로그인 서비스(Telnet)
> 도메인 이름 변환서비스 (DNS) / 인터넷 뉴스서비스(News)
# HTTP
> 웹은 HTTP 프로토콜을 기반으로 동작한다.
> Hyper Text Transfer Protocal의 약자로 하이퍼텍스트 문서를 교환하기 위하여 사용된 통신 규약이다.
> 웹 서버와 클라이언트 간의 통신을 하기 위한 통신 규약이라고 볼 수 있다.
> 통신을 하기 위한 하나의 규칙이라고 생각하면된다.
> 웹 서비스내의 모든 과정들은 이러한 규칙을 지키며 통신을 한다.
> 애플리케이션 레벨(응용 계층)의 프로토콜로 TCP/IP위에서 작동한다.
> HTTP 메시지는 HTTP 서버와 HTTP 클라이언트에 의해서 해석이 된다.
> HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜이다.
> 연결을 유지하지 않는 프로토콜이기 때문에 요청/응답 방식으로 동작한다.
# HTTP 동작 특징
> HTTP는 서버/클라이언트 모델을 따른다.
> 클라이언트에서 요청(request)를 보내면 서버는 요청을 처리해서 응답(response)한다.
> 클라이언트는 URI를 이용해서 서버에 접속하고, 데이터를 요청할 수 있다.
> 웹서버는 보통 표준포트인 80번 포트로 서비스한다.
# Connectionless & Stateless
> HTTP는 Connectionless 방식으로 작동한다.
> 서버에 연결하고, 요청해서 응답을 받으면 연결을 끊어버린다.
> 기본적으로는 자원 하나에 대해서 하나의 연결을 만든다.
# 장점
> 불특정 다수를 대상으로 하는 서비스에 적합한 방식이다.
> 다수가 웹 서비스를 사용하더라도 접속유지는 최소한으로 할 수 있기 때문에,
더 많은 유저의 요청을 처리할 수 있다.
# 단점
> 연결을 끊어버리기 때문에, 클라이언트의 이전 상태를 알 수가 없다.
> 이러한 HTTP의 특징을 stateless라고 하는데, Connectionless로부터
파생되는 특징이라고 할 수 있다.
> 클라이언트의 이전 상태 정보를 알 수 없게 되면, 웹 서비스를 하는데
당장에 문제가 생긴다.
> 클라이언트가 과거에 로그인을 성공하더라도 로그 정보를 유지할 수가 없다. > HTTP는 cookie를 이용해서 이 문제를 해결하고 있다.
# HTTP 동작 과정
클라이언트 = 브라우저 / 서버 = 웹 서버 or WAS
1. 사용자가 웹 브라우저에 URL 주소 입력
2. DNS 서버에 웹 서버의 호스트 이름을 IP 주소로 변경 요청한다.
3. 웹 서버와 TCP 연결 시도.
> 3 way Handshake :
> 클라이언트 - 서버간 신뢰성있는 연결을 하기 위해 3번의 패킷 교환 과정이다.
> 1. SYN : 클라이언트가 서버로 임의로 생성한 시퀀스 번호를 전달한다
> 2. SYN-ACK : 서버는 클라이언트에서 전달한 시퀀스를 +1 시켜서 전달한다
(서버의 패킷을 정상 수신했다는 신호)
> 3. ACK : 클라이언트가 서버에서 전달해준 시퀀스를 +1 시켜서 다시 전달함
(서버-클라 간 패킷 교환이 정상적으로 이루어졌다는 신호)
> 서버 사이드에서는 진행 과정에 따라 LISTEN -> SYN_RCV -> ESTABLISHED 로 변경된다. 종료되면 CLOSED
4. 서버에게 GET 명령을 전송한다.
예시)
GET /index.html HTTP/1.1 -> 요청문
Host : www.daum.net -> 헤더
Body : -> (Get 요청이기 때문에 바디가 없다)
5. 서버가 클라이언트에게 데이터(웹 문서)를 회신한다.
예시)
HTTP/1.1 200 OK -> 상태문
Date: Thu, 12 Feb 2009 06:29:38 GMT -> 헤더 시작
Server: Apache/1.3.29 (Unix) PHP/4.3.4RC3
X-Powered-By: PHP/4.3.4RC3
Transfer-Encoding: chunked
Content-Type: text/html -> 헤더 끝
<HTML> -> body
<HEAD>
<TITLE> test </TITLE>
</HEAD>
…..생략….
6. 서버 - 클라이언트간 연결 해제
> 4 way Handshake :
> 서버와 클라이언트 양쪽다 연결이 종료시킨다는 메시지를 보낸다.
(양쪽 다 각각이므로 4번의 패킷교환이 일어남)
Client -> Server : FIN
Server -> Client : ACK
SERVER -> Client : FIN
Client -> Server : ACK
7. 웹 브라우저가 웹 문서를 출력한다.
# 요청 메시지 구조
• 요청문
– 요청메소드
– URL
– HTTP 버전
• 헤더
• 바디
# 응답 메시지 구조
• 상태문
– HTTP 버전
– 상태코드
– 상태이름
• 헤더
• 바디
# HTTP 버전 (1.0 1.1 2.0)
# HTTP 1.1
> HTTP/1.1만큼의 파워풀한 스펙은 없다,
> 많은 데이터를 처리하기 위한 효율적인 데이터 파이프라이닝과 높은 처리율을 위주로 설계
> BUT! 주요 문제점들은 비효율적인 데이터 송/수신에 있다.
> 데이터가 필요할때마다 매번 서버로의 Connection을 요청하고 Response를 기다려서 받아야하는 단점이 존재
> 주고 받는 데이터가 많아지면 많아질 수록 중복되는 Header와 Blocking 때문에 성능상의 단점이 많이 부각
# HTTP2.0
> HTTP/2.0에서는 데이터를 주고 받는 부분에서의 비효율적인 부분을 개선하기 위해 등장.
> 주요 개념으로는 < Stream, Message, Frame >이 있다.
> HTTP/1.1에서는 단방향으로 데이터 송/수신이 이루어졌다면,
> HTTP/2.0에서는 서버에서 데이터를 보낼 수 있는 Server Push 기능이 추가가 되었다.
# 우선순위 (Prioritize)
> HTTP/2.0 Prioritize
> Server Push에서만 봐도, 프레임의 순서는 매우 중요하다.
> 송수신 데이터에 대해서 우선순위를 지정해서 통신을 하게 된다.
# Pipelining, HOL(Head of Line) Blocking 문제 해결
> HTTP/1.1의 경우는 데이터를 얻기 위해서는 이전의 데이터가 다 전송이 되어야 다음 데이터를 전송하는 구조로 되어 있다.
> Keep-Alive 를 사용하면 1.1을 사용해도 데이터를 파이프라이닝을 할 수 있지만, HTTP/2.0 스펙에서는 서버와의 연결이 된 한 Stream에서는 모든 요청이 pipelining되어 처리된다.
> 데이터를 송/수신하는데 걸리는 시간이 많이 줄어들게 되며, 이전 데이터를 받는걸 기다리는 대기시간(Head Of Line) 이 없어지게 된다.
# Multiplexing
> Multiplexing의 경우는 서버와의 연결을 맺은 뒤, HTTP 메세지를 프레임단위로 쪼개서 송/수신하는 방식
> HTTP/1.1에서 여러 Connection을 맺은 뒤 데이터를 주고 받아야 하는데, pipelining 과 같이 한 채널을 통해 데이터를 쪼개서 보내는 방식을 의미한다
> 조금더 찾아보기
https://wogh8732.tistory.com/10
# 네트워크란?
> 컴퓨터와 컴퓨터를 연결해 주는 망의 개념으로 컴퓨터 네트워크의 의미로 사용된다.
> 다른 사람들과 소통을 할수 있게 도와주는 구조가 바로 네트워크이다.
# 인터넷이란?
> 인터넷은 통신 프로토콜을 이용해 정보를 주고받는 컴퓨터 네트워크이다.
> 네트워크를 구현하여 모든 컴퓨터를 하나의 통신망 안에 연결하고자 하였다.
> 네트워크와 다르지않다. inter-net 이다. 네트워크와 네트워크를 연결해 놓은 네트워크이다. 즉 인터넷이 더 큰 개념이라고 생각하면 된다.
# 웹 구성요소
웹 브라우저(클라이언트) / 웹 서버(서버) / HTTP / HTML
WAS / DB / DNS / 브랑우저
# Web이란?
> 웹이란 World Wide Web의 줄임말로 WWW라고 부른다.
> 정보의 그물망이라고 보면 되는데 쉽게 말하면 많은 정보가 서로 얽혀있는 무었인가라고 생각하면된다.
> 웹에는 수많은 웹사이트들이 있고 각각의 웹사이트는 웹 페이지라는 것으로 이루어진다.
> 웹 서비스란 인터넷에 연결된 전 세계 컴퓨터의 모든 문서들을 연결하여 언제 어디서든지 정보 검색을 가능하게 해주는 서비스를 말한다.
> 인터넷 서비스 종류
> WWW(웹 서비스) / 이메일전송 서비스(SMTP,POP3,MAP) /
> 파일전송 서비스(FTP) / 원격 로그인 서비스(Telnet)
> 도메인 이름 변환서비스 (DNS) / 인터넷 뉴스서비스(News)
# HTTP
> 웹은 HTTP 프로토콜을 기반으로 동작한다.
> Hyper Text Transfer Protocal의 약자로 하이퍼텍스트 문서를 교환하기 위하여 사용된 통신 규약이다.
> 웹 서버와 클라이언트 간의 통신을 하기 위한 통신 규약이라고 볼 수 있다.
> 통신을 하기 위한 하나의 규칙이라고 생각하면된다.
> 웹 서비스내의 모든 과정들은 이러한 규칙을 지키며 통신을 한다.
> 애플리케이션 레벨(응용 계층)의 프로토콜로 TCP/IP위에서 작동한다.
> HTTP 메시지는 HTTP 서버와 HTTP 클라이언트에 의해서 해석이 된다.
> HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜이다.
> 연결을 유지하지 않는 프로토콜이기 때문에 요청/응답 방식으로 동작한다.
# HTTP 동작 특징
> HTTP는 서버/클라이언트 모델을 따른다.
> 클라이언트에서 요청(request)를 보내면 서버는 요청을 처리해서 응답(response)한다.
> 클라이언트는 URI를 이용해서 서버에 접속하고, 데이터를 요청할 수 있다.
> 웹서버는 보통 표준포트인 80번 포트로 서비스한다.
# Connectionless & Stateless
> HTTP는 Connectionless 방식으로 작동한다.
> 서버에 연결하고, 요청해서 응답을 받으면 연결을 끊어버린다.
> 기본적으로는 자원 하나에 대해서 하나의 연결을 만든다.
# 장점
> 불특정 다수를 대상으로 하는 서비스에 적합한 방식이다.
> 다수가 웹 서비스를 사용하더라도 접속유지는 최소한으로 할 수 있기 때문에,
더 많은 유저의 요청을 처리할 수 있다.
# 단점
> 연결을 끊어버리기 때문에, 클라이언트의 이전 상태를 알 수가 없다.
> 이러한 HTTP의 특징을 stateless라고 하는데, Connectionless로부터
파생되는 특징이라고 할 수 있다.
> 클라이언트의 이전 상태 정보를 알 수 없게 되면, 웹 서비스를 하는데
당장에 문제가 생긴다.
> 클라이언트가 과거에 로그인을 성공하더라도 로그 정보를 유지할 수가 없다. > HTTP는 cookie를 이용해서 이 문제를 해결하고 있다.
# HTTP 동작 과정
클라이언트 = 브라우저 / 서버 = 웹 서버 or WAS
1. 사용자가 웹 브라우저에 URL 주소 입력
2. DNS 서버에 웹 서버의 호스트 이름을 IP 주소로 변경 요청한다.
3. 웹 서버와 TCP 연결 시도.
> 3 way Handshake :
> 클라이언트 - 서버간 신뢰성있는 연결을 하기 위해 3번의 패킷 교환 과정이다.
> 1. SYN : 클라이언트가 서버로 임의로 생성한 시퀀스 번호를 전달한다
> 2. SYN-ACK : 서버는 클라이언트에서 전달한 시퀀스를 +1 시켜서 전달한다
(서버의 패킷을 정상 수신했다는 신호)
> 3. ACK : 클라이언트가 서버에서 전달해준 시퀀스를 +1 시켜서 다시 전달함
(서버-클라 간 패킷 교환이 정상적으로 이루어졌다는 신호)
> 서버 사이드에서는 진행 과정에 따라 LISTEN -> SYN_RCV -> ESTABLISHED 로 변경된다. 종료되면 CLOSED
4. 서버에게 GET 명령을 전송한다.
예시)
GET /index.html HTTP/1.1 -> 요청문
Host : www.daum.net -> 헤더
Body : -> (Get 요청이기 때문에 바디가 없다)
5. 서버가 클라이언트에게 데이터(웹 문서)를 회신한다.
예시)
HTTP/1.1 200 OK -> 상태문
Date: Thu, 12 Feb 2009 06:29:38 GMT -> 헤더 시작
Server: Apache/1.3.29 (Unix) PHP/4.3.4RC3
X-Powered-By: PHP/4.3.4RC3
Transfer-Encoding: chunked
Content-Type: text/html -> 헤더 끝
<HTML> -> body
<HEAD>
<TITLE> test </TITLE>
</HEAD>
…..생략….
6. 서버 - 클라이언트간 연결 해제
> 4 way Handshake :
> 서버와 클라이언트 양쪽다 연결이 종료시킨다는 메시지를 보낸다.
(양쪽 다 각각이므로 4번의 패킷교환이 일어남)
Client -> Server : FIN
Server -> Client : ACK
SERVER -> Client : FIN
Client -> Server : ACK
7. 웹 브라우저가 웹 문서를 출력한다.
# 요청 메시지 구조
• 요청문
– 요청메소드
– URL
– HTTP 버전
• 헤더
• 바디
# 응답 메시지 구조
• 상태문
– HTTP 버전
– 상태코드
– 상태이름
• 헤더
• 바디
# HTTP 버전 (1.0 1.1 2.0)
# HTTP 1.1
> HTTP/1.1만큼의 파워풀한 스펙은 없다,
> 많은 데이터를 처리하기 위한 효율적인 데이터 파이프라이닝과 높은 처리율을 위주로 설계
> BUT! 주요 문제점들은 비효율적인 데이터 송/수신에 있다.
> 데이터가 필요할때마다 매번 서버로의 Connection을 요청하고 Response를 기다려서 받아야하는 단점이 존재
> 주고 받는 데이터가 많아지면 많아질 수록 중복되는 Header와 Blocking 때문에 성능상의 단점이 많이 부각
# HTTP2.0
> HTTP/2.0에서는 데이터를 주고 받는 부분에서의 비효율적인 부분을 개선하기 위해 등장.
> 주요 개념으로는 < Stream, Message, Frame >이 있다.
> HTTP/1.1에서는 단방향으로 데이터 송/수신이 이루어졌다면,
> HTTP/2.0에서는 서버에서 데이터를 보낼 수 있는 Server Push 기능이 추가가 되었다.
# 우선순위 (Prioritize)
> HTTP/2.0 Prioritize
> Server Push에서만 봐도, 프레임의 순서는 매우 중요하다.
> 송수신 데이터에 대해서 우선순위를 지정해서 통신을 하게 된다.
# Pipelining, HOL(Head of Line) Blocking 문제 해결
> HTTP/1.1의 경우는 데이터를 얻기 위해서는 이전의 데이터가 다 전송이 되어야 다음 데이터를 전송하는 구조로 되어 있다.
> Keep-Alive 를 사용하면 1.1을 사용해도 데이터를 파이프라이닝을 할 수 있지만, HTTP/2.0 스펙에서는 서버와의 연결이 된 한 Stream에서는 모든 요청이 pipelining되어 처리된다.
> 데이터를 송/수신하는데 걸리는 시간이 많이 줄어들게 되며, 이전 데이터를 받는걸 기다리는 대기시간(Head Of Line) 이 없어지게 된다.
# Multiplexing
> Multiplexing의 경우는 서버와의 연결을 맺은 뒤, HTTP 메세지를 프레임단위로 쪼개서 송/수신하는 방식
> HTTP/1.1에서 여러 Connection을 맺은 뒤 데이터를 주고 받아야 하는데, pipelining 과 같이 한 채널을 통해 데이터를 쪼개서 보내는 방식을 의미한다
> 조금더 찾아보기
'Web' 카테고리의 다른 글
TIL (3) OSI-7계층 (0) | 2021.05.26 |
---|