이 포스팅은 네트워크 기초 시리즈 5 편 중 1 번째 글 입니다.

  • Part 1 - This Post
  • Part 2 - 02: 네트워크 용어정리
  • Part 3 - 03: OSI 7 layer - 물리, 데이터 링크 계층
  • Part 4 - 04: OSI 7 layer - 네트워크 계층
  • Part 5 - 05: OSI 7 layer - 전송 계층
▼ 목록 보기

네트워크 용어 정리

  • IP 주소
    • 인터넷 통신을 위해 네트워크 상에서 장치들이 서로를 인식하고 통신하기 위해 사용하는 번호
  • IPv4 체계
    • 32비트로 구성된 주소 체계
    • 0~255 사이 십진수 넷을 구분하여 사용
    • 2^32 = 약 42억 → IPv6
  • 공인 IP
    • 저 주소는 ICANN(아이캔앤) 이라는 기관이 국가별로 사용할 IP대역을 관리함
    • KISA(인터넷 진흥원)에서 우리나라에서 사용할 주소 관리
    • IP 주소가 4개의 클래스로 나눠지는데, 앞에서부터 순차적으로 더 강한 권한을 가지고 있다.
    • A 클래스 하나당 256256256개의 주소를 갖는 방식
    • 그럼, 결국 높은 클래스를 부여받은 기관의 경우, 하위 IP주소를 마음대로 가지고 놀 수 있다.
    • 문제는, 인터넷 발전 초기에 이걸 마구 뿌려, 현시점에는 공인 IP를 배분하기 상당히 어렵다.
    • 그래서 내 장비에 주소를 할당받고 싶은 경우, 미리 많이 할당된 기관, 서버 운영업체 같은 곳에다가 돈을 지불하고 사는 방식으로 진행하게 된다.
  • 사설 IP
    • 전체 IP 주소가 있는데, 이게 전부 공인 IP로 사용되는 것은 아니다.
    • 이렇게 특수한 목적으로 제외한 IP중, 사설 IP로 사용되는 대역이 따로 존재한다.
    • 이 사설 IP 대역은, 인터넷 상에 연결되어있지 않기 때문에, 임의의 사용자가 마음대로 부여하고 사용이 가능하다.
      • A 클래스 : 10.0.0.0 ~ 10.255.255.255
      • B 클래스 : 172.16.0.0 ~ 172.31.255.255
      • C 클래스 : 192.168.0.0 ~ 192.168.255.255
    • 이게 잘 이해가 안되다가, C클래스를 보고 바로 이해해버렸는데, 대부분의 집에 있는 장비의 IP주소를 찍어보면 이렇게 구성되어 있다는 것을 알 수 있다.
    • 대부분의 집에서 같은 IP 주소를 장비들이 사용해도 문제가 생기지 않는 것은, 이 대역이 사설 IP 대역이기 때문에 마음대로 사용이 가능해서 이다.
    • 자 이러한 점은, 공인 IP에서 발생하는 문제를 해결하는 방향으로 발전되었다.
    • 즉, 공인 IP 주소가 모자랄 경우에 사설 IP로 회사, 가정내에 IP 주소를 부여하고, 공유기 등에 고정 IP를 부여한 다음에 인터넷에 접속해버리는 것.
    • 그럼 이렇게 되면, 우리집에 들어오는 패킷을 우리집에 있는 디바이스들에 배정된 사설 IP주소를 찾아 배정해 주어야 하지 않을까?
    • 그게 바로 공유기(라우터)이다.
    • 단, 당연하게도 이렇게 사설 IP를 배정 받은 컴퓨터를 공인 IP를 가진 컴퓨터가 알 수 없다. 사설 IP이기 때문이다.
    • 자 이러한 상황에서 우리가 보통 하는 짓은, 집에 있는 컴퓨터로 서버에 접근하는 것이다.
    • 즉, 164.124.101.2의 IP로 접근하는 것인데, 이건 가능하다. 하지만 역은 불가능하다.
    • 사설 IP이기 때문에 인터넷 연결이 불가하기 때문이다.

https://user-images.githubusercontent.com/37871541/126325032-7f2aac12-6593-48ed-b09a-8384f154d8d4.png

  • 고정 IP
    • 고정 IP는 컴퓨터에 고정적으로 부여된 IP를 말한다.
    • IP를 반납하기 전까지는 다른 장비에 부여할 수 없는 IP주소.
  • 유동 IP
    • 유동 IP는 장비에 고정적으로 IP를 부여하지 않고 컴퓨터를 사용할 때 남아있는 IP중에서 돌아가면서 부여하는 IP를 뜻한다.
    • 10개의 IP주소가 있을 때 컴퓨터가 20대라면 고정 IP면 10대만 가용, 나머지는 논다.
    • 유동 IP를 부여하는 경우 돌아가면서 사이좋게 사용이 가능하다.
  • 결론
    • 결론적으로, 서버를 운영하고자 하는 경우에는 공인 IP를 받아야 하고(인터넷 연결이 안되면 아예 접근이 불가)
    • 고정 IP로 부여(만약 IP주소가 없을 경우, 서비스 제공 불가, 또는 다른 사람의 서버로 접속)해야 한다.
  • NAT Network
    • Network Address Translation (네트워크 주소 변환)
    • 자 위에서 결국 우리는 공유기를 통해서 우리집에 배정된 공인 IP 주소를 가지고 각각의 장치에 배정된 사설 IP로 뿌려서 사용한다는 것을 알게되었다.
    • 그럼 결국 필요한 것은, 특정 패킷이 들어왔을 때, 원하는 목적지로 갈 수 있도록 하는 매핑함수가 필요하다.
    • 이걸 수행하는 것이 NAT이다.
    • 장점
      • 인터넷 공인 IP 주소를 절약할 수 있다.
        • 당연한 이야기이다. 이런 목적으로 사용되는 친구다.
      • 인터넷이란 공공망과 연결될 때, 방화벽 역할을 수행할 수 있다.
        • 각각의 장치에 공인 IP가 되어 있다면, 외부에서 해당 주소로 공격해 들어올 수 있다.
        • 하지만 공인 IP는 하나이고, 이것만 라우터가 밖으로 알려지게 하기 때문에 방어가 가능하다. 내부 사설 IP 주소를 알아야 공격할 수 있는데 앞단에서 원천 봉쇄하는 것.
    • 궁금증
      • 아니 그러면 디바이스 두대가 있어. 그런데 둘다 네이버에 접속해 그러면 라우터에서 나가는 요청은 두개일거야
      • 그에 대한 응답이 돌아왔을 때, 어떻게 각각의 디바이스에 패킷을 전송할 수 있을까?
      • 결국 이걸 가능하게 하기 위해서는 각 디바이스가 가지는 유일한 값이 필요하다.
      • 어떤 값을 들고 있으면 될까?
      • MAC Address이다.
  • Mac address
    • 디바이스가 가지고 있는 고유의 물리적, 하드웨어 주소
    • 패킷에 들어오는 mac 주소를 보고 적어둔 테이블을 기반으로 사설 IP주소를 알아낸다음 해당 디바이스로 데이터를 넘겨준다.
  • 소켓 통신
    • 양방향 통신을 위해 사용
    • 게임, 실시간 채팅, 스트리밍 중계 등
    • 일반적으로는 서버에 요청은 가능하나, 서버는 나한테 정보를 줄수는 없다.
    • 요청이 있어야 응답을 주는 구조: http 통신
    • 소켓 통신은 서버와 클라이언트가 특정 port를 통해 실시간으로 양방향 통신을 하는 방식
    • 높은 비용
  • 호스트 운영체제
    • 컴퓨터 한대에 메인으로 깔린 운영체제
  • 게스트 운영체제
    • 부가 운영체제
  • Putty
    • 가상 단말기 프로그램
    • ssh, telnet, tcp 접속을 위한 클라이언트
    • window환경의 호스트 운영체제에서 다른 운영체제의 CLI환경에 SSH 접속 가능
    • 받아서 사용하면 끝
    • 호스트네임 (사용자이름@IP주소)
    • 포트번호 넣어주고 뿅
  • SSH
    • Secure Shell
    • 기존에 Telnet 사용 → 암호화를 통해 안전한 제어 가능, 중간에 가로채도 쓸모 없음
    • 클라이언트와 서버로 분리됨
    • 공개키, 암호키 방식으로 서버에 접속하는 방식이 있음
      • 보다 안전함 → 따로 구글링 할 것
  • 포트
    • 항구
    • IP 주소에 항구도 추가되어 있는 것
    • 이 항구는 프로세스에 연결되어 있음
    • 왜 필요할까?
    • 컴퓨터 내에는 다양한 프로세스가 동작한다. IP주소는 하나인데, 통신을 필요로하는 프로그램이 다수일 경우 이런 방식이 필요하다.
    • 이전의 공유기와 같은 방식
  • 포트 포워딩
    • 그럼 내가 서버에 요청을 걸었고, 서버가 응답하여 특정 파일을 우리집 공유기의 공인 IP로 쏘았다.
    • 내가 요청을 했기 때문에 해당 발자취는 모두 남는다. 공유기는 이 과정에서 응답에 대해 IP주소와 mac주소를 결합하여 요청을 보낸 디바이스로 데이터를 보낸다.
    • 그런데 만약에, 내가 서버역할을 한다면? 포트를 열어주고, 이쪽으로 들어오게 해야한다.
    • 그런데, 공유기는 특정 포트로 요청이 들어왔을 때, 어느 사설 IP로 연결해줘야할지 모른다.
    • 이럴 때 해주는 것이 포트 포워딩, 즉 이정표를 달아주는 것이다.
  • OSI 7계층
    • 물리 계층 (Physical Layer, L1)
      • 기계적, 전기적인 통신망 접면의 정의
      • 데이터를 전기적인 신호로 변환해서 주고받는 기능만 할 뿐
      • 대표 장비 : 통신 케이블, 리피터, 허브 등
    • 데이터링크 계층 (DataLink Layer 2, L2)
      • 데이타 링크의 제어 (프레임화, 데이터 투명성, 오류 제어 등)
      • 맥 주소를 가지고 통신한다.
      • 대표 장비 :브리지, 스위치 등
    • 네트워크 계층 (Network Layer 3, L3)
      • 경로 배정, 주소, 호 설정 및 해지 등
      • 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능(라우팅)
      • 주소부여(IP), 경로설정(Route)
    • 전송 계층 (Transport Layer 4, L4)
      • 종단 간의 신뢰성 있고 효율적인 메세지 전송(연결 관리,에러제어,데이타 분리,흐름제어 등)
      • 오류검출 및 복구와 흐름제어, 중복검사 등을 수행
      • TCP 프로토콜 / UDP 프로토콜
    • 세션 계층 (Session Layer 5, L5)
      • 응용 개체들간의 대화, 동기화 제어, 연결세션관리 등
      • 데이터가 통신하기 위한 논리적인 연결
      • 세션 설정, 유지, 종료, 전송 중단시 복구 등
      • 동시 송수신 방식(duplex), 반이중 방식(half-duplex), 전이중 방식(Full Duplex)
      • TCP/IP 세션을 만들고 없애는 책임
    • 표현 계층 (Presentation Layer 6, L6)
      • 전송 형식 협상, 데이타의 표현 방식 변환 등
      • MIME 인코딩이나 암호화 등의 동작
      • 데이터 종류 구분(해당 데이터가 TEXT인지, 그림인지, GIF인지 JPG인지의 구분)
    • 응용 계층 (Application Layer 7, L7)
      • 화일 전송, 접근 및 관리 및 문서, 메세지 교환 등
      • 최종 목적지로서 HTTP, FTP, SMTP, POP3, IMAP, Telnet 등과 같은 프로토콜
      • 일반적인 응용 서비스를 수행