IT 기획의 길

네트워크 [Data 전달 과정] Encapsulation, Decapsulation 상세 과정 본문

IT 인프라/네트워크

네트워크 [Data 전달 과정] Encapsulation, Decapsulation 상세 과정

완벽하기 쉽지 않지만 완벽해지려고 노력해야 한다 2021. 10. 19. 15:48

 

client에서 www.google.com에  에 접속한다고 가정하자

 

client

1. application layer

사용자가 웹브라우저를 통해서 www.google.com을  을 침으로서 페이지를 요구하는 데이터가 생성된다

이 데이터를 transport layer로 보낸다

 

2. transport layer

위에서 받은 데이터에 tcp 헤더를 붙인다 => (tcp 헤더+ 1.에서 생성된 데이터=segment)

tcp 헤더에는 src port정보와 dest port 정보가 있다

웹페이지 요청을 하기 위해 웹서버에 접속해야하므로 dest port는 80이다

src port는 자기가 안쓰고 있는 포트를 랜덤하게 할당한다

이 segment를 network layer로 보낸다

 

3. network layer

위에서 받은 segment에 ip헤더를 붙인다 (ip 헤더+ 2.에서 생성된 segment=packet)

ip 헤더에는 src ip정보와 dest ip 정보가 있다.

src ip는 보통 자기 pc에 할당된 ip주소가 되겠고

dest ip는 DNS 서버를 통해 www.google.com의  의 ip 주소를 얻는다.

이 packet을 data link layer에 보낸다

 

4. data link layer

위에서 받은 packet에 Ehternet 헤더를 붙인다 (Ethernet헤더+ 3.에서 생성된 packet=frame)

Ethernet 헤더에는 src mac정보와 dest mac 정보가 있다.

src mac정보는 pc의 lan카드에 있다

dest mac 정보는 ARP Routing과정(최종적으로 google 웹서버까지 도착하기 위해 내 옆에 있는 누구한테 보내야하는지를 확인하는 과정)을 통해서 파악할 수있고

frame은 전기적 신호로 바뀌어 송신된다.

frame의 dest mac 정보는 스위치를 통과하면서 계속 바뀐다 (dest mac 주소는 dest 스위치에 따라 바뀌니까)

그러다가 frame은 스위치를 통해 router까지 전달되고

이 router는 dest mac 주소를 확인한뒤 자기한테 온 데이터가 맞는지 확인하면

Ethernet 헤더를 제거하고 ip헤더를 본다 (packet을 해석한다)

그 다음 이 router는 dest ip정보(google 웹서버 ip 주소)를 보고 google 웹서버까지 도달하기 위해 거쳐야하는 다른 router로 frame을 보낸다 (router도 mac 주소를 가지고 있으므로 이 과정에서도 dest mac 주소는 계속 바뀐다)

 

=> 최종적으로 google 웹서버에 도착할때까지 dest ip정보만(google 웹 서버 ip주소로) 그대로 유지되고 

frame의 dest mac정보만 계속 변해가면서 몇개의 스위치와 몇개의 라우터를 거쳐 네트워킹이 되는것이다 

 

이제 이 frame이 google 웹서버에 도착하면 

 

1. Ethernet 헤더를 확인해서 dest mac주소를 확인한뒤 나한테 온게 맞는지 확인한 다음 Ethernet 헤더를 때고 상위 layer에 올린다

2. ip 헤더를 확인해서 dest ip주소를 확인한 뒤 나한테 온게 맞는지 확인한 다음 ip 헤더를 때고 상위 layer에 올린다

3. tcp 헤더를 확인해서 dest port번호를 확인한뒤 dest port번호(80)를 쓰고 있는 어플리케이션(웹 서버가 사용하는 웹 데몬 ex)apache)한테 데이터를 보낸다 => 데이터 수신 완료

 

server쪽에서 client쪽으로 데이터를 보낼때도 앞에 설명한 encapsulation 방법과 동일한 방법으로 송신한다.