- 네트워킹이랑 두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구성하는 것을 말하며, 컴퓨터들을 서로 연결하여 데이터를 주고받거나 주변기기를 공유할 수 있다.
- 전 세계의 컴퓨터가 인터넷이라는 하나의 거대한 네트워크를 구성하며, 인터넷을 통해 다양하고 방대한 양의 데이터를 공유하는 것이 가능해졌다.
※참고: 자바에서 제공하는 java.net 패키지를 사용하면 네트워크 애플리케이션의 데이터 통신 부분을 쉽게 작성할 수 있다.
클라이언트/서버
- 클라이언트/서버는 컴퓨터 간의 관계를 역할로 구분하는 개념으로, 서버는 서비스를 제공하는 컴퓨터이고, 클라이언트는 서비슬르 사용하는 컴퓨터가 된다.
- 일반적으로 서버는 다수의 클라이언트에게 서비스를 제공하는 소프트웨어가 실행되는 컴퓨터로, 고사양의 하드웨어를 갖추고 있다.
- 서비스는 서버가 클라이언트로부터 요청받은 작업을 처리하여 그 결과를 제공하는 것을 뜻하며, 서버가 제공하는 서비스의 종류에 따라 파일서버, 메일서버, 애플리케이션 서버 등이 있다.
- 서버가 서비스를 제공하기 위해서는 서버 프로그램이 있어야 하고, 클라이언트가 서비스를 제공받기 위해서는 서버 프로그램과 연결할 수 있는 클라이언트 프로그램이 있어야 한다.
- 웹서버에 접속하여 정보를 얻기 위해서는 웹브라우저가 있어야 한다.
- FTP 서버에 접속해서 파일을 전송받기 위해서는 FTP 클라이언트 프로그램이 필요하다.
- 일반 PC의 경우 주로 서버에 접속하는 클라이언트 역할을 수행하지만, FTP Serv-U와 같은 FTP 서버 프로그램이나, Tomcat 같은 웹서버 프로그램을 설치하면 서버 역할도 수행할 수 있다.
- 이처럼 네트워크를 구성할 때 전용 서버를 두는 것을 서버기반 모델이라고 한다.
- 서버기반 모델은 안정적인 서비스의 제공이 가능하고, 공유 데이터의 관리와 보안이 용이하지만 서버구축비용과 관리비용이 든다는 단점이 있다.
P2P
- 파일 공유 프로그램은 클라이언트 프로그램과 서버 프로그램을 하나로 합친 것으로, 이를 설치한 컴퓨터는 클라이언트인 동시에 서버가 되어 다른 컴퓨터로부터 파일을 가져오는 동시에 또 다른 컴퓨터에게 파일을 제공할 수 있다.
- 이처럼 별도의 전용서버없이 각 클라이언트가 서버역할을 동시에 수행하는 것을 P2P 모델이라고 한다.
- P2P 모델은 서버구축 및 운영비용 절감과 자원의 활용을 극대화할 수 있지만, 자원의 관리가 어렵고 보안에 취약하다는 단점이 있다.
IP 주소
- IP 주소는 컴퓨터를 구별하는데 사용되는 고유한 값으로, 인터넷에 연결된 모든 컴퓨터는 IP 주소를 갖는다.
- IP 주소는 4바이트의 정수로 구성되어 있으며, 4개의 정수가 마침표를 구분자로 a.b.c.d 형식으로 표현된다.
- a, b, c, d는 부호없는 1바이트 값으로, 0~255 사이의 정수이다.
- IP 주소는 다시 네트워크 주소와 호스트 주소로 나눌 수 있으며, 네트워크가 어떻게 구성되었는지에 따라 32비트의 IP 주소 중에서 네트워크 주소와 호스트 주소가 각각 몇 비트를 차지하는지가 달라진다.
- 서로 다른 두 호스트의 IP 주소의 네트워크 주소가 같다는 것은 두 호스트가 같은 네트워크에 포함되어 있다는 것을 의미한다.
※ 참고: 윈도우에서 호스트의 IP 주소를 확인하려면 ipconfig 명령어를 사용한다.
- IP 주소와 서브넷 마스크를 비트연산자 &로 연산하면 IP 주소에서 네트워크 주소만 뽑아낼 수 있다.
- IP 주소에서 네트워크 주소가 차지하는 자리수가 많을수록 호스트 주소의 범위가 줄어들기 때문에 네트워크의 규모가 작아진다.
- 위의 경우 호스트 주소의 자리수가 8자리이기 때문에 254개의 호스트만이 이 네트워크에 포함될 수 있다.
- 호스트 주소가 0인 것은 네트워크 자신을 나타내고, 255는 브로드캐스트 주소로 사용된다.
URL
- URL은 인터넷에 존재하는 여러 서버들이 제공하는 자원에 접근할 수 있는 주소를 표현하기 위한 것으로, 아래와 같은 형식으로 이루어져 있다.
프로토콜://호스트명:포트번호/경로명/파일명?쿼리스트링#참조
프로토콜 | 자원에 접근하기 위해 서버와 통신하는데 사용되는 통신규약 (http) |
호스트명 | 자원을 제공하는 서버의 이름 (www.example.com) |
포트번호 | 통신에 사용되는 서버의 포트번호 (80) |
경로명 | 접근하려는 자원이 저장된 서버상의 위치 (/sample/) |
파일명 | 접근하려는 자원의 이름 (hello.html) |
쿼리 | URL에서 ? 이후의 부분 (name=hahyun) |
참조 | URL에서 # 이후의 부분 (good) |
- URL에서 포트번호, 쿼리, 참조는 생략할 수 있다.
- 각 프로토콜에 따라 통신에 사용하는 포트번호가 다르며 생략되면 각 프로토콜의 기본 포트가 사용된다.
- HTTP 프로토콜에서는 80번 포트를 사용하기 때문에 URL에서 포트번호를 생략하는 경우 80으로 간주
'Computer Science > Network' 카테고리의 다른 글
소켓 프로그래밍 (JAVA) (0) | 2022.02.13 |
---|