IT 자격증 정보의 모든 것


안녕하세요!

오늘은 

윈도우 / 유닉스 / 리눅스의 차이점을 알아보려고 해요!



리눅스란?


리눅스는 유닉스 와 거의 닮은 운영체제라고 할 수 있어요.

유닉스의 장점을 포함하면서 새로운 여러 기능들이

적용되어 유닉스와 현존하는 어느 운영체제 보다도 강력하고

뛰어난 운영체제라고 할 수 있답니다.


1990년 초 핀란드 헬싱키 대학에 다니고 있던 리누스 토발즈가

개발한 운영체제이며

리눅스는 대형 컴퓨터에서 사용하는 유닉스 소스 코드를 수정하여

개인 pc에서도 사용할 수 있는 공개 운영체제로 

개발하고 자신의 이름을 따서 리눅스로 정했어요.





유닉스란?


유닉스는 포털이나 대기업 사이트 같은 주요한 서버에

사용되는 운영체제인데요.

그만큼 유닉스는 신뢰도 문제에서 큰 점수를 받는 존재랍니다.


서버 운영용 운영체제로서 

ID와 비밀번호 관리 등의 기능과 암호화 능력이 좋아

안정성과 메모리 관리 능력도 뛰어나요.




윈도우란?


윈도우는 낮은 신뢰성을 가진 운영체제인데요.

많은 문제들이 해결되고 있지만 아직 보안상의 문제나,

에러 등의 해결되지 못한 부분이 많이 남아있습니다.


대량의 네트워크 부하를 감당해내지 못하고

소수의 기관들이 그들의 인터넷 서버에 윈도우 NT를

채택하지만, 윈도우는 네트워크 솔루션으로 

적합하지 않다고 생각해요.





이렇게 유닉스와 리눅스 그리고 윈도우의 차이점을 알아보았는데요.

다음에는 하나 하나씩 

자세히 알아보는 글로 찾아오겠습니다!




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

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

기본적으로 알아야 할 부분인 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 모드로 사용하면 호출 시 일부만 전송되는 경우가

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