[CS] 네트워크를 통해 데이터가 전달되는 과정

박상혁·2022년 12월 20일
0

CS

목록 보기
4/10
post-thumbnail

서론

학교, 회사 등 각각의 구역마다 거대한 Network가 형성되어 있습니다.
이들은 서로 게이트웨이를 통해 다른 네트워크와 이어지며
라우터를 통해 건너건너 멀리 있는 타 네트워크에 도달할 수 있습니다.

서로 다른 네트워크에 있는 Sender와 Receiver가 어떻게 데이터를 주고받는지
일련의 과정들을 지금부터 살펴보고자 합니다.

본문

1. DHCP

우선, 처음에 저희가 타 네트워크에 왔을 때부터 고려해야 합니다.
본가에서 이제 막 상경해서 자취방에 들어오면 전입신고를 해야 하는것과 마찬가지로
다른 네트워크에서 왔다면 해당 네트워크 구역에서 통신을 하기 위한 IP 주소를 발급받아야 합니다.

각 읍면동마다 행정주민센터들이 존재하며 전입신고를 위해 주민센터로 가서 주민신고 신청서를 작성해야 합니다.
마찬가지로, 각 네트워크마다 DHCP server가 존재하며 여기에서 DHCP 프로토콜을 사용하여 IP 주소와 기타 정보를 얻습니다.

  • DHCP server까지의 요청 packet 전달

DHCP는 최대한 빠르게 IP주소를 얻기 위해 UDP를 사용하며
목적지 포트번호는 DHCP server를 나타내는 67번,
출발지 포트번호는 DHCP client를 나타내는 68번을
UDP segment 안에 넣습니다.

IP계층에서는 DHCP server를 찾기 위해 목적지 주소는 broadcast 주소인 255.255.255.255를,
아직 IP주소를 받지 못했기 때문에 출발지 주소는 0.0.0.0을 IP datagram 안에 넣습니다.

Ethernet에서는 목적지 MAC 주소로 위와같이 FF:FF:FF:FF:FF:FF를 가지게 되며
이는 switch에 연결된 모든 기기에 frame이 broadcast되도록 합니다.
(출발지 MAC 주소는 자신의 고유한 NIC MAC 주소 :::::을 가집니다.)

이제 해당 frame은 자신의 노트북 NIC를 빠져나와 switch에 보내지게 됩니다.
switch는 broadcast임을 알고 해당 Network의 gateway 라우터를 포함하여 연결된 전체에게 보냅니다.
이를 받은 DHCP server는 decapsulation하며 UDP segment에서 DHCP 요청이라는 것을 확인하게 됩니다.

  • DHCP server에서 Client에게 ACK 전달
    DHCP server에서 IP 주소를 할당합니다.

이후 ACK 메세지를 생성합니다.
할당한 IP주소, DNS server의 IP 주소, gateway 라우터의 IP주소, 서브넷 블록의 IP 주소가 들어있습니다.

이후 frame까지 캡슐화를 진행합니다.
이때 목적지 MAC 주소로 :::::를 가집니다.

MAC주소를 알기 때문에 unicast로 전달됩니다.

ACK을 전달받은 저는 할당받은 자신의 IP 주소와 DNS 서버의 IP주소를 기록합니다.

이제 자신이 있는 network를 벗어나는 모든 datagram은 gateway 라우터로 보내지게 됩니다.

DNS, ARP

TCP, HTTP

출처

kaden Sungbin Cho - 웹페이지 요청 후 응답을 받기까지... (feat. DHCP, UDP, IP, Ethernet, DNS, ARP, BGP, TCP, HTTP)

profile
개발 노트

0개의 댓글