TCP&IP12 TCP/IP 쓰레드의 이론적 이해 쓰레드의 이론적 이해쓰레드의 등장배경프로세스는 부담스럽다.프로세스의 생성에는 많은 리소스가 소모된다.일단 프로세스가 생성되면, 프로세스간의 컨텍스트 스위칭으로 인해서 성능이 저하된다.컨텍스트 스위칭은 프로세스이 정보를 하드드시크에 저장 및 복원하는 일이다.데이터의 교환이 어렵다.프로세스간 메모리가 독립적으로 운영되기 때문에 프로세스간 데이터 공유 불가능!따라서 운영체제가 별도로 제공하는 메모리 공간을 대상으로 별도의 IPC 기법 적용.그렇다면 쓰레드는?프로세스보다 가벼운, 경량화된 프로세스이다. 때문에 컨텍스트 스위칭이 빠르다.쓰레드 별로 메모리 공유가 가능하기 때문에 별도의 IPC 기법 불필요.프로세스 내에서의 프로그램의 흐름을 추가한다.쓰레드와 프로세스의 차이점프로세스는 서로 완전히 독립적이다. 프로.. TCP&IP 2024. 9. 9. DB 만들어보기 DB설계과정 요구사항 분석어떤 데이터를 저장할지, 어떤 식의 관게를 형성할지에 대해서 사전 작성한다. 최초 요구사항의 경우 다소 사람이 이해하기 쉬운 형태이며, 명확한 Datatype등이 명시되어 있지 않으므로 이에 대해서 명확히 해야한다. 개념적 설계요구사항에 따라 개념적인 설계를 한다. 요구사항 분석으로 만들어진 데이터들을 관계나 실제 어떠한 데이터 타입으로 할지 등 개념적으로 설계 논리적 설계실제 DBMS에서 동작 할수 있도록 짜 만드는 것. 위의 요구사항을 분석하여 개념적 데이터를 모델링을 했는데, 데이터 모델링에서는 화살표가 특별이 쓰이지 않는듯 하다. DB만들기 실습sudo service mysql start //로컬 접속sudo mariadbCREATE DATABASES SHOP;SH.. TCP&IP 2024. 9. 6. TCP&IP 제13장 다양한 입출력 함수들 리눅스에서의 send & recv#include ssize_t send(int sockfd, const void * buf, size_t nbytes, int flags); 성공 시 전송된 바이트 수, 실패시 -1 반환sockfd : 데이터 전송 대상과의 연결을 의미하는 소켓의 파일 디스크립터 전달buf : 전송할 데이터를 저장하고 있는 버퍼의 주소 값 전달nbytes : 전송할 바이트 수 전달.flags : 데이터 전송 시 적용할 다양한 옵션 정보 전달 #include ssize_t recv(int sockfd, void * buf, size_t nbytes, int flags); 성공 시 수신한 바이트 수(단 EOF 전송시 0), 실패시 -1반환sockfd : 데이터 전송 대상과의 연결을 의미하는 소.. TCP&IP 2024. 9. 5. TCP/IP 10장 프로세스의 이해와 활용 프로세스의 이해와 활용다중 접속 서버의 구현 방법들멀티프로세스 기반 서버 : 다수의 프로세스를 생성하는 방식으로 서비스 제공멀티플렉싱 기반 서버 : 입출력 대상을 묶어서 관리하는 방식으로 서비스 제공멀티쓰레딩 기반 서버 : 클라이어언트의 수만큼 쓰레드를 생성하는 방식으로 서비스 제공다중 접속 서버란 둘 이상의 클라이언트에게 동시에 접속을 허용하여, 동시에 둘 이상의 클라이언트에게 서비스를 제공하는 서버를 의미한다. 프로세스와 프로세스의 ID프로세스란?간단하게 실행 중인 프로그램을 뜻한다.실행중인 프로그램에 관련된 메모리, 리소스 등을 총칭하는 의미이다.멀티프로세스 운영체제는 둘 이상의 프로세스를 동시에 생성 가능하다.fork 함수의 호출을 통한 프로세스의 생성#include pid_t fork(void).. TCP&IP 2024. 9. 5. TCP/IP 9장 소켓의 다양한 옵션 소켓의 옵션과 입출력 버퍼의 크기소켓의 다양한 옵션소켓의 특성을 변경시킬 때 사용하는 옵션정보들이다. 이러한 소켓의 옵션은 계층별로 분류된다. IPPROTO_IP 레벨의 옵션들은IP 프로토콜에 관련된 사항들이며, IPPROTO_TCP 레벨의 옵션들은 TCP 프로토콜에 관련된 사항들이다. 그리고SOL_SOCKET 레벨의 옵션들은 소켓에 대한가장 일반적인 옵션들로 생각하면 된다. 옵션정보의 참조에 사용되는 함수#include int getsockopt(int sock, int level, int optname, void *optaval, socklen_t *optlen); 성공시 0, 실패시 -1 반환. sock : 옵션확인을 위한 소켓의 파일 디스크립터 전달.level : 확인할 옵션의 프로토콜 레벨 전달.. TCP&IP 2024. 9. 5. TCP/IP 8장 도메인 이름과 인터넷 주소 Domain Name System도메인 이름ip를 대신하는 서버의 주소실제 접속에 사용되는 주소는 아니다. 이 정보는 IP로 변환이 되어야 접속이 가능하다. DNS서버도메인 이름을 IP로 변환해 주는 서버DNS는 일종의 분산 데이터베이스 시스템이다. 도메인 이름을 이용해서 서버에 접속하면, 접속 이전에 DNS 서버에 해당 도메인의 IP 주소를 묻게 되고, 그 결과로 얻게 된 IP를 이용해서 서버에 접속하게 된다. IP주소와 도메인 이름 사이의 변환도메인 이름을 이용해서 IP주소 얻어오기#include struct hostent *gethostbyname(const char *hostname); 성공시 hostent 구조체 변수의 주소 값, 실패시 NULL포인터 반환 h_name : 공식 도메인 이름h.. TCP&IP 2024. 9. 5. TCP/IP 5장 기반서버/클라이언트 2 에코 클라이언트의 완벽구현에코 서버는 문제가 없고, 에코 클라이언트만 문제가 있나?문제는 에코서버가 아니라, 에코 클라이언트에 있다. 코드만 놓고 비교하면, 이부분이 이해되지 않을 수가 있다. 입출력에 사용된 함수의 호출문이 동일하기 때문. //에코 서버의 입출력 문장while((str_len=read(clnt_sock, message, BUF_SIZE))!=0) write(clnt_sock, message, str_len); //에코 클라이언트의 입출력 문장 write(sock, message, strlen(message)); str_len=read(sock, meassage, BUF_SIZE-1); while(1){ fputs("Input message,(Q to quit):", stdout);.. TCP&IP 2024. 9. 4. TCP/IP 4장 기반서버/클라이언트1 TCP/IP 프로토콜 스택TCP/IP프로토콜 스택이란?인터넷 기반의 데이터 송수신을 목적으로 설계된 스택큰 문제를 작게 나눠서 계층화한 결과데이터 송수신의 과정을 네 개의 영역으로 계층화 한 결과각 스택 별 영역을 전문화하고 표준화함7계층으로 세분화가 되나 , 4계층이 있다만 알면 됨.LINK&IP 계층LIN 계층의 기능 및 역할물리적인 영역의 표준화 결과LAN, WAN, MAN과 같은 물리적인 네트워크 표준 관련 프로토콜이 정의된 영역아래의 그림과 같은 물리적인 연결의 표준이 된다. IP계층의 기능 및 역할IP는 Internet protocol을 의미함경로의 설정과 관련이 있는 프로토콜 오류발생에 대한 대비가 되어 있지 않아 데이터가 손실되거나, 각종 오류가 발생할수 있다. TCP 계층TCP계층의 기능.. TCP&IP 2024. 9. 3. TCP/IP 3장 주소체계와 데이터 정렬 소켓에 할당되는 IP주소와 PORT번호 인터넷 주소(Internet Address)인터넷 상에서 컴퓨터를 구분하는 목적으로 사용되는 주소.4바이트 주소체계인 IPv4와 16바이트 주소체계인 IPv6가 존재한다.네트워크 주소와 호스트 주소로 나뉜다. 네트워크 주소를 이용해서 네트워크를 찾고, 호스트주소를 이용해서 호스틀 구분한다. 네트워크 주소(네트워크ID)란 네트워크의 구분을 위한 IP주소의 일부를 말한다. WWW. SEM I. COM 이라는 회사의 무대리에게 데이터를 전송한다고 가정해보자 . 그런데 이 회사의 컴퓨터는 하나의 로컬 네트워크로 연결되어있다. 그렇다면 먼저 SEMI . COM 의 네트워크로 데이터를 전송하는 것이 우선이다. 즉,처음부터 4바이트 IP주소 전부를 참조해서 무대리의 컴퓨터로 .. TCP&IP 2024. 9. 3. TCP/IP 2.장 소켓의 프로토콜과 그에 따른 데이터 전송 특성 프로토콜이란?프로토콜이란 대화에 필요한 통신규약을 의미합니다. "컴퓨터 상호간의 대화에 필요한 통신규약"쉽게말해서 프로토콜은 약속이다. 서로 데이터를 주고 받기 위해서 정의해 놓은 약속을 뜻합니다. 소캣의 생성#include int socket(int domain, int type, int protocol); 성공시 파일 디스크립터, 실패 시 -1 반환 domain 소켓이 사용할 프로토콜 체계(Protocol Family)정보 전달. type 소켓의 데이터 전송방식에 대한 정보 전달. protocol 두 컴표터간 통신에 사용되는 프로토콜 정보 전달. 프로토콜 체계(Protocol Family)소켓이 통신에 사용하는 프로토콜도 부류가 나뉩니다.그리고 socket함수의 첫번째 인자.. TCP&IP 2024. 9. 3. TCP/IP 1.장 네트워크 프로그래밍과 소켓의 이해 네트워크 프로그래밍과 소켓의 이해 soket() 소켓은 쉽게 말하면 전화기다. soket()이란 함수가 소켓을 생성 한다는 정도로만 이해하면 됩니다. #include int socket(int domain, int type, int prtocol);성공 시 파일 디스크립터, 실패시 -1 반환 bind()함수호출을 통해서 소켓에 주소정보까지 할당한다고 이해하면 됩니다.#includeint bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);성공시 0, 실패시 -1 반환 listen()소켓도 연결요청이 가능한 상태가 되어야 사용이 가능한데, 이 함수는 소켓을 연결요청이 가능한 상태가 되게합니다.#includint listen(int sockfd, in.. TCP&IP 2024. 9. 3. Tcp/ip 사전 학습 메모리의 기본구조포인터가 어느 구조에 있는 메모리인지 알아야 한다. 이전 까지 공부한 것은 스택 동적 할당을 사용한 후 부터는 '힙'이라는 메모리를 사용하게 됨. 메모리 구조. 3차원 배열의 구조 포인터 자료형과 일반 자료형의 차이점 포인터변수의 역참조 포인터 연산 포인터의 연산시 메모리의 구조 배열 선언을 한 후, 그 배열의 주소값을 바꿀 수는 없다. 배열의 이름은 포인터 상수로 지정되기 때문. 코드의 구조 정적할당과 동적할당의 구분 필요! 동적할당 후 free를 이용하여 동적할당을 해제하는 이유? 동적할당을 해제해주지 않으면, 그 주소값을 잃어버리고, 잃어버린 주소값은 두번다시 찾을 수 없다.운영체제는 해제해주지 않으면, 그 주소값이 저장된 공간을 사용할 수 있다는 것을 인지하지 못한다.그.. TCP&IP 2024. 9. 2. 이전 1 다음