Linux/리눅스 실무의 이해

03-01-04 네트워크 기초_TCP/IP 및 네트워크 프로토콜의 이해

바우네 2022. 1. 26. 08:00
반응형

네트워크 기초_TCP/IP 및 네트워크 프로토콜의 이해

프로토콜

  1. 프로토콜의 개요
    • 프로토콜(protocol)이란 컴퓨터나 통신 장비 사이에 메시지를 주고받는 양식 혹은 규칙이 체계이다. 
    • 프로토콜 형식(Syntax), 의미(Sementic), 타이밍(Timing)으로 구성된다. 형식은 데이터의 구조나 형식을 말하고, 의미는 형식에 따라 담긴 데이터를 어떻게 해석할 것인가 어떤 기능을 수행하는가를 말한다. 타이밍은 이러한 형식에 맞춘 의미를 담은 데이터가 어떤 순서로 오고 가야 하는지 어떤 속도로 전달되어야 하는지 정의한 것이다.
  2. 프로토콜의 기능
    • 에러제어(error control): 데이터 전송 중 에러 검출 및 에러 정정을 정의한다.
    • 캡슐화(encapsulation): 통신 계층상에서 각 계층마다의 특정 제어 정보를 정의한다.
    • 연결제어(connection control): 연결 지향 통신에서 연결의 설정, 데이터 송수신, 연결 종료의 절차를 정의한다.
    • 순서제어(sequence control): 패킷의 순서의 역전과 중복 패킷 발생을 방지한다.
    • 흐름제어(flow control): 보낼 데이터의 양을 조절한다.
    • 혼잡제어(congestion control): 대기하고 있는 패킷의 양을 조절하여 패킷이 혼잡해지지 않도록 조절한다.
    • 동기화(synchronization): 데이터 송신 측과 수신 측의 타이머 값, 윈도 크기 등 매개변수 정보를 일치하는 방법을 제공한다.
    • 주소지정(addressing): 여러 개체 중 하나의 개체를 식별할 수 있는 방법을 제공한다.
    • 단편화 및 재조정(fragmentation and reassembly): 데이터를 분할 전송하고 다시 재조립하는 방법을 제공한다.
    • 데이터의 형식화(data formatting): 전송하는 데이터의 형식이 무엇인지 방법을 제공한다.
  3. 표준 제정 위원회
    • 구분 설명
      국제표준기구
      (ISO, International Standards Institute)
      _1947년에 창설하였고 각 국의 표준제정위원회에서 선정된 위원들로 구성된 다국적 기구로 OSI 참조 모델과 OSI 프로토콜에 관련한 업무를 담당하였고 상호 호환성, 품질 개선, 생산성 향상, 가격 저하를 위한 모델 제공
      _과학, 기술, 경제 분야 공헌
      미국국립표준협회
      (ANSI, American National Standards Institute)
      _사립 비영리 법인으로 미국 및 미국 시민의 복리를 위한 수행
      _ISO 내에서 미국을 대표하는 구성원
      국제전기통신연합
      (ITU-T, International Telecommunications Union)
      _UN 산하기구로 CCITT(Consultative Commettee for International Telegraphy and Telephony)를 전신으로 운영하고 있음
      _일반 전기 통신, 전화, 데이터 통신 시스템 표준
      전기전자공학회
      (IEEE, Institute of electrical and electronics engineers)
      _IEEE 802.3과 IEEE 802.5와 같은 LAN의 접속 규격과 처리에 대한 표준 제정
      _전기공학, 전자공학, 무선공학, 컴퓨터와 통신의 국제 표준 개발을 하는 세계에서 가장 규모가  큰 전문공학학회
      전자산업협회
      (EIA, Electronic Industries Association)
      _전자산업발전 촉진을 위한 제조업체 중심의 비영리 기관
      _데이터 통신의 물리적인 연결 인터페이스와 전자신호 규격 규정
      한국정보통신기술협회
      (TTA, Telecommunications Technology Association)
      _1988년 12월에 설립하였고 통신 사업자, 산업체, 학계, 연구기관 및 단체 등의 상호 협력과 유대 강화를 목적으로 함
      _국내외 정보통신분야의 최신 기술 및 표준에 관한 각종 정보 수집, 조사 연구와 정보통신 산업 및 기술 진흥과 국민 경제 발전에 기여

TCP/IP

  1. TCP/IP 개요
    • 근거리 통신망이나 인터넷에서 네트워크를 구현하기 위해 임의의 서브 네트워크에 접속한 장비들과 종단 호스트 간의 연결과 라우팅을 제공하는 인터넷 프로토콜이다.
    • 컴퓨터 기종에 관계없이 정보 교환을 목적으로 1960년대 말 미국방성(DARPA)에서 연구를 시작했고 1980년대 초 공개된 프로토콜이다. 1980년대 초 유닉스에 TCP/IP를 기본 포함하기 시작했고 1983년 인터넷의 전신인 ARPANET이 기존의 NCP(Network Control Program)의 사용을 폐지하고 TCP/IP를 대체하며 지금의 인터넷으로 발전했고 이와 동시에 TCP/IP도 대중화되었다.
    • TCP/IP 프로토콜을 구성하는 주요 프로토콜은 TCP와 IP이나 보통 UDP(User Data Protocol), ARP(Address Resolution Protocol), RAPP(Reverse ARP) 등 관련된 프로토콜도 아우른다.
  2. TCP/IP의 구조
    • TCP/IP는 네트워크 액세스 계층(network access), 인터넷 계층(internet), 전송 계층(transport), 응용 계층(application) 등 총 4개의 계층으로 구성되어 있다.
    • 네트워크 액세스 계층
      • 실제 통신을 수행하는 하드웨어 인터페이스이다.
      • dial-up 회선, LAN, X.25, 위성 통신 등이 네트워크 액세스 계층이 될 수 있다. 특히, CSMA/CD와 MAC 프로토콜을 사용하는 이더넷이 네트워크 액세스 계층으로서 가장 널리 사용되고 있다.
      • 인터넷 계층에서 전달한 패킷을 프레임으로 구성해 물리적 매체에 싣고 반대로 반대로 물리적 매체에서 프레임을 받아 상위 계층으로 패킷을 전달하는 역할을 수행한다.
    • 인터넷 계층
      • 전송 계층에서 전달한 패킷을 서브 네트워크와 무관하게 목적지 주소까지 효율적으로 전달하는 역할을 수행한다.
      • 패킷이 정확히 도착했는지 손상됐는지 여부를 확인하지 않고 상위 계층에 위임한다.
      • 추가적으로 네트워크 상태를 진단하거나 IP 주소와 MAC 주소 간의 변환을 수행하는 기능을 수행한다.
      • 관련 프로토콜로 IP, ICMP, ARP, RAPP가 있다.
    • 전송 계층
      • 응용 계층에서 전송한 데이터를 연결 지향 데이터 스트림 지원, 신뢰성, 흐름제어, 다중화 같은 네트워크 서비스를 제공하기 위해 세그먼트(segment)나 데이터그램(datagram)으로 구성해 전송한다.
      • 대표적 프로토콜로 TCP와 UDP가 있다.
    • 응용 계층
      • 응용 프로그램 간 통신 접속을 위한 통신 프로토콜을 보유한 추상 계층이다.
      • 응용 계층의 프로토콜들은 전송 계층의 프로토콜을 기반으로 호스트 간 연결을 수행한다.
      • 대표적 응용 계층 프로토콜로 HTTP, SMTP, POP3, IMAP, DNS, NFS, FTP, TELNET, SSH 등이 있다.
  3. TCP와 UDP
    • TCP
      • 연결을 먼저 설정하고 데이터를 주고받는 연결 지향(connection oriented) 전송 프로토콜이며 가상 회선 방식을 제공한다.
      • 3-way handshake 과정을 통해 연결을 설정하고 4-way handshake를 통해 해제한다.
      • 패킷이 원활히 전달될 수 있도록 흐름제어 및 혼잡제어를 제공한다.
      • 패킷 재전송을 통해 높은 신뢰성을 보장한다.
      • 패킷 전송 후 ACK 패킷 수신 여부를 확인하기 때문에 UDP보다 속도가 느리다.
      • 전송과 수신을 동시에 수행할 수 있는 전이중(Full-Duplex) 방식이며 호스트와 호스트 간 점대점(Point to Point) 연결을 제공한다.
    • UDP
      • 비연결형 서비스로 데이터그램 방식으로 사용자의 데이터를 전달한다.
      • 사용자의 데이터를 주고받을 때 데이터가 제대로 전송됐는지 확인하는 절차가 없다.
      • UDP 헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.
      • 데이터가 정확히 전달됐는지 확인하는 메커니즘이 없기 때문에 신뢰성이 낮다.
      • TCP보다 속도가 빠르다.
  4. 포트 번호
    • 전송 계층의 TCP와 UDP 프로토콜은 상위 응용 계층의 다양한 프로그램을 다중화하기 위해 각각의 포트를 부여한다.
    • 포트는 0~65535 사이의 정수값이다.
    • 그중 0~1023번은 잘 알려진 포트(well known port)로서 이미 시스템에서 사용하는 포트들이다.
    • 리눅스에서는 /etc/services 파일에서 주요 포트 번호를 확인할 수 있으며 그중 주요 포트는 아래와 같다.
    • 포트 TCP UDP 설명
      0   UDP 예약됨: 사용하지 않음
      13 TCP UDP DAYTIME 프로토콜
      20 TCP   FTP(파일 전송 프로토콜)-데이터포트
      21 TCP   FTP-제어포트
      22 TCP   SSH(Secure Shell)-ssh scp, sftp같은 프로토콜 및 포트 포워딩
      23 TCP   텔넷 프로토콜-암호화되지 않은 텍스트 통신
      25 TCP   SMTP(Simple Mail Transfer Protocol)-이메일 전송에 사용
      37 TCP UDP TIME 프로토콜
      53 TCP UDP DNS(Domain Name Service)
      67   UDP BOOTP(부트스트랩 프로토콜) 서버, DHCP로도 사용
      68   UDP BOOTP(부트스트랩 프로토콜) 클라이언트, DHCP로도 사용
      80 TCP UDP HTTP(Hyper Text Transfer Protocol)-웹 페이지 전송
      110 TCP   POP3(Post Office Protocol version 3)-전자우편 가져오기에 사용
      123   UDP NTP(Network Time Protocol)-시간 동기화
      143 TCP   IMAP4(인터넷 메시지 접근 프로토콜 4)-이메일 가져오기에 사용
      161   UDP SNMP(Simple Network Management Protocol)-Agent 포트
      443 TCP   HTTPS-SSL 위의 HTTP(암호화 전송)
      873 TCP   rsync 파일 동기화 프로토콜
  5. 소켓
    • 네트워크 프로그램이 데이터 통신을 하기 위한 접점(endpoint)이다.
    • 네트워크 프로그램은 데이터 통신을 위해 소켓을 생성하고 상대방 소켓에 접속하여 상호 간 데이터를 교환한다.
    • 소켓은 인터넷 프로토콜, 로컬 시스템의 IP 주소 및 포트번호, 원격 시스템의 IP 주소와 포트 번호로 구성된다.

IP 주소(internet protocol address)

  1. IP 주소
    • 컴퓨터 네트워크에서 장치들이 서로 통신하기 위해 노드를 식별하기 위한 특수한 번호이다.
    • IP 주소를 통하여 발신지와 송신지를 명시하고 데이터를 네트워크상 원하는 곳으로 전달할 수 있다. 
    • IP 주소를 통하여 라우터는 최적의 경로를 계산하여 전달할 수 있다.
    • 주소 할당 방식에 동적 할당과 고정 할당 두 가지 방식이 있다.
    • 주소의 크기는 32비트로 보통 0~255 사이의 값을 십진수로 표기하고 점으로 구분한다.
    • 중간 일부 번호들은 특별 용도로 예약되어 있다. 127.0.0.1은 localhost로 자기 자신을 가리킨다.
    • IP 주소는 첫 번째 1바이트를 클래스로 사용한다. A~C까지는 일반 목적으로, D, E 클래스는 특수 목적으로 사용한다.
  2. IP 주소의 클래스
    • A 클래스는 첫 번째 바이트 중 첫 번째 비트가 0으로 시작된다. 나머지 1~126은 주소로 사용할 수 있고, 127은 예약되어 있는 주소이다.
    • B 클래스는 첫 번째 바이트 중 앞선 두 비트가 10이다. 나머지 128~192는 주소로 사용한다.
    • C 클래스는 첫 번째 바이트 중 앞선 세 비트가 110이다. 나머지 192~223은 주소로 사용한다.
    • D 클래스는 첫 번째 바이트 중 앞선 네 비트가 1110이다. 나머지 224~239는 주소로 사용할 수 있으며, 다중방송통신(multicasst)용으로 예약되어 있다.
    • E 클래스는 첫 번째 바이트 중 앞선 네 비트가 1111이다. 연구용으로 예약되어 있다.
  3. IP 주소의 범위와 호스트 수, 네트워크 수
    • A 클래스: 0.0.0.0~127.0.0.0, 16,777,216, 128(2의 8승 개)
    • B 클래스: 128.0.0.0~191.255.0.0, 65,536, 16,384(2의 16승 개)
    • C 클래스: 192.0.0.0~233.255.255.0, 256, 2,097,152(2의 24승 개)
    • D 클래스: 224.0.0.0~239.255,255,255
    • E 클래스:240.0.0.0~247.255.255.255
  4. 특수 목적 IP 주소
    • 인터넷 연결을 위한 일반적 목적 외에 특수 목적으로 사용하는 주소가 있다. 대표적으로 네트워크를 구축하기 위한 사설 IP 주소와 자기 자신을 가리키는 루프백 IP 주소가 있다.
    • 사설 IP 주소는 A 클래스에 1개의 네트워크, B 클래스에 16개 네트워크, C 클래스에 256개의 네트워크가 할당되어 있다.
    • 루프백 IP 주소는 A 클래스의 127.0.0.0~255.255.255.255 범위를 사용한다.

서브넷(subnetting)

  1. 서브넷의 필요성
    • 서브넷은 호스트 주소 중 일부를 서브넷의 네트워크 주소로 사용하여 네트워크를 분할하는 기법이다.
    • 브로드캐스트의 크기를 작게 하고 주소를 절약하며 라우팅 정보의 크기를 감소하기 위해 서브넷이 필요하다.
    • 서브넷을 사용하여 호스트 찾는 수고를 줄인다.
  2. 서브넷마스크(subnet mask)
    • 넷마스크(netmask)라고도 부른다.
    • IP 주소를 네트워크 주소와 호스트 주소로 분리하는 데 사용한다. 서브넷마스크와 IP주소를 AND 연산하면 네트워크 주소를 분리할 수 있고 IP 주소 중 서브넷마스크의 0에 해당하는 부분이 호스트 주소가 된다.
    • 일반적으로 A 클래스는 255.0.0.0이고, B 클래스는 255.255.0.0이다. C 클래스는 255.255.255.0이 된다.
    • 동일한 IP 주소를 서로 다른 서브넷마스크를 적용했을 때 네트워크 주소와 호스트 주소가 어떻게 달라지는지를 알아야 한다.
  3. 서브넷마스크와 호스트의 개수
    • 서브넷마스크가 255.255.255.0일 때 IP 192.168.123.132의 네트워크 주소는 192.168.123.0이 되고 해당 네트워크가 가질 수 있는 호스트의 수는 192.1168.123.0~192.168.123.255까지 총 256개이다.
    • 총 256개 중 192.168.123.0은 네트워크 주소로 예약되어 있다.
    • 192.168.123.255는 브로드캐스트 주소로 예약되어 있고, 192.168.123.254는 게이트웨이 주소로 예약되어 있다.
    • 실제 호스트의 개수는 위 3개를 제외한 253개이다.
  4. C 클래스 기준 서브넷 구성해보기
    • 서브넷마스크를 사용하여 할당 받은 네트워크를 더 작은 서브넷으로 나눌 수 있다. C 클래스의 서브넷마스크를 255.255.255.0으로 사용하는 경우 하나의 네트워크만 운영되지만, 255.255.255.192로 적용하면 네 개의 네트워크로 나눠서 운영할 수 있다.
    • 255.255.255.192는 2진수로 '11111111.11111111.11111111.11000000'이 된다. 앞에 26비트가 네트워크 주소가 되면서 네 번째 바이트의 앞 두 숫자를 이용하여 네 개의 네트워크가 구성된다.
    • 위 빨간 부분을 '00000000', '01000000', '10000000', '11000000'으로 나눠서 네트워크를 구성한다.
    • 서브넷네트워크 주소를 십진수로 나타내면 192.168.123.0, 192.168.123.64, 192.168.123.128, 192.168.123.192가 된다.

도메인(Domain)

  1. 도메인 네임(Domain Name)
    • 도메인 네임이란 숫자로 구성한 IP를 사람이 기억하기 쉽도록 이름을 부여하는 메커니즘이다.
    • 도메인 네임은 국제인터넷주소자원관리기관(ICANN)에서 새로운 도메인을 계속적으로 발행하는 등 관리하고 있어 영어 이외에 한글, 중문 등 다양한 언어도 제공하고 있다.
  2. 도메인 체계
    • 도메인 체계는 점(.)으로 구분하는 다단계 계층 트리 구조이다. 루트 도메인은 도메인 이름과 최상위 도메인(예: com)으로 구성되고 그 앞에는 서브도메인이 올 수 있다. 프로토콜은 통신 시 사용하는 규약을 의미하는데 예를 들면 'http://' 을 들 수 있다.
    • 1단계 도메인인 최상위 도메인(TLD: Top-Level Domain)은 일반 최상위 도메인(gTLD: generic TLD)과 국가 코드 최상위 도메인(ccTLD: country code TLD)으로 나눌 수 있다. 일반 최상위 도메인은 com, net, org, edu, gov, mil, int 등이 해당된다. 국가코드 최상위 도메인은 ISO-3166에 따라 kr, cn, us 등이 해당된다.
    • 2단계 도메인은 co, go, or과 같이 기관 이름이나 기관 종류가 오고 논리적으로 3단계, 4단계 도메인으로 확장하여 기술할 수 있다.
  3. 도메인 네임 시스템(DNS: Domain Name System)
    • 도메인 네임 시스템이란 호스트의 도메인 네임을 IP 주소로 변환해주는 시스템을 말한다.
    • ARPANET 시절 HOSTS.TXT 이름의 텍스트 파일을 통해 도메인 네임과 매핑하는 IP 주소를 관리했던 것이 그 시작이다.
    • 단순 파일로 관리하기에는 인터넷 사용자의 증가와 발전으로 체계적인 시스템 도입이 필요했다.
    • 인터넷 사업자가 제공하는 DNS 서버에 도메인 네임을 질의하면 IP 주소로 반환한다. DNS 서버에 질의하는 과정은 도메인 네임의 계층 구조에 따라 단계별로 질의할 수 있다.
  4. ICANN(internet Corporation for Assigned Names and Numbers)
    • 인터넷 DNS의 기술적 관리, IP 주소 공간 할당, 프로토콜 파라미터 지정, 루트 서버 시스템 관리 등의 업무를 조정하는 역할을 수행하기 위해 1998년에 설립한 국제인터넷주소관리기구이다.
    • 인터넷의 비즈니스, 기술계, 학계 및 사용자 단체 등 회원으로 구성된 비영리 기관이다.

IPv6(Internet Protocol version 6)

  1. IPv6의 개요
    • IPv6는 IPv4의 주소 고갈 문제를 해결하기 위해 주소의 길이를 128비트로 확장한 차세대 인터넷 주소 체계이다.
    • 16비트 단위로 8자리로 구성되고 각각은 콜론(:)으로 구분된다. 보통 16진수 값으로 표기되고 0 값은 생략될 수 있다.
    • 예: 2001:0DB8:AC10:FE01:0000:0000:0000:0000
  2. IPv6의 특징
    • IPv4에서 중요도가 떨어졌지만 기본으로 제공했던 헤더를 확장 헤더로 옮김으로써 기본 헤더에서 포함하는 필드가 12개에서 8개로 줄어드는 등 헤더 구조를 단순화했다.
    • 주소 길이를 128비트로 확장하여 인터넷상 모든 기기에 주소를 할당할 수 있게 됐고 더 이상 IPv4는 NAT(Network Address Translation) 기술이 불필요하게 될 것이다.
    • ISP에서 상위 ISP가 할당받은 주소의 일부분을 할당받도록 하는 계층적 체계를 갖는다.
    • 호스트의 주소를 자동으로 할당받을 수 있다.
    • 패킷 출처 인증, 데이터 무결성 및 비밀 보장 기능을 IPv6 확장 헤더를 통해 기본으로 인증 및 보안 기능을 제공한다.
    • 흐름 레이블(flow label) 필드를 통해 트래픽을 구분하고 라우터네 의해 QoS 처리가 가능하게 된다.
    • 기본 헤더뿐 아니라 확장 헤더를 추가함으로써 다양한 상황에 대한 확장성이 높아졌다.
    • IPv6 호스트는 물리적 위치에 영향을 받지 않고 동일한 주소를 유지하면서 자유롭게 이동할 수 있다.
  3. IPv4와 IPv6의 비교
    • 구분 IPv4 IPv6
      주소 길이 32비트 128비트
      주소 개수 약 43억 개 약 (43억) 4승 개
      품질 제어 품질 보장 관란(QoS 일부 지원) 등급별, 서비스별 패킷 구분 가능
      보안 기능 IPsec 프로토콜 별도 설치 확장 기능으로 기본 제공
      자동 네트워킹 곤란 가능(Auto-configuration)
      이동성 지원 곤란(비효율적) 용이(효율적)
반응형