열혈강의 TCP/Ip Socket Programming --Part 1

간단하게 정의
(클라이언트, 서버는 네트워크에 연결되어 있다고 가정)

클라이언트:정보를 보내는 프로그램(요청)
서버:정보를 받는 프로그램(수락)
*서버와 클라이언트는 소켓으로 연결을 한다

서버 프로그래밍의 예시

--전화                                               소켓                                           관련 함수
전화 사기                                    소켓 생성하기                                      (socket 함수)
전화 번호 얻기                            아이피 주소 얻어오기                                  (bind 함수)
전화 케이블에 연결하기                    신호 요청 대기                                      (listen 함수)     
전화 걸기                                       연결수락                                           (accept 함수)        

클라이언트 프로그래밍의 예시

--전화                                               소켓                                           관련 함수
전화 사기                                    소켓 생성하기                                     (socket 함수)
연결 요청                                    소켓 연결하기                                      (connect함수)
         
TCP  트랜스미션 컨트롤 프로토콜 :말그대로 "제어"한다 IP라는거 자체가 데이터를 전달하는게 정확성이
없다 쉽게 말해서 보내주긴 보내주는데 제 주소에 보내지던 말던은 상관을 안한다는 얘기..
그리하여 그런 상황을 미연에 방지하기 위해서 데이터를 송/수신 할때마다 제대로 도착했는지를 확인하는
프로토콜 이라고 말하면 대충 되려나...

UDP 유저데이터그램 프로토콜: 이녀석은 확인 같은거 안하고 걍 보내고 끝. 그래서 속도가 빠르다고 한다나

포트:각각의 프로세스가 이 포트와 연결되 있고(물론 네트워크와 관련된 프로세스들)여기서 각 네트워크
에서 오는 메세지를 받는곳(또는 보내던가).. 뭐 비교하자면

라우터:각각의 호스트(or 라우터)
들을 연결 한다  네트워크 A에서 네트워크 B로 데이터가 이동할려면 반드시  각
네트워크를 관리하는 라우터 끼리 연결이 되어야 한다
HostA->RouterA->RouterD->RouterE->RouterF....->RouterB->HostB
------------------------                                                                   ------------------------
Network A                                                                                    NetworkB


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

sockfd=int socket(int domain,int type,int protocol);
int bind(int sockfd,struct sockaddr *myaddr,int addrlen);
int listen(int sockfd,int backlog);
sockfd2=int accept(int sockfd,struct sockaddr *addr,int *addrlen);
int connect(int sockfg,struct sockaddr *serv_addr,int addrlen);

//구조체 설명은 나중에 한다나 뭐라나..

다음 1-3 파트는 생략. 파일 입출력이므로 ,,,PASS
파트 1은 별루 한것도 없이 그냥 끝~~~~

--------추가 _t 자료형(size_t,time_t,key_t등)-----------
에 대해서는 컴퓨터 비트가 바뀌면서 저장크기(ex int.. 16bit==2 32bit==4)
의차이가 나게 되므로 이런 경우를 줄이기 없애기 위해서 해더파일에서 정의 해 놓은 모양임

'Programming > Networking' 카테고리의 다른 글

gethostbyname 의 세그멘테이션 오류  (2) 2008.02.28
소켓shutdown..DomainName<->IP  (0) 2006.07.18
TCP/IP 추가 and UDP /IP  (0) 2006.07.18
소켓 프로그래밍 part 2~4 TCP/IP  (4) 2006.07.15