본문 바로가기

국비

11.3 국비학원 22일차 (네트워크 프로그래밍 UDP/TCP)

내일이 평가날인데 네트워크 관련 문제가 포함되어 있다고 한다. 그래서 오늘 그 부분만 진도 나감!

프로그래밍 언어 배우다가 갑자기 통신쪽을 배우니 정말 모르겠고요...이게 뭔 말인가 싶고요..ʕ ´•̥̥̥ ᴥ•̥̥̥`ʔ


  • 네트워크 프로그래밍

       - 네트워크로 연결된 컴퓨터 장치 간에 데이터를 송/수신 할 수 있도록 만드는 프로그래밍

       - 서버와 클라이언트로 역할을 나누어서 작성하게 된다.

       - 네트워크 연결에는 IP 주소와 Port 번호 정보가 필요하다. 이를 통해 연결할 서버와 클라이언트를 식별하게 됨

       - 네트워크 연결을 통해 데이터를 송/수신 할 때 2가지 전송 방식이 있으며 각각 TCP, UDP 라고 한다.

       - UDP 의 경우 신뢰성 ↓ 데이터 전송 속도 ↑

       - TCP 의 경우 신뢰성 ↑ 데이터 전송 속도

 

  • UDP 서버

        1. 통신을 위한 Port 지정

        2. 지정한 Port로 데이터 소켓 객체 생성  (소켓은 연결점이라 생각하면 된다)

        3. 데이터그램패킷 객체 (클라이언트가 보낸 메시지를 받을 패킷 객체) 생성 (패킷은 연결점으로 들어온 데이터)

        4. 수신 대기

        5. 데이터를 수신한 후에는 클라이언트가 요청한 정보에 맞추어 동작하고 처리 결과 전달

        6. 처리 결과를 전달하기 위해 데이터그램패킷 객체 생성

        7. 만들어진 패킷 객체로 전송

        8. 3번 ~ 7번 까지의 과정 반복

socket, packet 그림

  • UDP 클라이언트

        1. 데이터를 전달할 서버 IP 주소와 Port 지정

        2. 데이터소켓 객체 생성

        3. 데이터패킷 객체 생성 (서버에게 보낼 메시지를 위한 패킷 객체 생성)

        4. 데이터패킷 전송

        5. 서버의 처리가 완료되어 데이터패킷을 보낼 것을 대비해 클라이언트도 수신용 데이터패킷 객체 생성 (수신 대기)

        6. 서버가 보낸 메시지 확인

        7. 3번 ~ 6번 까지의 과정 반복

 

  • TCP 서버

        1. 통신을 위한 Port 지정

        2. 지정한 Port로 서버소켓 객체 생성

        3. 서버소켓으로 들어오는 연결 요청 대기 후 승낙  (서버소켓 : 요청이 들어오는걸 승낙하는 용도)

        4. 연결 승낙 후 클라이언트와의 연결소켓 생성  (연결소켓 : 클라이언트와 계속 통신할 용도)

        5. 입출력스트림 생성

        6. 입출력스트림으로 통신 진행

 

  • TCP 클라이언트

        1. 데이터를 전달할 서버 IP 주소와 Port 지정

        2. 서버와 연결하기 위한 소켓 객체 생성

        3. 서버로부터 연결 승낙이 이루어지면 바로 입출력스트림 생성

        4. 서버와 통신 진행

     

 

* UDP 는 TCP 와 달리 데이터 전송 후 따로 확인 작업이 없다.

* TCP 는 데이터 전송 후 확인 ACK 를 보낸다. 이러한 체크가 socket 객체 안에서 이뤄지기 때문에 따로 확인 작업을 만들 필요는 없다.