이카's
article thumbnail

TCP/IP 4계층 모델

이번 포스팅에서는 TCP/IP 4계층을 알아보려고 한다.
중점적으로 다룰 부분은 어떻게 정보를 주고 받아?각 계층의 구조를 포스팅할 것이다.(사실 이게 전부이다.)

 

 

  • 애플리케이션 계층
  • 전송 계층
  • 인터넷 계층
  • 링크 게층

 

TCP/IP란?

계층을 다루기 전에 도대체 왜 이렇게 이름을 지엇는가? 라는게 궁금증으로 생긴다. 이를 이해하면 TCP/IP의 이해가 한층 쉬워질 것이라고 생각한다.

 

TCP(Transmission Control Protocol)

우선 TCP가 왜 만들어 졌을까?

미 국방부에서 냉전시대에 알파넷 프로젝트의 주제 중 하나가 핵전쟁이 나도 살아남는 네트워크를 만드는 것이었다.

이전 시대는 회선 교환 방식에 따라 중계국이 다운되면 네트워크가 끊기기 때문이었다.

이를 해결하기 위해 나온 아이디어가 패킷 교환 방식이었다. 이는 전송 계층에서 자세히 다뤄보자.

두 번재로 용어를 확인해보자.
일단 프로토콜이라는 것은 어디서 많이 본 단어이다. 바로 HTTP에서도 쓰인다. 프로토콜은 규약이라는 뜻으로 서로 정한 약속이다. 그럼 앞에 transmission control은 무슨 뜻일까?

 

 

사전에서도 설명하듯 전송제어라는 뜻이다. 이에 따라 풀어서 이해하자면 TCP는 어떤 무언가를 어떤 방식으로 제어하여 전송하는 규약이다.

  • 어떤 방식 : 어떤 방식으로 중계 역할을 하는 것을 말한다.

패킷 : 데이터 조각들 // 큰 메세지의 작은 세그먼트

TCP는 데이터를 수신자와 발신자의 연결을 설정하고, 전송이 시작되면 모든 패킷이 순서대로 도착하도록 제어한다. 수신자는 TCP를 통해 도착한 패킷을 확인하고, 누락된 패킷을 다시 전송한다.

TCP는 누락된 패킷을 확인해야하고, 재전송을 해야하므로 시간이 오래 걸린다. 즉, 속도보다 안정성을 중요시하여 설계되었다.

 

IP(Internet Protocol)

IP의 개념은 조금 이해하기 쉬운데 흔히 우리가 IP 주소가 뭐야? 라고 말한다. 풀어서 설명하면 인터넷 규약이라는 뜻이다. 정보를 어떤 방식으로 담아 줄지 규약을 서로 정하여 보내야지만, 보낸 정보를 해석할 수 있고 내가 원하는 정보를 교환할 수 있는 것이다.

또한 누가 무엇을 하고 있는지 기록을 남기고, 추적하려면 식별자가 필요하다. 식별자가 바로 IP 주소로 모든 장치에 할당되어 있어 식별이 가능해진다.

즉, 어떤 정보가 올바른 대상에 도착할 수 있도록 주소를 지정하기 위한 규약의 집합이다.

  • IP 주소는 패킷에 동봉되며, 이를 통해 올바른 대상에 도착할 수 있다.
  • 인터넷에 연결하는 모든 장치 혹은 도메인에는 IP주소가 있다.
  • 패킷이 도착하면 IP와 함께 어떤 TCP를 사용되는지에 따라 패킷 처리가 달라진다.
  • IPv4는 2의 32제곱(2^32)로 43억 개의 고유 IP 주소를 구분할 수 있지만, 현대 시대에 주소가 부족하여 IPv6가 생겼다. IPv6는 2의 128제곱(2^128)로 39자리 숫자까지 지원가능하다.

 

TCP/IP 정리

HTTP, TCP, IP의 프로토콜은 자신이 맡은 역할이 있고, 보내는 데이터에 자신의 헤더를 붙여서 정보를 표현한다. 이에 따라 TCP는 전송의 신뢰성과 흐름 제어, 연결 지향 데이터 스트림 지원 등의 역할을 가지고 있다. 이는 전송 계층 설명에서 자세히 다루어 보자.

TCP는 IP는 같이 사용하도록 설계되어 있다. 하지만 다른 전송 프로토콜과 IP는 함께 사용할 수 있다.(UDP/IP)

TCP/IP를 같이 사용하므로써 정보를 교환할 때, 올바른 대상에 갈 수 있고 안전하고 신뢰도 높은 정보 교환 방식이다.

 

애플리케이션 계층 L4

애플리케이션 계층(L7)은 OSI모델의 최상위 계층이고, TCP/IP 4게층에서도 최상위 게층으로 구분된다.

주로 HTTP, DNS, SSH와 같은 응용 프로그램이 사용되는 프로토콜 계층이며, 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 계층이다.

애플리케이션은 DDos공격이 대표적이다. 트래픽의 폭주로 네트워크 서비스의 운영을 방해하거나 서버를 죽이는 공격을 말한다. 대역폭 비용을 엄청나게 차지하는데, 강제적으로 병목 현상을 만든다.

병목 현상 : 병에 담긴 물이 나올 때, 느리게 나오는 것 처럼 대역폭에 비해 트래픽(데이터 량)이 많아 지는 현상

 

HTTP

하이퍼 텍스트 전송 프로토콜(HTTP, Hyper Text Transfer Protocol)은 WWW(World Wide Web)의 근간으로 웹 페이지를 로드하는데 사용한다.

HTTP 요청은 인터넷 통신 플랫폼에서 웹사이트를 로드하는데 필요한 정보를 요청하는 방법이다.

HTTP헤더에는 Key-value에 저장된 텍스트 정보가 포함되어 있으며 헤더는 모든 HTTP 요청에 담겨 전달된다.

 

 

 

DNS

도메인 네임 시스템(DNS, Domain Name System)은 인터넷 전화번호기부이다. DNS는 브라우저가 웹사이트를 로드할 수 있도록 도메인 이름을 IP 주소로 변환해준다.

 

전송 계층 L3

전송 계층은 애플리케이션 계층과 인터넷 계층 사이에 데이터가 전달을 해주는 중계 역할을 한다. 대표적으로 TCPUDP가 있다.

앞서 TCP/IP를 설명하면서 전송의 신뢰성과 흐름 제어, 연결 지향 데이터 스트림 지원 등의 역할이라고 한번 언급을 하였다, 이는 전송 계층의 가장 큰 특징이다. 발신자와 수신자를 연결하는 통신 서비스를 제공하기 위해서는 신뢰성 있는 패킷 교환 방식이 필요하다.

  • TCP : 가상회선 패킷 교환 방식을 사용한다.
  • UDP : 데이터그램 패킷 교환 방식을 사용한다.

마지막으로 흐름 제어 및 오류 제거 역할도 수행한다. 흐름 제어는 연결 속도가 빠른 송신자가 연결 속도가 느린 수신자를 압도하지 않도록 최적의 전송 속도를 결정한다.

 

가상회선 패킷 교환 방식

 

 

그림에서 보다시피 가상의 회선에 따라 패킷이 이동하는 것을 볼 수 있다. 패킷을 전송할 때, 패킷에는 가상회선 식별자가 포함되어 있어서 순서대로 도착할 수 있게 된다.

 

데이터그램 패킷 교환 방식

 

 

그림에서 보다시피 각 패킷이 독립적으로 움직이는 것을 볼 수 있다. 이에 순서가 다를 수가 있다. 이에 따라 데이터 전달이 보증되지 않으며, TCP보다 속도에 강점을 가지고 있다. 주로 실시간 동영상 서비스에서 사용한다.

 

3-way handshake & 4-way handshake

3-웨이 핸드셰이크는 TCP가 신뢰성을 확보할 때 진행하는 작업이다.

  • TCP 연결 성립 과정

 

 

세 단계의 과정을 거쳐 통신을 한다.

  1. SYN단계 : 클라이언트가 서버에 ISN을 담아 SYN을 보낸다. ISN은 새로운 TCP 연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호를 말한다.
  2. SYN + ACK 단계 : 서버는 SYN을 수신하고, 서버의 ISN와 클라이언트의 ISN + 1의 승인번호 총 두 개를 보낸다.
  3. ACK단계 : 서버의 ISN + 1값을 승인번호를 ACK에 담아 서버에 보낸다.

정리하자면 아래와 같다.

  1. 클라이언트가 요청을 할 때, 자기 신분증을 보낸다.
  2. 신분증 확인 후 서버의 통과 할 수 있는 PASS권을 얻고, 신분증에 + 1한 번호를 보낸다.
  3. PASS권 번호에 + 1한 값을 잘 받았다고 다시 보내준다.

3번 악수한다.

  • TCP 연결 해제 과정

 

 

해제 과정에서는 총 4단계의 단계로 진행이 된다. 사실 나누자면 조금 복잡해 진다.

  1. 클라이언트가 연결을 해제하려고 할 때, FIN 설정된 세그먼트를 보낸다. 그리고 FIN_WAIT_1 상태로 들어가 서버의 응답을 기다린다.
  2. 서버는 ACK 승인 세그먼트를 보낸다. 그리고 CLOSE_WAIT 상태에 들어가며, 클라이언트가 ACK 세그먼트를 받으면 FIN_WAIT_2 상태로 들어간다.
  3. 서버는 일정 시간 후에 FIN 세그먼트를 보낸다.
  4. (중요) 클라이언트가 FIN 세그먼트를 받으면, 서버로 ACK 승인 세그먼트를 보낸다. 이후 서버는 CLOSED 상태로 된다. 그리고 클라이언트는 어느 정도 시간을 대기하다 연결이 닫히고 클라이언트와 서버의 모든 리소스가 해제된다.

그러면 왜 TIME_WAIT라는 과정을 가질까?

소켓이 바로 소멸되지 않고 일정 기간 기다리는 이유는 크게 두 가지 이유가 있다.

  1. 지연 패킷이 발생할 경우 대비
    패킷의 어떤 부분이 늦게 도착했다면 문제가 발생한다. 늦게 도착한 패킷을 처리하지 못하면 데이터 무결성 문제가 생긴다.
  2. 장치의 연결이 확실히 닫혔는지 검증
    만약 LAST_ACK에서 FIN을 보내고 바로 닫혔다고 가정하자. 다시 새로운 연결을 하려고 한다면 서버는 LAST_ACK로 되어 있기 때문에 오류가 발생하게 된다.

4번 악수한다.

 

인터넷 계층 L2

전송 계층 혹은 링크 계층에서 받은 패킷을 IP주소로 목적지 까지 전송하기 위해 사용되는 계층이다. 대표적으로 IP, ARP, ICMP 등이 있다.

  • 패킷이 취할 경로를 설정한다.
  • 수신해야 할 상대의 주소를 데이터에 동봉하여 전송한다.
  • 가장 효율적인 방법으로 패킷을 가장 빠르게 보내는 일을 한다.
  • 상대가 잘 받았는지 보장되지 않는다.(비연결형적)

 

Referance

참고 자료
CS전공지식노트
Evans Library
Cloudflare

반응형

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

HTTP 1.0/1.1 스펙과 3가지 주제  (0) 2023.06.20
HTTP의 역사 그리고...  (0) 2023.06.14
profile

이카's

@Edan Cafe ☕

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!