Wook No.1
HTTP 세션연결 및 데이터 전송과정 과 회선 종결과정 본문
웹브라우저는 사용자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: 마찬가지로 사용자측에도 웹서버 전송 데이터에 대한 손실 및 훼손을 점검하고 이상 없다는 ACK메시지를 전송한다.
필요한 데이터 주고받기를 완료하면 HTTP는 즉시 연결 해제 작업을 수행한다.
- FIN-WAIT 1: 사용자는 세션종결 요청을 위해 FIN과 ACK를 전송한다(연결을 시도한자가 먼저 세션종결 요청을 하게 된다)
- CLOSE-WAIT 2: 세션 종결 요청을 웹 애플리케이션에 전달한다.
- FIN-WAIT 2: 웹서버의 대답을 기다리는 중이다.
- LAST ACK: 웹서버는 종결 합의의 의미로 FIN과 ACK를 전송한다.
- TIME-WAIT: 합의데이터(FIN, ACK)를 잘 받았다는 의미로 ACK로 웹서버를 전송하게 된다. 그러나 회선 연결이 완전히 끊어진 상태가 아니며, 혹시 늦게 도착할 수 있는 데이터를 위해 일정 시간을 잠시 기다리는 시간이다.
- CLOSE: 회선이 완전히 끊어지게 된다
'ETC' 카테고리의 다른 글
Jenkins 설치(Mac OS) (0) | 2022.04.14 |
---|---|
안드로이드 디바이스 화면 미러링 (0) | 2022.04.14 |
안드로이드 스튜디오 프로젝트 Git 연결 (0) | 2022.02.03 |
구글 OAuth2.0 API (0) | 2021.07.12 |
[MacOS] 안드로이드 스튜디오 한글 마지막 글자 잘림 현상 해결법 (0) | 2021.06.25 |
Comments