CS 정리/Network

TCP/IP 4 계층 모델

tose33 2023. 10. 24. 14:49

TCP/IP 4계층과 OSI 7계층의 차이

두 계층 모두 데이터 통신을 표현한 계층이지만 OSI 7계층은 데이터 통신에 필요한 계층과 역할을 정확하게 정의하려고 한 모델.

 

반면 TCP/IP 4계층은 현재 인터넷에서 사용되는 프로토콜로, 좀 더 실무적이면서 프로토콜 중심으로 단순화된 모델.

 

 

TCP/IP 4계층의 구조

애플리케이션 계층

전송 계층

인터넷 계층

링크(네트워크 연결) 계층

 

이런 식의 구분을 통해 각 계층은 서로간의 간섭을 최소화해서 유지 보수에 있어 편리하다는 이점이 있다.

 

각 계층별로 같은 데이터라고 하더라고 부르는 명칭이 달라진다.

각 계층을 데이터가 거치면서 여러 프로토콜의 헤더가 추가됨에 따라 명칭을 달리했기 때문.

 

 

브라우저에서 HTTP 통신을 예로들면 다음과 같다.

  1. 웹 브라우저에서 데이터를 보내면서 HTTP 헤더가 추가되고 HTTP 메세지가 된다.
  2. 전송 계층을 거치면서 HTTP 메세지에 TCP 헤더가 추가되면서 세그먼트가 된다. (TCP 의 경우)
  3. 인터넷 계층을 거치면서 IP 주소 정보가 포함된 IP 헤더가 추가 되면서 패킷이 된다.
  4. 패킷에 이더넷 헤더와 FCS가 추가되어 프레임이 되고, 그 상태에서 비트로 변환되어 전송된다.

 

 

TCP/IP 4계층의 계층별 역할 

 

 

어플리케이션 계층 

사용자와 가장 가까운 계층으로 사용자-소프트웨어 간 소통을 담당하는 계층.

웹 프로그래밍에서 흔히 접하는 여러 서버나 클라이언트 관련 응용 프로그램들이 동작하는 계층.

주로 응용 프로그램들끼리 데이터 교환하기 위한 계층.

 

 

전송 계층

통신 노드 간의 데이터 전송 및 흐름에 있어 신뢰성을 보장한다.

하나의 시스템에서 다른 시스템으로 데이터가 정확하고 올바른 형태로 전송되는것을 보장하는 계층.

 

전송 계층은 데이터를 더 작은 유닛인 세그먼트로 분해한다.

왜냐하면 더 아래 계층 (예를들어 네트워크 계층) 들은 전송할수 있는 최대 페이로드(전송되는 순수한 데이터)가 있기 때문이다.

전송 계층은 데이터가 아래 계층에서 받아들일수 있도록 데이터를 세그먼트로 분리 한 후에 수신측에서 재조립할수 있도록 한다.

 

전송 계층에서 사용하는 대표적인 프로토콜은 TCP UDP 가 있다.

TCP 는 연결 지향형 프로토콜로 패킷에 하나의 오류라도 있으면 재전송을 위해 에러를 복구한다.

패킷의 순서를 보장한다.

가상회선 패킷 교환 방식으로 패킷들이 어떤 회선을 따라 순서대로 도착한다.

 

UDP는 패킷을 중간에 잃거나 오류가 발생해도 대처하지 않고 계속해서 데이터를 전송하는 TCP 에 비해 간단한 구조를 갖는다.

패킷의 순서를 보장하지 않는다.

데이터그램 패킷 교환 방식으로 패킷이 독립적으로 이동하며 최적의 경로를 선택하여 간다.

 

  • 역캡슐화 과정에서, 포트 번호를 사용해 데이터를 정확한 애플리케이션에 전달하는 역할도 합니다.
    • 네트워크 액세스 계층과 인터넷 계층을 통해, 데이터가 목적지 기기까지 정상적으로 도착했다면,
    • 전송 계층은 포트 번호를 사용해, 데이터를 목적지 기기 내 적절한 에플리케이션으로 전달합니다.

 

인터넷 계층

네트워크 상에서 데이터의 전송을 담당하는 계층으로 서로 다른 네트워크 간의 통신을 가능하게 하는 역할을 수행.

(연결성 제공)

 

장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층.

 

단말을 구분하기 위해 논리적은 IP 주소를 할당하게 되고 이 IP 주소로 네트워크 상의 컴퓨터를 식별하여 주소를 지정 할 수 있도록 해줌.

 

네트워크끼리 연결하고 데이터를 전송하는 기기인 라우터라고 하며

라우터에 의한 네트워크 전송을 라우팅이라고 한다.

 

네트워크 연결 (링크) 계층

물리적인(전선,광섬유,무선 등) 데이터의 전송을 담당하는 계층.

여기서는 인터넷 계층과 달리 같은 네트워크 안에서 데이터가 전송됨.

장치 간에 신호를 주고받는 규칙을 정하는 계층.

논리적인 주소가 아닌 물리적인 주소인 MAC을 참조해 장비간 전송.

 

 

 

 

TCP/IP 흐름 

https://wooono.tistory.com/507

 

[Network] TCP/IP 와 TCP/IP 4계층이란?

패킷 통신이란? 데이터를 패킷이라고하는 작은 단위로 나누어 전송하는 방식을 의미합니다. IP (Internet Protocol) 란? IP는, 패킷 데이터들을 최대한 빨리 특정 목적지 주소로 보내는 프로토콜입니다

wooono.tistory.com

www.google.com  을 웹 브라우저에 입력하면 무슨 일이 일어날까?

 

구글 웹서버에 80번 포트로 http request 를 보낸다. (포트 번호 80번은 http 의 디폴트 포트번호이다)

 

구글 웹 서버에 http request 를 보내려면 아래와 같이 각 계층에 필요한 정보들을 담은 패킷을 만들어야 한다.

각 계층별로 http, tcp, ip, ethernet 프로토콜을 사용한다고 가정

 

 

 

 

어플리케이션 계층에서 HTTP Request 헤더가 추가된다.

 

http 헤더에는 http 전송에 필요한 모든 부가정보가 담겨 있다.

예) 메시지 바디의 내용, 바디의 크기, 압축, 인증, 요청 클라이언트(브라우저) 정보, 캐시 정보 등 ... 

 

 

전송 계층에서 TCP 헤더가 추가 된다. 

TCP 헤더에는 SP(출발지 포트번호)와 DP(목적지 포트번호)가 담겨 있다.

출발지 포트번호는 내 컴퓨터에서 만든 소켓의 포트 번호이므로 내 컴퓨터는 알고 있으며,

목적지 포트 번호 또한 80으로 알고 있다.

 

TCP 는 연결지향형 프로토콜이기 때문에 송신측과 수신측이 서로 연결되는 3-way-handshake를 수행.

 

 

인터넷 계층에서 IP 헤더가 추가된다.

IP 해더에는 SA (출발지 IP 주소) 와 DA (목적지 IP 주소) 가 포함된다.

 

현재 www.google.com  이라는 도메인 정보만 알고 있기 때문에 

나의 시작 IP 주소는 알지만, 목적지의 IP 주소는 모른다.

 

따라서 도메인 정보로 목적지의 IP 주소를 알아내기 위해 DNS 에 쿼리를 보내고 IP 주소를 받는다.

 

 

네트워크 연결 계층에서 Ethernet 헤더가 추가된다.

Ethernet 헤더에는 SA (출발지 MAC 주소) 와 DA (목적지 MAC 주소)가 포함된다.
(MAC 주소란? https://jhnyang.tistory.com/404)

 

여기서 목적지 MAC 주소는 구글의 MAC 주소가 아닌, 

물리적으로 연결된 (다음 노드라고 생각하면 됨) 패킷이 전달될 라우터 또는 게이트웨이으 MAC 주소.

즉 현재 노드에서 연결된 다음 노드의 MAC 주소.

이렇게 전달 전달 전달 해서 구글까지 간다.

 

 

 

 

 

라우팅을 통해 패킷을 목적지 서버에 전송한다.

패킷은 네트워크 전송 계층의 mac 주소와 인터넷 계층의 ip 주소로 라우팅을 반복해 목적지 구글 서버까지 이동.

 

구글 서버에 도착후

구글 서버가 받은 패킷 내부 전송 계층의 목적지 포트 번호에는 80번이 적혀있다.

따라서 전송계층은 80번 포트를 사용하고 있는 어플리케이션 계층에 데이터를 전송한다.

어플리케이션 계층은 HTTP request 데이터를 받아, "/" 에 매핑된 GET 요청을 처리한다.

이후 적절한 HTML 을 클라이언트에게 응답한다.

따라서 클라이언트는 라우팅을 통해 전달 받은 "www.google.com" 에 해당하는 HTML 을 브라우저에 띄우게 된다.

 

이후 TCP 연결을 해제한다.