본문 바로가기

[+] Information/[-] Network

[2009/5/23] 네트워크 프로그래밍의 이해.

1. Network의 이해


 - Network란 End-System 들을 연결하는 하나의 System을 의미함.


 - End-System : "호스트"라고도 함, 최종적으로 서비스 를 받는 시스템.
   ex) 개인용 PC, 워크스테이션, PDA(Mobile Network관점에서의 End System)
   * 워크스테이션 : 일반 시스템보다 약간의 고성능 시스템.


2. Internet의 이해


 - 멀리 떨어진 둘 이상의 네트워크가 연결되어 이뤄지는 거대한 네트워크를 의미함.


 - 인터넷의 구축을 위해서는 서로 다른 네트워크를 연결 하는 장비가 필요함. 이를 두고 라우터(Router)라 함.


 * Router : 두개 이상의 네트워크를 연결 시켜주는 장비.



3. Client / Server 모델


 - Server와 Cilent는 프로그램임. Machine이 아님.


 - Server는 Client의 연결요청을 기다림.


 - Client는 Server에 요청을 하고 응답을 기다리는 호스트를 의미함.



          Request(요청)
Client ---------------> Server
       <---------------
         Response(응답)



4. Server의 종류


 - Server는 일반적으로 Cilent에 비해 복잡하다.
 * 일반적인 네트워크 프로그래밍은 서버 프로그래밍임.


 - 두가지 종류의 서버
   1) Iterative Server : 한 순간에 하나의 클라이언트에게 응답함.
   2) Concurrent Server : 동시에 여러 클라이언트에게 응답함.



5. Network Porgramming


 - Network로 연결되어 있는 두 호스트간의 데이터 송수신


 - 파일 입출력과의 차이점은 데이터를 주고 받는 대상에 있음.


 - 소켓(Socket)이라는 장치를 사용하여 프로그래밍


 * 소켓 : 소켓이란 원격에 존재하는 두 호스트를 연결시켜 주는 매개체 역할을 함.



6. 서버 소켓 구현의 이해

    Telephone                           Server Program

1) 전화기 구입    <--------------> 소켓 생성

2) 전화번호 할당 <--------------> IP 주소 할당

3) 케이블에 연결 <--------------> 연결 요청 대기 상태

4) 수화기 든다.   <--------------> 연결 수락

 

순서 1) 전화를 걸고 싶은데 무엇이 필요합니까?
  - 소켓의 생성을 요구한다.


#include <sys/tyeps.h>
#include <sys/socket.h>


int socket(int domain, int type, int protocol)




순서 2) 당신의 전화번호는 어떻게 되나요?
  - 주소의 할당을 요구한다(IP 주소, Port 정보)


#include <sys/socket.h>


int bind(int scokfd, struct sockaddr *myaddr, int addrlen)




순서 3) 전화기를 연결 하시겠습니까?
 - 연결 요청 대기 상태로의 진입.


#include <sys/socket.h>


int listen(int sockfd, int backlog)




순서 4) 전화벨이 울립니다. 어서 전화 받으세요.
 - 연결 요청 수락.


#include <sys/socket.h>


int accept(int sockfd, struct sockaddr *addr, int *addrlen)



 

7. Cilent Socket 구현의 이해


순서 1) 전화를 걸고 싶은데 무엇이 필요합니까?
 - 소켓의 생성


순서 2) 전화를 걸어요.
 - 연결 요청


#include <sys/socket.h>


int connnect(int sockfd, struct sockaddr *serv_addr, int addrlen)






잘못된 곳이 있으면 댓글로 알려주세요~

공부하는 입장이라 어디가 잘못된건지 잘 모를수도 있거든요 ㅎㅎ

'[+] Information > [-] Network' 카테고리의 다른 글

[2009/5/24] 예제소스(low_open.c, low_read.c, fd.seri.c)  (0) 2009.05.24
[2009/5/24] 파일의 조작  (0) 2009.05.24
전세계 IP 대역 2009 2월 2일자.  (4) 2009.03.01
IPv6  (0) 2009.03.01