Public 131

[TCP/IP 소켓 프로그래밍] 3. 주소 체계와 데이터 정렬

3-1 Internet Address IP(Internet Address) 인터넷에 존재하는 호스트들을 구분하기 위한 32비트 주소 체계 점이 찍힌 십진수 표현 방식(Dotted-decimal Notation) : 211.217.10.9 클래스 Class A : 0.0.0.0 ~ 127.255.255.255, 1바이트는 네트워크 ID, 3바이트는 호스트 ID Class B : 128.0.0.0 ~ 191.255.255.255, 2바이트는 네트워크 ID, 2바이트는 호스트 ID Class C : 192.0.0.0 ~ 223.255.255.255, 3바이트는 네트워크 ID, 1바이트는 호스트 ID Class D : 멀티캐스트 주소. 224.0.0.0 ~ 239.255.255.255 Class E : 예약됨...

Public/tip & tech 2009.08.14

[TCP/IP 소켓 프로그래밍] 2. 소켓의 설정과 프로토콜의 설정

2-1 프로토콜 컴퓨터 상호간의 대화에 필요한 통신 규약 혼돈의 여지가 있으면 안되고 잘 정의(FM)되어야 한다. ※ 안 좋은 예 : 서버에서 accept 하자마자 읽는 연산을 수행. 2-2 소켓의 생성 기본적인 통신 도구 프로토콜에 독립적 : 사용자가 프로토콜을 정해주어야 한다는 점에서... 데이터 전송 형태(타입)를 지정해야 한다. 2-3 프로토콜 체계 #include #include int socket(int domain, int type, int protocol); domain : 프로토콜 체계. family (여러 가지 프로토콜이 합쳐져서 체계를 이룬다.) PF_INET : IPv4 (4바이트 2^32승개의 IP) PF_INET6 : IPv6 (16바이트 2^128승개의 IP, 약 10의 38승..

Public/tip & tech 2009.08.14

[TCP/IP 소켓 프로그래밍] 1. 네트워크 프로그래밍과 소켓의 이해

1-1. 네트워크 프로그래밍의 이해 네트워크 : 호스트(End-system)들을 연결하는 시스템 호스트 : PC, workstation, PDA 인터넷 : 멀리 떨어진 둘 이상의 네트워크가 연결되 이뤄진 거대한 네트워크 -> 라우터 : 이기종 네트워크를 연결하는 장비 1.2 소켓 이해하기 클라이언트/서버 모델 기계 아님. 서버 : 연결 요청을 기다린다. - Iterative(반복적인) Server : 한 순간에 하나의 클라이언트에게 응담 - Concurrent Server : 동시에 여러 클라이언트에게 응답한다. 클라이언트 : 서버에 요청하고 응답을 기다리는 호스트. 네트워크 프로그래밍 네트워크로 연결된 두 호스트 간의 데이터 송수신 소켓 : 원격에 존재하는 두 호스트를 연결시켜 주는 매개체. 운영체제에..

Public/tip & tech 2009.08.14

소켓 종료와 TIME_WAIT(Socket termination and TIME_WAIT)

소켓 종료와 TIME_WAIT(Socket termination and TIME_WAIT) 진리는어디에 2007/03/19 20:22 오늘은 소켓의 종료와 그에 따라 발생하는 소켓의 상태 변화에 대해 알아 보도록 하겠다. 먼저 소켓은 생성될 때는 3-way hand shaking을 통해서 생성되지만, 종료 될때는 한단계 더 많은 4-way hand shaking을 거쳐 종료 된다. four way handshake 위에서 분명히 4-way.. 4단계라고 이야기 했다. 그럼 어떤 4단계를 거치는지 알아 보자. 1. A가 B에게 연결 종료를 요청한다. 2. B는 바로 종료를 하는 것이 아니라, 단순히 ACK만을 날리고 있다. B도 종료 하기 전에 할 일이 있기 때문에 바로 FIN을 날리지 않고, 단순히 AC..

Public/tip & tech 2009.07.23

구글 성공 가져다준 핵심기술, 페이지랭크

몇 일 전 국내 유명 블로거의 구글 페이지랭크(PageRank)가 변경돼 블로거 사이에서 페이지랭크에 대한 관심이 증폭됐다. 구글을 세계 1위 검색 사이트로 만든 가장 강력한 무기인 페이지랭크에 대해 알아보자. 래리 페이지와 세르게이 브린이 구글을 창업한 1998년도만 해도 인터넷 검색의 최고 강자는 알타비스타(Altavista)였다. 1위 포털사이트인 야후도 알타비스타의 기술을 빌려다 사용하고 있었다. 당시 다른 검색 사이트와 마찬가지로 알타비스타도 페이지 내의 글을 가지고만 검색 결과에 나타나는 순위를 정했다. 알타비스타는 대략 다음과 같은 방법으로 웹페이지를 평가한 다음 점수를 부여해 검색 결과 순위를 결정했다. -제목에 해당 단어가 있으면 가중치가 붙는다. -굵게 처리 된 부분에 해당 단어가 있으..

Public/tip & tech 2009.06.04

이차원(2차원) 배열

char stack[10][100]; 이렇게 선언된 stack이라는 이차원 배열을 함수 안에서는 사용하는건 누구나 다 한다. 그런데 이렇게 선언된 배열을 함수의 인자로 넘길때 보통 헤매게 된다. 방법 1 > func(char stack[][100]) 게 넘겨 받는 방법이고 또다른 한가지는 방법 2 > func(char (*stack)[100]) 이다 넘겨 받은 데이터를 사용하는데 있어서 두가지 방법 사이의 차이점은 존재하지 않는다. 두개 모두 stack[i][j]와 같이 사용가능하고, 다만 함수안에서 이차원 배열을 포인팅 할려고 할때는 char (*temp_stact)[100]과 같이 선언하고 사용하면 된다 주의할점은 두번째 방법에서 괄로()를 빼먹으면 전혀 다른 의미가 되기 때문에 주의가 필요하다. p..

Public/tip & tech 2009.05.12

가변인자

잘 사용하지 않는 기술인데 에러 처리와 같은 부분에서는 상당히 편하게 사용될수 있다. #include void error( char *format, ... ) { va_list list; va_start( list, format ); while( *format != '\0' ) { // string if( *format == 's' ) { char* s = va_arg( list, char * ); printf( "[msg] strnig : %s\n", s ); } // integer else if( *format == 'd' ) { int d = va_arg( list, int ); printf( "[msg] integer : %d\n", d ); } *format++; } va_end( list );..

Public/tip & tech 2009.05.12

global(전역변수) & static(정적변수) variable

global 변수 : 선언과 동시에 모든 파일에서 접근 가능한 변수 static 변수 : 선언된 파일 안에서만 접근 가능 main.c sub1.c sub2.c 라는 파일 있다면 main.c에서 선언한 global 변수 g_val 은 sub1.c나 sub2.c에서도 접근 가능하다 그러나 main.c에서 선언한 s_val은 sub1.c나 sub2.c에서 접근할수 없다. 간단한 사용 예를 보면 (gloval 변수) ######################################################## main.c ---------------------------------------------------- int g_val = 10; main.c ---------------------------..

Public/tip & tech 2009.05.12