[OS] 네트워크

네트워크

1. 네트워크의 기본

네트워크의 기본

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

우리가 사용하는 거의 모든 서비스는 네트워크를 이용합니다. 카카오톡만 하더라도 메세지를 받고 친구에게 선물을 할 수 있는 이유는 우리의 컴퓨터(스마트폰)와 다음 카카오 회사의 컴퓨터와 연결되었기 때문이죠.

네트워크 연결이 되기 위해선 크게 프로토콜, IP주소, Port 이 세 가지를 필요로 합니다.

결국엔 “어떤 방식으로(어떤 프로토콜로), 어디 컴퓨터(IP주소)에, 어떤 프로그램을(Port)을 연결할 것인지” 가 중요합니다.

[TMI]

기본적으로 네트워크를 통해 정보를 송수신하기 위해선 송수신 수단이 필요합니다. 여기서 수단으로는 랜선, 와이파이 공유기 등을 의미합니다.

랜선의 경우 광케이블 을 사용하는 데, 광케이블은 0, 1 이라는 컴퓨터용 전기 신호를 빛이라는 물리적 신호로 변환합니다. 와이파이의 경우 전자기파 를 이용합니다.

랜카드

컴퓨터에서 연결된 네트워크 장치를 이용하기 위해선 랜카드 가 사용됩니다. 보통 컴퓨터에서는 무선, 유선 기능이 가능하다면 무선, 유선 랜카드가 모두 필요하게 됩니다.

2. 클라이언트, 서버

클라이언트&서버

네트워크에서 정보를 요구해서 받는 쪽은 클라이언트(Client) 라고 합니다.

정보를 제공해 주는 쪽은 서버(Server) 라고 합니다.

우리가 사용하는 모든 IT 서비스는 클라이언트와 서버를 구분해서 개발하게 됩니다. 클라이언트는 대표적으로 우리가 사용하는 웹, 앱 등이 해당됩니다. 그리고, 클라이언트가 데이터를 요구했을 때 응답해주는 서버가 필요하겠죠.

네이버를 예로 들면 우리가 로그인을 하거나 검색을 했을 때 결과를 보기 위해선 결국 데이터가 필요합니다.

우리가 브라우저에서 사용하는 웹이 클라이언트라면, 로그인 인증을 해주고 검색 결과를 제공해주는 곳은 서버라고 볼 수 있죠

클라이언트와 서버

서버가 정보를 제공해준다는 건 보통 컴퓨터 안에 정보를 제공해주는 프로그램이 실행되고 있다는 걸 뜻해요

예를 들어 웹을 제공해주는 웹서버는 웹을 전달해주는 프로그램을 컴퓨터에서 실행하고 있죠. 이미지 서버라면 이미지를 전달해주는 프로그램을 컴퓨터에서 실행하고 있는게 되구요. 그래서 서버 컴퓨터에는 목적에 맞는 정보를 제공해주는 프로그램 등이 항상 실행되고 있습니다.

위 사진처럼 웹을 제공해주는 웹 서버 , 클라이언트에게 데이터를 제공해주는 API 서버, 이미지들을 제공해주는 이미지 서버, 비디오 파일을 제공해주는 비디오 서버 등 각 역할에 맞게 말이죠.

꼭 컴퓨터 1개에 1개의 서버 프로그램만 돌아가는 건 아닙니다.

1개의 컴퓨터에 여러개의 서버를 띄울 수도 있습니다. 요새는 컴퓨터 CPU, 메모리 성능이 좋아지면서 하나의 컴퓨터에 여러 서버 프로그램을 띄어서 사용하기도 합니다.

3. 프로토콜

네트워크는 개인 혹은 단체가 소유하고 있는 개념이 아닙니다.

네트워크 통신이 기본적으로 전세계적으로 가능한 이유는 규격(규칙)이 존재하기 때문이죠.

이러한 규격을 통신 프로토콜 이라고 합니다.

프로토콜

프로토콜은 종류가 참 많은데요. 우리가 가장 많이 사용하는 프로토콜로는 HTTP가 있어요. 우리가 브라우저에서 정보들을 받아올 때(페이지 주소 입력, 파일 다운로드 등)는 HTTP 프로토콜을 사용합니다. 실제로 HTTP 프로토콜은 네트워크 통신에 가장 많이 쓰이는 프로토콜입니다.

이 외에도 컴퓨터로 원격을 접속할 때는 SSH 라는 프로토콜을 사용합니다. 이메일을 보낼 때는 SMTP 라는 프로토콜을 사용하구요.

프로토콜

브라우저에서 google.com 을 입력하면 결과적으로 브라우저에서 자동으로 HTTPS 프로토콜을 적용해서 네트워크 통신을 하게 됩니다.

HTTP는 굉장이 판타스틱한 프로토콜이지만 네트워크 통신 과정에서 보안에 취약하다는 약점이 있습니다.

그래서 HTTPS 프로토콜이 등장하게 됩니다. HTTP 프로토콜에 보안(S) 을 강화한 프로토콜로 대부분의 웹 사이트에서는 HTTP 프로토콜을 막고 HTTPS 프로토콜을 사용하게 권장합니다.

즉 네트워크 통신을 위해서는 상대 컴퓨터 주소(IP) 와 더불어 어떤 방식(프로토콜) 으로 통신을 할 지 정하게 됩니다.

[심화]

OSI 7계층

컴퓨터의 OS가 네트워크 신호를 특정 프로그램으로 전달해주려면 많은 과정이 있습니다. 그 과정은 크게 7개의 단계(계층) 으로 나뉘게 되는데요. 이를 OSI 7계층 이라고 이야기 합니다. 각 단계마다 역할들이 정해져있어요. 네트워크 전공 도서를 보면 필수적으로 언급되는 개념입니다.

IP

ip 주소

IP (internet Protocol Address) 는 네트워크 통신을 위한 주소입니다.

컴퓨터의 고유 주소가 아니에요. 즉 우리가 연결하게 되는 네트워크(와이파이, 랜선 연결 등)를 기준으로 IP주소를 부여받게 됩니다.

보통 IT회사에서는 네트워크 공유기로 미리 IP 주소들을 할당받은 후 회사 컴퓨터에게 IP를 할당해줍니다. 이렇게 하면 회사의 네트워크 보안을 유지할 수 있고 관리가 수월합니다.

위에서 설명한 IP주소의 형식은 [Ipv4] 라고 해서 주소의 개수가 255의 4승 만큼만 가능해요.
하지만 점점 컴퓨터가 많아지면서 IP 주소가 많아져서 갯수가 포화상태가 됐어요.

그래서 255의 6승만큼 주소 할당이 가능한 [Ipv6] 가 나왔어요. 유심칩을 이용한 우리의 스마트폰 IP 주소가 대표적으로 Ipv6 이에요!
Port

Port

포트 는 컴퓨터 내에 프로세스로 도달하기 위한 주소입니다.

IP 주소가 컴퓨터끼리 연결을 위한 네트워크 주소였으면, 포트는 컴퓨터 내에서 프로세스가 가지고 있는 주소이다.

[Tip]

보통 네트워크 주소에 IP주소만 있다면 뒤에는 프로토콜 의 기본 포트가 적용됩니다.

ip & port 를 통한 네트워크 통신

예를 들어 우리가 브라우저에서 네이버 웹사이트의 정보를 가져오기 위해서는 ip주소와 함께 포트번호도 입력을 해야합니다.

그러면 네트워크 통신 후 네이버의 웹서버에서는 입력된 포트번호를 이용해 웹을 전달해주는 프로세스로 연결시켜주죠.

[참고]

네트워크 통신을 할 때 신경써야 할 부분 중 하나는 보안입니다.
어느 컴퓨터나 서로 연결된다면 컴퓨터의 중요한 정보들이 유출될 수 있겠죠?

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

도메인

도메인 네임(Domain Name) 은 사람이 쉽게 인식할 수 있는 네트워크용 영문 주소입니다.

보통 우리가 브라우저에서 입력하는 영문주소는 전부 (도메인) 네임 서버에 등록된 주소입니다. 그래서 도메인 네임을 이용한다면 네임 서버를 거쳐서 IP를 반환받는 작업이 필요합니다.

Domain Name System

보통 서버의 도메인 네임을 붙이기 위해서는 호스팅 서비스(가비아, 후이즈 등)에서 도메인 네임을 구매합니다.
그리고 도메인 네임 서버에 이를 시켜야 적용이 됩니다.