================================ Outline ====================================
Three-way Handshake
fork 함수
execl 함수
----------------------------------------------------------------------------
Three-way Handshake
서로 SYNC번호를 주고 받음으로써 server와 client의 통신 여부를 확인하는 절차다. client에서 SYNC번호를 보내면 server에서는 SYNC 번호를 확인하고 자신의 SYNC번호도 client에게 보내게 된다. SYNC번호를 확인했다는 뜻으로 전송 받은 SYNC번호에 1을 더하여 ACK번호로 client에게 보내게 된다. Client는 server에게 보낸 SYNC번호를 확인했다는 뜻으로 SYNC번호에 1을 더한 것을 ACK로 보내면 통신이 연결되게 된다.
connect와 accept에서 일어난다.
연결 종료 시에는 server가 FIN flag에 set을 입력하여 전송하고 client가 이를 받고난 후 FIN flag에 set를 시켜 다시 서버에게 전송하게 된다.
close에서 일어난다.
채팅 프로그램을 계속해서 만들어보자.
채팅 시 client나 server가 작성 중이라도 상대방이 전송한 내용을 읽어 들여야 하기 때문에 이를 해결 위해 스레드 혹은 멀티 프로세스를 사용해야 한다.
교재 p/227 ch.10 멀티 프로세스 소켓 프로그래밍
//프로젝트를 실행할 때 단위테스트(새롭게 사용하는 함수, 실행단위)를 거치고 난 후 테스트가 성공해야 코딩을 지속한다.
fork 함수
fork함수를 테스트해보자.
/*** 소스 ***/
#include <unistd.h> |
fork함수의 속성
- 지역 변수 값 및 전역 변수 값은 복사된다.
- 소켓을 포함한 모든 열린 파일의 파일 지정번호가 복사된다.
- 부모프로세스나 자식프로세스가 중 하나가 종료 되었을 때 남은 프로세스에게 신호(signal)을 보낸다.
execl 함수
execl 함수는 외부 프로그램을 멀티 프로세스를 통해 실행시켜주는 함수이다.
/*** 소스 ***/
#include <stdio.h> |
'Busan IT > 공장내 Network' 카테고리의 다른 글
IPC(3) (0) | 2015.08.10 |
---|---|
채팅 멀티프로세스 (0) | 2015.07.28 |
TCP analyzer (0) | 2015.07.22 |
TCP analyzer(진행 중) (0) | 2015.07.17 |
TCP 추출(진행중) (0) | 2015.07.16 |