1주차 - 2) IT 용어 및 개발환경 구축

변현섭·2023년 5월 16일
1

8. 프로토콜

1) 프로토콜

사전적인 의미는 여러 컴퓨터나 단말기 사이에서 데이터 통신을 원활하게 하기 위해 필요한 통신 규약을 의미한다. 즉, 통신을 위해 필요한 약속의 개념이다. 통신 프로토콜은 물리적 측면의 프로토콜과 논리적 측면의 프로토콜로 구분된다.

먼저, 물리적 측면의 프로토콜은 어떤 장비로 데이터를 보내고, 어떤 단자를 사용할 것이고, 회선의 규격은 어느 정도로 설정할지에 대한 약속을 나타낸다.

논리적 측면의 프로토콜은 데이터를 어떤 식으로 표현하고, 어떤 형식 단위로 전송할 것이며, 어떻게 전송할 것인가에 대한 약속을 나타낸다.

2) OSI 모델

개방형 시스템 상호 연결(Open Systems Interconnection)의 줄임말로, 표준 프로토콜을 사용하여 다양한 통신 시스템이 통신할 수 있도록 국제 표준화기구에서 만든 개념 모델이다. OSI는 총 7개의 Layer(추상계층)로 구성되어 있으며 위 아래의 계층이 통신한다.

① 물리적 계층

  • 데이터 전송과 관련 있는 물리적 장비(케이블, 스위치 등)를 포함하는 계층
  • 비트 스트림으로 변환되는 단계

② 데이터 연결 계층

  • 프레임과 연관
  • 네트워크 계층과 역할은 유사하나 동일한 네트워크에 있는 두 기기 간의 데이터 전송을 용이하게 하는 역할이라는 데에 차이가 있음.

③ 네트워크 계층

  • 패킷과 연관
  • 통신하는 두 기기가 서로의 네트워크를 잘 찾아갈 수 있도록 길잡이 역할을 수행
  • 이 때, 최상의 물리적 경로를 찾는 과정을 라우팅이라 함(두 기기가 같은 네트워크에 있는 경우 네트워크 계층은 필요하지 않음).

④ 전송 계층

  • 데이터를 세그먼트로 분할
  • TCP와 UDP가 여기에 속함
  • 흐름 제어 및 오류 제어를 통해 최적의 전송속도를 결정
  • 패킷이 모두 전달되었는지 확인하고, 수신되지 않은 경우 재전송을 요청

⑤ 세션 계층

  • 두 기기 간의 통신 시작부터 종료(이를 하나의 세션이라 함)를 담당
  • 데이터를 모두 주고 받을 수 있도록 충분히 세션을 개방한 후 닫음.
  • 연결이 종료될 경우 연결이 어디서 종료되었는지 체크 포인트를 만듦.

⑥ 프레젠테이션 계층

  • 데이터를 준비하여 응용프로그램 계층에서 이를 사용할 수 있도록 함.
  • 데이터의 변환, 암호화, 압축을 담당

⑦ 응용 프로그램 계층

  • 사용자 데이터와 유일하게 직접 상호작용함.
  • 통신 프로토콜 및 데이터를 조작하는 역할을 수행

3) TCP/IP 모델

말그대로 TCP와 IP의 두가지 프로토콜이 주축을 이루는 하나의 모델이다. OSI 모델은 국제 규격으로 권장되었으나 복잡한 사양이 접속성 이슈를 발생시키자 결국은 TCP/IP 모델이 사실상의 표준으로 자리 잡았다. TCP/IP 모델은 총 4계층으로 이루어져 있다.

① 네트워크 액세스 계층

  • 데이터를 전기신호로 변환 후 MAC주소를 통해 알맞은 기기로 데이터를 전달하는 계층

② 인터넷 계층(IP 계층)

  • 패킷을 최종 목적지까지 라우팅하는 계층

③ 전송 계층

  • 데이터를 세그먼트로 분할
  • 포트 번호를 사용하여 통신 노드 간 신뢰성 있는 데이터 전송을 보장하는 계층
  • TCP/UDP가 사용되는 계층
  • 흐름 제어 및 오류 제어를 통해 최적의 전송 속도 결정
  • 패킷이 모두 전달되었는지 확인하고 수신되지 않은 경우 재전송을 요청

④ 응용프로그램 계층

  • 사용자와 가장 가까운 계층
  • 사용자와 소프트웨어 간의 소통을 담당
  • HTTP, HTTPS, FTP, SSH, DNS 등의 프로토콜을 이용

4) 통신 프로세스

① TCP프로토콜을 사용하는 것으로 가정

② A가 B에게 이메일을 보내려고 한다.

③ A는 이메일 어플리케이션에서 메세지를 입력하고 발송을 누른다.

④ A의 이메일 어플리케이션이 이메일 메세지를 어플리케이션 계층으로 넘기면, 애플리케이션 계층은 프로토콜을 선택하고 데이터를 전송 계층으로 넘긴다.

⑤ 전송 계층은 데이터를 분할하여 인터넷 계층에게 넘기는데, 이때 TCP 헤더를 데이터에 붙여 세그먼트를 만들고, 인터넷 계층에게 넘긴다.

⑥ 인터넷 계층은 IP 헤더를 세그먼트에 붙여 패킷들을 만든다. 여기서는 출발지 IP 주소와 목적지 IP 주소가 중요하게 작용한다.

⑦ 마지막 네트워크 액세스 계층에서 패킷을 받으면 이더넷 헤더를 패킷에 붙여 프레임을 내보낸다. 이 계층에서는 물리적 주소를 나타내는 MAC 주소가 중요하게 작용한다.

⑧ B의 컴퓨터가 네트워크 액세스 계층에서 프레임을 수신하면, 반대의 과정을 거치며 헤더를 제거해 나간다(프레임 → 패킷 → 세그먼트 → 데이터).

⑨ 데이터는 B의 이메일 애플리케이션에 전달되어 B가 메일을 읽을 수 있게 된다.

9. IP

1) IP의 분류

IP는 Internet Protocol의 약자로, 네트워크 상에서 다른 컴퓨터와 구별하게 해주는 고유번호이다. 쉽게 말해 전화번호 같은 것이다. IP는 외부 IP와 내부 IP 또는 공인 IP와 사설 IP로 나누어진다. 사실 두가지 분류 방법 간의 큰 차이는 없다.

외부 IP는 인터넷 사용자의 로컬 네트워크를 식별하기 위해 인터넷 서비스 공급자(ISP)가 제공하는 주소이고, 내부 IP는 공유기에 연결된 각각의 클라이언트들이 서로를 식별하기 위해 가지는 IP주소를 말한다(공유기도 내부 IP로 클라이언트를 식별한다).

공인 IP는 전세계에서 유일한 IP 주소를 가지며 외부에 공개되어 있기 때문에 인터넷에 연결된 다른 PC로부터의 접근이 가능하다. 인터넷 업체가 사용자에게 할당하며 공유기가 인터넷과 통신하는데 사용하는 주소이다. 반면 사설 IP는 로컬 네트워크 통신 목적으로 사용되며, 네트워크 관리자나 공유기가 각 기기에 할당한다. 또 내부에서만 알 수 있기 때문에 다른 로컬네트워크의 IP와 중복되어도 무관하다(인터넷에서는 식별 불가).

2) NAT

NAT란 Network Address Translation의 줄임말로, 네트워크 주소 변환이라는 뜻이다. 컴퓨터 네트워크와 관련된 용어인데, IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소를 재기록하면서 라우터를 통해 네트워크 트래픽을 주고받는 기술을 말한다. NAT를 사용하면 하나의 공인 IP로 여러 호스트가 인터넷에 접속할 수 있어 IP주소 자원을 절약할 수 있다. 또한 트래픽이 외부로 나갈 때 사설 IP가 공인 IP주소로 바뀌게 되므로 라우터 안쪽에 있는 사설 IP가 외부에 노출되지 않게 된다.

10. 도메인

1) DNS

DNS란 Domain Name System으로 도메인을 IP로 변환 및 역변환한다. 다시 말해 IP주소 및 기타 데이터를 저장하고 있는 계층형 분산 데이터베이스로 도메인 이름의 디렉토리라고 할 수 있다. 쉽게 생각해서 전화번호부와 비슷한 개념이다. 도메인의 동작원리는 아래와 같다.

① 웹 브라우저에 URL(www.naver.com)을 입력하면 먼저 PC에 과거 이력이 있는지 Local DNS에게 URL과 동일한 hostname에 대한 IP주소를 요청한다. 만일 접속 이력이 있다면 Local DNS에 접속정보가 캐싱되어있어 바로 PC에 IP 주소를 넘겨줄 수 있다. 하지만 처음 들어가는 URL의 경우 Local DNS에 IP주소가 없다. 여기에선 없는 경우를 가정하자.

② Local DNS가 www.naver.com의 IP주소를 찾아내기 위해 Root DNS 서버에 IP주소를 요청한다.

③ com도메인을 관리하는 TLD(TOP-Level Domain) 이름 서버 정보를 전달받는다.

④ Root DNS서버가 www.naver.com의 IP주소를 찾지 못한 경우 다른 DNS를 추천해준다(com도메인을 관리하는 TLD DNS 서버를 추천).

⑤ Local DNS는 TLD DNS(Top-Level Domain, 최상위 도메인 서버)에 다시 IP주소를 요청한다.

⑥ 마찬가지로 IP주소를 찾지 못한 경우 다른 DNS서버를 추천해준다.

⑦ Local DNS가 naver.com DNS 서버에게 IP주소를 요청한다.

⑧ naver.com DNS 서버에는 www.naver.com에 대한 IP주소가 있어서 Local DNS 서버에게 222.122.195.6이라는 응답을 준다.

⑨ Local DNS서버에서 이 IP주소를 캐싱해둔다. 이후 재요청이 들어올 시 빠르게 응답할 수 있도록 IP주소 정보를 PC에 전달한다.

2) 서브도메인

서브 도메인이란 말그대로 하위 도메인으로써 웹사이트의 섹션을 구분하기 위해 도메인 이름에 추가되는 접두사(Prefix)이다. 서브도메인을 두면 웹사이트의 전반적인 목적성은 유지하면서 다양한 섹션을 개발할 수 있다. 예를 들어 blog.naver.com에서의 blog, mail.naver.com에서의 mail이 서브 도메인에 해당한다. 또한 우리가 흔히 사용하는 www도 서브 도메인이다. www는 사용이 잦은 만큼 생략해도 동일한 결과를 얻게 된다.

11. 포트

1) 자주 사용되는 포트

  • 21번: FTP
  • 22번: SSH
  • 53번: DNS
  • 80번: http
  • 443번: https

2) 포트포워딩

외부에서는 사설 IP의 주소로 접근하라는 요청을 알아들을 수 없다. 그 이유는 내부 IP는 중복될 수 있어 한가지로 특정되지 않기 때문이다. 외부 망에서 사설 IP를 사용하고 있는 특정 기기의 특정 포트에 접근하려면 반드시 포트포워딩이 되어있어야 한다.

포트포워딩이란 말그대로 포트를 전달해준다는 뜻으로 외부에서 해당 포트에 연결된 기기를 찾아 접근할 수 있게 해주는 것이다. 이 때, 공유기의 공인 IP와 포트번호를 모두 알고 있어야 한다. 몇 번 포트를 이용할 것인지에 대한 정보가 공유기에 도착했을 때 그 포트가 특정 기기에 포워딩되어 있다면 정보가 그 기기로 무사히 전달된다.

Ⅱ. 보충 설명

1. TCP VS UDP

TCP와 UDP 모두 데이터를 보내기 위해 사용하는 전송계층 프로토콜이다. TCP는 데이터를 메시지 형태로 보내고 UDP는 데이터를 데이터그램 단위로 처리한다. UDP의 경우 연결을 위해 할당되는 논리적인 경로가 없기 때문에 패킷은 각기 다른 경로로 전송되고 독립적인 관계를 지니게 된다.

TCP는 일반적으로 IP와 함께 사용되며 연결형 서비스를 지원한다(인터넷 환경에서 기본으로 사용된다). TCP는 아래와 같은 특징이 있다.

  • 연결 지향 방식
  • 3-way handshaking, 4-way handshaking 방식으로 연결을 설정 및 해제
  • 흐름 제어 및 혼잡 제어
  • 높은 신뢰성, 느린 속도
  • 전이중방식, 점대점 방식

반면 UDP는 비연결형 프로토콜로 인터넷 환경에서 기본 값으로 사용되진 않는다. UDP의 특징은 다음과 같다.

  • 비연결형 서비스로 데이터그램 방식 사용
  • 정보를 주고 받을 때 신호절차가 없음
  • CheckSum 필드로 간단히 오류만을 검출함
  • 낮은 신뢰성, 빠른 속도
  • 일대일, 일대다, 다대다 통신 모두 가능

2. Proxy

프록시란 대리라는 의미로 네트워크 기술에서는 프로토콜에 있어 대리 응답을 한다는 개념이다. 보안 분야에서는 보안 상의 이유로 직접 통신할 수 없는 두 점 사이에서 통신을 할 경우 그 사이에서 대리로 통신을 수행하는 기능을 프록시, 그 기능을 하는 곳을 프록시 서버라고 한다. 서버나 클라이언트를 숨길 수도 있고, 캐시를 통한 속도 향상, 로그 기록 및 관리 등의 이점이 있다.

3. 이더넷

이더넷은 가장 대표적인 컴퓨터 네트워크 기술의 하나로 로컬 환경의 컴퓨터 및 기타 장치를 네트워크에 연결하기 위해 개발된 통신표준이다.

4. MAC 주소

네트워크 세그먼트의 데이터 링크 계층에서 통신을 위한 네트워크 인터페이스에 할당된 고유 식별자이다. 네트워크 기술의 주소 값으로 자주 이용된다. IP주소가 소프트웨어 차원의 주소라면 MAC 주소는 하드웨어 차원의 주소라 할 수 있다. 따라서 IP주소는 언제든 변경될 수 있지만 MAC주소는 변경되지 않는다. MAC은 주민등록번호와 비슷한 개념이라 생각할 수 있다.

5. 패킷

패킷이란 네트워크에서 데이터를 주고받을 때 전송되는 데이터 조각을 특정 형태로 맞추어 놓은 것이다. 패킷이 충분히 많이 나누어져야 트랙픽이 줄고 흐름이 원활해진다. 패킷은 헤더와 데이터 트레일러로 구성되는데 헤더에 출발지의 IP주소 및 목적지의 IP주소와 포트번호, 프로토콜 등이 저장되어있다.

출발지의 IP주소가 필요한 이유는 패킷을 네트워크로 보내는 장치의 IP를 알아야 전송 실패 또는 제어 메시지 등 오류 메시지를 전송할 수 있기 때문이다. 또한 목적지의 IP주소는 당연히 패킷이 전송되기 위해 필요하다. 하지만 기기만 정확히 찾는다고 끝나는 것이 아니라 기기의 특정 포트로 연결까지 되어야 전송이 완료된 것이니 포트 번호도 필요한 것이다.

6. 서버간 통신

서비스의 규모가 큰 경우 여러 대의 서버를 운영하는 경우가 많다. 이는 당연히 여러 서버로 트래픽을 분산하겠다는 의미이다. 트래픽을 여러 대의 서버로 적절히 분산시키는 기술을 로드밸런싱이라 한다. 그 종류는 다음과 같다.

  • 라운드로빈 방식: 클라이언트로부터 받은 요청을 대상 서버에 순서대로 할당하는 방식. 서버의 성능이 동일하고 처리시간이 짧을 때 사용.
  • 가중 라운드로빈 방식: 서버마다 다른 처리용량을 지정하는 라운드로빈 방식.
  • 최소 연결 방식: 연결 수가 가장 적은 서버로 네트워크 연결방향 지정. 동적인 분산 알고리즘으로 연결 수를 셀 수 있고 부하 분산에 용이.
  • Hash 방식: 특정 클라이언트는 특정 서버로만 할당됨. 경로가 보장되며 접속자 수가 많을수록 분산 및 효율성이 증가.
profile
Java Spring, Android Kotlin, Node.js, ML/DL 개발을 공부하는 인하대학교 정보통신공학과 학생입니다.

0개의 댓글