SlideShare a Scribd company logo
1 of 27
Download to read offline
웹 서버 실행 환경이란?
목차

•웹 개발자 이것까지 알아야 하나?

• 그럼 웹 서버는 무엇을 어떻게 처리하나?

• HTTP 메시지 상세 분석
웹 서버 실행 환경이란?
Socket 통신 및 HTTP 프로토콜 해석 등을
추상화한 환경
  ?
                        ?
                              HTML?
 들어는   SMS?
 본듯?   인증?
                      WHAT?

         HTML5?
       WEB Socket??
Keep    Gzip   Chunked
       HTTP    Alive                       Session

    Cache     TCP             등....;;;;;


1. 웹 개발자가 이것까지
     알아야 하나?
Keep    Gzip   Chunked
               HTTP    Alive                       Session

            Cache     TCP             등....;;;;;


1. 웹 개발자가 이것까지
     알아야 하나?
"관련 Needs가 발생하지 않는 한 굳이 알아야 할 필요성은 없다
고 생각한다." by 전성균!!
그럼 몰라도 상관 없겠네?

        이런거 까지 알아 뭐하겠노?
          또 소고기 사묵겠지?
"하지만 다양한 기능 구현 시 좀 더 최
적화된 결과물을 만들어 낼 수 있다."
2. 그럼 웹 서버는 무엇을
   어떻게 처리하나?
너무 간단한거 아니야?

                   Web Server
                         +
               Web Application Server
Wire Shake로 본 웹 서버 처리 과정
웹 서버 처리 과정
1. HTTP Session(논리적 연결) 생성

2. 브라우저 내부 Thread가 Client Socket을 만들어
Server Socket 과의 연결을 수행한다
3. 브라우저와 웹 서버는 HTTP Request 및 Response를 수행한
다.

4. Server Socket Close


5. Client Socket Close 및 브라우저 쓰레드 종료.


6. HTTP Session Close
3. HTTP 메시지 상세 분석
HTTP 메시지
- HTTP 메시지는 원격 기계에 있는 문서의 위
치와 메시지를 지정하는 방법이다.


- HTTP 메시지는 아스키코드 13번인 "캐리지
리턴(r)"과 10번인 "라인피드(n)"의 조합으로
각 행을 구분한다.(CRLF)


- HTTP 메시지는 시작행과 부가정보(선택적
으로 추가 가능한 메시지 헤더와 메시지 바디)
로 구성된다.
시작행
- 시작 행은 HTTP 메시지의 가장 첫 행에 존재한다.


- 시작 행은 HTTP (메서드/URL/버전/응답코드) 등
의 정보로 구성된다.

- HTTP GET 요청 시 시작 행을 가장 먼저 읽어드린
웹 서버는 "메시지 바디"가 존재하지 않는다는 것을
예상한다.


- HTTP POST 요청 시 시작 행을 가장 먼저 읽어드
린 웹 서버는 "메시지 바디"가 들어올 것을 예상 후
메시지 헤더의 Content-Length 길이를 읽어드려 메
시지 바디 크기를 파악한다.
HTTP 메시지 헤더
- 메시지 헤더는 콜론(:)으로 구분된 이름/값 쌍으로 정의
된다.


- 메시지 헤더는 여러 개일 수 있으며, 가장 마지막에 내용
없는 메시지 헤더를 추가해 더 이상의 메시지 헤더가 없
음을 알린다.

- 메시지 바디의 끝을 알리는 방법으로 Content-Length
메시지 헤더를 사용한다.(POST 요청 시 해당)

만약 이 값이 지정된 경우는 메시지 헤더 전송이 모두 완
료된 후 해당 크기 만큼의 메시지 바디가 따라온다는 의
미를 가지게 된다.(Chunked 인코딩 방식 제외)


- Chunked 인코딩 방식에서는 크기가 0인 청크를 사용해
메시지 바디의 끝을 알린다.

즉 메시지 바디의 종료 시점은 크기가 0인 청크를 만날 때
이다.
HTTP 메시지 바디
- 메시지 헤더 종료 후 메시지 헤더의 Content-
Length 길이를 통해 메시지 바디를 얼마나 읽어야
되는지 판단한다. 


- 메시지 헤더의 Content-Length로 전달받은 크기
에 도달하면 메시지 읽기를 종료한다.

이후 모든 내용(시작 행 + 부가정보)을 취합해 클라
이언트로 응답한다.(정적 HTML 등)



- 만약 바이너리(mime-type: multipart/form-data)
데이터 전송 시 메시지 바디는 임의의 문자열인
"7dd3ba3a4316ee"로 각 행이 구분된다.
HTTP 헤더 처리
HTTP 바디 처리
참고 서적
Hanbit eBook
Realtime 07




웹 프로그래머를 위한

서블릿
컨테이너의 이해
최희탁 지음
감사합니다.

More Related Content

What's hot

Giip doc1411-01-notification servicemanual
Giip doc1411-01-notification servicemanualGiip doc1411-01-notification servicemanual
Giip doc1411-01-notification servicemanualLowy Shin
 
Boss2D 설치과정
Boss2D 설치과정Boss2D 설치과정
Boss2D 설치과정Bonex Gu
 
노드js 기초
노드js 기초 노드js 기초
노드js 기초 경륜 이
 
Django에서 websocket을 사용하는 방법
Django에서 websocket을 사용하는 방법Django에서 websocket을 사용하는 방법
Django에서 websocket을 사용하는 방법NAVER D2
 
Mongo db in use(naver)
Mongo db in use(naver)Mongo db in use(naver)
Mongo db in use(naver)InBum Kim
 
웹(자바기준)의 전반적인 이해
웹(자바기준)의 전반적인 이해웹(자바기준)의 전반적인 이해
웹(자바기준)의 전반적인 이해JAEHYUN LIM
 
Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41cosmosyc
 
Observable c++ expressions using the observable library 이근원
Observable c++ expressions using the observable library 이근원Observable c++ expressions using the observable library 이근원
Observable c++ expressions using the observable library 이근원Kwen Won Lee
 
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범) Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범) InBum Kim
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012devCAT Studio, NEXON
 
Mongodb 개발 포인트
Mongodb 개발 포인트Mongodb 개발 포인트
Mongodb 개발 포인트흥배 최
 
Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Circulus
 
nodejs websocket & SOCKET.IO
nodejs websocket & SOCKET.IOnodejs websocket & SOCKET.IO
nodejs websocket & SOCKET.IOMungyu Choi
 
R2서버정진욱
R2서버정진욱R2서버정진욱
R2서버정진욱jungjinwouk
 
Nodejs발표자료 - 팀 세미나용
Nodejs발표자료 - 팀 세미나용 Nodejs발표자료 - 팀 세미나용
Nodejs발표자료 - 팀 세미나용 SuHyun Jeon
 
Ch9 프로세스의 메모리 구조
Ch9 프로세스의 메모리 구조Ch9 프로세스의 메모리 구조
Ch9 프로세스의 메모리 구조Minchul Jung
 
서블릿(servlet)
서블릿(servlet)서블릿(servlet)
서블릿(servlet)JungHoon Lee
 

What's hot (20)

Giip doc1411-01-notification servicemanual
Giip doc1411-01-notification servicemanualGiip doc1411-01-notification servicemanual
Giip doc1411-01-notification servicemanual
 
Boss2D 설치과정
Boss2D 설치과정Boss2D 설치과정
Boss2D 설치과정
 
Nodejs4
Nodejs4Nodejs4
Nodejs4
 
노드js 기초
노드js 기초 노드js 기초
노드js 기초
 
실시간통신
실시간통신실시간통신
실시간통신
 
Django에서 websocket을 사용하는 방법
Django에서 websocket을 사용하는 방법Django에서 websocket을 사용하는 방법
Django에서 websocket을 사용하는 방법
 
Mongo db in use(naver)
Mongo db in use(naver)Mongo db in use(naver)
Mongo db in use(naver)
 
웹(자바기준)의 전반적인 이해
웹(자바기준)의 전반적인 이해웹(자바기준)의 전반적인 이해
웹(자바기준)의 전반적인 이해
 
Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41
 
Observable c++ expressions using the observable library 이근원
Observable c++ expressions using the observable library 이근원Observable c++ expressions using the observable library 이근원
Observable c++ expressions using the observable library 이근원
 
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범) Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
 
Mongodb 개발 포인트
Mongodb 개발 포인트Mongodb 개발 포인트
Mongodb 개발 포인트
 
Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초
 
nodejs websocket & SOCKET.IO
nodejs websocket & SOCKET.IOnodejs websocket & SOCKET.IO
nodejs websocket & SOCKET.IO
 
Node week1
Node week1Node week1
Node week1
 
R2서버정진욱
R2서버정진욱R2서버정진욱
R2서버정진욱
 
Nodejs발표자료 - 팀 세미나용
Nodejs발표자료 - 팀 세미나용 Nodejs발표자료 - 팀 세미나용
Nodejs발표자료 - 팀 세미나용
 
Ch9 프로세스의 메모리 구조
Ch9 프로세스의 메모리 구조Ch9 프로세스의 메모리 구조
Ch9 프로세스의 메모리 구조
 
서블릿(servlet)
서블릿(servlet)서블릿(servlet)
서블릿(servlet)
 

Similar to 웹 서버 실행 환경

HeadFisrt Servlet&JSP Chapter 1
HeadFisrt Servlet&JSP Chapter 1HeadFisrt Servlet&JSP Chapter 1
HeadFisrt Servlet&JSP Chapter 1J B
 
Servlet&jsp 1장
Servlet&jsp 1장Servlet&jsp 1장
Servlet&jsp 1장JeongBong Kim
 
Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)
Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)
Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)진태 이
 
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요dgmit2009
 
서버성능개선 류우림
서버성능개선 류우림서버성능개선 류우림
서버성능개선 류우림우림 류
 
웹소켓 (WebSocket)
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)jeongseokoh
 
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초JinuNoh
 
막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js연웅 조
 
IT 일반기술 강의자료_ed10
IT 일반기술 강의자료_ed10IT 일반기술 강의자료_ed10
IT 일반기술 강의자료_ed10hungrok
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)DK Lee
 
웹 크롤링 (Web scraping) 의 이해
웹 크롤링 (Web scraping) 의 이해웹 크롤링 (Web scraping) 의 이해
웹 크롤링 (Web scraping) 의 이해2minchul
 
20201217 ssl and http2
20201217 ssl and http220201217 ssl and http2
20201217 ssl and http2sonhyungsoo
 
build a linux webhosting server
build a linux webhosting serverbuild a linux webhosting server
build a linux webhosting server정현 윤
 
JSP 프로그래밍 #01 웹 프로그래밍
JSP 프로그래밍 #01 웹 프로그래밍JSP 프로그래밍 #01 웹 프로그래밍
JSP 프로그래밍 #01 웹 프로그래밍Myungjin Lee
 
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http RequestNAVER D2
 
HTTP 완벽가이드 : 1-1 http 개관
 HTTP 완벽가이드 : 1-1 http 개관 HTTP 완벽가이드 : 1-1 http 개관
HTTP 완벽가이드 : 1-1 http 개관ssuser491981
 
[D2 CAMPUS]웹 개발자의 스펙 : HTTP
[D2 CAMPUS]웹 개발자의 스펙 : HTTP[D2 CAMPUS]웹 개발자의 스펙 : HTTP
[D2 CAMPUS]웹 개발자의 스펙 : HTTPNAVER D2
 

Similar to 웹 서버 실행 환경 (20)

HeadFisrt Servlet&JSP Chapter 1
HeadFisrt Servlet&JSP Chapter 1HeadFisrt Servlet&JSP Chapter 1
HeadFisrt Servlet&JSP Chapter 1
 
Servlet&jsp 1장
Servlet&jsp 1장Servlet&jsp 1장
Servlet&jsp 1장
 
Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)
Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)
Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)
 
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
 
서버성능개선 류우림
서버성능개선 류우림서버성능개선 류우림
서버성능개선 류우림
 
웹소켓 (WebSocket)
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)
 
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
 
Servlet3
Servlet3Servlet3
Servlet3
 
막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js
 
3장
3장3장
3장
 
Web server
Web serverWeb server
Web server
 
IT 일반기술 강의자료_ed10
IT 일반기술 강의자료_ed10IT 일반기술 강의자료_ed10
IT 일반기술 강의자료_ed10
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
 
웹 크롤링 (Web scraping) 의 이해
웹 크롤링 (Web scraping) 의 이해웹 크롤링 (Web scraping) 의 이해
웹 크롤링 (Web scraping) 의 이해
 
20201217 ssl and http2
20201217 ssl and http220201217 ssl and http2
20201217 ssl and http2
 
build a linux webhosting server
build a linux webhosting serverbuild a linux webhosting server
build a linux webhosting server
 
JSP 프로그래밍 #01 웹 프로그래밍
JSP 프로그래밍 #01 웹 프로그래밍JSP 프로그래밍 #01 웹 프로그래밍
JSP 프로그래밍 #01 웹 프로그래밍
 
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
 
HTTP 완벽가이드 : 1-1 http 개관
 HTTP 완벽가이드 : 1-1 http 개관 HTTP 완벽가이드 : 1-1 http 개관
HTTP 완벽가이드 : 1-1 http 개관
 
[D2 CAMPUS]웹 개발자의 스펙 : HTTP
[D2 CAMPUS]웹 개발자의 스펙 : HTTP[D2 CAMPUS]웹 개발자의 스펙 : HTTP
[D2 CAMPUS]웹 개발자의 스펙 : HTTP
 

웹 서버 실행 환경

  • 1. 웹 서버 실행 환경이란?
  • 2. 목차 •웹 개발자 이것까지 알아야 하나? • 그럼 웹 서버는 무엇을 어떻게 처리하나? • HTTP 메시지 상세 분석
  • 3. 웹 서버 실행 환경이란? Socket 통신 및 HTTP 프로토콜 해석 등을 추상화한 환경 ? ? HTML? 들어는 SMS? 본듯? 인증? WHAT? HTML5? WEB Socket??
  • 4. Keep Gzip Chunked HTTP Alive Session Cache TCP 등....;;;;; 1. 웹 개발자가 이것까지 알아야 하나?
  • 5. Keep Gzip Chunked HTTP Alive Session Cache TCP 등....;;;;; 1. 웹 개발자가 이것까지 알아야 하나? "관련 Needs가 발생하지 않는 한 굳이 알아야 할 필요성은 없다 고 생각한다." by 전성균!!
  • 6. 그럼 몰라도 상관 없겠네? 이런거 까지 알아 뭐하겠노? 또 소고기 사묵겠지?
  • 7.
  • 8. "하지만 다양한 기능 구현 시 좀 더 최 적화된 결과물을 만들어 낼 수 있다."
  • 9. 2. 그럼 웹 서버는 무엇을 어떻게 처리하나?
  • 10. 너무 간단한거 아니야? Web Server + Web Application Server
  • 11. Wire Shake로 본 웹 서버 처리 과정
  • 12. 웹 서버 처리 과정 1. HTTP Session(논리적 연결) 생성 2. 브라우저 내부 Thread가 Client Socket을 만들어 Server Socket 과의 연결을 수행한다 3. 브라우저와 웹 서버는 HTTP Request 및 Response를 수행한 다. 4. Server Socket Close 5. Client Socket Close 및 브라우저 쓰레드 종료. 6. HTTP Session Close
  • 13. 3. HTTP 메시지 상세 분석
  • 15. - HTTP 메시지는 원격 기계에 있는 문서의 위 치와 메시지를 지정하는 방법이다. - HTTP 메시지는 아스키코드 13번인 "캐리지 리턴(r)"과 10번인 "라인피드(n)"의 조합으로 각 행을 구분한다.(CRLF) - HTTP 메시지는 시작행과 부가정보(선택적 으로 추가 가능한 메시지 헤더와 메시지 바디) 로 구성된다.
  • 17. - 시작 행은 HTTP 메시지의 가장 첫 행에 존재한다. - 시작 행은 HTTP (메서드/URL/버전/응답코드) 등 의 정보로 구성된다. - HTTP GET 요청 시 시작 행을 가장 먼저 읽어드린 웹 서버는 "메시지 바디"가 존재하지 않는다는 것을 예상한다. - HTTP POST 요청 시 시작 행을 가장 먼저 읽어드 린 웹 서버는 "메시지 바디"가 들어올 것을 예상 후 메시지 헤더의 Content-Length 길이를 읽어드려 메 시지 바디 크기를 파악한다.
  • 19. - 메시지 헤더는 콜론(:)으로 구분된 이름/값 쌍으로 정의 된다. - 메시지 헤더는 여러 개일 수 있으며, 가장 마지막에 내용 없는 메시지 헤더를 추가해 더 이상의 메시지 헤더가 없 음을 알린다. - 메시지 바디의 끝을 알리는 방법으로 Content-Length 메시지 헤더를 사용한다.(POST 요청 시 해당) 만약 이 값이 지정된 경우는 메시지 헤더 전송이 모두 완 료된 후 해당 크기 만큼의 메시지 바디가 따라온다는 의 미를 가지게 된다.(Chunked 인코딩 방식 제외) - Chunked 인코딩 방식에서는 크기가 0인 청크를 사용해 메시지 바디의 끝을 알린다. 즉 메시지 바디의 종료 시점은 크기가 0인 청크를 만날 때 이다.
  • 21. - 메시지 헤더 종료 후 메시지 헤더의 Content- Length 길이를 통해 메시지 바디를 얼마나 읽어야 되는지 판단한다.  - 메시지 헤더의 Content-Length로 전달받은 크기 에 도달하면 메시지 읽기를 종료한다. 이후 모든 내용(시작 행 + 부가정보)을 취합해 클라 이언트로 응답한다.(정적 HTML 등) - 만약 바이너리(mime-type: multipart/form-data) 데이터 전송 시 메시지 바디는 임의의 문자열인 "7dd3ba3a4316ee"로 각 행이 구분된다.
  • 23.
  • 25.
  • 26. 참고 서적 Hanbit eBook Realtime 07 웹 프로그래머를 위한 서블릿 컨테이너의 이해 최희탁 지음