개발자라면 알아야할 인터넷 프로토콜: IP, TCP, HTTP

TCP/IP 가 무엇인지 바로 설명하지 못한다면! [컴퓨터 네트워크(2/3)]

SoniaComp
9 min readJan 23, 2021
  • IP: 컴퓨터의 ‘IP주소’에 대해서는 한번쯤 들어보셨죠? 컴퓨터의 IP주소는 말그대로 ‘Address(주소)’입니다. 이 프로토콜에서는 메시지가 목표로 하는 컴퓨터에 잘 도착하도록 해주는 역할을 합니다. (배달)
  • TCP: IP의 상위 프로토콜입니다. 컴퓨터의 위치를 찾아서 메시지를 전달했다면, 그 메시지를 확인해야겠죠? 네트워크 상에서 메시지를 전달할 때, 한번에 메시지를 전달하기 보다, 작은 단위(패킷)으로 쪼개서 메시지를 전달합니다. TCP는 전달받은 패킷들을 재조립하고, 손상되거나 손실된 패킷이 있다면, 재요청합니다.
  • HTTP: HTTP는 TCP의 상위 프토콜입니다. 메시지 전체를 확인했다면, 이제 그 메시지를 해석해야 합니다. HTTP에는 Reques Methods, data type등 원하는 메시지를 전달하기 위한 여러 규칙들이 있습니다.

TCP/IP(인터넷 프로토콜), HTTP(웹서비스 프로토콜)의 이론적 배경에 대해 알고 싶다면 아래 글을 읽어주세요!!

0. Network 통신 구조?

옛날에는 다른 회사의 컴퓨터들끼리는 서로 통신하는 규칙이 달랐습니다. 따라서, 1970년대 후반 국제 표준화 기구(ISO)에서 서로 다른 컴퓨터 회사의 데이터 통신 규칙을 통합시키기 위해, 네트워크 통신 표준 모델을 제시했습니다. 바로 이것이 OSI 참조모델(OSI 7계층)입니다.

계층(Layer)?

인프라나 시스템을 설계할 때, 계층이라는 용어를 많이 사용하게 됩니다. 컴퓨터 통신 구조 역시 세분화된 모듈로 계층화되어 있습니다! 하나의 큰 기능을 하기 위해, 순서(의존성)가 있는 모듈 여러개를 사용하는 방법입니다. 왜 하나의 모듈이 아닌, 여러개의 모듈을 사용하는 걸까요? 이런 계층화를 하게 되면, 복잡한 시스템을 기능별로 나누어 단순화 시킬 수 있습니다. 특히 관리(유지/보수)하기가 편한데, 예를 들어, 문제가 발생할 때, 문제가 있는 부분 모듈만 수정하면 된다는 장점이 있습니다.

인터넷을 구성하는 LAN, WAN

1. OSI 참조모델

OSI는 말 그대로 표준이 되는 모델입니다. 실제로 이 모델을 적용하여 구현한 것이 인터넷 프로토콜 구조 입니다. OSI 는 설계 원칙이라고 하면, 인터넷 프로토콜 구조는 실제로 구현된 설계도라고 할 수 있습니다. 따라서 OSI 참조 모델은 인터넷 프로토콜 구조를 이해하기 위한 디딤돌이므로, 편하게 읽어보세요!

OSI 참조모델

데이터 전달 방법: Service Primitive & Encapsulation

이 그림에서 주목해야 할 점은 각 단계에서, 이전 단계의 데이터에 새로운 값을 붙여서(service primitive)데이터를 캡슐화(encapsulation)하는 과정입니다. 외국어는 저도 몰라요.

서비스 프리미티브(Service Primitive)는 한 컴퓨터(호스트)에서 각 계층간에 주고 받는 서비스를 의미합니다. 서비스 프리미티브는 아래 그림과 같이 요청(request), 통지(indication), 응답response), 확인(confirm)으로 구분됩니다. 서비스 프리미티브를 사용해서, 송신데이터인 PDU(Protocol Data Unit) 가공하여, 다음 계층으로 전달합니다. 이렇게 다음 단계로 전달되는 데이터 단위를 SDU(Service Data Unit)이라고 합니다. 다시 각 계층은 전달받은 SDU에 프로토콜 제어 정보(PCI:Protocol Control Information)를 헤더로 붙여 PDU를 만듭니다. 이 과정이 위의 가운데 그림에 잘 나와있죠? 이런 전달 과정을 캡슐화(capsulation)이라고 합니다.

출처:도리의 디지털 라이프 서비스 프리미티브

OSI 7계층

  1. 물리 계층(최하위)(Physical layer): 전송매체에 대한 전기적, 기계적인 인터페이스를 다룹니다. (하드웨어로 구현)
  2. 데이터링크 계층(Datalink layer): 이 계층의 데이터 단위를 프레임(Frame)이라고 합니다. 이 계층의 기능은 데이터의 오류 문제를 해결하고, 프레임 단위로 데이터를 전송하고, 프레임에 번호를 부여해서 데이터를 순차적으로 전송하도록 하는 것입니다.
  3. 네트워크 계층(Network layer): 데이터가 네트워크 상에 존재하는 노드를 통과하여 목적지까지 잘 도착하도록 경로를 찾아줍니다. 이러한 역할을 라우팅(routing)이라고 합니다. 이 계층의 데이터 전송 단위는 패킷(Packet)이라고 부르는데, 패킷에는 데이터를 주고 받는 양쪽 컴퓨터의 주소를 포함합니다.
  4. 트랜스포트 계층(Transport layer): 네트워크 계층이 호스트에서 호스트로의 데이터 전송에 기여한다면, 트랜스포트 계층은 호스트내에서 동작하는 프로세스에서 프로세스로의 데이터 전송(End-to-end)을 의미합니다. 따라서 이 계층에서는 각 프로세스의 주소값인 포트 번호를 사용합니다. 트랜스 포트 계층의 데이터 단위인 PDU(데이터 전송단위: Protocol Data Unit)는 데이터를 주고받는 프로세스의 포트 번호를 포함합니다.
  5. 세션 계층(Session layer): 양 끝단에 있는 응용 프로세스 간의 통신을 제어하는 기능을 제공합니다. 이 세션 계층의 대화(Dialogue) 형태에는 단방향(simplex), 반이중(Half Duplex), 전이중(Full duplex) 형태가 있습니다. 또한 이 계층에서 체크 포인트 기능을 제공하여 오류가 발생했을 때, 체크 포인트 이후의 모든 데이터를 재전송하여 데이터를 복구(recovery)하도록 합니다.
  6. 표현 계층(Presentation layer): 데이터의 표현방법(Syntax)와 의미(Semantic)을 다루는 계층입니다. 데이터를 약속된 방법으로 인코딩(Encoding)하고 디코딩(Decoding)하는 과정이 포함됩니다. 또한 데이터를 안전하게 전달하기 위한 암호화(Encryption)와 효율적인 전송을 위한 압축(Compression) 기능 역시 제공됩니다.
  7. 응용계층(최상위)(Application layer): 사용자에게 필요한 응용서비를 제공합니다. 예를 들어, 파일 전송 프로토콜인 FTAM, 메일 전송 프로토콜인 SMTP가 여기에 해당합니다.

2. 인터넷 프로토콜 구조

그렇다면 현재 인터넷에서 사용되는 통신구조는 어떤 것일까요? 바로 TCP/IP 통신방식입니다. TCP/IP(Transmission Control Protocol / Internet Protocol)는 인터넷과 연결된 모든 컴퓨터들이 사용하는 통신 방법, 공용어입니다.

인터넷 프로토콜은 위 그림의 4개 계층과 맨 아래 회색 물리 계층을 포함해서, 5개 계층을 사용합니다.

인터넷 프로토콜 5계층

  1. 물리계층
  2. 데이터 링크 계층(Link Layer, 네트워크 인터페이스 계층): 네트워크 전송 매체와 프레임을 주고 받습니다. 프레임 포맷, 매체에 대해 독립적으로 동작함으로, 다양한 네트워크 접근 방법과 호환됩니다. 또 LAN (이더넷(Ethernet), 토큰 버스(Token Bus), 토큰 링(Token Ring)), WAN(프레임 릴레이(Frame Relay))과 같이 서로 다른 네트워크 형태를 연결하는 데도 사용할 수 있습니다. [OSI — 데이터 링크 계층]
  3. 인터넷 계층(Internet Layer): 패킷의 어드레싱(addressing — 컴퓨터 주소), 패키징(packaging), 라우팅(routing) 기능을 제공합니다. 이 계층에서 사용되는 프로토콜은 IP(Internet Protocol: IP주소, 패킷의 라우팅), ARP(Address Resolution Protocol: IP주소를 MAC주소, 하드웨어 주소로 변환), ICMP(Internet Control Message Protocol: IP 패킷의 전달의 오류와 상태를 리포트하고 진단), IGMP(Internet Group Management Protocol: IP 멀티캐스트 그룹의 관리) [OSI — 네트워크 계층]
  4. 트랜스포트 계층(Transport Layer): End-to-End 통신을 제공합니다. End-to-End는 프로세스 간의 통신인 거 기억나시죠? 핵심 프로토콜은 TCP, UDP 가 존재합니다. [OSI — 트랜스포트 계층]
  5. 응용 계층(Application Layer): HTTP, FTP, SMTP와 같은 프로콜이 해당합니다. 또한 TCP/IP 네트워크를 관리하는 프로토콜인 DNS, RIP, SNMP도 여기에 해당합니다. 이 계층의 프로토콜이 다른 계층의 프로토콜과 다른 점은 사용자 프로그램에서 동작한다는 것입니다. 인터넷 프로토콜의 1~4계층은 시스템 공간인 운영체제에서 동작하죠.

데이터 캡슐화

OSI 모델과 같습니다!! 😊

출처: Network Encyclopedia 인터넷 프로토콜의 데이터 캡슐화(encapsulation) 과정

네트워크 관련 시리즈

1. 데이터 통신

2. OSI 참조모델과 인터넷 프로토콜 구조

3. 데이터 링크 계층

4. 네트워크 계층과 라우팅

5. 데이터 압축과 암호화

--

--

SoniaComp

Data Engineer interested in Data Infrastructure Powering Fintech Innovation (https://www.linkedin.com/in/sonia-comp/)