본문 바로가기

Study/프로토콜

01 - 통신절차

 URL 용청은 웹 서버에 수신된 후 요청 내용을 문서로 만들어 사용자에게 송신하게 되는것이 일반적이다. 그러면 사용자 웹 브라우저에서 그림과   

문서 등이 로딩되면서 사용자가 비로소 원하는 정보를 얻게 되는데 바로 이 정도의 수준이 일반 사용자가 이해하는 HTTP 프로토콜이다.

 

 그러나 조금 더 기술적인 관점에서 보게되면, 당연한 이야기이지만 요청한 URL 사이트로 이동하기 위해 해당 웹 서버에는 공인 IP가 할당되어 있어야 하며 (전제조건 : 프록시 사용 X) 이를 위해 시스템 파일인 호스트파일(hosts) 혹은 DNS 쿼리 요청을 통해 해당 IP정보를 얻게 된다.

 

 

* 호스트 파일 : IP 주소에 호스트의 이름 분적 수조를 알려주는 텍스트 파일. IP 주소 라인마다 해당 호스트 이름을 함께 나타낸 이 파일은 

                     네트워크 기반의 네이밍 시스템에서는 좀 길긴 하지만 아직도 점검이나 특수현 경우에 네이밍 시스템을 무시하고 접속하기

                     위해 사용

 

* 윈도우7 호스트 파일 : [  C:\Windows\System32\drivers\etc\ ]

 

 

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

일단 세션이 성립되면 HTTP Request Header + Body에 주소와 요청 데이터를 포함하여 웹 서버에 전달한다. 이때 웹 서버는 사용자 요청의 유효성을 검증한 후 문제가 없다면 HTTP Response Header + Response Body에 문서를 만들어 사용자에게 전달하게 된다.

 

 

HTTP 송수신 과정

 

 

 

 

 

 

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

 

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

 

 

 *HTTP Over TCP

 

   HTTP는 TCP 프로토콜 기반 위에서 회선(세션) 연결, 데이터 전송, 회선 종결의 절차를 거친다. 다만, 기존 TCP 프로토콜(TELNET, FTP) 등과의 차이는 세션을 계속 유지하지 않고 (이를 State-Less라 함) 사용자에게 정보를 전달한 후 바로 끊어버린다.

 

 

 

 

 

 

가장 먼저 회선 연결 과정을 거치는데, 이는 전화기의 수화기를 들어 원하는 번호를 눌러 상대방과 통화가 되기를 기다리는 과정과 같다.

 

 

 

 

① Listen : 웹 서버가 포트(기본 80번)를 열어놓고 사용자 요청을 대기중인 상태

 

② Synchronize(이하 SYN) - Sent : 사용자가 웹 서버에 접속 요청을 시도하는 단계

 

③ SYN - Received : 사용자 요청에 대한 응답으로 Acknowledge(이하 ACK) 와 SYN을 전송

 

④ ACK : 사용자는 다시 한번 웹 서버의 응답 (SYN, ACK)에 대한 확인 메시지인 ACK를 전송

 

      이상으로 세션 연결이 성립되면 상호 간 (웹 브라우저 & 웹 서버) 데이터를 주고 받음

 

⑤  GET Document - PUSH : TCP 스택에서는 PUSH 옵션을 통해 빠른 처리를 요구할 수 있으며 상위 프로토콜인 HTTP 에서는

                                                  GET 메소드를 이용하며 기본페이지(index.html, main.html 등)를 요청

 

⑥ TCP Checksum, ACK : 웹 서버는 사용자 요청 데이터에 대한 손실 및 훼손을 점검하고 이상 없다는 ACK 메시지를 전송

 

요청 문서 제공 - PUSH : 웹 서버는 요청 문서를 사용자에게 전송

 

⑧ TCP Checksum, ACK : 마찬가지로 사용자도 웹 서버 전송 및 데이터에 대한 손실 및 훼손을 점검,  이상없다는 ACK 메시지를 전송

 

 

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

 

 

TCP 헤더에서 메시지 상태를 알리는 6개 BIT

 

아래의 6개 BIT 조합에 따라 TCP 통신이 어떠한 상태인지를 알 수 잇다. 그러나 사전 약소한(프로토콜) 조합만을 전송할 수 있으며, 비정상적인

조합일 때는 강제로 통신을 끊어버리게 된다.

 

URG 

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

ACK 

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

PSH 

빠른 처리 요구 위한 BIT (일반적으로 모든 TCP 메시지의 기본값으로 포함

RTS 

강제로 세션을 끊기 위한 BIT

SYN 

TCP 세션을 시작하기 위한 BIT 

FIN 

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

 

 

 

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

 

 

HTTP 회선 종결 과정

 

 

 

 

① FIN - WAIT 1 : 사용자는 세션 종결 요청을 위해 FIN과 ACK를 전송 ( 연결을 시도한자가 먼저 세션 종결 요청을 하게 된다 )

 

② CLOSE - WAIT : 세션 종결 요청을 웹 어플리케이션에 전달

 

③ FIN - WAIT 2 : 웹 서버의 대답을 기다리는 중

 

④ LAST ACK : 웹 서버는 조열 합의의 의미로 FIN과 ACK를 전송

 

⑤ TIME - WAIT : 합의 데이터 (FIN,ACK)를 잘 받았다는 의미로 ACK를 웹 서버로 전송하게 됨, 그러나 회선 연결이 완전히 끊어진 상태가

                         아니며 혹시 늦게 도착할 수 있는 데이터를 위해 일정 시간을 잠시 기다리는 시간

 

⑥ CLOSE : 회선이 완전히 끊어지게 됨