목록Server&Network/TCP&IP (14)
방프리
IOCP란? - 입출력 완료를 쓰레드에 알려주는 모델. Completion Port에 들어온 입출력 통보를 Completion queue에 저장하고, queue에 저장된 데이터를 미리 생성한 Worker Thread에서 처리하는 방식으로 되어 있다. TCP/IP 열혈강의 책의 Iocp Echo 프로그램을 기반으로 제작하였다. 관련 소스 코드 https://github.com/deahoum/IocpChat deahoum/IocpChat Chatting program used by Iocp connection. Contribute to deahoum/IocpChat development by creating an account on GitHub. github.com * Echo 프로그램과 비교하면서 분석해야..
01. 다음 중 Time-wait 상태에 대해서 잘못 설명한 것을 모두 고르면? a. Time-wait 상태는 서버프로그램에서 생성한 소켓에서만 발생한다. b. 연결종료의 Four-way handshaking 과정에서 먼저 FIN 메시지를 전달한 소켓이 Time-wait 상태가 된다. c. 연결요청 과정에서 전송하는 SYN 메시지의 전송순서에 따라서 Time-wait 상태는 연결종료와 상관없이 일어날 수 있다. d. Time-wait 상태는 불필요하게 발생하는 것이 대부분이므로, 가급적이면 발생하지 않도록 소켓의 옵션을 변경해야 한다. a : Time-wait 상태는 서버, 클라이언트 구분 없이 먼저 연결의 종료를 요청하면 해당 소켓은 반드시 Time-wait 상태를 거친다. 하지만 클라이언트의 경우엔 ..
01. 다음 중 DNS(Domain Name System)에 대한 설명으로 잘못된 것을 모두 고르면? a. DNS가 존재하기 때문에 IP를 대신해서 도메인 이름을 사용할 수 있다. b. DNS 서버는 사실 라우터를 의미한다. 라우터가 도메인 이름정보를 참조하여 데이터의 진로를 결정하기 때문이다. c. 하나의 DNS 서버에 모든 도메인 정보가 다 등록되어 있지는 않다. 그러나 등록되지 않은 도메인의 IP주소도 얻어올 수 있다. d. DNS 서버는 운영체제에 따라서 구분이 된다. 즉, 윈도우 운영체제용 DNS 서버와 리눅스용 DNS 서버는 구분이 된다. b : DNS 서버는 일종의 분산 데이터 시스템으로 도메인 이름 정보를 참조하여 IP를 알아낸다. d : DNS 서버는 운영체제에 따라 구분되지 않는다. 0..
01. TCP에서의 스트림 형성이 의미하는 바가 무엇인지 설명해보자. 그리고 UDP에서도 스트림이 형성되었다고 할 수 있는 요소가 있는지 없는지 말해보고, 그 이유에 대해서도 설명해보자. 스트림 형성은 두 소켓이 연결되어서 데이터의 송수신이 가능한 상태를 말한다. 소켓 스트림은 한쪽 방향으로만 데이터가 이동 가능하기 때문에 일방적으로 데이터를 송신하는 UDP에서도 스트림잉 형성이 가능하다. 02. 리눅스에서의 close 함수 또는 윈도우에서의 closesocket 함수 호출은 일방적인 종료로써 상황에 따라서 문제가 되기도 한다. 그렇다면 일방적인 종료가 의미하는 바는 무엇이며, 어떠한 상황에서 문제가 되는지 설명해보자. 일방적으로 종료한다는 것은 데이터가 송수신 상태에서 중간에 스트림이 끊길 수도 있다는..
01. TCP보다 UDP가 빠른 이유는 무엇인가? 그리고 TCP는 데이터의 전송을 신뢰할 수 있지만 UDP는 신뢰할 수 없는 이유는 또 무엇인가? 간결한 구조와 일방적인 데이터 송신의 구조이기 때문에 굳이 상대방에서 도착했는지 확인하지 않고 보내기 때문에 TCP보다 빠르다. 하지만 신뢰성 있는 데이터 송수신을 위한 흐름제어가 없다. 02. 다음 중 UDP의 특성이 아닌 것을 모두 고르면? a. UDP는 TCP와 달리 연결의 개념이 존재하지 않는다. 따라서 반드시 TCP에서 보인 것처럼 1대 1의 형태로 데이터를 송수신하지 않을 수 있다. b. UDP 기반으로 데이터를 전송할 목적지가 두 군데라면, 총 두 개의 소켓을 생성해야 한다. c. UDP 소켓은 TCP 소켓이 할당한 동일한 번호의 PORT에 재할당..
01. TCP 소켓의 연결설정 과정인 Three-way handshaking에 대해서 설명해 보자. 특히 총 3회의 데이터 송수신이 이뤄지는데, 각각의 데이터 송수신 과정에서 주고 받는 데이터에 포함된 내용이 무엇인지 설명해보자. 소켓과의 연결, 데이터 송수신 그리고 연결종료의 과정을 Three-way handshaking이라 하며, 통신이 이뤄지는 과정에서 SYN과 ACK라는 데이터를 포함한다. 02. TCP는 데이터의 전송을 보장하는 프로토콜이다. 그러나 인터넷을 통해서 전송되는 데이터는 소멸될 수 있다. 그렇다면 TCP는 어떠한 원리로 중간에 소멸되는 데이터의 전송까지 보장을 하는 것인지 ACK와 SEQ를 대상으로 설명해보자. TCP는 SEQ의 데이터를 통해 패킷이 제대로 송수신되었는지 확인한다. ..
01. TCP/IP 프로토콜 스택을 4개의 계층으로 구분해보자. 그리고 TCP 소켓이 거치는 계층구조와 UDP 소켓이 거치는 계층구조의 차이점을 설명해보자. 프로토콜 스택은 Application 계층, TCP/UDP 계층, IP 계층, 그리고 LINK 계층으로 나뉜다. TCP 소켓과 UDP 소켓이 거치는 계층구조는 같으니 단지 TCP 계층인지 UDP 계층으로 가는지만 다를 뿐이다. 02. TCP/IP 프로토콜 스택 중에서 LINK 계층과 IP 계층이 담당하는 역할이 무엇인지 설명해보자. 그리고 이 둘의 관계도 함께 설명해보자. LINK는 물리적인 영역이다. 예를 들어 LAN, WAN, MAN과 같은 네트워크 표준과 관련된 프로토콜을 정의하는 영역이고, IP 계층은 목적지로 데이터를 전송하기 위한 중간 경..
1. IP주소 체계인 IPv4와 IPv6의 차이점은 무엇인가? 그리고 IPv6의 등장배경은 어떻게 되는가? IP주소의 표현에 사용되는 바이트 크기가 다르다. 2010년을 전후로 IP주소가 모두 고갈될 것을 염려하여 만들어진 표준인데 아직까지 사용 중이다. 2. 회사의 로컬 네트워크에 연결되어 있는 개인 컴퓨터에 데이터가 전송되는 과정을, IPv4의 네트워크 ID와 호스트 ID, 그리고 라우터의 관계를 기준으로 설명하여라. 처음 4바이트 IP주소 중에서 네트워크 주소만을 참조해서 회사 네트워크에 전송 후 호스트 주소를 참조하여 개인 컴퓨터에 데이터가 전송이 된다. 여기서 라우터는 네트워크 주소를 통해서 데이터를 받은 후 호스트 주소를 가지고 개인 컴퓨터에 데이터를 전송하는 역할을 한다. 3. 소켓의 주소는..