성장通

개발배경지식4) 네트워크 본문

컴퓨터 공학 기본/개발배경지식

개발배경지식4) 네트워크

백악기작은펭귄 2021. 11. 5. 19:38

네트워크

네트워크는 컴퓨터 간의 연결을 의미한다.

이러한 연결을 위해서는 크게 프로토콜, IP주소, PORT 가 필요하다. 각각은 How, Where, What을 의미한다. 즉, '어떤 방식으로(프로토콜), 어떤 컴퓨터에(IP주소), 어떤 프로그램을(PORT) 연결할 것인지'를 결정하는 것이 네트워크의 3요소라는 것이다.


프로토콜(Protocol)

'약속', '규약', '협약'을 의미하는 단어로, 네트워크 분야 외에도 여러 분야에서 통용된다.

상호 간 원활한 소통을 위해 세우는 규칙의 의미로, 네트워크 분야에서는 각 기기마다 사전에 설정된 통신 협약을 의미한다.

컴퓨터 네트워크에는 수많은 프로토콜이 사용된다.

인터넷 접속을 위한 기본 프로토콜인 TCP/IP부터 홈페이지를 띄우기 위한 HTTP, 여기에 데이터 암호화를 추가해 보안성을 강화한 HTTPS, 빠른 파일 송수신을 위한 FTP, 메일 송수신을 위한 SMTP 등 다양한 프로토콜이 규정되어있고, 사용된다. 네트워크에 관심이 있다면 해당 내용에 대해서 좀 더 알아보면 좋을 것이다.

캡틴판교: 프런트엔드 개발자가 알아야하는 HTTP 프로토콜

 

프런트엔드 개발자가 알아야하는 HTTP 프로토콜 Part 1

API 데이터 요청을 위해 꼭 알아야 하는 HTTP 프로토콜의 정의, HTTP Status Code, HTTP Methods 등

joshua1988.github.io


IP주소(Internet Protocol Address)

컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호이다.

네트워크에 연결된 장치가 서버든 라우터든간에 상관없이 모든 장치는 그것만의 고유 번호를 가지고 있으며, 이 번호를 이용하여 발신자 대신 메시지를 전송하고, 전송된 메시지는 수신자의 IP주소에 전달된다.

IP주소는 일종의 인터넷 전화번호로, 인간이 외우기에는 다소 어려운 부분이 있어 이를 보조하기 위해 DNS(Domain Name System) 서비스를 두곤 한다.

  • DNS보통 우리가 브라우저에서 어딘가에 접속하기 위해 입력하는 주소는 도메인 네임인데, 이는 도메인 네임 서버에 저장되어 있는 주소이다. 해당 도메인 네임은 네임 서버를 거쳐 IP주소로 반환되게 되는데, 이러한 네임 서버를 연결하는 것이 DNS 주소이다. 등록된 도메인은 호스팅이 되는데, 이때 호스팅이란 해당 서버를 작동시켜 도메인을 통해 접속할 수 있도록 하는 컴퓨터라고 보면 된다. 24시간 작동하는 컴퓨팅 장치를 대여 혹은 구입하는 것이므로 대부분 유료이다.
  • 만약 누군가가 새로운 도메인을 생성하고 싶어한다면, 호스팅 서비스(GABIA, WHOIS 등)에서 도메인 네임을 구매한 후 해당 네임을 네임서버에 등록해야 한다.
  • www.naver.com처럼, IP주소를 사람이 쉽게 인식할 수 있는 영문 주소로 변경한 것이 바로 도메인 네임 (Domain Name)이다.

현재까진 주로 32비트의 IPv4(Version. 4)가 주로 사용되었으나, 최근에는 이 주소가 부족해짐에 따라, 128비트까지 길이를 늘린 IPv6가 점점 널리 사용되는 추세이다.

여담으로, 흔히 IP라고 많이 줄여 부르는데, IP는 엄밀히 말하면 위에서 설명한 프로토콜과 동일한 개념이므로, IP주소라고 부르는 것이 맞다.


PORT

운영체제 통신의 종단점으로, 소프트웨어에서는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다. 하드웨어적으로는 외부 장비와 연결하기 위한 플러그를 의미하는데, 이러한 기능을 소프트웨어 레벨로 가져오면 네트워크에서의 포트의 의미가 된다.

로컬 환경인 컴퓨터 상의 웹브라우저 프로그램과 인터넷상의 있는 웹서버 프로그램을 연결해주는 기능을 한다고 할 수 있다.

서버에 접속하기 위해서는 URL이나 IP주소가 필요한데, 보통 대부분의 컴퓨터에서는 여러 프로그램이 실행되고 있으므로 이에 더하여 어떤 프로그램에 접속하려고 하는지를 명시해야 한다. 이때 이러한 내용을 나타내는 것이 PORT이다. 즉, PORT는 논리적인 접속을 나타내는 이정표라고 할 수 있다.

URI 문법에 의해 표기하고 사용할 수 있으며, (프로토콜)://(IP주소):(포트번호)와 같은 형태를 가진다.

예시: ftp://123.456.789:21

PORT는 0번부터 65535번까지로 이루어져 있으며, 이는 다시 크게 3가지로 분류된다.

  • Well-Known PORT (0~1023): 자주 사용되고, 범용적으로 알려진 특정 어플리케이션의 실행을 위해 ICANN에서 할당한 TCP/UDP 포트번호. 강제적으로 지정된 것이 아니기 때문에 다른 용도로도 사용될 수 있다

 

  • ※ TCP / UDP 란?
    • TCP(Transmission Control Protocol):
      • 간단한 데이터를 빠른 속도로 전송하는 애플리케이션에서 사용하는 프로토콜
    • UDP(User Datagram Protocol):
      • 신뢰성이 요구되는 애플리케이션에서 사용하는 프로토콜

  • Registered PORT (1024~49151):
    • 특정 용도로 사용되기 위해 등록된 포트번호. Well-Known과 마찬가지로 강제적으로 지정된 것이 아니기 때문에 다른 용도로 사용될 수 있다.
    • 대표적으로 MSSQL을 위한 1433번 포트, RDBMS를 사용하기 위한 3306번 포트, 80번 HTTP 포트를 대체하기 위한 8080번 포트 등이 있다.
  • Dynamic PORT (49152~65535): 
    • 어느 프로그램에서나 자유롭게 사용할 수 있는 포트. 따라서 특정하게 정해진 포트번호는 없다.

※ 전체 포트 번호 보기 (ICANN)

 

Service Name and Transport Protocol Port Number Registry

mpm 45 tcp Message Processing Module [recv]

www.iana.org

 

💡 네트워크 통신을 할 때 신경 써야 할 부분 중 하나는 보안이다.

포트가 연결되면 기본적으로 상호 간의 데이터 공유가 가능하다. 그런데 이때 이러한 연결이 불특정 다수와 이루어진다면 중요한 정보들이 유실될 수 있을 것이다. 또한, 랜섬웨어 등의 악성코드 등도 PORT를 통해 전달되기 때문에 이러한 것을 막을 방법이 필요하다.

그래서 컴퓨터끼리 네트워크 연결을 제한하는 방화벽을 설정하게 되는데, 이때 방화벽이란 IP 주소, 포트번호 등 네트워크 연결에 쓰이는 정보들을 바탕으로 연결을 제한하는 것을 의미한다.

 


클라이언트 & 서버

미쳐버린 시험기간의 네트워크 전공생.jpg

네트워크 통신에는 크게 두 종류의 주체가 있다. 바로 클라이언트(Client)서버(Server)인데, 각각에 대해 간단하게 살펴보도록 하자.

클라이언트

클라이언트는 이름 그대로 고객의 의미를 가지며, 사용자의 입력을 수행하여 서버에게 자료를 Request 하고 서버로부터 Response를 받는 등의 역할을 수행한다.

서버 입장에서는 사용자 하나하나가 전부 클라이언트이므로 사용자와 유사한 의미로 사용되곤 한다.

서버

서비스를 제공하는 컴퓨터로, 클라이언트의 요청을 처리하고 응답을 제공하기 위해 존재한다.

웹 서버, API 서버, 파일 서버, 비디오 서버 등 다양한 서버가 존재하며 웹페이지 지원, 공유 데이터의 처리 및 저장 등의 비즈니스 로직을 수행한다.

통신을 위한 장치이므로 사용자와의 물리적 거리도 통신 속도에 영향을 미칠 수 있다.

여담으로, 백엔드 개발자라는 용어와 서버 개발자라는 용어를 거의 동일시하여 사용하기도 한다. 정확히는 약간의 차이점이 있으나, 정의가 명확하지 않기 때문에 생기는 현상으로, 대부분의 채용 공고에서도 같은 의미로 사용하고 있으니 참고하도록 하자.

 

서버개발자랑 백엔드 개발자랑 다른건가요?

 

OKKY | 서버개발자랑 백엔드 개발자랑 다른건가요?

죄송해요 바보같은 질문 하는것 같아서 ㅠ 제가 비전공이라 이런 개념이 잘 안서는것 같아요 서버개발자랑 백엔드 개발자랑 다른건지  다르면 어떻게 다른건지 궁금합니다 !

okky.kr