본문 바로가기

네트워크36

Chapter 08 - 도메인 이름과 인터넷 주소 08-1 : Domain Name System 도메인 이름 : IP 주소에 부여되는 별칭(가상의 주소) DNS(Domain Name System) : IP주소와 도메인 이름 사이에서의 변환을 수행하는 시스템 DNS 서버 : 도메인 이름을 IP 주소로 변환 모든 컴퓨터에는 디폴트 DNS 서버의 주소가 등록되어있음 브라우저 주소창에 도메인 이름 입력시 해당 도메인 이름의 IP주소를 디폴트 DNS 서버를 통해 얻게됨 ping 명령어로 도메인 이름에 해당하는 IP 주소를 얻을 수 있음 nslookup 명령어로 디폴트 DNS 서버의 주소를 얻을 수 있음 호스트가 문의한 도메인 이름의 IP 주소를 디폴트 DNS 서버가 모를 경우 해당 요청에 대해 한단계 상위 계층에 있는 DNS 서버에 질의함 최상위 Rood DNS.. 2023. 2. 24.
Chapter 07 - 소켓의 우아한 연결종료 07-1 : TCP 기반의 Half-Close 리눅스의 close()와 윈도우의 closesocket() 함수는 완전종료로써 데이터의 송수신을 완전히 끊어버림을 의미 이러한 송수신 과정에서의 일방적 연결종료로 인해 문제가 생길 수 있으므로 일부 스트림만 종료시키는 Half-close 방법을 사용할 수 있음 스트림(Stream) : 두 호스트가 소켓을 통해 상호간에 데이터 송수신이 가능한 상태 스트림은 단방향을 가리키기 때문에 양방향 통신을 위해서는 두 개의 스트림이 필요 즉, 소켓 연결시 각 호스트별로 입력 스트림과 출력 스트림이 생성 Half-close에는 shutdown() 함수를 사용 #include int shutdown(int sock, int howto); // 성공시 0, 실패시 -1 반환 .. 2023. 2. 24.
Chapter 06 - UDP 기반 서버 / 클라이언트 06-1 : UDP에 대한 이해 UDP는 신뢰할 수 없는 전송방법을 제공하지만 구조가 간결하기 때문에 성능이 우월함 UDP는 TCP와 달리 흐름제어(Flow Control)가 존재하지 않음 호스트로 수신된 패킷을 포트정보를 참조하여 최종 목적직인 UDP 소켓의 전달하는 것이 UDP의 가장 중요할 역할 실시간 영상 및 음성과 같은 멀티미디어 데이터는 일부가 손실되어도 크게 문제가 되지 않고, 실시간 서비스이므로 속도가 중요하기 때문에 UDP의 사용을 고려해볼만함 송수신 데이터량이 적으면서 연결이 잦은 경우에는 UDP가 TCP보다 훨씬 빠르고 효율적 06-2 : UDP 기반 서버 / 클라이언트의 구현 UDP에서는 TCP와 달리 서버와 클라이언트가 연결된 상태로 데이터를 송수신하지 않음 따라서 listen().. 2023. 2. 24.
Chapter 05 - TCP 기반 서버 / 클라이언트 2 05-1 : 에코 클라이언트의 완벽 구현! 에코 클라이언트의 경우 클라이언트가 수신해야 할 데이터의 크기를 미리 알고있음 따라서 데이터가 전부 전송될 타이밍에 맞추어 read() 함수를 호출하는 것으로 기존의 문제점을 해결 // echo_client2.cpp ... while (1) { cout 2023. 2. 24.