본문 바로가기
기타/책

네트워크 책 추천 "정석용의 TCP/IP 소켓 프로그래밍 열혈강의"

by S나라라2 2022. 7. 8.
반응형

 

 

 

학부 때 cs를 했으면 꼭 한 번 해보는게 'tcp/ip 소켓 통신을 하는 채팅 프로그램'인 것 같다.  

나만 그랬는진 몰라도 그 때는 어떤 트러블슈팅도 하지 않았고 그저 기본 기능만 동작하도록 개발했다. 그래서 실제로 현업에서 소켓 통신 부분을 구현한다고 해도 과거의 경험이 도움되지 않는다... 허허....

실제로 현업에서는 다수 개의 클라이언트가 접속했을 경우, 멀티os일 경우, 클라이언트단에서 연결이 끊겼을 경우 등등 처리할 게 많다. 이 책에서는 다른 책들에 비해 디테일한 부분을 많이 다루고 있다. 우리가 놓치기 쉬운 부분들도 한번씩 설명하고 지나간다.

 

 

추천 이유 

  1. 기본 개념을 다시 볼 수 있음
    • tcp는 내부적으로 데이터 전송 사이즈 확인
  2. multi processing, muti thread, multiplexing 등 다양한 구조를 설명함
    • 이게 가장 좋았다.
    • 인터넷에서 소켓 예제를 검색하면 while무한루프에서 socket listen하고 read, write모두 다하는 코드만 나온다. (실제 프로그램에선 절대 사용하지 못할만한 코드임)
  3. 챕터마다 코드가 있음
    • 이론만 있는 책이 아니라 읽기도 쉽고 이해도 쉽다.
  4.  예외처리 디테일 다룸
    • 멀티프로세싱 - 좀비 프로세스 생성을 방지
    • 멀티스레딩 방식 - 공유 변수 데드락 예방

 

 


내가 좋아하는 IT책 : 열혈강의, blog2book , 한빛미디어 출판사 책들, 인사이트 출판사 책들

책 표지에 저 타이틀 있으면 일단 나에게 큰 신뢰감을 준다 ㅋㅋㅋ

 


 

 

발췌

  • 멀티프로세싱 방식의 다중 접속 서버 (Multi-processing)
  • 멀티스레딩 방식의 다중 접속 서버 (Multi-threading)
    • 경량화된 프로세스인 스레드
    • 자식 프로세스의 생성과 관리 부담을 줄이기 위해 스레드를 사용한다. 스레드는 프로세스에 비해 적은 비용으로 생성과 괸리가 가능하다.

 

  • 멀티플렉싱 방식의 다중 접속 서버 (Multiplexing)
    • 여러 클라이언트가 동시에 서비스를 요청해도 서버는 select함수를 이용해서 하나의 프로세스만으로 처리한다. 서버는 select함수를 호출해서 서비스 요청을 기다리다가 하나 이상의 클라이언트에서 서비스 요청이 들어오면 서버 프로세스가 직접 서비스 요청을 차례로 처리한다. 별도의 자식 프로세스나 새로운 스레드를 생성하지 않고, 프로세스 하나에서 모두 처리하는 구조를 갖는다.
    • 물론 select 함수를 이용하면 네트워크 통신을 위한 소켓뿐만 아니라 표준 입출력 장치나 디스크 파일에 대해서도 읽을 자료가 있는지, 자료를 차단하지(Blocking)않고 전송할 있는지, 예외 상황이 있는지 등을 기다렸다가 이를 처리하도록 코드를 작성할 있다.

 

  • 소켓의 동작 모드
    • Blocking
      • 블로킹 모드의 소켓이란 소켓 관련 시스템 콜을 호출하였을 때 네트워크 시스템(즉 tcp/ip)이 실행을 완료할 때까지 응용프로그램의 프로세스가 blocking되는 소켓
      • 시스템 콜 중에 차단될 수 있는 함수로는  listen, connect, accept, send, recv, close 등이 있다.
    • NonBlocking
      • 비블로킹 모드의 소켓이란 소켓 관련 시스템 콜에 대하여 네트우크 시스템이 일단 결과를 바로 반환해서, 응용 프로그램의 프로세스가 차단되지 않는 소켓을 말한다.
    • Asynchronous
      • 비동기 모드는 비블로킹 모드에서처럼 차단될 수 있엇던 소켓 관련 시스템 콜에 대해서 일단 반환을 하고 해당 실행이 완료되면 비동기적으로(Asynchronously) 겨로가를 으용 프로그램에게 알려준다.

 

 

  • 채팅 프로그램
    • 채팅 서버는 듣기 소켓으로 클라이언트의 연결 요청을 받는 동시에 다른 클라이언트가 연결 소켓으로 전송한 채팅 데이터를 채팅에 참여하는 모든 클라이언트에게 전송해야 하므로 프로세스가 어느 한 곳에서 차단될 수 있는 블로킹 모드로 동작하면 안된다.

 

  • FTP (File Transfer Protocol)
    • TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜
    • 파일 전송 프로토콜은 tcp/ip 프로토콜 레이어에서 응용 계층에 속한다.
    • HTTP 프로코콜을 통해 접속되는 WWW(World Wide Web)은 일반 문자를 비롯, 사진, 음악/동영상 콘텐츠까지 간편하게 사용할 수 있다는 장점이 있지만, 많은 양의 파일을 일괄적으로 주고 받기에는 결정적으로 속도도 느리고 파이 제어도 번거롭다. 이렇게 대량의 파일을 네트워크를 통해 주고 받을 때는 파일 전송 전용 서비스인 FTP를 사용하는 것이 훨씬 유리하다.

 

  • FTP의 동작 원리
    • FTP 서비스를 제공하는 서버와 여기에 접속하는 클라이언트 사이에 두 개의 연결이 생성되는데, 하나는 데이터 전송을 제어하기 위한 신호를 주고 받기 위함이고(21번포트), 다른 하나는 실제 데이터(파일) 전송에 사용된다. (20번 포트)
    • 이를 테면, ftp서버에 접속할 입려가는 사용자 계정 암호 등의 정보나 파일 전송 명령 결과 등은 데이터 제어용 연결에서, 이후 실제 파일 송수신 작업(올리기, 내려받기) 데이터 전송 연결에서 처리되는 것이다.

 

 

 

 

 

반응형