네트워크 - 해당되는 글 20건

tcp아이피는 내부적으로 3웨이 핸드쉐이킹이 이루어진다.
Syn은 시퀀스 넘버랑 에크넘버가있고  날려주고
비에서는 응답과 동시에 자기 쉬컨스넘버를 날려주고
에크받은것에 1을 더해서 1001을날려주고
에이에서는 받으면 비에서 받은 2000에 1을더해서 날려주고
자신의 번호 1001을날려준다.
데이타 송수신에서도 계속이런 작업을 반복을 한다.
만약 시간이 지나도 응답이 없으면 다시 보내는 작업을 반복하고 해서 응답이되는지 본다.

연결종료단계에서는 4번의 핸드쉐이킹을한다.

      네트워크  |  2007. 10. 25. 09:59









Iterative 서버의 구현
멀티스레드를 하지 않고 루프를 돌면서 클라이언트를 접속해주는것
여러사용자가 큐에 대기 했다가 들어오면 처리를 해준다.

 

for( ; ; ){   
       clnt_addr_size=sizeof(clnt_addr);   
       clnt_sock=accept(serv_sock, (struct sockaddr*)&clnt_addr, &clnt_addr_size);   
       if(clnt_sock==-1) {     
error_handling("accept() error");     
break;   
       }   
       /* 데이터 전송 후 종결 */   
       write(clnt_sock, message, sizeof(message));    
       close(clnt_sock); 
 }

에코서버는
클라이언트가 메세지를 보내면 서버에서 그메세지를 받고 다시 클라이어트에게 다시 재전송을 해준다.
      네트워크  |  2007. 10. 24. 11:50




사용자 삽입 이미지
클라이언트에서는 소켓을 하나만가지고 생성하며된다.
=====================
억셉트를 호출할때 클라이언트 값이 반환되고
연결요청 대기 큐에 있는것이 새로운 소켓이 생성이 된다.
이런 소켓을 가지고 클라이언트와 직접적으로 송수신한다.
서버와 연결이허용이 되서 억셉트함수 클라이언트랑 송수신을 한다.
clnt_addr은 억셉트했을때 클라이언트 정보 받기 위해서 설정
소켓을 생성
serv_sock 생성 여기에다가 sin_addr, sin_port

클라이언트 주소정보가 들어오는것 clnt_addr구조체에 주소정보가 온다.
write(clnt_sock)클라이언트에다가 써준다
      네트워크  |  2007. 10. 24. 11:37



sokoban's Blog is powered by Daum & Tattertools