네트워크

[혼자공부하는네트워크] DNS, HTTP, TCP

인생개발 이정환 2024. 9. 21. 22:10

DNS, HTTP, 그리고 TCP가 어떻게 상호작용하는지 순차적으로 설명해 드릴게요.

1. DNS 요청

  • 사용자가 웹 브라우저에서 "www.example.com"에 접속하면, 먼저 해당 도메인에 대한 IP 주소를 알아내야 합니다. 이 과정에서 **DNS(Domain Name System)**가 사용됩니다.
  • DNS 요청을 통해 **www.example.com**의 도메인 이름이 IP 주소로 변환됩니다. (예: 93.184.216.34)
  • 이렇게 얻은 IP 주소는 실제 웹 서버가 위치한 컴퓨터를 가리키며, 이 주소로 클라이언트가 요청을 보냅니다.

2. TCP 연결 설정

  • DNS를 통해 IP 주소를 알아냈으니 이제 HTTP 요청을 보내기 위해 서버와 TCP 연결을 설정합니다.
  • TCP는 3-way handshake라는 과정을 통해 클라이언트와 서버 사이에 안정적인 연결을 설정합니다:
    1. 클라이언트가 서버에 SYN(Synchronize) 패킷을 보냅니다.
    2. 서버가 이를 받고, 응답으로 SYN-ACK(Synchronize Acknowledgment) 패킷을 보냅니다.
    3. 클라이언트가 ACK(Acknowledgment) 패킷을 보내면 연결이 완료됩니다.

이 과정을 통해 클라이언트와 서버가 신뢰할 수 있는 **통신 채널(TCP 연결)**을 확보하게 됩니다.

3. HTTP 요청 전송 (TCP 사용)

  • TCP 연결이 완료되면, 이제 HTTP 요청을 보낼 준비가 됩니다.
  • 클라이언트가 서버로 HTTP GET 요청을 보냅니다. 이때 요청하는 URL과 파라미터(예: GET /search?q=example HTTP/1.1)를 TCP를 통해 서버로 전달합니다.
    • HTTP 헤더에는 여러 메타 정보(사용자 에이전트, 호스트 정보 등)가 포함되고, 필요에 따라 쿼리 파라미터바디에 데이터를 담아서 요청합니다.
  • 이 요청은 TCP 패킷으로 쪼개져서 서버로 전송됩니다.

4. 서버 응답 (TCP 사용)

  • 서버는 클라이언트로부터 받은 HTTP 요청을 처리한 후, 결과를 다시 TCP를 통해 클라이언트로 보냅니다.
  • 예를 들어, HTTP 응답이 성공적이라면 HTTP/1.1 200 OK 응답 코드와 함께 웹 페이지 데이터가 포함됩니다.
  • 이 응답 데이터 역시 TCP를 통해 안전하게 클라이언트에게 전송됩니다.

5. TCP 연결 종료

  • HTTP 응답이 끝난 뒤, 더 이상 데이터를 주고받을 필요가 없다면, 클라이언트와 서버는 TCP 연결을 종료합니다.
  • TCP 연결 종료는 4-way handshake라는 과정을 통해 이루어집니다. 이 과정에서 양쪽이 데이터를 모두 전송했다는 것을 확인한 후 연결을 종료합니다.