본문으로 건너뛰기

TCP/IP

프로토콜 스위트란 프로토콜의 집합을 의미한다. 그 집합 속에서 네트워크 커뮤티케이션에서 맡고 있는 역할에 따라 계층이 나눠진다.(프로토콜 스택이라고도 한다.)

TCP와 IP는 각각 프로토콜 스위트에 속하는 구성원이며, 그저 다른 계층의 프로토콜들과 긴밀하게 연결되어있고 중심적인 프로토콜이기 때문에 프로토콜 스위트에 TCP/IP라는 이름이 붙여진 것이다.

따라서 TCP/IP는 프로토콜 스위트로, TCP와 IP는 각각의 프로토콜로 인지를 하고 있는 것이 도움이된다. TCP/IP 프로토콜 스위트는 네트워크 구조를 파악하거나 설계에 도움을 주기 위해 만들어진 "모델"이고, TCP/IP는 실제로 사용되고있는 프로토콜이다.

IP(Internet Protocol)

Internet Protocol의 약자로 이 프토토콜은 데이터의 조각을 최대한 빨리 대상 IP 주소로 보내는 역할을 한다. 패킷 전달 여부를 보증하지 않으며, 패킷을 보낸 숫서와 받는 순서가 다를 수 있다.

패킷 통신

데이터를 패킷이라고하는 작은 단위로 나누어 전송하는 방식을 의미합니다.

TCP(Transmission Control Protocol)

TCP는 전송 제어 프로토콜의 약자이며 한 기기에서 다른 기기로 데이터 전송하는 것을 담당합니다.

패킷 통신은, 데이터를 작은 단위로 나누어 전송하기 때문에, 순서가 뒤섞이거나 내용이 유실될 수 있다는 단점이 있다. 따라서 이러한 문제를 해결하기 위해 TCP라는 프로토콜이 존재한다. TCP는 패킷을 정상적으로 받을 수 있도록 하는 프로토콜이다. 패킷 전달 여부를 보증하고, 패킷을 송신 순서대로 받게 해준다.

TCP/IP란?

TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 제어 프토토콜 TCP로 이루어져 있다. IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다.(unreliable datagram service) TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다. HTTP, FTP, SMTP등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜이 IP 위에서 동작하기 때문에 묶어서 TCP/IP로 부르기로 한다.

TCP/IP는 하나의 프로토콜을 지칭하는 말이 아니라 인터넷에서 사용되는 각종 표준 프로토콜을 한데 모아 일컫는 말이다. 특히 TCP/IP라고 부르는 이유는 TCP와 IP가 이들 프로토콜 중 가장 대표적인 프로토콜이기 때문이다. 각각의 개별 프로토콜을 일컫는 말이 아니라, 인터넷 프로토콜의 집합의 의미로 굳이 구분해야할 때는 TCP/IP 프로토콜 스위트(TCP/IP Protocol Suite)라고 부르거나 인터넷 프로토콜 스위트(Internet Protocol Suite)라고 부른다.

IP는 데이터의 조각들을 최대한 빨리 목적지로 보내는 역학을 한다. 조각들의 순서가 뒤바뀌거나 일부가 누락되더라도 크게 상관하지 않고 보내는데 집중을 한다. TCP는 IP 보다 느리지만 꼼꼼한 방식을 사용한다. 도착한 조각을 점검하여 줄을 세우고 망가졌거나 빠진 조각을 다시 요청한다. 두 방식의 조합을 통하여 인터넷 데이터 통신을 하는 것을 묶어 TCP/IP라고 부른다.

Application Layer(응용 계층)

애플리케이션의 역할은 사용자가 실제로 체감할 수 있는 서비스를 제공하는 것이다. 예를 들어 웹 브라우저와 웹 서버는 애플리케이션 계층에 속하는 프로그램이고, 이 때 주고받은 데이터는 페이지를 요청하는 URL과 그 응답 결과로 전달되는 웹 페이지 데이터다.

애플리케이션 계층의 프로그램은 데이터의 내용을 보고 그에 맞는 서비스를 처리하는데 집중하고 데이터 전송에 대해서는 하위 계층에 위임한다.

메일 프로그램에서는 인터넷에서 전자우편을 보낼 때 이용하게 되는 표준 통신 규약인 SMTP(Simple Mail Transfer Protocol) , 인터넷 브라우저는 웹 서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위해 사용되는 통신 규약인 HTTP등을 이용한다. 이외에도 흔히 이용되는 응용 계층 프로토콜로는 파일 전송 규약(File Transfer Protocol: FTP), 동적 호스트 설정 통신 규약(Dynamic host Configuration Protocol: DHCP), 간이 망 관리 프로토콜(Simple Network Management Protocol: SNMP) 등이 있다.

(FTP, HTTP, SSH, Telnet, DNS, SMTP)

Transport Layer(트랜스포트 계층)

트랜스포트 계층의 역할은 애플리케이션 계층의 프로그램에서 전달받은 데이터를 목적지 애플리케이션 계층의 프로그램까지 전달하는 것이다. 데이터가 제대로 전달되지 않았을 때 재전송하는 것도 이 계층의 역할이다.

송신된 데이터를 수신측 애플리케이션에 확실히 전달하게 한다.(TCP, UDP, RTP, RTCP)

TCP는 무엇일까? TCP는 전송 제어 프로토콜로 데이터를 전송을 제어하고 데이터를 어떻게 보낼지 어떻게 맞출지 정한다. IP(Internet Protocol)의 특징은 비신뢰성과 비연결성이다. 그래서 IP 프로토콜만으로는 통신을 할 수 없다.

신뢰성과 연결성을 책임지기 위한 프토콜이 TCP이다. 호스트와 호스트간의 데이터 전송은 IP(인터넷 계층 프로토콜)에 의지하면서 동시에 신뢰성 있는 전송에 대해서는 TCP가 책임지는 구조이다.

TCP는 왜 연결성을 지향할까? 통신을 할 떄는 연결 지향적인 것이 편하다. 연결 지향이라는 것은 컨텍스트를 부여하는 것이고 컨텍스트는 유지되는 흐름을 관리하는 것이다. IP는 호스트와 호스트 사이의 데이터가 무슨 데이터인지, 데이터를 어떻게 나누고 맞추는지는 신경쓰지 않는다.

TCP는 3 Way handshake 과정을 통해서 연결을 수립하고 데이터를 송수신하고, 4 Way handshake 과정을 거친 후 연결을 종료한다. TCP는 신뢰성을 위해서 전송한 데이터를 받았는지, 얼만큼 받았는지에 대한 응답을 꼭 받아야 한다. 받은 데이터를 순서대로 조립해서 어플리케이션 계층으로 올려준다.

TCP는 두 네트워크 사이에 연결을 형성하고 효율적인 작업을 위해 데이터를 작은 패킷으로 나눠서 데이터를 전송한다. TCP는 연결형 서비스이지만, UDP는 비연결형 서비스이다. TCP는 신뢰도가 높지만 속도가 느리고, UDP는 신뢰도가 낮지만 속도가 빠르다. TCP의 패킷 교환 방식은 가상 회선 방식인 반면, 반면에 UDP는 데이터그램 방식을 따른다. TCP에서는 전송 순서를 보장하지만 UDP의 경우 전송 순서가 바뀔 수 있다.

UDP(User Datagram Protocol)은 TCP 보다 단순하며 다른 데이터에 비해 안전하게 보호되어야 할 필요가 없는 실시간 응용 프로그램에서 흔히 이용된다. UDP는 TCP보다 신뢰도가 낮고 오류 검출, 흐름 제어 등의 기능을 제공하지 않아 패킷을 빠르게 전송하는 응용 계층에서 이용된다.

Internet Layer

인터넷 계층 프로토콜에는 IP뿐만 아니라 ARP(Address Resolution Protocol), 인터넷 그룹 관리 프토토콜(Internet Group Management Protocol), 인터넷 제어 메시지 프로토콜(Internet Control Message Protocol)도 있다. 인터넷 계층은 네트워크 간 데이터 패킷 전송을 관리한다.

수신 측까지 데이터를 전달하기 위해 사용된다. (IP, ARP, ICMP, RARP, OSPF)

인터넷 계층의 역할은 데이터에 어드레스 정보를 덧붙여 목적지까지 무사히 전달하는 것이다. 인터넷 통신에서는 목적지 컴퓨터까지 도달할 수 있는 경로를 찾아야 하는데, 이때 라우터(router)라는 장비가 사용된다. 라우터는 인터넷에서 통신을 할 때 이어달리기를 하는 것처럼 데이터를 다음 네트워크로 전달하기 위해 사용된다.

네트워크 인터페이스 계층

네트워크 인터페이스 계층의 역할은 유선 LAN 어댑터나 무선 LAN 어댑터가 처리할 수 있는 형태로 데이터를 변환하고 이 데이터를 목적지까지 전달하는 것이다. 바로 위의 인터넷 계층이 멀리 떨어져 있는 목적지까지 어떻게 하면 데이터를 잘 전달할 수 있을까에 초점을 맞추고 있는 반면, 네트워크 인터페이스 계층은 물리적으로 인접하여 연결된 장비까지 어떻게 하면 데이터를 잘 전달할까에 초점을 맞추고 있다.

네트워크 어댑터가 처리할 수 있는 형태로 데이터를 변환하고 인접한 장비나 컴퓨터까지 변환된 데이터를 전달한다.

네트워크 인터페이스 계층은 원하는 기기의 MAC 주소를 확인하고 이더넷 케이블 및 와이파이를 통한 데이터 전송을 관리하는 등 작업을 담당한다.

프로토콜

컴퓨터와 컴퓨터가 동신할 때 지켜야할 절차나 규약을 프로토콜(protocol)이라고 한다.

  • HTTP라는 프로토콜에 따라 동작하도록 만들어진 웹 브라우저, 웹 서버(애플리케이션 계층)
  • TCP/IP라는 프로토콜에 따라 동작하도록 만들어진 OS 내장 통신 프로그램(트랜스포트 계층, 인터넷 계층)
  • 이더넷이라는 프로토콜에 따라 동작하도록 만들어진 네트워크 어댑터용 디바이스 드라이버(네트워크 인터페이스 계층)

Layer 1: Physical Layer(물리 계층)

해당 계층에서는 전기적, 기계적, 기능적인 특성을 이용하여 통신 케이블로 데이터를 전송하게 된다. 해당 계층의 통신 단위는 비트이기에 모든 파일과 프로그램은 1과 0으로만 통신이 이루어진다.

해당 단계에서는 단지 데이터만 전달할 뿐, 전송하려는 데이터가 무엇인지, 어떤 에러가 있는지 등에는 전혀 신경쓰지 않는다. 말 그대로 데이터를 전달하기만 한다.

해결하려 한 문제: 옆에 있는 컴퓨터와의 연결

데이터 전달 시

  • 데이터를 전송하는 곳에서는 0과 1로 나열된 데이터를 먼저 아날로그 신호로 바꿔 전송한다.
  • 전체적인 과정: 인코딩 => 데이터 전달

데이터 수신 시

  • 데이터를 수신받는 곳에서는 들어온 아날로그 신호를 0과 1로 나열된 데이터로 해석
  • 전체적인 과정: 데이터 수신 => 아날로그 신호를 디코딩

1계층의 기술만으로는 여러개의 컴퓨터가 통신을 할 수가 없다.

만약 다른 컴퓨터와 통신을 하고 싶다면 연결을 원하는 컴퓨터와 케이블을 연결해야 한다. 그러면 특정 컴퓨터와 연결하고 싶은 컴퓨터가 4대라면 4개의 케이블을 연결해야 한다.

그렇기에 같은 네트워크에 존재하는 여러 대의 컴퓨터가 통신을 할 수 있게 하는 계층이 2계층이다. EX) 브리지, 스위치

2계층은 안전하게 정보의 전달을 도와주는 조력자 역할을 하며 MAC 주소를 가지고 통신을 한다. MAC 주소: 컴퓨터간 데이터를 전송하기 위해 있는 컴퓨터의 물리적 주소

해당 계층의 전송 단위는 프레임이라고 하며 데이터 링크 계층은 Point to Point간 신뢰성있는 전송을 보장하는 계층이다. 물리 계층에서 발생할 수 있는 오류를 찾고, 수정하는데 필요한 기능적, 절차적 수단을 제공한다.

해결하려 한 문제: 같은 네트워크 상의 여러개의 컴퓨터와의 연결

통신의 과정(1계 + 2계층)

데이터 전달 시

  • 프레이밍(Framing)을 통해 물리적 주소인 MAC 주소를 부여한다.
  • 1계층에서의 통신 과정 반복
  • 전체적인 과정: MAC 주소 추가 => 인코딩 => 데이터 전달

데이터 수신 시

  • 1계층에서의 통신 과정 반복
  • 프레이밍(Framing)을 통해 추가된 물리적 주소인 MAC 주소를 제거한다.
  • 전체적인 과정: 데이터 수신 => 아날로그 신호를 디코딩 => MAC 주소를 제거

Layer 3: Network Layer(네트워크 계층)

데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능이며 라우팅이라고 불린다. 데이터를 연결하는 다른 네트워크를 통해 전달함으로써 인터넷을 가능ㅇ하게 하는 주요 계층이다.

해당 단계의 프로토콜 종류도 다양하고, 라우팅하는 기술도 다양하다.(라우터)

해당 계층의 주 역할: 경로를 선택하고 -> 주소를 정하고 -> 경로에 따라 패킷을 전달

IP 계층

  • IP 패킷의 전달 및 라우팅을 담당하는 계층
    • 패킷: IP 주소 + 데이터
  • IP 계층에서는 하위 계층의 하드웨어적인 특성과 다르게 독립적인 역할을 수행한다.
  • 주요 프로토콜
    • IP: 패킷의 전달을 담당
    • ICMP: 패킷 전달 에러의 보고 및 진단
    • 라우팅 프로토콜: 네트워킹을 위한 경로를 찾아주는 역할

IP 프로토콜

  • TCP/IP 기반의 인터넷 망을 활용하여 데이터를 전달하는 프로토콜
  • IP 주소 지정 및 IP 패킷의 라우팅 대상
  • 신뢰성, 흐름제어 기능이 전혀 없다.

전체 통신 과정의 요약

TCP/IP 계층의 캡슐화, 역캡슐화

  • TCP/IP 계층은, 위 그림과 같이 애플리케이션 계층, 전송 계층, 인터넷 계층, 네트워크 접근 계층으로 이루어져있다.
  • 데이터 전송 시, 데이터는 상위 계층에서 하위 계층으로 이동하고 계층 이동 마다 필요한 정보(헤더)가 추가된다. 이런 과정을 캡슐화라고 한다.
  • 데이터 수신 시, 데이터는 하위 계층에서 상위 계층으로 이동하고 계층 이동 마다 추가된 헤더를 읽고 알맞은 행동을 취한 후, 헤더를 제거한다.(이를 역캡슐화라고 한다.)

OSI 모델과 TCP/IP 모델은 어떤 차이가 있을까

TCP/IP 모델은 인터넷에서 통신을 하기 위한 프로토콜을 설명하기 위해 만들어졌고, OSI 모델은 표준화된 네트워크 프로토콜을 설계하기 위해 만들어졌다.

다만 TCP/IP 모델은 인터넷의 발전에 따라 계속해서 업데이트되어 왔으며, 실제로 인터넷에서 사용되는 프로토콜들을 기반으로 수정되어왔다. 그래서 TCP/IP 모델은 실제로 사용되고 있는 프로토콜들을 설명하기위해 더 적합하다.

Reference