본문 바로가기
네트워크 이야기

IP 기초이론 (4편)

by 민건사랑 2019. 8. 7.

IP 기초이론 4편에서는 TCP/IP에 대해 자세하게 알아보는 시간 인대요, 먼저 TCP에 대해 먼저 알아보도록 하겠습니다.

◆ TCP/IP_Application Layer (응용계층)

Application Layer

   TCP/IP의 응용 프로그램을 소개하겠습니다.

    ㅇ HTTP (Hypertext Transfer Protocol) : 웹을 지원하기 위한 프로토콜로 GET, PUT 기능을 포함하고 있고

        웹 서버에서 어떠한 Contents를 요청하거나 웹서버로 정보를 보내주는 역할을 합니다.

    ㅇ FTP (File Transfer Protocol) : TCP를 사용해서 대량의 파일을 송신하고 수신하는 프로토콜입니다.

    ㅇ TFTP (Trivial File Transfer Protocol) : UDP를 사용하는 파일 전송 프로토콜로서 라우터, 스위치 같은 

        네트워크 장비의 OS 이미지를 Upload, Download 할때 사용됩니다.

    ㅇ Telnet : 원격지에 있는 장비에 접속할 수 있는 표준 터미널 에뮬레이션 기능을 제공하고

        네트워크 장비에서는 Telnet을 통해 원격지에서 제어 및 설정 변경이 가능합니다.

    ㅇ SMTP (Simple Mail Transfer Protocol) : 컴퓨터 네트워크를 통해 전자 메일을 전송하는 프로토콜입니다.

      반대로 전자 메일을 수신할때는 POP3 (Post Office Protocol)를 사용합니다.

    ㅇ SNMP ( Simple Network Management Protocol) : 네트워크 장비를 모니터링하고 제어하기 위해 사용되는

       프로토콜로 장애관리, 장비 설정, 통계, 성능 및 보안 등의 관리 기능을 제공하고,

       NMS (Network Management System)에서 많이 사용되고 있습니다.

    ㅇ DNS (Domain Name Service) : 도메인 이름을 IP address로 변환해 주는 역할을 합니다.

◆ TCP/IP Protocol Stack

 

TCP/IP Stack

     TCP/IP 프로토콜의 전송 계층 기능은 사용자의 데이터를 적절히 분할(Segment)하여 IP에게

     전달하고, 수신할 때는 다시 조립함(Reassembly)으로써 효과적인 전송이 이루어지도록 합니다.

     전송계층은 TCP와 UDP로 분류 할 수 있고,

     TCP와 UDP 프로토콜은 응용 계층과의 통신을 위해 포트의 개념을 사용합니다.

     하나의 시스템에서 여러 개의 포트를 사용하여

     다양한 응용서비스를 동시에 이용 할 수 있으며 포트는 2byte 크기로 1 ~ 65535 범위의 값을

     가집니다.

     포트 번호는 IANA (Internet Assigned Number Authority)에 의해 관리되고

     RFC 1700에 Well-known Port(1 ~ 1023), Registered Port(1024 ~ 49151), Dynamic Port(49152~65535)가

     정의되어 있으며, Client 즉 서비스 요청자 입장에서 볼 때 Well-known Port와 Registered Port는 대부분

      Destination Port로 사용되며,

      Source Port는 프로그램 실행 시점에 랜덤 포트 번호를 OS로부터 할당받습니다.

        ※ 참조 사이트 : http://www.iana.ort/assignments/port-numbers 

       Windows system에는 \WINDOWS\system32\drivers\etc\service 파일에 포트 번호가 정의되어 있습니다.

  ◆ TCP (Transmission Control Protocol) 특징

TCP 특징

         상위 Application Layer로부터 받은 정보를 IP 전달되는 과정을 Multiplexing,

         반대로 IP로부터 받은 정보를 상위 Layer로 전달되는 과정을 De-Multiplexing이라고 합니다.   

          ㅇ Connection-Oriented Protocol   

               . 3-Way Handshake

               . Vitual Circuit

               . Data 전송 전에 반드시 논리적인 경로가 형성되어야 함     

          ㅇ신뢰성 있는 전송 : Sequence Number와 Acknowlegement Number 이용

          ㅇ 흐름 제어 : Windows Size 이용

          ㅇ Packet Recovery : Sequence Number, Acknowlegement Number, Timer 이용

◆ TCP Header

TCP Header

  ㅇ Source Port Number : 출발지 Port 번호

  ㅇ Destination Port Number : 목적지 Port 번호

  ㅇ Sequence Number : 정상적인 데이터 전송을 보장하기 위해 사용하는 필드로 전송되는 세그먼트의 순서 번호

  ㅇ Acknowledgement : 상대방이 전송한 Packet을 정상적으로 받았다는 사실은 확인해 주는 Number로써 수신한

                                 마지막 Byte 순서 번호 + 1을 추가해서 보내게 됩니다.

  ㅇ Header Length : TCP 헤더의 크기를 나타내는 것으로 32비트(4Byte) 단위를 사용합니다.

  ㅇ Reserved : 미래에 사용을 위해서 할당된 필드, 현재는 사용하지 않는 필드로 "0"으로 설정되어 있습니다.

  ㅇ TCP Header Flag

       . URG : Urgent Pointer가 유효함을 표시

       . ACK : Acknowledgment Number가 유효함을 표시

       . PSH : 수신자에게 데이터를 응용프로그램에서 전달하도록 지시할 때 사용

       . RST : 연결은 Reset 하도록 지시할 때 사용

       . SYN : 연결의 시작을 나타내기 위해 사용

       . FIN : 연결을 종료하도록 지시

  ㅇ Window Size : TCP의 흐름 제어를 위해 사용됩니다. 통신 단말기에서 현재 자신이 수신할 수 있는 Buffer의 양을 

                          상대방에게 알려줍니다. 다시 말하면 상대편 장비에게 얼마만큼의 데이터를 보내도 되는지를

                          알려주는  필드입니다. 

  ㅇ TCP Checksum : TCP Header와 Data 필드에 대해 계산된 체크섬으로 에러 여부를 체크합니다.

  ㅇ Urgent Pointer : URG Flag가 ON 되어 있을 경우에만 유효하다.

                           즉, 모든 Data 전송 중 긴급한 내용을 전달할 경우 해당 Data 위치를 지정한다고 보면 됩니다.

  ㅇ Option : 현재 정의되어 있는 옵션으로 최대 TCP 세그먼트 사이즈가 있습니다.

  ㅇ 데이터(Data) : 상위 Layer로부터 내려온 데이터

 ◆ TCP Three-Way Handshaking

TCP Three-Way Handshaking

     TCP/IP 프로토콜의 전송 계층 기능은 사용자의 전 송게층으로 내려온 데이터를

      TCP는 가상 회선(Virtual Circuit)을 설정하여 데이터를 전송하고, 전송이 완료된 후에는 

      회선을 해지하는 절차를 이용합니다.

      가상회선 설정 시 통신을 하고자 하는 상대방의 회선 설정이 가능한지 확인하는 절차를 

      3-way Handshake라고 하고,

      syn - syn + ack - ack의 3단계 과정을 거칩니다.

      Host  A에서 B로 임으로 설정한 SYN(순서 번호 100으로 가정)을 보내고,

      B에서 A로 ACK(100을 받았고, 다음 100+1을 기대)을 보냅니다.

      또한 B에서 A로 SYN(순서번호 300으로 가정)을 보내고,

      A에서 B로 ACK(300은 받았고, 300+1을 기대)를 보내게 됩니다.

      순서 번호(Sequence number)는 보안을 위해 0부터 시작하지 않고 임의의 번호부터 시작됩니다.

◆ UDP 특징

UDP Header

   ㅇ UDP : User Datagram Protocol

    ㅇ Connectionless Protocol - Data 전송을 위하여 사전에 필요한 Process가 없음

    ㅇ Best-Effort Delivery : 신뢰성을 보장 못함

    ㅇ UDP는 Connectionless(비연결성) 서비스로 전달의 보장이 안 되는 Unreliable(비신뢰성) 프로토콜이지만,

        애플리케이션 프로토콜에 오버헤드가 적고 간단하게 구현되는 전송 서비스를 제공합니다.

    ㅇ UDP는 일반적으로 브로트 캐스트, 멀티캐스트를 집중적으로 이용하는 애플리케이션 또는 질의에 빠른

        응답을 요구하는 애플리케이션에 사용됩니다.

    ㅇ UDP의 전송 단위를 Datagram이라 하고, 데이터 크기가 간단하여 전송 단위(Datagram) 별로 전송한다는 의미가 

        되겠습니다.

◆ TCP와 UDP 비교

TCP와 UDP 비교

   TCP와 UDP는 가장 근본적으로 Connection-Oriented와 Connectionless 프로토콜로 구분이 됩니다.

   TCP는 두 사용자 시스템 간의 통신에서 에러제어, 흐름제어, 데이터 순서 보장, 데이터 손실 및 중복해결을 수행하지만

   UDP는 두 사용자 시스템간의 통신에서 단순한 전송을 수행할 뿐 데이터 순서도 보장하지 못하며

   데이터 손실 및 중복을 해결하지 못하게 됩니다.

   UDP의 경우, 오늘날 Network Infrastructure가 발전하면서 등장한 새로운 Service인 VoIP와 Video Streaming Service

   에 적합하다고 볼 수 있습니다.

  지금까지 TCP에 대해 알아보았고, 다음시간에는 IP에 대해 알아보도록 하겠습니다.

 

    

'네트워크 이야기' 카테고리의 다른 글

IP 기초이론 (6편)  (0) 2019.08.08
IP 기초이론 (5편)  (0) 2019.08.08
IP 기초이론 (3편)  (0) 2019.08.07
IP 기초이론 (2편)  (0) 2019.08.06
IP 기초이론 (1편)  (0) 2019.08.05