IT 자격증 정보의 모든 것

오늘은 네트워크에 대해서 알아봅시다!

많은 부분이 있지만 그 중에서도 네트워크 프로그래밍에서

기본적으로 알아야 할 부분인 TCP/IP 소켓 프로그래밍에서 알아보아요



네트워크 프로그래밍이란?


멀리 떨어져있는 호스트들이 서로 데이터를 주고 받을 수 있도록 프로그램을 구현하는 것




TCP : Transmission Control Protocol의 약자

IP : Internet Protocol의 약자



TCP/IP는 통신규약




소켓이란?


네트워크 프로그래밍 과정에서 대상이 멀리 떨어져 있기 때문에 

소프트웨어 차원에서 호스트들간을 연결해주는 장치



즉, 소켓을 사용하는 목적은 네트워크로 연결된

두 개 이상의 호스트간의 데이터를

송수신 할 수 있도록 하는 것인데요.

TCP/IP를 데이터를 가지고 달리는 자전거라고 가정하면

소켓은 자전거가 달릴 수 있도록 깔아놓은 도로인 것이죠!



소켓 프로그래밍 환경 구축하기


개발 환경을 구축하려면 Visual Studio에서 새 프로젝트를 만들어야 하는데요.

통신에서는 서버와 클라이언트 2대의 구성이 필요하기 때문에

2개의 프로젝트를 생성해야 합니다.

서버와 클라이언트의 프로그래밍 절차는 각각 다른데, 

TCP 클라이언트의 과정만 보자면, 소켓을 생성한 뒤 서버로 연결을 해줍니다.

접속이 성공됐다면 read와 write 함수를 통해 서버와 패킷을 주고 받으며

사용을 마치면 close로 소켓을 닫아주면 된답니다.




소켓 프로그래밍 주의해야 하는 점


우선 TCP소켓의 연결 종료가 감지되면 반드시 close해야 합니다. 

TCP 소켓은 자동으로 닫히는 것이 아니기 때문에

상대편이 소켓 연결을 종료한다면 같이 종료해줘야만 합니다.

SIGPIPE는 기본 동작이 프로세스의 종료이므로 

해당 시그널을 처리하지 않으면

프로세스는 즉시 종료된다는 사실!


마지막으로 '재전송' 또한 주의해야 하는데요.

TCP를 NONBLOCKING 모드로 사용하면 호출 시 일부만 전송되는 경우가

있기 때문에 꼼꼼하게 확인을 하고 재전송이 가능한지 감지한 뒤 전송해야 합니다.