윤성우 55

TCP/IP 소켓 프로그래밍 3장 내용 확인문제

1. IP주소 체계인 IPv4와 IPv6의 차이점은 무엇인가? 그리고 IPv6의 등장배경은 어떻게 되는가? >IPv4는 4바이트 주소체계, IPv6는 16바이트 주소체계이다. IPv4 기반의 IP주소 고갈을 염려하여 IPv6가 등장하게 되었다. 2. 회사의 로컬 네트워크에 연결되어 있는 개인 컴퓨터에 데이터가 전송되는 과정을, IPv4의 네트워크 ID와 호스트 ID, 그리고 라우터의 관계를 기준으로 설명하여라. >데이터 전송과정의 첫번째는 속한 목적지가 속한 네트워크로의 데이터 전송이다. 이 때 사용되는 것이 IP 주소 중의 네트워크 ID라고 불리는 부분이다. 네트워크 ID란 네트워크를 구분할 수 있는 주소 정보로써 이를 통해서 해당 네트워크로 데이터가 전송된다. 그리고 이렇게 전송된 데이터는 네트워크를..

TCP/IP 소켓 프로그래밍 2장 내용 확인문제

1.프로토콜이란 무엇을 의미하는가? 그리고 데이터의 송수신에 있어서 프로토콜을 정의한다는 것은 어떠한 의미가 있는가? >프로토콜은 통신의 방법을 약속해 놓은 통신규약을 의미한다. 따라서 프로토콜을 정의한다는 것은 데이터 송수신에 필요한 약속을 정의한다는 의미이다. 2.연결지향형 소켓인 TCP 소켓의 특성 세가지를 나열하라 >a. 중간에 데이터가 소멸되지 않고 목적지로 전송된다. b. 전송 순서대로 상대 호스트로 데이터가 수신된다. c. 전송되는 데이터의 경계가 존재하지 않는다.(여러 차례 나누어서 데이터를 보내도 한번에 데이터를 수신할 수 있다.) *반면, UDP 소켓 같은 경우 여러 차례 나누어서 데이터를 보내면 여러 차례 나누어서 데이터를 수신해야 한다. (전송되는 데이터의 경계가 존재) 3. 다음 ..

TCP/IP 소켓 프로그래밍 1장 내용확인 문제

1.네트워크 프로그래밍에서 소켓이 담당하는 역할은 무엇인가? 그리고 소켓이라는 이름이 붙인 이유는 어디에 있는가? >소켓은 물리적으로 연결되어있는 호스트간 데이터 송수신에 필요한 프로토콜로부터 프로그래머를 자유롭게 하는 데이터 송수신의 매개체이다. 소켓은 인터넷이라는 거대한 네트워크 망으로의 연결 도구로 사용되기 때문에 소켓이라는 이름이 붙게 된 것이다. 2. 서버 프로그램에서는 소켓생성 이후에 listen 함수와 accept 함수를 차례대로 호출한다. 그렇다면 이들의 역할은 각각 무엇인지 비교해서 설명해보자 >listen 함수가 호출되면 소켓은 연결요청이 가능하게 된 상태이다. 그러나 실제 연결이 완료되려면 accept 함수가 호출되어야한다. 3.리눅스의 경우 파일 입출력 함수를 소켓 기반의 데이터 입..

리눅스 기반 서버, 클라이언트 예제

윈도우에서는 winsock2.h 헤더파일을 사용하는 것과 달리 리눅스는 세개의 헤더파일을 사용합니다.1. unistd.h2. arpa/inet.h3. sys/socket.h 앞서 리눅스는 내부적으로 소켓도 파일로 취급하기 때문에, 파일을 생성하건 소켓을 생성하건 파일 디스크립터가 반환됩니다.마찬가지로 윈도우에서도 시스템 함수의 호출을 통해서 파일을 생성할 때 '핸들(handle)'이라는 것을 반환한다.즉, 리눅스에서의 파일 디스크립터와 윈도우의 핸들은 함수만 다르지 거의 같다고 볼 수 있다.하지만 윈도우 같은 경우 리눅스와는 달리 파일 핸들과 소켓 핸들을 구분하고 있습니다.(가장 큰 차이점) 서버 프로그램#include #include #include #include #include #include vo..

윈도우 기반 서버, 클라이언트 예제

예제를 작성하기 전에 TCP/IP 프로그래밍을 하기 위해서는 winsock2.h 헤더파일이 포함되어야 합니다. 이를 위해서는 ws2_32.lib 라이브러리를 링크시켜야 합니다. (프로젝트 '속성'->'구성 속성'->'입력'->'추가 종속성'->ws2_32.lib 추가) 이를 마치고 나면 프로그램을 작성하고 실행하시면 되는데 우선 서버 프로그램 예제부터 실행하시고 클라이언트 예제를 실행하셔야 정상적으로 작동합니다. #include #include #include void ErrorHandling(char *message); int main(int argc, char *argv[]) { WSADATA wsaData; SOCKET hServSock, hClntSock; SOCKADDR_IN servAddr, ..