웹브라우저는 사용자IP를 웹서버에 전달하면서 상호간 통신(TCP 세션 연결)은 시작된다.

일단 세션이 연결되면 HTTP Request Header와 Body에 주소와 요청 데이터를 포함하여 웹서버에 전달한다.

이때 웹서버는 사용자 요청의 유효성을 검증한 후 이상이 없다면 HTTP Response Header 및 Response Body에 문서를 만들어 사용자에게 전달하게 된다.

 

세션연결 및 데이터 전송과정

  1. Listen: 웹서버가 포트를 열어놓고 사용자 요청을 대기중인 상태이다.
  2. SYN-Sent: 사용자가 웹서버에 접속요청을 시도하는 단계
  3. SYN-Received: 사용자 요청에 대한 응답으로 ACK와 SYN을 전송한다.
  4. ACK: 사용자는 다시한번 웹 서버의 응답(SYN,ACK)에 확인 메시지인 ACK를 전송한다.

여기부터는 데이터 송수신

  1. Get Document-PUSH: TCP 스택에서는 PUSH 옵션을 통해 빠른 처리를 요구할수 있으며 상위 프로토콜인 HTTP에서는 GET메소드를 이용하여 기본 페이지(index.html등)을 요청하게 된다.
  2. TCP Checksum, ACK: 웹서버는 사용자 요청 데이터에 대한 손실 및 훼손을 점검하고 이상없다는 ACK 메시지를 전송한다.
  3. 요청문서 제공-PUSH: 웹서버는 요청 문서를 사용자에게 전송한다.
  4. TCP Checksum, ACK: 마찬가지로 사용자측에도 웹서버 전송 데이터에 대한 손실 및 훼손을 점검하고 이상 없다는 ASK메시지를 전송한다.

 

비트명

설명

URG

다른 패킷에 비해 가장 먼저 긴급하게 처리를 요청하기 위한 BIT

ACK

잘 받았다는 메시지 처리를 위한 BIT

PSH

빠른 처리 요구를 위한 BIT

(일반적으로 모든 TCP메시지를 주고받을 때 기본 값으로 들어감)

RTS

강제로 세션을 끊기 위한 BIT

SYN

TCP 세션을 시작하기 위한 BIT

FIN

정상적인 절차로 끊기 위한 BIT

 

HTTP 회선 종결과정

 

필요한 데이터 주고받기를 완료하면 HTTP는 즉시 연결 해제 작업을 수행한다.

  1. FIN-WAIT 1: 사용자는 세션종결 요청을 위해 FIN과 ACK를 전송한다(연결을 시도한자가 먼저 세션종결 요청을 하게 된다)
  2. CLOSE-WAIT 2: 세션 종결 요청을 웹 애플리케이션에 전달한다.
  3. FIN-WAIT 2: 웹서버의 대답을 기다리는 중이다.
  4. LAST ACK: 웹서버는 종결 합의의 의미로 FIN과 ACK를 전송한다.
  5. TIME-WAIT: 합의데이터(FIN, ACK)를 잘 받았다는 의미로 ACK로 웹서버를 전송하게 된다. 그러나 회선 연결이 완전히 끊어진 상태가 아니며, 혹시 늦게 도착할 수 있는 데이터를 위해 일정 시간을 잠시 기다리는 시간이다.
  6. 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
Posted by Finebe
,