# CHAPTER 2 네트워크 - 기초

ygs1363·2022년 12월 19일
0

CS 전공지식 노트

목록 보기
2/19

SECTION 2.1 네트워크 - 기초

2.2에서 설명할 OSI 7계층에서 나오는 기본적인 용어들의 설명

.1 네트워크

한 컴퓨터에 있는 데이터를 다른 컴퓨터로 옮기려면 어떻게 해야 할까?..

네트워크란?

네트워크 기술이란 서버와 클라이언트의 정보가 오고 가는 다리 역할을 하는 기술의 총칭

인터넷 통신 방식은 두가지 주체에 의해 이루어짐

주체 1 : 클라이언트

주체 2 : 서버

종류

  • LAN(Local Area Networks) : 가까운 거리 (기업,회사)
  • MAN(Metropolitan Area Networks : 지리적 위치 (도시와도시)
  • WAN(Wide Area Networks : LAN WAN을 묶는 거대한 네트워크

구조

그리고 이 클라이언트와 서버가 통신을 주고 받을때 일종의 약속을 한 상태에서 명령을 주고 응답을하게 됨 이를

프로토콜 ( Protocol ) 이라고 부름

.2 IP ( Internet Protocol )

구체적인 숫자로 이루어진 주소 ( DNS서버를 통해 도메인 주소와 이어주는 역할 )

인터넷 통신도 마찬가지로 클라이언트가 요청한 정보가 서버에 잘 도달하기 위해서는 서버의 IP 주소가 필요하고 서버도 클라이언트에게 정보를 전달하기 위해서는 클라이언트의 IP 주소가 필요

  • 패킷 ( packet )

    택배상자와 비슷한 개념 - 택배상자에는 택배송장이 붙어 있기 때문에 어디서 보내고 어디로 발송할 지 정보가 나와있음

    출발지 IP, 목적지 IP 등등이 기록된 데이터들을 담아 보내는 것

  • IP의 한계

    • 비연결성
    • 비신뢰성
    • 프로그램 구분
    • 비연결성

      • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송
      • 클라이언트는 서버가 패킷을 받을수 있는 상태인지, 없는 상태인지 알 수 있는 방법이 없음
    • 비신뢰성

      • 중간에 패킷이 사라지거나 ( 손실 ), 순서대로 오지 않음
      • 패킷이 노드를 지나가다 소실 될경우 / 첫번째 보다 두번째 패킷이 먼저 도착할 경우 => 실제 보낸 사람이 의도한 자료인지 신뢰할 수 없음
    • 프로그램 구분

      • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상인 문제
      • 홈페이지에서 우리가 하는 여러 행동들 ( 회원가입, 주문 등등...)이 한곳으로 모든 요청이 들어올 경우 요청이 다 섞여 적절한 응답을 하지 못할 수 있음

TCP와 PORT의 필요


.3 TCP ( Transmission Control Protocol )

4계층 - 전송계층에 속하는 중요 프로토콜로 컴퓨터간 데이터를 순서대로 에러없이 교환할 수 있게 하는 역할

정확한 데이터의 전달을 목표 (신뢰성)

  • 연결지향
  • 데이터 전달 보증
  • 순서 보장
  • 연결지향 TCP 3- way handshake

    A -> B : 내 말 들려?
    B -> A : 잘 들려. 내 말은 들려?
    A -> B : 잘 들려!

  1. 우선 클라이언트에서 SYN ( 연결 )을 확인
  2. 서버는 SYN을 확인 하고 ACK ( 인증 )을 보내서 정보전달 가능을 알림
  3. 클라이언트가 ACK를 보내고 이제 데이터의 전송 준비 완료를 확인
    =>양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장, 데이터 전달 전 사전에 한쪽이 다른쪽에 준비되었다는것을 알게 해줌

    연결하고자 하는 두 장치 간의 논리적 접속을 성립하기 위해 사용하는 연결 확인 방식

  • 4 - way handshake

    A -> B: 나는 다 보냈어. 이제 끊자!
    B -> A: 알겠어! 잠시만~
    B -> A: 나도 끊을게!
    A -> B: 알겠어!

  1. 클라이언트에서 서버와 연결 종료를 위해 FIN 패킷을 보내고 FIN_WAIT1 상태가 됨
  2. 서버는 클라이언트로 부터 FIN을 받고 응답 패킷 ACK를 보냄 상태는 CLOSE_WAIT가 됨
  3. 서버가 통신이 끝나면, 연결종료 준비가 끝나면 클라이언트에게 FIN패킷을 보내고 LAST_WAIT 상태가 됨
  4. 클라이언트는 확인 패킷 ACK을 보내고 TIME_WAIT 상태가 됨

    3 way와는 반대로 가상 회선 연결을 해제할 때 주고 받는 확인 작업

  • 데이터 전달 보증

    • TCP를 통해 데이터를 잘 전달 받았는지 확인 가능
  • 순서 보장

    • 킷1, 패킷2, 패킷3 순서로 클라이언트가 서버에 전송을 했고, 이 자료를 서버는 패킷1, 패킷3, 패킷2 로 받았다면, 서버는 패킷 2부터 다시 전송하라고 요청
      => 이를 통해 데이터의 순서가 보장
  • UDP

    • TCP가 제공하는 연결지향, 데이터 전달보증, 순서보장 등 이러한 기능이 제공되지 않으나 단순하고 빠름
    • UDP에서는 3-way를 적용하지 않기 때문에 error가 발생하면 다시 요청을 계속 보내는 방식으로 진행 (스타크래프트 UDP 생각하면 됨)

.4 PORT

한 서버에 여러 요청을 할 때 각각의 출입문을 만들어줌

간단한 예시로 이해하는 것이 이해가 빠름

게임을 플레이 하면서 게임 내 보이스톡을 이용하는 동시에 웹툰을을 본다고 가정

위의 상황에서 게임 서버에서는 게임에 대한 데이터 요청과 보이스톡에 대한 요청이 동시에 이루어지기 때문에 이를 구분해야함
=> port번호로 이를 구분


.5 DNS ( Domain Name System)

컴퓨터와 컴퓨터 사이에서는 www.naver.com 과 같은 문자를 이해하지 못함 그래서 -> DNS서버로 보낸 후 거기서 받은 IP 주소로 도메인 주소( 목적지 )와 이어줌 ( 이 과정에서 데이터( 문자 )를 보내는 과정이 TCP )

사람이 읽을 수 있는 도메인 이름을 컴퓨터가 읽을 수 있는 IP 주소로 변환 => 도메인으로 ip주소를 알 수 있고 ip주소로 도메인을 알 수 있음

TCP에서 DNS를 들러서 IP를 받아오는 것 -> 이 IP를 찾아가는 과정을 라우팅이라고 함 그리고 그 구간별로 라우터 라는 장비가 있음

라우터 : 네트워크들을 연결, 구분, 분할, 시켜주며 관리하는 역할을함


.6 라우팅 ( Routing )

네트워크 안에서 데이터를 보낼 때 이 데이터가 전달될 수 있도록 최적의 경로를 선택하는 과정을 말함

위에서 말하는 최적의 경로는 주어진 데이터를 가장 짧은 거리로 또는 가장 적은 시간 안에 전송할 수 있는 경로를 말함

그리고 이 과정을 능동적으로 수행하는 장치를 라우터 라고 말함

  • 라우터

    가장 좋은 경로를 찾기 위해 라우팅 알고리즘, 즉 라우팅 프로토콜을 사용하여 계산된 경로를 만들어 내며, 이것을 라우팅 테이블에 저장함 이를 위해 라우터 장비에는 서로 다른 네트워크 들에 대한 정보가 저장되어 있어야 하며, 이것을 네트워크 엔지니어 또는 관리자가 수행

  • 라우팅 프로토콜 ( Routing Protocol )

    패킷이 목적지까지 가는 방법을 결정해주는 프로토콜

    RIP, OSPF, IGRP, BGP등이 있으며 라우팅 테이블을 참조해 가장 좋은 길로 패킷을 전송 시킴

    • RIP ( Routing Information Protocol )
      : 최소 HOP COUNT를 파악하여 라우팅하는 프로토콜
    • OSPF ( Open Shortest Path First )
      : 최단 경로 우선 프로토콜
    • BGP ( Border Gateway Protocol )
      : 외부 라우팅 프로토콜 AS(자율 시스템)와 AS간 사용되는 라우팅 프로토콜

.7 URI ( Uniform Resource Identifier )

  • URI

    통합 자원 식별자(Uniform Resource Identifier)는 인터넷에 있는 자원을 어디에 있는지 자원 자체를 식별하는 방법

    • Uniform : 리소스를 식별하는 통일된 방식
    • Resource : 자원, URI로 식별할 수 있는 모든 것
      여기서 자원은 웹 브라우저의 파일만 뜻하는 게 아니라, 실시간 교통정보 등 우리가 구분할 수 있는 것은 모든 게 리소스가 된다.
    • Identifier : 다른 항목과 구분하는데 필요한 정보

URI의 하위개념으로 URL, URN이 있음

  • URL ( Uniform Resource Locator )

    파일식별자(Uniform Resource Locator)는 네트워크 상에서 자원이 어디 있는지 위치를 알려주기 위한 규약

    • 컴퓨터 네트워크와 검색 메커니즘에서의 위치를 지정하는, 웹 리소스에 대한 참조
    • URL을 웹 사이트 주소로만 알고 있지만, URL은 웹 사이트 주소뿐만 아니라 컴퓨터 네트워크상의 자원을 모두 나타내는 표기법
    • 그리고 해당 주소에 접속하려면 URL에 맞는 프로토콜( http, sftp, smp ..등 )을 알아야 하고, 그와 동일한 프로토콜로 접속해야 함
  • URN ( Uniform Resource Name )

    통합 자원 이름(Uniform Resource Name)은 urn:scheme 을 사용하는 URI를 위한 역사적인 이름

    • URL이 리소스가 있는 위치를 지정한다면, URN은 리소스에 이름을 부여하는 것
    • 리소스가 이름에 매핑되어 있어야 하기 때문에 이름으로 부여하면 거의 찾기가 힘들다. 그래서 대부분 URL만 씀 ( URN은 몰라도 됨)

.8 NAT ( Network Address Translation )

Private Network ( 사설망 )

사설망 혹은 프라이빗 네트워크는 인터넷 어드레싱 아키텍쳐에서 사설 IP주소 공간을 이용하는 네트워크로 보통 가정,사무실,기업랜에 쓰임

사설망은 공인 인터넷이 아닌 가정,기업 등의 한정된 공간에 사용하는 네트워크를 말함. => 사설망에서만 사용 가능하기 때문에 공인망에선 사용할 수 없음

보통 private IP 만으로는 라우팅을 통해 다른 곳과 통신을 할 수 없음 (송신 수신 IP가 필요함) 하지만 NAT 장치에서는 private IP를 public IP로 전환을 시켜줌 -> 접속하고자 하는 곳까지 전달 가능

이 사설IP는 사설망에만 해당한다면 어디서나 사용할 수 있지만 사설망에서 공인 인터넷으로 나가고자 할때 자신의 출발지를 사설IP 그대로 사용할 수 없음 그래서 이 사설 IP를 공인 IP로 변환할 필요가 있음

IP를 변환하기 위한 방법을 고안한것이 NAT

네트워크 주소 변환 ( NAT )

공인망으로 나아가기 위해서는 반드시 사설IP를 공인IP로 NAT해야 함. 그리고 이를 NAT Device ( NAT장비, 공유기 )가 수행

NAT ( Network Address Translation ) : IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술

IP 패킷의 TCP/UDP 포트 숫자를 변환한다고 말한 이유는 NAT 의미가 IP 주소 뿐아니라 PORT까지 변환시켜 사용하는 것을 포함하기 때문

이를 Port Address Translation ( PAT 혹은 NAPT )라고 부름

왜 PORT까지 변환시킬까?

NAT에 할당된 공인 IP는 하나이지만 사용자는 여러명( 사용자1,2,3 )일 수 있음. 이러한 상황에서 패킷이 공인망으로 나아갈 때는 문제가 없지만 되돌아올때 각 사용자( 사용자1,2,3 )를 구분할 방법이 없음..

PAT로 출발지 포트를 임의로 변경해야함

NAT를 이용하는 이유는 대개 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함

NAT을 사용하는 목적

  1. 인터넷의 공인 IP주소를 절약할 수 있다는 점
  2. 인터넷이란 공공망과 연결되는 사용자들의 고유한 사설망을 침입자들로부터 보호할 수 있다는 점

정리해보자면

출발지 IP 혹은 목적지 IP를 바꾸겠다는것을 의미


.9 그외 알면 좋을 용어들...

위에서 정리한것보다 훨씬더 축약시켰으니 더 궁금한 내용들은 따로 찾아보고 이러한 용어들이 있구나 하고 넘어가자.

  • http의 특징이자 약점을 보완하기 위해 사용

    • 쿠키 :
      사용자의 PC에 저장하는 작은 기록 정보 파일

      HTTP에서 클라이언트 상태정보를 로컬에 저장하였다가 필요시 정보를 참조하거나 재사용할 수 있음

    • 세션 :
      일정 시간 동안 같은 사용자( 브라우저 )로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 유지시키는 기술

      방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라고 부름

  • 압축

    • 무손실 압축 ( Lossless Data Compression )

      압축된 파일을 손상 없이 원래대로 되돌릴 수 있음 ( ZIP, 7z )
      => 한가지라도 깨질경우 전체를 사용할 수 없음

    • 손실 압축 ( Loss Data Compression )

      데이터의 손실을 고려할 수 있음 ( jpg, MPEG 등 영상..)
      => 어느정도는 손실되어도 일부는 사용할 수 있음

  • VoIP ( Voice of IP)

    IP 네트워크를 활용하여 음성 데이터 패킷으로 변환하여 통화를 가능하게 하는 통신 서비스 기술

  • 암호화 통신

    • https

      : https를 사용할 겅우 데이터가 오갈때 이 데이터를 암호화 시킴
    • 전자 서명

      : 데이터가 원본 데이터라고 증명하는 과정
    • 전자 인증

      : 내가 해당하는 사용자라고 증명하는 과정
  • hash / Encrpytion ( 암호화 )

    둘다 암호화 기법이지만 Hash는 단방향 암호화 기법 Encrpytion은 양방향 암호화 기법

    • Encrpytion

      평문을 암호화된 문장( text )로 만들고 + 암호화된 문장을 다시 평문으로 만드는 복호화 기능도 있음

    • Hash

      평문을 암호화된 문장( text )으로 만들어주는 기능만 함

      해쉬로만 암호화된 비밀번호는 해킹에 노출되기 쉽지만 salt로 추가적인 랜덤데이터를 넣어주면 예측할수 없는 암호를 만들 수 있음

      해시 알고리즘과 암호화의 알고리즘은 종류가 다양하지만 모두에게 (해커들에게) 공개되어 있기 때문에 검증된것들을 사용해야 함.

      간단하게 참고할만한 사이트 ( CrackStation ) ( Converstring )

  • 동기 / 비동기

    • 동기

      함수가 호출 받았을 때 그 함수가 수행이 끝날때 까지 다음행으로 넘어가지 않음

    • 비동기

      호출 받았을때 바로 넘어감


    각 항목별로 깊이 들어가면 끝도 없으니 견문을 넓힌다는 느낌으로 시작해보자.

profile
내일부터 공부 해야지

0개의 댓글