열혈강의 TCP/Ip Socket Programming --Part 1
Programming/Networking 2006. 7. 6. 12:58
간단하게 정의
(클라이언트, 서버는 네트워크에 연결되어 있다고 가정)
클라이언트:정보를 보내는 프로그램(요청)
서버:정보를 받는 프로그램(수락)
*서버와 클라이언트는 소켓으로 연결을 한다
서버 프로그래밍의 예시
--전화 소켓 관련 함수
전화 사기 소켓 생성하기 (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)
의차이가 나게 되므로 이런 경우를 줄이기 없애기 위해서 해더파일에서 정의 해 놓은 모양임
(클라이언트, 서버는 네트워크에 연결되어 있다고 가정)
클라이언트:정보를 보내는 프로그램(요청)
서버:정보를 받는 프로그램(수락)
*서버와 클라이언트는 소켓으로 연결을 한다
서버 프로그래밍의 예시
--전화 소켓 관련 함수
전화 사기 소켓 생성하기 (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 |