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 통신 자체는 상대방과 연결되어 있는 개념이 아니다.
- 자신이 소켓을 개설하고 보내고 싶은 포트에 데이터를 담아 랜카드를 통해 보내는 개념.