4월 15, 2022

TIL) 웹 브라우저 요청 흐름

https://commons.wikimedia.org/wiki/File:Tcp-handshake.svg 에 접속합니다

HTML 파일을 받아옵니다.

해당 링크 안에 이미지로 

https://upload.wikimedia.org/wikipedia/commons/9/98/Tcp-handshake.svg  가 들어있습니다.

브라우저는 HTML파일을 읽다가 이 이미지 주소로 서버에 요청을 보냅니다.

이것이 간단한 HTTP 트랜잭션입니다.


이미지를 받아오는 과정을 순서화하면,

1. DNS 조회 후 여기에서 서버의 IP 추출. 

2. PORT 정보 조회

3. HTTP 요청 메시지 생성

    


4. 웹 브라우저는 TCP 3 Way-handshake 방식으로 서버와 커넥션을 생성한다.

5. 웹 브라우저는 서버에 HTTP 요청을 보낸다.

6. 서버는 HTTP 요청을 해석한다. 

7. 서버는 요청을 받은 메서드를 찾는다.

8. 찾게되면 이를 200상태코드와 응답 메시지에 동봉하여 클라이언트에게 전송한다.

9. 서버와 클라이언트는 TCP4 Way-handshake 방식으로 커넥션을 종료한다.



(4way handshake 방식, 출처 https://gyoogle.dev/blog/computer-science/network/TCP%203%20way%20handshake%20&%204%20way%20handshake.html)

TCP4 Way-handshake 과정
a. 클라이언트는 FIN 보내고 FIN WAIT
b. 서버는 FIN을 확인했다는 ACK를 클라이언트에게 보냄
c. 데이터를 모두 보낸 이후 종료됐다는 FIN 플래그를 클라이언트에게 회신
d. 클라이언트는 혹시 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT으로 기다린다
e. 서버는 ACK를 받은 이후 소켓을 닫는다
f. TIME_WAIT 이후 클라이언트도 닫는다.