우선 OSI 7계층과 TCP/IP 5계층의 차이를 보자.
osi 모델과 TCP/IP 계층의 큰 차이는 계층의 수라고 볼 수 있다.
인터넷 프로토콜 스택이란 말 그대로 여러 계층이 쌓여있는 모습이 스택과 비슷하여 지어진 이름이다.
계층 구조로 이루어진 프로토콜이라고 보면 된다.
TCP/IP 계층을 기준으로 인터넷 프로토콜 스택을 살펴보면
1. Application Layer
네트워크를 지원하는 애플리케이션 계층이다.
예시로는 FTP(File Transfer Protocol), HTTP(Hyper Text Transfer Protocol)등이 있다.
2. Transport Layer
프로세스 간의 데이터를 전달하는 계층으로 TCP, UDP 등이 있다.
신뢰성을 담당하는 계층인데 패킷이 정상적으로 도착했는지 확인하는 역할을 한다.
TCP를 사용하면 3-way handshaking을 사용하기 때문에 신뢰성이 보장되고 UDP의 경우 커넥션을 맺는 과정 없이 데이터만 보내기 때문에 신뢰성이 보장되지 않지만 속도가 빠르다.
프로세스 간의 데이터 전송을 담당하기 때문에 포트 번호를 관리한다.
3. Network Layer
패킷을 원하는 목적지에 보내기 위해서는 경로를 결정하는 라우팅(Routing) 이라는 과정이 필요하다.
이 라우팅을 담당하는 장비가 라우터(Router)이고 라우터에서는 알고리즘을 사용하여 최적의 경로를 결정하는 라우팅을 한다.
패킷을 보낼 때 이 라우터를 거쳐서 목적지에 도착하게 되는데 이 때 목적지에 대한 정보가 필요하다.
이 정보가 IP 주소이고 네트워크 계층에서는 이 IP 주소를 담당하게 된다.
4. Data Link Layer
목적지까지 패킷을 보내기 위한 경로가 결정되었다면 네트워크안의 주변 장치들 간에 데이터를 전송한다.
수신자와 송신자의 거리가 멀다면 데이터가 바로 전달되지 않을 것이다.
중간 중간 많은 라우터들을 경유하여 도착하게 될 것인데 이렇게 이웃한 장치들 간의 전송을 담당하는 계층이 Data Link 계층이다.
이더넷, PPP 등이 있다.
5. Physical Layer
TCP/IP 계층은 4계층으로도 표현하고 5계층으로 표현하기도 한다.
5계층의 경우 link layer와 physical layer가 분리되어 있다.
physical layer는 말 그대로 물리 계층으로 데이터를 전기 신호로 변환하여 네트워크 장비에 보내준다.
케이블 같은 것들이 포함된다.
TCP/IP 5계층에 대해서 알아보았는데 이렇게만 본다면 이해하기 어려울 수 있다.
이제 실제로 패킷을 보내는 과정을 살펴보려고 한다.
우선 네트워크 코어의 종류부터 구분할 수 있어야 한다.
스위치( Switch ) VS 라우터( Router )
네트워크 코어는 스위치(Switch)와 라우터(Router)로 구분된다.
둘 다 목적지까지 도착하기 위해 적합한 경로를 결정한다는 점은 유사하지만 차이점이 존재하낟.
우선 스위치는 link layer에서 동작하고 라우터는 network layer에서 동작한다.
라우터는 위에서 설명한대로 IP 주소를 사용하여 라우팅을 담당한다.
라우터는 라우팅 테이블을 가지고 있는데 이 라우팅 테이블에는 최적의 경로를 결정하는데 필요한 정보가 담겨 있다.
그래서 라우터는 이 라우팅 테이블을 참고하여 최적의 경로를 결정하는 라우팅(Routing)을 수행하는 것이다.
즉 네트워크 사이에서 데이터를 전송하는 역할을 한다.
그런데 스위치는 Network layer의 하위 계층인 Link layer에서 동작하기 때문에 IP를 사용하지 않는다.
그래서 스위치는 같은 네트워크 안에서 데이터를 전송한다.
스위치는 MAC 주소 정보를 담고 있는 MAC 테이블을 참고하여 적절한 경로로 스위칭(Switching)을 한다.
패킷을 보내는 과정
어떠한 애플리케이션에서 메시지를 패킷을 목적지로 보낸다고 해보자.
이 메시지는 application 계층부터 physical 계층까지 이동하면서 캡슐화(Encapsulation) 과정을 진행한다.
이렇게 캡슐화된 메시지를 보내면 받는 쪽에서는 다시 physical 계층에서 application 계층으로 이동하면서 역캡슐(Decapsulation)을 진행한다.
아래 그림을 참고하면 이해가 쉬울 것이다.
캡슐화 하는 과정을 자세히 살펴보자.
처음에는 데이터가 있다면 Transport layer에 가게되면 transport layer의 header로 감싸지게 된다.
위 그림에서는 Transport 계층에서 UDP를 사용한 모습을 볼 수 있고 UDP header가 붙은 모습을 볼 수 있다.
그리고 Network 계층으로 가게되면 또 Network header가 붙게 되고 이 과정을 반복하는 것이다.
그리고 각각의 계층에서 생성된 데이터는 위 그림처럼 이름이 존재한다.
그런데 중간 중간 보면 라우터가 있는 것을 확인할 수 있다.
만약 라우터에 도달한다면 모두 역캡슐화하는 것이 아니다.
우선 application 계층부터 link 계층까지 데이터가 이동했을 때 그 데이터를 frame이라고 한다.
이 frmae이 스위치를 거쳐서 라우터에 도달했다고 하자.
가장 먼저 physical 계층을 거쳐서 link 계층에 이 frame이 도착할 것이다.
가장 바깥 정보가 Link 계층에 속해있기 때문에 Link layer에서는 이 데이터를 읽을 수 있다.
그런데 Network layer로 Link 계층에 속한 정보를 읽지 못할 것이다.
그래서 Link 계층에서 frame의 가장 바깥 계층인 Link를 제거한 다음 Network layer에게 넘겨준다.
이제 이 Network 계층에서 network header를 읽어서 라우팅을 수행한다.
그리고 이 라우터가 데이터를 다시 보내게 될텐데 과정에서 다시 새로운 Link header를 붙여서 보내게 된다.
이렇듯 스위치나 라우터에서는 데이터가 도착하면 자신에게 필요한 데이터가 나올 때까지 역캡슐화를 진행하는 것이지 전부 역캡슐화를 진행하지 않는다.
만약 원하는 목적지에 도착하게 되면 목적지에서 필요한 데이터는 메시지이기 때문에 physical 계층부터 Application 계층으로 올라가면서 역캡슐화를 진행한 다음 원하는 메시지를 얻게 될 것이다.
'공부 > Network' 카테고리의 다른 글
[Network] RDT (Reliable Data Transfer protocol) (0) | 2023.04.22 |
---|---|
[Network] pipelined protocol (0) | 2023.04.18 |
[Network] Transport Layer (다중화/역다중화, TCP가 reliable한 이유) (0) | 2023.04.11 |
[Network] 소켓 프로그래밍 (TCP/UDP) 개념 및 실습 (0) | 2023.04.07 |
[Network] Video Streaming and CDNs (0) | 2023.04.05 |
댓글