TCP 기반 서버/클라이언트

2009. 8. 6. 19:29언어/TCP-IP

TCP : 전송과정을 컨트롤한다(Transmission Control Protocol)

TCP/IP 프로토콜 스택 : 총 4개의 프로토콜을 쌓아올려 놨다.

Physical 영역 : Link 계층 => 물리적인 영역을 담당한다.(LAN, WAN)

Network 영역 : IP계층 => 데이터 전송을 담당

  • Router는 평상시에 서로간의 상태를 주고 받는다.

Transport 영역 : TCP/UDP 계층 : 데이터 전송에 대한 확실성

Application 영역 : Application 계층 => 데이터를 주고 받는 방법을 정의한다. 프로그램의 구현을 의미, 프로토콜을 정의하고 구현

TCP 기반 서버 구현

서버의 기본적인 함수 호출 순서

Socket()[소켓 생성] => bind()[소켓에 주소할당]=> listen()[연결요청 대기상태]=>accept()[연결허용]=>read&Write()[데이터 송수신]=>close()[연결종료]

연결요청 대기 상태(Listen())

Listen 함수는 첫 번째 인자는 서버소켓이 되고 두 번째 인자는 연결요청 대기 큐가 된다.

Listen 함수는 전달되는 인자의 소켓을 서버소켓이 되게 한다.

Listen 함수엔 연결요청 대기 큐가 두 번째 인자에 숫자에 의한 만큼 생성된다.

서버 소켓 : 일종의 '문지기'이다.

  1. 서버 소켓은 클라이언트의 연결요청을 받아 대기실 격인 연결요청 대기 큐에 저장해주는 역할을 한다.
  2. 한번 서버 소켓이 되면 프로그램이 끝날 때까지 다른 일을 할 수 없고 프로그램이 끝날 때까지 서버소켓을 남는다.

연결요청 수락하기(accept)

  1. 첫번째 인자 : 주소정보가 채워짐.
  2. 세번째 인자 : 주소 ㅈ정보의 길이

Accept => 자동으로 소켓이 생성된다., 새로운 소켓의 핸들이 리턴된다.

 

TCP 클라이언트 구현

클라이언트 함수 호출 순서

Socket()[소켓 생성]=> connect()[연결요청]] => road&write() [데이터 송수신]=> close()[연결종료]

 

Interative 서버 구현

Interative 서버

  1. 반복해서 클라이언트의 요청을 처리한다.
  2. 서버가 빠르다.

에코서버 : 클라이언트가 전해주는 데이터를 배열에 저장했다가 그대로 되돌려주는 서버.

'언어 > TCP-IP' 카테고리의 다른 글

주소체계와 데이터 정렬  (0) 2009.08.05
소켓의 생성과 프로토콜의 설정  (0) 2009.08.05
네트워크 기초  (0) 2009.07.31