CS/Network 55

[Chapter 14] DNS (DNS 프로토콜)

다른 인터넷 프로토콜 처럼 DNS 호스트도 클라이언트와 서버 기능을 동시에 수행한다. 질의 요청을 수행하는 호스트는 해석기를 가지고 있어야 한다. 네임 서버도 다른 네임 서버에 정보를 요청할 수 있으므로 해석기를 사용한다. 해석기는 DNS 서비스의 네트워크 트래픽을 줄이려고 다양한 형식으로 캐시 데이터를 활용한다.DNS 메시지DNS 프로토콜을 사용하는 호스트는 DNS 데이터를 요청하거나, 반대로 응답할 때 DNS 메시지를 전송한다. DNS 프로토콜은 DNS 요청을 하는 호스트와 요청에 대한 응답 기능을 수행하는 호스트 사이의 상호 동작을 지원하기 위해 질의 메시지와 응답 메시지를 정의한다.DSN 메시지의 구조DNS 요청이 필요하면 DNS 메시지에 내용을 기록한다. 모두 다섯 부분으로 구성된 DNS메시지에..

CS/Network 2025.02.18

[Chapter 14] DNS (네임 서버와 해석기)

DNS 서비스에서 가장 중요한 것은 분산 네트워크 서비스의 형태를 지원하는 것이다.인터넷에서 네임 서버는 여러 곳에 흩어져 있다. 이들 서버는 전체 네임스페이스의 일부 정보를 전적으로 책임지며, 유기적인 연관 관계를 통해 네임 서버의 정보를 일관성 있게 관리한다.해석기DNS 서비스는 클라이언트-서버 구조로 설계되었다. 도메인 이름과 호스트  주소의 변환 정보를 원하는 네트워크 응용 프로그램은 해석기(Reslover)라 불리는 DNS 클라이언트에 정보 제공을 요청한다. 해석기는 가장 가까운 네임 서버와 접촉해 정보 제공을 요청하고 해당 서버에 정보가 없으면 다른 네임 서버와 접촉해 정보를 찾는 과정을 반복한다.ex) 도메인 이름 www.korea.co.kr과 관련된 IP 주소를 얻는 과정은 해석기로부터 시..

CS/Network 2025.02.18

[Chapter 14] DNS (도메인 네임 스페이스)

DNS는 거대한 분산 데이터베이스 시스템이며, 도메인 네임 스페이스는 이 DNS가 저장, 관리하는 계층적 데이터베이스이다.도메인 네임 스페이스는 최상위 호스트인 루트가 존재하고 그 밑으로 인터넷에 연결된 모든 호스트가 트리 형태로 연속해서 이어진 계층 구조이다.도메인 네임 스페이스의 호스트는 크기가 최대 63바이트인 레이블을 이름으로 갖는데 루트 호스트는 크기가 0인 널 레이블(null Label)을 가지므로 이름이 없는 것이나 마찬가지이다.도메인 이름은 점(.)으로 구분한 호스트 레이블의 연속으로 표현한다. ex)www.korea.co.kr이라는 도메인 이름은 루트 밑으로 kr, co, korea, www 호스트가 순차적으로 연결된 상태를 의미하고, www.korea.co.kr은 트리 구조의 제일 밑에..

CS/Network 2025.02.18

[Chapter 14] DNS (DNS 서비스)

인터넷에 연결된 모든 컴퓨터는 32비트 숫자로 구성된 고유의 IP 주소를 부여받는다. 이 숫자가 IP 프로토콜의 패킷 속에 기록되어 적절한 경로를 선택하는 길잡이 역할을 한다.ip 주소는 IP 프로토콜이 효율적으로 동작할 수 있도록 고려하여 설계되었지만 일반 사용자 입장은 중요하게 고려되지 않았다.호스트 분배 작업을 인터넷의 규모가 커지고 더 이상 수작업으로 관리할 수 없게 되었는데 이를 계기로 DNS(Domain Name System)서비스가 탄생하게 되었다.IP 주소 체계인터넷에서 32비트의 이진수로 된 IP 주소로 호스트를 구분한다. IP 주소는 32비트의 주소를 네 부분으로 나누어 8비트의 십진수인 www.xxx.yyy.zzz  형태로 표현한다.Ex. 211.223.201.29IP프로토콜의 유니캐..

CS/Network 2025.02.18

[Chapter 13] 웹 WWW(CGI)

HTML로 웹 문서를 작성하면 클라이언트에서 실행되는 웹 브라우저 서버의 정보를 일방적으로 받아들이는 단방향 통신으로 동작한다. 사용자가 입력하는 정보를 처리하려면 CGI(Common Gateway Interface)기능이 필요하다.CGI는 새로운 언어의 개념이 아니다. C, C++, Shell, Perl 등과 같은 언어로 작성되어 서버에서 실행되는 프로그램이다.HTML 문서에서 사용자의 입력을 서버로 전달하는 기능은 태그를 이용해 구현된다.태그 속성속성설명ACTION사용자의 입력 데이터를 처리할 CGI 프로그램의 URL 주소 지정METHOD사용자 데이터를 넘겨주는 방식 지정- GET 방식: 데이터를 프로그램 환경 변수로 넘김- POST 방식: 표준 입력 사용ENCTYPE데이터 형식 지정웹 브라우저 화면..

CS/Network 2025.02.18

[Chapter 13] 웹 WWW(HTTP)

HTTP(HyperText Transfer Protocol)는 분산 하이퍼미디어 환경에서 빠르고 간편하게 데이터를 전송하는 프로토콜이다. HTTP는 80번 포트를 사용하도록 정의된다. 따라서 HTTP 서버는 80번 포트에서 대기하고, 클라이언트는 TCP를 사용해 연결을 설정한다.웹 브라우저는 사용자가 요청하는 자원을 가리키는 URL 주소에 사용할 프로토콜을 표현한다. 즉, URL 주소의 첫 번째 부분을 사용해 서비스 유형을 표현한다. ex) HTTP 서버로부터 웹 정보를 얻으려면 http://www.korea.co.kr과 같이 URL 주소에 HTTP를 사용한다고 명시해야 한다. FTP 서버에 접근하려면 ftp://www.korea.co.kr, 텔넷 서버를 사용하려면 telnet://www.korea.co..

CS/Network 2025.02.18

[Chapter 13] 웹 WWW(HTML)

HTML은 웹 브라우저의 어느 위치에 어떤 데이터를 어떤 모양으로 표시하는 지를 나타낸다. 즉, 화면의 출력 형식을 기술하는 언어이다.HTML로 작성한 문서는 서버에 보관되고, 클라이언트는 이 문서의 내용을 회신받아 웹 브라우저에 출력한다.출력 결과는 HTML로 기술된 방식을 따라야 하므로 웹 브라우저는 HTML을 해석하는 프로그램이라 할 수 있다.HTML 문서의 구조HTML(HyperText Markup Language)은 웹 문서를 작성하는 언어이며, HTML 문서는 태그로 시작하여 태그로 종료한다.전체 내용은 크게 헤더의 두 부분으로 구성되며, 헤더는 와 태그를 사용하고, 바디는 와태그를 사용한다.은 문서 제목으로 웹 브라우저 상단에 표시된다. HTML의 예 HTML 문서의 내용 ..

CS/Network 2025.02.18

[Chapter 12] 소켓을 이용한 네트워크 프로그래밍 (서버-클라이언트 프로그래밍)

일반적으로 서버-클라이언트 모델은 네트워크 서비스를 제공하는 서비스 제공자와 서비스 이용자 사이의 관계를 표현한다. 서비스를 제공하는 프로그램을 서버 프로세스, 서버와 연결을 시도하여 서비스를 제공받는 프로그램을 클라이언트 프로세스라 한다. 연결형 서비스소켓은 네트워크 통신을 위한 소프트웨어 교신점이 된다.두 개의 독립 프로세스가 네트워크를 통해 통신하려면 논리적인 연관 관계를 맺어주는 소켓이 필요하다. 소켓을 이용한 전형적인 서버-클라이언트 프로그램을 작성하는 방법과 같다. 서버와 클라이언트의 동작서버 프로세스는 다수의 클라이언트에 공개되는 Well-known 포트로 자신의 소켓 주소를 설정한 후에, 클라이언트의 연결 요청을 기다린다.클라이언트 요구에 따라 연결이 설정되면 서버 프로세스가 제공하는 서비..

CS/Network 2025.02.17

[Chapter 12] 소켓을 이용한 네트워크 프로그래밍 (소켓 시스템 콜)

sd = socket(AF_UNIX, SOCK_STREAM, 0); // 유닉스 주소 체계의 연결형 서비스sd = socket(AF_UNIX, SOCK_DGRAM, 0); // 유닉스 주소 체계의 비연결형 서비스sd = socket(AF_INET, SOCK_STREM, 0); // 인터넷 주소 체계의 연결형 서비스sd = socket(AF_INET, SOCK_DGRAM, 0); // 인터넷 주소 체계의 비연결형 서비스운영 체제에서 구현되는 전송 계층 프로토콜인 TCP와 UDP를 사용하려면 소켓 시스템 콜이라는 라이브러리 함수를 이용한다.소켓은 통신을 원하는 프로세스에 할당되는 자원이며, 고유의 소켓 주소가 부여된다.일반적으로 소켓을 포트라고도 부른다. 그리고 각 함수의 사용법에서 해당 함수 위의 헤더 파..

CS/Network 2025.02.17

[Chapter 12] 소켓을 이용한 네트워크 프로그래밍 (소켓의 주소 체계)

소켓은 자체에 어떤 기능이 있는 것이 아니고, 운영 체제에서 제공하는 통신 프로토콜을 편리하게 사용할 수 있도록 도와주는 역할을 한다. 따라서 소켓 주소는 사용하는 프로토콜의 종류에 다라 여러 형태의 주소 체계를 지원한다.소켓의 주소 체계소켓은 프로토콜 종류에 따라 다양한 방식으로 주소를 부여할 수 있다. 일반 프로그래밍 환경에는 AF_UNIX와 AF_INET의 소켓 주소 체계를 많이 사용한다.유닉스 주소 체계AF_UNIX로 표시되는 유닉스 주소 체계는 하나의 호스트 내부에서 실행되는 프로세스 사이의 통신을 지원하며, 사용하는 주소 체계는 파일 시스템의 경로명을 기반으로 한다.ex)유닉스 주소체계를 지원하는 sockaddr_un 구조체의 예시, 두 개의 필드를 사용한다. sun_family 필드는 유닉스..

CS/Network 2025.02.17