시스템 프로그래밍 - 네트워크 프로그래밍의 개념
1. 클라이언트/ 서버
1) 서버
- 파일 이름을 받아 해당 파일을 찾아 그 내용을 보내주는 서비스
- 명령줄 인수로 포트 번호를 받아 해당 소켓을 만듦
- 이 소켓을 통해 클라이언트로부터 파일 이름을 받아 해당 파일을 열고 그 내용을 이 소켓을 통해 클라이언트에게 보냄
- 데몬 : 클라이언트 요청에 따라 다양한 서비스를 제공하는 서버 프로그램
2) 클라이언트
- 명령줄 인수로 연결할 서버의 이름과 포트 번호를 받아 해당 서버에 소켓 연결을 함
- 이 연결을 통해 서버에 원하는 파일 이름을 보낸 후
- 서버로부터 해당 파일 내용을 받아 사용자에게 출력
3) daeon
(1) 종류
(1-1) 반복 서버
- 데몬 프로세스가 직접 클라이언트의 요청을 처리하는 형태의 서버
(1-2) 동시 동작 서버
- 데몬 프로세스가 직접 처리하지 않음
- 서비스와 관련 있는 다른 프로세스를
fork()
함수를 생성한 후 이 프로세스가 클라이언트와 연결해 서비스를 제공하는 서버
inetd
데몬
2. TCP/ UDP
1) TCP (Transmission Control Protocol)
- 연결형 서비스를 지원하는 전송계픙 프로토콜
- 인터넷 환경에서 기본으로 사용
- 호스트간 신뢰성 있는 데이터 전달과 흐름제어 및 혼잡제어 등을 제공하는 전송 계층
- 가상 회전 연결 방식, 연결형 서비스를 제공
(1) 높은 신뢰성
- Sequence Number, Ack Number를 통한 신뢰성 보장
(2) 데이터 흐름제어 및 혼잡 제어
- 수신자 버퍼 오버 플로어 방지
- 네트워크 내 패킷 수가 과도하게 증가하는 현상 방지
(3) 전이중, 점대점 서비스
- Full-Duplex
- Point to Point 서비스
(4) 소켓 통신 과정
- 서버 : 소켓을 생성, 주소 할당, 연결 요청 기다림, 요청에 대한 응답
- 클라이언트 : 소켓을 생성, 주소 할당, 연결 요청
2) UDP (User Datagram Protocol)
- 비연결형 서비스를 지원하는 전송계픙 프로토콜
- 사용자 데이터그램형 프로토콜
- 인터넷상에서 서로 정보를 주고받을 때 정보를 보낸다는 신호나 받는다는 신호 절차를 거치지 않고, 보내는 쪽에서
일방적으로 데이터를 전달하는 통신 프로토콜
- 보내는 쪽에서 받는 쪽이 데이터를 받았는지 받지 않았는지 확인할 수 없고, 또 확인할 필요도 없도록 만들어진 프로토콜
(1) 비연결형
(2) 패킷 오버헤드가 적어 네트워크 부하 감소
(3) 비신뢰성
(4) 오류 검출
- 헤더에 오류 검출 필드를 포함하여 무결성 검사
(5) DNS, NFS, SNMP, RIP등 사용
(6) 소켓 통신 과정
- 서버 : 소켓을 생성, 주소 할당, 데이터를 송수신
- 클라이언트 : 소켓 생성 후 데이터 수신
3) TCP/ UDP 차이점
4) 인터넷 소켓 통신을 이용하는 소프트웨어
댓글남기기