[JAVA] 네트워크 프로그래밍 - Server/Client, IP주소, 포트, Protocol, TCP, UDP
Server / Client Server(서버) : 여러명의 사용자들에게 서비스를 제공하는 컴퓨터 Client(클라이언트) : 서비스를 요청해서 사용하는 컴퓨터를 의미 Server와 Client는 미리 정의된 프로토콜을 이용하여서 서로 간에 통신을 한다.
IP 주소 네트워크에 존재하는 컴퓨터를 유일하게 식별하는 숫자이다. 이론적으로 인터넷에 존재하는 40억 개의 컴퓨터를 식별할 수 있다. 자기 컴퓨터의 IP 주소를 알아보려면 cmd 창에 ipconfig 명령어를 실행하면 된다. ex) 192.168.50.2
포트 하나의 컴퓨터에는 하나의 물리적인 통신선을 통해 외부와 연결할 수 있다. 그러나 컴퓨터 안에는 여러 개의 프로세스가 수행될 수 있다. 따라서 하나의 통신선을 타고 들어오는 데이터를 각각의 응용 프로그램에 차질없이 배달하기 위해서 각각의 응용 프로그램이 사용하는 가상적인 통신 선로가 필요하다. 이것을 port(포트)라고 한다. 하나의 컴퓨터에는 여러개의 포트가 존재하는데, 인터넷을 통하여 데이터를 보낼 때 반드시 어떤 포트를 사용할 것인지 지정해야 한다. 네트워크를 통하여 전달되는 모든 데이터의 주소는 컴퓨터를 가리키는 IP주소와 port번호로 구성된다. 포트번호는 0~65535까지의 수를 사용하지만 1023 이상의 번호를 사용하는 것을 추천한다. Protocol 컴퓨터 간에 상호 통신을 할 때 데이터를 원할하고 신뢰성있게 주고 받기 위해 필요한 약속이다. 다른 기종의 컴퓨터 간에도 통신이 이루어져야 하기 때문에 프로토콜은 몇 개의 기능적인 계층을 나누어서 정의한다. TCP/IP 도 5개 계층(Application, Transport, Network, DataLink, Physical)으로 이루어져 있다. TCP/IP 통신을 이용하기 전에 트랜스포트 계층 중에서 TCP를 사용할 것인지 UDP를 사용할 것인지를 결정하여야 한다.
TCP 신뢰성있게 통신하기 위해 먼저 서로 간에 연결을 설정한 후에 데이터를 보내고 받는 방식이다. 또한 데이터의 순서가 보장된다. 즉, 중간에 데이터들이 잘 도착했는지를 상대방의 응답을 통해 확인하여 분실된 데이터가 있으면 다시 보낸다. 또한 데이터를 받는 순서가 데이터를 보내는 순서와 동일하게 관리된다. 단점은 연결을 하는 과정과 연결을 해제하는 과정에 상당히 시간이 많이 걸린다. 이것은 짧은 데이터를 보내는 경우에는 상당한 부담이 된다.
UDP TCP와 달리 연결을 하지 않고 데이터를 몇 개의 고정 길이의 패킷으로 분할한 다음 패킷의 앞에 주소를 붙여서 데이터를 전송한다. UDP는 높은 신뢰도가 필요하지 않은 통신을 위하여 쓰며 연결 절차가 필요 없으므로 빠르고 효율적인 통신이 가능하다. 단점으로는 신뢰성이 낮다는 점이다. 예를들어, 편지는 주소가 붙어있고 우체국에서는 주소를 보고 편지를 배달한다. 편지는 배달 중간에 분실될 수도 있고 배달되는 순서가 바뀔 수도 있다. [출처] [JAVA] 네트워크 프로그래밍 - Server/Client, IP주소, 포트, Protocol, TCP, UDP|작성자 수히
|