SSISO Community

시소당

Port와 Socket

프로그래밍에서의  포트란  물리적  장치가  아닌  가상적인  연결장치를  의미한다.  하나의  컴퓨터가  HTTP나  FTP등의  여러  서버를  제공한다면  클라이언트는  호스트의  HTTP  서버에  접속할  것인지  아니면  FTP  서버에  접속할  것인지를  결정해야할  것이다.  이때  포트라는  개념이  사용된다.  포트는  0~65535  사이의  번호를  가지는데  HTTP  서버는  보통  80번  포트를  사용하고  FTP  서버는  21번  포트를  사용한다.  이  말은  80번  포트를  통해  접속해오는  클라이언트는  HTTP  서버로  연결하고  21번  포트를  통해  접속해오는  클라이언트는  FTP  서버로  접속된다는  뜻이다.

  

[그림  21-2]  port의  개념

  

  21번이나  80번과  같은  포트들은  잘  알려진  포트들(Well  Known  Ports)이고,  이와  같이  시스템에서  사용하는  예약된  포트들이  있는데  1~1023  사이의  포트들이다.  따라서  이들  포트는  사용하지  않고  1024~65535  사이의  포트를  사용하는  것이  좋다.

  

일반적으로  전구나  플러그를  꽂을  수  있는  장치를  소켓이라고  부른다.  일반적인  소켓은  전기를  소비하는  제품과  전선을  서로  이어주는  역할을  하는데,  이와  비슷한  개념으로  프로그래밍에서의  소켓은  응용프로그램과  포트를  이어주는  역할을  한다.  소켓은  소프트웨어적으로  구현한  가상적  장치이다.

  

[그림  21-3]  소켓의  개념

  

자바는  소켓을  클래스로  추상화하였다.  따라서  프로그래머는  소켓  클래스로부터  소켓  객체를  생성하여  사용하면  된다.  여기서  자바는  데이터의  전송을  어떻게  구현할까?  마찬가지로  소켓의  스트림  객체를  이용하여  데이터를  주고받는다.  소켓은  내부에  입·출력  스트림을  포함하고  있는데  소켓의  스트림  객체를  얻어와서  스트림에  데이터를  읽거나  쓸  수  있다.  예를  들어  소켓의  출력  스트림에  데이터를  쓰면  반대편에서는  소켓의  입력  스트림으로부터  데이터를  읽으면  되는  것이다.  다음  그림을  보면  쉽게  이해될  것이다.

  

[그림  21-4]  소켓의  스트림

  

소켓을  이용하는  통신을  소켓  통신이라고  하며,  소켓  통신  프로그램을  만드는  작업을  소켓  프로그래밍이라고  한다.

출처  :  http://java.pukyung.co.kr/Lecture/Chapter21.php

833 view

4.0 stars