Computer Science/네트워크

[네트워크] Socket, Port, TCP, UDP 정의

마탁이 2021. 3. 3. 10:08

1. Socket

 - 소프트웨어가 서로 연결하려면 Socket 연결이 필요.

 - Socket은 두 시스템 사이의 네트워크 연결을 나타내는 객체.

 - 2개의 소프트웨어가 연결이 될 때, 가장 중요한 것은 두 소프트웨어가 통신하는 방법

  즉, 상대방에게 비트를 보내는 방법을 알고 있다는 것.

 - 직접적으로 연결을 해주는 저수준단계(이더넷 케이블, 네트워크 장치)은 운영체제별로 소프트웨어나 API에서 처리해주기에

  개발자는 고수준단계(장치를 불러오는 직접적인 명령)만을 구현하면 된다.

 

2. PORT

 - IP 주소로 Socket이 연결되면 해당 컴퓨터끼리 연결이 된다.

 - 하나의 컴퓨터 안에서도 인터넷을 사용하는 여러 프로세스가 동시에 실행되고 있을 수도 있다.

   컴퓨터끼리 연결하여 프로세스를 수행하려면 두 컴퓨터의 건물주소인 IP 주소와 방 번호인 Port 번호를 찾아가야 한다.

 - 프로세스가 사용하는 포트 번호는 특별히 제한이 있는 것은 아니지만, 보통 1 ~ 1024(Well known PORT)번까지는

  시스템이 주로 사용하기 때문에 1025 ~ 65,535번 사이의 포트를 사용하는 것이 좋다.

 

3. TCP(Transmission Control Protocol)

 - TCP 통신은 전화와 같은 방식으로 동작.

 - 상대방의 IP 주소와 PORT 번호를 알고 있어야 연결을 요청할 수 있고,

  연결을 요청할 수 있고, 연결을 시도했을 때 상대방이 응답을 받아주지 않으면 계속적으로 요청을 하게 됨.

 - TCP 통신에서도 한번 연결이 되면 계속적으로 소켓을 통해서 데이터를 주고 받을 수 있다.

  즉, 양방향 통신의 성격을 갖는다.

 - 또한, 상대방에게 데이터를 보냈을 경우 확인 절차도 거치게 된다.

  TCP통신에서도 전송 중 받지 못한 패킷을 송신측에 다시 요청하는 메커니즘을 가지고 있다.

 

4. UDP(User Datagram Protocol)

 - 보내는 쪽에서 패킷에 데이터를 담은 후 상대방의 IP 주소와 자신의 IP 주소를 기록하고 Socket을 통해 보내고,

  패킷이 도착했는지에 대해서는 상관하지 않고 단지 보냈다는 사실만 기억하고 있다.

 - 만약 받는 쪽에서 패킷이 잘못되거나 받지 않았을 경우에는 받는 쪽에서 재요청을 해야한다.

 - UDP 통신 자체는 상대방과 연결되어 있는 개념이 아니다.

 - 자신이 소켓을 개설하고 보내고 싶은 포트에 데이터를 담아 랜카드를 통해 보내는 개념.