ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • URL에 www.naver.com을 입력하면 무슨 일이 일어날까?
    CS/네트워크 2022. 3. 2. 20:15
    728x90

    TCP/IP의 흐름

    www.naver.com을 주소창에 입력한다면?

     

     

    1. 네이버 웹서버의 80포트로 HTTP Request 메시지를 보낸다. 

    크롬 개발자 도구에서 HTTP 요청과 응답을 볼 수 있다.

    mac -> option + command + i

    window -> F12

    naver Request Header

    2. 해당 요청을 인터넷을 통해 네이버 서버로 전달하기 위해 패킷을 만들어야 한다.

     

    패킷에는 각 계층에 필요한 정보들이 담겨야 한다.

     

    Packet의 구조

    Packet

    네이버 서버로 전달될 때 패킷에 1계층 Ethernet / 2계층 IP / 3계층 TCP / 4계층 HTTP 프로토콜을 사용한다고 가정해보자

     

    4계층 Application Layer

    HTTP Request/response

    HTTP Packet

    3계층 TCP Layer

     

    TCP Layer

    Source Port = 시작 포트번호 (내 컴퓨터에서 만든 소켓의 포트 번호)

    Destination Port = 목적지 포트번호(80 웹서버의 웰노운 포트 번호)

     

    2계층 Intertnet Layer

    Internet Layer

    Source IP Address = 시작 IP 주소

    Destination IP Address = 목적지 IP 주소

     

    나의 시작 IP 주소는 알고 있지만 목적지 IP주소는 www.naver.com이라는 도메인을 제외하고는 아직 모르는 상태이다.

     

    따라서 DNS프로토콜을 사용하여 도메인 정보로 IP주소를 알아 내야한다.

     

    3. 브라우저는 OS에게 domain에 대한 ip주소를 요청을 한다. 그러면 OS에서 DNS서버로 요청을 보내게 된다.

     

    *DNS*

    • DNS는 HTTP와 같은 애플리케이션 계층 프로토콜이며 53번 포트를 사용한다.
    • DNS서버 주소는 이미 컴퓨터에 등록이 되어있어 OS가 도메인 정보를 얻을 떄 사용한다.
    • DNS도 HTTP Request와 비슷하게 도메인이 담긴 쿼리를 도메인 서버로 보낸다. 그러면 도메인 서버가 IP주소를 응답한다.
    • DNS는 Transport Layer에서 UDP라는 프로토콜을 사용한다. UDP는 비연결지향형 프로토콜이기 때문에 TCP와 다르게 헤더가 간단하다.

     

    4. DNS를 통해 성공적으로 도메인 이름에 대한 IP주소를 받아오게 된다.

     

    5. 1계층 Network Access Layer의 Ethernet 프로토콜에 대한 헤더를 만든다. (하지만 MAC 주소를 모르는 상태)

     

    여기서 잠깐!

    Q: 네이버 웹서버의 MAC주소를 알아야 할까?

    A: 아니다. 구글 MAC 주소 대신에 물리적으로 연결된 집 공유기(게이트 웨이)의 MAC주소가 필요하다.

     

    6. ARP(IP주소를 MAC주소로 바꾸어주는 주소해석 프로토콜)프로토콜을 사용하여 MAC주소를 알아낸다.

     

    7. TCP는 연결지향형 프로토콜이기 때문에 데이터를 전송하기 전에 3way handshaking을 통해 송신측과 수신측을 연결하는 작업을 한다.

    3way 2022.03.15 - [면접/네트워크] - TCP / UDP

     

     

    8. 게이트 웨이를 통해 나갈때 Private IP를 Public IP로 주소 변환하여 나가는 NAT(Network Address Translation)작업을 하여 전송

     

    9. 여러 라우터(서로 다른 네트워크를 연결해주는 장치)를 거치는 라우팅을 과정을 거치고 네이버 서버가 연결된 라우터에 데이터가 도착하면 패킷 IP헤더에 기록된 네이버 서버 IP주소를 통해 MAC주소를 얻어온다. 이때 ARP프로토콜이 라우터가 연결된 네트워크에 브로드캐스팅된다.

     

    10. 목적지 네이버 서버가 자신이 IP로 온 ARP 요청을 받고 MAC주소를 응답한다. (이제 데이터가 물리적으로 전달이 가능해진다.)

     

    11. (Internet Layer의 IP주소와 Network Access Layer의 MAC 주소를 통해 도착됨)

    Transport Layer의 목적지 포트번호에는 80번이 적혀있으므로 80포트를 사용하고 있는 애플리케이션에 데이터를 전달해준다.

     

    12. Application Layer에서 웹 서버가 사용될 HTTP Request 데이터를 얻는다.

     

    13. 정상적으로 데이터를 받고 "/"에 매핑된 GET요청을 처리해서 적절한 HTML 응답을 돌려보낸다.

     

    마지막으로, HTTP의 요청과 응답과정이 끝나면 연결을 종료한다. 여기서도 TCP의 컨트롤 비트(4way handshaking, ACK과 FIN 플래그가 사용됨)가 사용된다.

     

    참고:

    [10분 테코톡] 수리의 TCP/IP

    https://youtu.be/BEK354TRgZ8

    728x90

    'CS > 네트워크' 카테고리의 다른 글

    쿠키&로컬스토리지  (0) 2022.05.06
    Load Balancing  (0) 2022.03.20
    RESTful API  (0) 2022.03.16
    TCP / UDP  (0) 2022.03.15
    TCP/IP 모델  (0) 2022.03.02

    댓글

oguuk Tistory.