
웹
WWW(World Wide Web=Web=W3)
。인터넷에 연결된 전세계 사용자들이 서로의 정보를 공유할 수 있는 공간
。정보를하이퍼텍스트형식으로 표현 및하이퍼텍스트를 따라 이동하면서 다양한 정보/문서들을 연결 및 제공
。웹 브라우저를 통해 접근되며HTTP,HTTPS프로토콜 사용
▶Web은Server와Client가HTTP Transaction을 통해요청과응답으로 상호작용
웹의 시작
。1980년 스위스CERN소속팀 버너스리에 의해 연구원 간 신속한 정보교환을 목적으로 개발
▶하이퍼 텍스트를 통해 다양한 정보로 연결
hyper text
。단순한 글자가 아닌, 그 이상의 의미를 가진text라는 의미
▶ 주로 링크, 참조의 역할을 하는 기술
Web에는 수많은Web Site가 존재하고, 각각의Web Site는Web Page들로 구성
。웹페이지웹사이트웹
- 웹 페이지 ( Web Page )
。웹상에웹사이트를 구성하는 개별문서 또는 페이지
。웹페이지는HTML 파일,이미지,동영상,오디오등 다양한 형태의객체로 구성
▶ 각각의객체는URL을 통해 접근
웹페이지 URL:www.someschool.edu/someDept/pic.gif
▶www.someschool.edu: Host name ( 서버에 대한 주소 )
▶/someDept/pic.gif: Path name ( 서버내 자원에 대한 주소 )
- 웹 사이트 ( Web Site )
。웹상에서 특정도메인이나IP주소를 통해 접근가능한웹페이지들의집합
HTTP( Hyper Text Transfer Protocol )
。Client - Server Architecture를 가진Web Application간 데이터를 교환을 위해 활용되는어플리케이션 계층 프로토콜
▶Host인HTTP Client와HTTP Server의프로세스로서 활용될어플리케이션는HTTP규약에 따라서Message의 송수신을 수행
。RFC 1945,RFC 7230,RFC 7540에 정의
。HTTP 기본 포트:80
。암호화가 적용되지않은프로토콜
▶HTTP에 포함된평문데이터를 제 3자에 의해 식별이 가능하므로개발환경에서만 사용
▶ 현재는암호화 계층이 추가된HTTPS를 사용
HTTP역사
。초기HTTP는 단순히HTML 문서를 주고받는 데 사용되어 문서 간하이퍼텍스트를 통해 탐색하도록 설계
▶ 현재는하이퍼텍스트뿐만 아닌이미지,동영상등 다양한자원을 지원
HTTP Protocol특징
서버의자원에 접근하기 위한프로토콜
。클라이언트는서버에자원을 요청하고서버는자원을 반환
트랜스포트 계층 프로토콜로TCP / IP를 사용
。HTTP을 따르는Web Application이소켓을 통해Message를 전송 시트랜스포트 계층 프로토콜로TCP를 사용하도록 규정
▶Web은Data Integrity를 중시하므로
。단, 현재HTTP/3에서는UDP기반의QUIC 프로토콜을 사용하여연결지연 감소및전송속도 향상
。트랜스포트 계층에서TCP를 통해 사전에연결을 구축하여 통신함으로써Message 무결성을 보장
비연결지향(Connetionless) :
。HTTP 프로토콜는 매요청마다TCP를 통한TCP Connection을 구축 후HTTP Transaction을 완료하면 연결을 끊는 특징이 존재
Stateless Protocol
。HTTP 프로토콜는Transaction이 완료되어연결을 끊는 순간Client와Server간 상태정보를 유지하지 않는 특징이 존재.
▶TCP Connection이 종료되는 순간 과거HTTP Request와HTTP Response의 정보가 유지되지 않으므로, 매번 페이지 이동시마다 로그인을 다시하거나 구매페이지에서 선택 상품의 정보가 없는 문제가 발생.
。Stateless한 특징으로상태가 없어프로토콜이 단순하여Server는 동시에 수천개의TCP Connection을 수행할 수 있다.
▶서버는 각요청마다연결을 모두 유지하는게 아닌응답및연결을 종료하여 수많은요청을 처리할 수 있음.
。HTTP Client에서HTTP Server로객체를 요청할때,HTTP Server는HTTP Request자체만으로Stateless하므로 어떤클라이언트로부터 오는지에 정보를 알 수 없어HTTP Response를 보낼 수 없다.
▶ 이에상태 유지를 위해Cookie,Session,Token등 을 활용
Web App'에서TCP를 통한Message송수신
1. 사전에HTTP Client에서HTTP Server간TCP Connection을 구축 및 양측에TCP Connection의소켓 인터페이스를 생성
。HTTP Port번호:80로HTTP Server의URL중Host name으로TCP Connection생성
。HTTP Server의서버 프로세스는 항상포트번호 : 80에서Waiting상태로 대기중이며,HTTP Client의TCP Connection요청이 수신된 경우Accept및Client에게 응답
2.HTTP Client는 해당소켓 인터페이스에HTTP Request Message를 전송하여HTTP Server로 전송 및소켓 인터페이스로부터HTTP Response Message를 전달받음
。클라이언트 소켓에 객체에 대한URL의path 이름의 자원에 대한HTTP Request Message를 전송 및Server는 해당 자원을HTTP Response Message에캡슐화하여서버 소켓으로 전송
3.HTTP Transaction이 끝난 경우TCP Connection을 종료
HTTP의TCP연결방식 구분
。비지속 연결/지속 연결
▶HTTP Client와HTTP Server간HTTP Transaction시TCP 연결방식에 따라 구분
비지속 연결( non-persistent connection )
。웹페이지를 구성하는 각각의객체를 전송할때마다TCP Connection구축 및HTTP Trasaction이 끝나면TCP Connection을 종료하는 방식
。HTTP 1.0에서 주로 사용하는 방식임.
ex )웹페이지가 10개의객체로 구성되어웹페이지를HTTP Client로 전송하는 경우 각각 10번의TCP Connection의 연결 및 종료를 반복
HTTP 비지속 연결과정
。웹페이지를HTTP Server에서HTTP Client로 전송하는 경우
。웹페이지가HTML 문서와문서가 참조하는 10개의JPEG로 구성 및 동일한Server내저장장치에 존재하는 경우
。HTTP Server의HTML 문서의 URL :www.someschool.edu/someDept/home.index일때
HTTP Client와HTTP Server간TCP Connection을 구축
。HTTP 포트번호 : 80을 통해www.someschool.edu/의Server host name로TCP Connection을 수행
▶Client와Server에서 각각TCP Connection에 대한소켓 인터페이스생성
。HTTP Server의서버 프로세스는 항상포트번호 : 80에서Waiting상태로 대기중이며,HTTP Client의TCP Connection요청이 수신된 경우Accept및Client에게 응답
HTTP Client에서 자원에 대한HTTP Request Message를 전송
。Server에서TCP Connection이Accept된 것을 확인할 경우 해당TCP Connection의소켓으로/someDept/home.index의URL Path name을 포함한HTTP Request Message를 전송
HTTP Server에서Request에 대한 객체를 포함하여HTTP Response Message로 응답
。HTTP Server의TCP Connection의소켓으로부터HTTP Request Message를 수신
。저장장치에서URL Path name인/someDept/home.index에 해당하는HTML 문서를 추출하여HTTP Response Message에캡슐화한 후소켓을 통해HTTP Client로 응답
HTTP Server에서TCP에게TCP Connection종료 명령
。단.TCP Client에서HTTP Response Message를 수신할때까지 종료하지않음
HTTP Client가HTTP Response Message수신 시TCP Connection종료
。HTTP Response Message로 부터캡슐화된HTML 문서를 추출 및 10개의JPEG 객체에 대한 참조를 확인
- 나머지
객체인JPEG에 대해 요청하여 위HTTP Transaction을 반복
비지속 연결방식의HTTP Response Time
non-persistent HTTP Response Time=2*RTT + file transmission time
。초기TCP Connection구축 :1 RTT
。HTTP Transaction:1 RTT
。file transmission time의 경우HTTP Response Message에 첨부된File을 전송하는데 소요되는 시간
。객체한개의HTTP Transaction수행 시2*RTT가 소요
▶ 매번TCP Connection을 연결하기때문
ex ) 1개의base HTML Document와 참조하는 4개의JPEG를Client로 전송 시5*2*RTT가 소요
parallel TCP Connection
。복수의TCP Connection 소켓을 연결하여 동시에 병렬로TCP Connection과HTTP Transaction을 수행하여HTTP Response Time을 단축시킬 수 있다.
▶OS입장에서TCP Connection당 각각소켓과버퍼를 할당하는데 한프로세스에 여러개의TCP Connection을 사용하는경우OS 자원의 소모가 매우 크게됨
RTT( Round Trip Time )
。패킷전달 시Client와Server간 왕복하는데 소요시간
지속 연결( persistent connection )
。웹페이지의객체들을HTTP Trasaction시 동일한TCP Connection을 통해 전송하는 방식
。HTTP 1.0이후로 선택해서 사용가능 선택해서 사용가능
。비지속 연결과 다르게HTTP Server에서Response Message를 응답한 이후에도TCP Connection을 종료하지 않고 유지
▶비지속 연결과정에서 4번 과정 이후로 수행하지않고, 3번만 반복
。HTTP Transaction은 매번TCP Connection을 구축할 필요없이 동일한 연결이 유지되는TCP Connection을 이용
지속 연결의HTTP Response Time
。초기TCP Connection구축 :1 RTT
。HTTP Transaction:1 RTT
。 이후객체한개의HTTP Transaction수행 시마다1 RTT소요
▶비저속 연결의2 RTT소요하는것에 비해 감소
HTTP프로토콜의Stateless를 보완하기 위해 사용하는 방법 :
。HTTP는Stateless Protocol이므로, Server와 Client 간HTTP Transaction후TCP Connection을 종료하면 상태정보를 유지하지 않는다.
▶ 통신이 끊어지면 상태정보가 유지되지 않으므로, 이를 보완하기위해HTTP는Cookie,Session,Token를 사용
HTTP - Cookie
Web Cache = Proxy Server HTTP - Web Cache
。HTTP의Client / Server간 중계서버 역할수행
。Client의HTTP Request에 대한Response Time감소 및 다수의브라우저로 구성된 특정 기관으로부터의인터넷으로 접속하는통신링크의Traffic을 상당수 감소