|
|
웹브라우저는 사용자IP를 웹서버에 전달하면서 상호간 통신(TCP 세션 연결)은 시작된다.
일단 세션이 연결되면 HTTP Request Header와 Body에 주소와 요청 데이터를 포함하여 웹서버에 전달한다.
이때 웹서버는 사용자 요청의 유효성을 검증한 후 이상이 없다면 HTTP Response Header 및 Response Body에 문서를 만들어 사용자에게 전달하게 된다.
세션연결 및 데이터 전송과정
-
Listen: 웹서버가 포트를 열어놓고 사용자 요청을 대기중인 상태이다.
-
SYN-Sent: 사용자가 웹서버에 접속요청을 시도하는 단계
-
SYN-Received: 사용자 요청에 대한 응답으로 ACK와 SYN을 전송한다.
-
ACK: 사용자는 다시한번 웹 서버의 응답(SYN,ACK)에 확인 메시지인 ACK를 전송한다.
여기부터는 데이터 송수신
-
Get Document-PUSH: TCP 스택에서는 PUSH 옵션을 통해 빠른 처리를 요구할수 있으며 상위 프로토콜인 HTTP에서는 GET메소드를 이용하여 기본 페이지(index.html등)을 요청하게 된다.
-
TCP Checksum, ACK: 웹서버는 사용자 요청 데이터에 대한 손실 및 훼손을 점검하고 이상없다는 ACK 메시지를 전송한다.
-
요청문서 제공-PUSH: 웹서버는 요청 문서를 사용자에게 전송한다.
-
TCP Checksum, ACK: 마찬가지로 사용자측에도 웹서버 전송 데이터에 대한 손실 및 훼손을 점검하고 이상 없다는 ASK메시지를 전송한다.
비트명 |
설명 |
URG |
다른 패킷에 비해 가장 먼저 긴급하게 처리를 요청하기 위한 BIT |
ACK |
잘 받았다는 메시지 처리를 위한 BIT |
PSH |
빠른 처리 요구를 위한 BIT (일반적으로 모든 TCP메시지를 주고받을 때 기본 값으로 들어감) |
RTS |
강제로 세션을 끊기 위한 BIT |
SYN |
TCP 세션을 시작하기 위한 BIT |
FIN |
정상적인 절차로 끊기 위한 BIT |
HTTP 회선 종결과정
필요한 데이터 주고받기를 완료하면 HTTP는 즉시 연결 해제 작업을 수행한다.
-
FIN-WAIT 1: 사용자는 세션종결 요청을 위해 FIN과 ACK를 전송한다(연결을 시도한자가 먼저 세션종결 요청을 하게 된다)
-
CLOSE-WAIT 2: 세션 종결 요청을 웹 애플리케이션에 전달한다.
-
FIN-WAIT 2: 웹서버의 대답을 기다리는 중이다.
-
LAST ACK: 웹서버는 종결 합의의 의미로 FIN과 ACK를 전송한다.
-
TIME-WAIT: 합의데이터(FIN, ACK)를 잘 받았다는 의미로 ACK로 웹서버를 전송하게 된다. 그러나 회선 연결이 완전히 끊어진 상태가 아니며, 혹시 늦게 도착할 수 있는 데이터를 위해 일정 시간을 잠시 기다리는 시간이다.
-
CLOSE: 회선이 완전히 끊어지게 된다.
'Web Programming' 카테고리의 다른 글
4개 브라우저의 랜더링엔진 설명 (3) | 2010.07.08 |
---|---|
로컬에 적용된 SVN를 Eclipse에서 활용하기 (6) | 2010.01.14 |
Microsoft REMIX09 Open (0) | 2009.09.15 |
유니코드란.. (2) | 2009.05.04 |