TCP/IP

TCP/IP란?

데이터가 의도된 목적지에 닿을 수 있도록 보장해주는 통신 규약이다.

TCP, IP 두가지의 프로토콜로 이루어져 있다.

  • 프로토콜 : PC와 스마트폰 등이 통신하는 규칙
  • 네트워크 아키텍처 : 복수의 프로토콜을 조합한 것 (네트워크 아키텍처는 우리가 사용하는 언어에 해당한다.)

현재는 TCP/IP만 거의 사용한다.

TCP/IP의 주요 특징

  1. 연결형 서비스 및 비연결형 서비스 제공
  2. 패킷 교환
  3. 동적 경로 할당
  4. 공통의 응용 프로그램 제공

TCP/IP의 계층구조

TCP/IP는 OSI 7계층 중 4계층으로 이루어져 있다.
(7계층은 실무에서 사용하는 경우가 없으므로, 자세히 다루지 않겠다.)
7계층/4계층

  • 웹 액세스의 프로토콜 조합 web-access-protocol

데이터링크 계층(데이터를 전송하는 역할을 하는 계층)

  • 대표적 프로토콜

    • ARP (Address Resolution Protocol): [IP 주소 -> 물리 주소]
    • RARP (Reverse ARP): [물리 주소 -> IP 주소]
  • 네트워크 인터페이스층 : 같은 네트워크 안에서 데이터를 전송하는 층
    하나의 네트워크는 [라우터]와 [레이어2 or 3 스위치]로 구획하는 범위이다.

network-interface-layer

  • 인터넷층 : 네트워크 사이에서 데이터를 전송하는 역할을 한다.
    • 라우팅 : 라우터에 의한 네트워크 간 전송을 뜻함
    • 엔드투엔드 통신 : 원격지 네트워크에서 최종 출발지와 목적지 사이의 데이터 전송을 뜻함

end-to-end

인터넷 계층

  • 네트워크 상에서 패킷을 처리 (패킷 라우팅 등)
  • 대표적 프로토콜
    • IP (Internet Protocol)
    • ICMP (Internet Control Message Protocol)
    • IGMP (Internet Group Management Protocol)

전송 계층 (트랜스포트층)

  • 트랜스포트층은 TCP, UDP를 포함하는 계층이다.
  • 대표적 프로토콜
    • TCP : TCP는 데이터가 유실되더라도 그 사실을 검출해 데이터를 다시 보내준다. (엔드투엔드의 신뢰성을 확보해준다.)
    • UDP

애플리케이션층

  • 애플리케이션의 기능을 실행하기 위한 데이터의 형식과 처리 절차등 결정하는 계층
  • 대표적 프로토콜
    1. TCP 이용 : FTP, SMTP, Telnet 등
    2. UDP 이용 : TFTP(Trivial FTP), DNS(Domain Name System), BOOTP(Bootstrap Protocol) 등
    3. IP 직접 이용 : traceroute 프로그램
    4. ICMP 직접 이용 : ping 프로그램

application-layer

인터넷 주소 (Internet Address)

  • 인터넷에 연결되어 있는 호스트를 식별
  • 3가지 종류의 주소
    1. 물리주소 : 네트워크 내에서 호스트를 식별하는 물리적 하드웨어 주소로서 네트워크 인터페이스 주소
    2. 인터넷 주소 (IP 주소) : 서로 다른 네트워크 간에 호스트를 식별하는 논리주소
    3. 포트 주소 : 프로세스를 식별하는 포트 번호

포트 주소

  • 포트 번호
    • TCP 및 UDP에 의해 응용 프로그램을 식별
    • 2byte(16bit)로 구성

데이터 송수신 규칙

  • 헤더 : 각 프로토콜에는 각각의 기능을 실현하기 위한 제어 정보(헤더)가 필요함

    • 캡슐화 : Protocol Data Unit = Service Data Unit + Protocol Control Information
    • 역캡슐화
      • 수신측 시스템의 해당 계층에서 수행되는 캡슐화의 반대 과정
      • 물리 계층 이외의 모든 계층에서 수행됨
  • 캡슐화 순서 capsulation-sequence

데이터 수신, 전송할 때의 규칙

  • 데이터 전송

  • 웹서버 애플리케이션의 데이터 수신 (헤더로 목적지를 확인하고 수신)

    이더넷 → IP → TCP → HTTP → 웹브라우저

  1. 이더넷(네트워크 인터페이스 계층) :
    • 이더넷 헤더를 참조하여 자기 앞으로 온 데이터인지 확인
    • FCS로 데이터에 오류가 없는지 확인
    • 이더넷 헤더, FCS를 제거함
  2. IP(인터넷 계층) :
    • IP헤더를 참조하여 자기 앞으로 온 데이터인지 확인
    • IP 헤더를 제거함
  3. TCP(전송 계층) :
    • TCP 헤더를 참조해 어느 애플리케이션의 데이터인지 확인
    • TCP 헤더를 제거함
  4. HTTP(응용 계층) :
    • HTTP 헤더를 읽고 웹 서비스를 제공할 수 있도록 데이터를 처리
  5. 애플리케이션으로 데이터 처리를 넘김
  6. HTTP 헤더와 그뒤의 데이터 부분을 처리함

데이터를 부르는 방법

  • 애플리케이션층 → 메시지
  • 트랜스포트층 → 세그먼트(TCP) or 데이터그램(UDP)
  • 인터넷층 : IP 패킷 or IP 데이터그램
  • 네트워크 인터페이스층 : 프레임

data-name

HTTP 메시지 = 웹브라우저의 데이터 + HTTP 헤더

TCP 세그먼트 = HTTP메시지 + TCP 헤더

IP 패킷(IP 데이터그램) = TCP 세그먼트 + IP 헤더

이더넷 프레임 = IP패킷 + 이더넷 + FCS

인터넷에서 사용하는 주소와 사설 네트워크에서 사용하는 주소

  • IP주소는 공인/사설 IP주소 2가지로 나뉜다.

    1. 공인주소 : 인터넷 통신을 위해 사용하는 IP 주소(=퍼블릭 주소, 글로벌 주소)

    2. 사설주소 : 사설네트워크에서 이용하는 IP주소

      (10.0.0.0 ~ 10.255.255.255)

      (172.16.0.0 ~ 172.31.255.255)

      (192.168.0.0 ~ 192.168.255.255)

  • NAT (Network Address Translation)

    • 목적지가 사설주소인 경우?

      1. 서버에서 사설IP를 폐기시킴
    • 사설에서 인터넷으로 통신하는 방법

      1. 인터넷으로 요청을 전송할 때, 출발지 IP 주소를 변환함
      2. 라우터는 나중에 원래대로 되돌리기 위해, 변환한 주소의 대응을 NAT 테이블에 보존해둔다.
      3. 요청에 대해 응답이 라우터로 돌아오면, 목적지 IP주소를 변환한다. 이때, NAT 테이블에 보존해 둔 주소의 대응을 이용한다.
      4. 사설주소와 공인주소를 1:N 대응시키는 주소변환을 NAPT라고 한다.

데이터가 잘 도착했는지 확인하는 법

  • IP는 데이터를 보내는 시도를 할 뿐, 데이터가 보내졌는지 알 수 없다.
  • ICMP : IP에 의한 엔드투엔드 통신이 정상적으로 이루어졌는지 확인하는 기능을 갖춘 프로토콜

ICMP

  • 주요 기능
    1. 에러 리포트
      • IP패킷을 폐기했다면, 출발지로 에러리포트를 전송한다.
      • 이 에러 리포트를 도달불능 메시지라고 부른다.

icmp-error-report

  1. 진단 기능
  • IP의 엔드투엔드 통신이 가능한지 진단한다.
  • 진단을 위해서 이용하는 명령으로 ping 커맨드가 있습니다.

ARP란?

  • IP 주소와 인터페이스를 식별하기 위한 MAC주소(물리주소)를 대응시켜줌

  • IP주소와 MAC주소를 대응시키는 것 → 주소해석

  • ARP 동작 흐름

    1. ARP요청으로 IP주소에 대응하는 MAC주소를 질의한다.
    2. 질의받은 IP 주소를 가진 호스트가 ARP 응답으로 MAC 주소를 알려준다.
    3. 주소 해석한 IP주소와 MAC주소의 대응을 ARP 캐시에 보존한다.

포트 번호

  • 애플리케이션을 식별하는 식별 번호이다.
  • TCP 및 UDP에 의해 응용 프로그램을 식별한다.
  • 포트번호는 16비트이고, 범위는 0~65535이다.
    1. 웰노운 포트 : 서버 애플리케이션용으로 예약된 포트번호
    2. 등록된 포트 : 서버 애플리케이션을 식별하기 위한 포트번호
    3. 동적/사설 포트 : 통신할 때 동적으로 할당되는 포트번호

포트 번호 범위

명칭포트 번호 범위의미
웰노운 포트0 ~ 1023서버 애플리케이션용으로 예약된 포트 번호
등록된 포트1024 ~ 49151자주 이용되는 애플리케이션의 서버 쪽 포트 번호
동적/사설포트49152 ~ 65535클라이언트 애플리케이션용 포트 번호

주요 웰노운 포트 번호

프로토콜TCPUDP
HTTP80-
HTTPS443-
SMTP25-
POP3110-
IMAP4143-
FTP20/21-
DHCP-67/68

TCP란?

  • TCP란 신뢰성이 있는 애플리케이션 간의 데이터 전송을 하기 위한 프로토콜입니다.

    TCP에 의한 데이터 전송 절차 (3웨이 핸드쉐이크)

    1. TCP 커넥션 맺기
    2. 애플리케이션 간 데이터 송수신
    3. TCP 커넥션 끊기 tcp-data-send

TCP 헤더 형식 (중요한 순서대로!)

  1. 포트 번호 (적절한 애플리케이션 프로토콜에 데이터를 배분할 수 있기 때문)
  2. 시퀀스 번호
  3. ACK 번호

데이터 분할 구조

  • 데이터를 분할하는 기준 단위는 MSS(Maximum Segment Size)라고 부른다.
  • MSS의 표준 크기는 1460byte이다. data-division

IP란?

  • OSI 모델의 네트워크 계층의 기능
  • 사용자에게 복잡한 인터넷 개별 네트워크 구조를 숨겨 모든 호스트들을 연결하는 1개의 가상 네트워크로 보이도록 함.
  • 네트워크 계층의 투명성을 제공함

비연결형 서비스

  • 인터넷 계층의 투명성
    • IP 역할 : 호스트의 주소 지정 및 데이터그램 전송
    • 경유해야 하는 데이터 링크 및 라우터 정보를 무시
    • 신뢰성이 없는 데이터 전송

IP 단편화

  • IP 데이터그램의 분할
  • MTU (Maximum Transfer Unit)
    • 네트워크 링크에서 허용하는 프레임당 데이터의 최대 길이
      • Ethernet LAN : MTU = 1500 byte
      • CCITT X.25 : MTU = 128 byte
  • IP 데이터그램은 전송 중 각 네트워크의 MTU에 적합한 크기로 분할되었다가 목적지 호스트에서 각 fragment들을 재조립함

UDP란?

  • 데이터를 적절한 애플리케이션에 배분하는 기능만 있는 프로토콜
  • 확인은 전혀 하지 않음

UDP의 장점

  1. 확인을 하지 않으므로 TCP에 비해 전송효율이 좋다.
  2. 데이터를 일방적으로 보여주는 스트리밍 같은 방식에 특히 좋다. udp

네트워크의 전화번호부

  • 이름해석
    1. 사용자가 IP주소를 이해하기 어렵기 때문에 호스트명을 붙여서 구분을 쉽게 한다. a. URL과 메일주소에 호스트명 자체나 호스트명을 구하기 위한 정보가 포함되어있다.
  • DNS : URL등으로 어플리케이션의 주소를 지정하면, 호스트 이름에 대응하는 IP주소를 자동으로 구함 (가장 많이 쓰이는 이름해석)

DNS 서버

  • DNS를 이용하려면 DNS 서버가 필요하다.
  • DNS서버에 미리 호스트명과 IP 주소의 대응관계를 등록해둔다.
  • DNS 리졸버 : DNS서버에 질의하는 기능

설정 자동화

  • DHCP : 설정을 자동화 하는 프로토콜 1. DHCP DISCOVER 2. DHCP OFFER 3. DHCP REQUEST 4. DHCP ACK dhcp

끗!

Last Updated: