500 likes | 705 Views
컴퓨터 네트워크. 11 주차 . 응용층 프로토콜 I. 2013 년도 2 학기 11 주차. DNS 의 필요성. 인터넷에서 사용자가 입력하는 이름을 IP 주소로 , 또는 IP 주소를 이름으로 변환시켜주는 시스템이 필요하다 . 과거의 방법 각 호스트마다 인터넷 상의 호스트 이름과 IP 주소를 기록한 호스트 파일 ( 파일명 : hosts ) 을 가지고 있었다 . 인터넷의 규모가 커짐에 따라 호스트 파일의 크기가 너무 커지고 , 갱신이 불가능해졌다 . 현재의 방법
E N D
컴퓨터 네트워크 11주차. 응용층 프로토콜 I 2013년도 2학기 11주차
DNS의 필요성 • 인터넷에서 사용자가 입력하는 이름을 IP 주소로, 또는 IP 주소를 이름으로 변환시켜주는 시스템이 필요하다. • 과거의 방법 • 각 호스트마다 인터넷 상의 호스트 이름과 IP 주소를 기록한 호스트 파일(파일명: hosts)을 가지고 있었다. • 인터넷의 규모가 커짐에 따라 호스트 파일의 크기가 너무 커지고, 갱신이 불가능해졌다. • 현재의 방법 • 전체 호스트 파일을 서로 다른 여러 서버에 나누어 저장한 후 일반 호스트는 필요한 정보를 가지고 있는 가장 가까운 서버와 통신하여 IP 주소 또는 호스트 이름을 가져온다. • 이러한 system을 도메인 이름 시스템 (DNS, Domain Name System)이라 함
이름공간(Name Space) • 각 주소가 유일한 것처럼 이름도 유일해야 한다. • 편평한 이름 공간 • 구조적인 아닌 이름 • 이름이 겹치지 않으려면 중앙에서 전체를 관리해야 할 필요가 있어서 인터넷에서 사용하기 어렵다. • 계층적 이름 공간 • 각 이름을 여러 부분으로 나누어 만든다. • 첫 번째 부분 – 조직의 성격 • 두 번째 부분 – 조직의 이름 • 세 번째 부분 – 조직 내의 부서 • 중앙에서는 이름의 전체가 아니라 일부만 관리하면 됨
도메인 이름 공간(Domain Name Space) • 도메인 이름 공간은 0에서 127까지의 최대 128 레벨을 갖는 역트리(reverse-tree) 형태로 구성됨 • 라벨 • 트리의 각 노드는 라벨을 가지며, 최대 63개의 문자로 구성될 수 있는 문자열임. • 한 노드에 연결된 자식 노드는 다른 라벨을 갖도록 하여 똑같은 이름이 만들어지지 않도록 한다.
도메인 이름(Domain Name) • 도메인이름은 노드에서 루트(root)방향으로 읽어서 만든다. • 루트의 라벨은 null임 • 완전한 도메인 이름은 점(.)으로 끝난다.
FQDN과 PQDN • FQDN (Fully Qualified Domain Name) • 라벨이 널(null) 문자열로 끝나는 것 • FQDN은 호스트의 전체 이름이 들어 있는 도메인 이름 • 항상 점(.)으로 끝남 • PQDN (Partially Qualified Domain Name) • 라벨이 널 문자열로 끝나지 않는 것 • 노드로부터 시작하나 루트에 도달하지 않는 것 • 해석할 이름이 클라이언트와 동일한 사이트에 있을 경우 사용
도메인(Domain) • 도메인 이름 공간의 서브 트리(sub-tree) • 도메인 이름은 서브 트리의 최상위에 있는 노드의 도메인 이름임 • 도메인은 다시 서브 도메인으로 나누어 질 수 있음
이름공간(Name Space)의 분산 • 도메인 이름 공간을 하나의 컴퓨터에 저장하는 것은 비효율적이고 신뢰적이지 못하다. • 이름 서버의 계층화 • 도메인 이름 공간를 DNS 서버라는 많은 컴퓨터에 분산시켜 저장 • 도메인 별로 DNS 서버를 둔다.
영역(Zone) • DNS 서버가 책임이나 권한을 갖는 곳 • DNS 서버는 영역 파일(zone file)이라고 하는 데이터베이스를 가지며 그 도메인 내의 모든 노드정보를 유지 • DNS 서버가 도메인에 대한 책임을 맡고 이를 더 작은 도메인으로 나누지 않으면 도메인과 영역은 같음 • DNS 서버가 도메인을 서브 도메인으로 나누고 일부의 권한을 이양하면 도메인과 영역이 달라짐
루트 서버와 일차 및 이차 서버 • 루트 서버(root server) • 전체 트리를 구성하는 영역들의 서버 • 전 세계에 13개의 루트 서버가 있음 • 일차 서버(primary server) • 자신이 권한을 갖는 영역에 대한 파일을 저장한 서버 • 스스로 영역 파일을 생성, 관리, 갱신함 • 이차 서버(secondary server) • 다른 서버로부터 영역에 관한 완전한 정보를 받아 로컬 디스크에 파일로 저장하고 있는 서버 • 이차 서버는 일차 서버로부터 갱신된 정보를 받아옴 • 하나의 서버가 실패하면 다른 서버가 대신할 수 있도록 중복된 데이터를 유지하는 것임
Internet에서의 DNS • 인터넷 도메인의 3가지 섹션 • 일반 도메인(generic domain) • 국가 도메인(country domain) • 역 도메인(inverse domain)
일반 도메인(Generic Domain) • 초기에는 3글자로 이루어진 7개의 레이블이 있었음
국가 도메인(Country Domain) • 두 문자로 국가의 약자를 표시 • kr: Korea • cn: China • us: United States
역 도메인 (Inverse Domain) • 주소를 이름으로 대응시키는데 사용 • 역(inverse) 포인터(PTR) 질의라 함 • 역사적인 이유로 이해 arpa라는 첫번째 도메인 노드와 in-addr이라는 두번째 레벨의 도메인 노드가 있음 • 밑에서부터 위로 읽어가는 과정을 따르면 IP 주소가 거꾸로 읽힌다. • 예: 132.34.45.121 121.45.34.132.in-addr.arpa
변환(Resolution) • 이름-주소 변환 • 이름을 주소로 또는 주소를 이름으로 대응시키는 것 • 이름을 주소로 대응 • 대부분의 클라이언트는 도메인 이름을 서버에 주고 대응되는 주소를 요청하는데, 보통 로컬 DNS 서버에 질의를 하고, 로컬 서버가 질의를 해결하지 못하면 다른 서버를 참조하게 함 • 주소를 이름으로 대응 • 클라이언트는 IP 주소를 보내고 도메인 이름을 질의(PTR 질의) • 역 도메인사용 • 질의에는 IP 주소가 반대로 되어 있어야 하고 in-addr과 arpa가 추가되어야 함 • 예) 132.34.45.121을 질의하려면 121.45.34.132.in-addr.arpa를 질의
귀환적 변환(Recursive Resolution) • 서버가 도메인 이름에 대한 권한이 없을 시 다른 서버(주로 부모서버)에게 요청을 보냄 • 클라이언트가 귀환적 응답을 요구할 경우 이루어 짐
반복 변환(Iterative Resolution) • 클라이언트가 귀환적 응답을 요청하지 않으면 반복 변환이 이루어짐 • 서버가 질의를 해석하지 못하면 해석할 수 있을 것 같은 서버의 IP를 주소를 클라이언트에게 줌
캐싱(Cashing) • 서버가 한 클라이언트의 요청을 처리하면서 다른 서버에게 요청해서 알아낸 주소 정보는 서버의 캐시 메모리에 일정 기간 보관 • 만약 다른 클라이언트가 동일한 주소 정보를 요청할 경우 캐시 메모리를 검색해서 알려줌. 단, 응답을 인증할 수 없다는 표시(unauthoritative)를 하여 보냄 • 캐싱(cashing)의 장점 • 주소 변환 속도를 높임 • 캐싱(cashing)의 단점 • 잘못된 정보를 줄 수도 있음 • 캐싱(cashing)의 문제를 해결하기 위한 방안 • 주소 정보에 수명(TTL, time-to-live)을 추가(보통 초 단위)하여 TTL이 초과되면 삭제
DDNS와 캡슐화(Encapsulation) • DDNS • 동적 도메인 이름 시스템(Dynamic Domain Name System, DDNS) • 새로운 호스트의 추가, 제거, IP 주소 변경 시 자동으로 이루어지도록 하는 것 • DHCP 서버가 IP 주소를 할당하면, 그 정보를 일차 서버에게 전송하고, 일차 서버는 그 정보를 다시 이차 서버에게 전달 • 보안을 위해서 이 과정에서 인증이 필요함 • 캡슐화(encapsulation) • DNS는 UDP 또는 TCP를 사용 • 응답메시지가 512바이트 이하이면 UDP • 응답메시지가 512바이트 보다 크면 TCP • 어느 경우든 DNS 서버의 포트 번호는 53
11.2 이메일(Electronic Mail) • 이메일 주소 • Local part: 사용자 우편함 • Domain name: 수신자 이메일 서버의 도메인 이름
SMTP • SMTP(Simple Mail Transfer Protocol) • 인터넷에서 이메일을 전송하기 위한 표준 프로토콜 • SMTP 서버 포트번호: 25번 • 7비트의 아스키 형식의 메시지만 보낼 수 있음 한글처럼 7비트 아스키로 표현되지 못하는 언어나, 이진 파일, 이미지, 오디오/비디오 데이터는 보낼 수 없음
MIME • MIME (Multipurpose Internet Mail Extension) • 아스키(ASCII)가 아닌 데이터를 SMTP를 이용해서 보낼 수 있게 해주는 프로토콜 • MIME은 ASCII가 아닌 데이터를 ASCII로, 또는 그 반대의 변환을 수행함
Email Delivery 마이크로소프트 아웃룩과 같은 메일 클라이언트를 사용할 때
Mail Access Protocol • 수신자가 메일박스로부터 메일을 가져갈 때 쓰이는 프로토콜 • POP3와 IMAP4가 있음 • POP3(Post Office Protocol, Version 3) • 클라이언트가 서버의 TCP 포트 110으로 연결 • 삭제 모드: 우편함으로부터 메일을 읽은 후 지움 • 유지 모드: 읽고 난 후에도 메일박스에 메일 유지
Mail Access Protocol • POP3의 단점 • 삭제 모드가 디폴트로 메일 박스를 늘 비우므로, 늘 사용하는 컴퓨터가 아닌 다른 컴퓨터로 메일을 엑세스할 때 곤란함 • 사용자가 서버에 여러 가지 폴더를 만들 수 없음 • 다운로드 하기 전에 메일내용을 부분적으로 검사할 수 있는 기능 없음 • IMAP4(Internet Mail Access Protocol, Version 4) • POP3와 비슷하나 기능이 더 많음 • 메일 다운로드 전에 헤더 검사가능 • 메일 다운로드 전에 내용 검색가능 • 메일을 부분적으로 받을 수도 있음 • 사용자가 메일 서버의 우편함을 생성, 삭제, 이름변경할 수 있음 • 사용자가 이메일을 저장하기 위해 폴더 내에 우편함을 체계적으로 생성할 수 있음
Web-based Email • 앞서 보았던 아래의 그림에서 ①번과 ③번을 HTTP로 수행 HTTP HTTP server HTTP client HTTP HTTP client HTTP server
11.3 원격 접속 • Telnet • 텍스트 모드 원격 접속 표준 프로토콜 • 텍스트 그대로 전송하므로 보안이 취약 • 서버 포트번호: 23번 • 참고) rlogin - 유닉스 호스트간의 원격접속 프로그램 • 네트워크 가상 터미널 (Network Virtual Terminal, NVT) • 서로 다른 운영체제간의 코드 불일치 문제 해결
11.3 원격 접속 • SSH (Secure SHell) • Telnet과 같이 텍스트 모드 원격 접속 표준 프로토콜이기는 하나 보안을 위해 암호화해서 전송함 • 보안을 강화한 rlogin이므로 Linux에서는 기본 지원하나 Windows 는 그렇지 아니함 • 서버 포트번호: 22번
11.4 FTP(File Transfer Protocol) • 하나의 호스트에서 다른 호스트로 파일을 전송하기 위해 TCP/IP가 제공하는 표준프로토콜 • 특징 • TCP 서비스 이용 • 두 개의 TCP 연결 필요 • 포트번호 21: 제어 연결 • 포트번호 20: 데이터 연결
FTP 연결(Connection) • 제어 연결 • 접속하고 있는 동안 계속 설정 • IP의 서비스 타입(TOS field): 최소 지연 • 데이터 연결 • 데이터 전송 시에만 설정 • IP의 서비스 타입(TOS field): 최대 처리율
FTP 명령어 • 유닉스 FTP 명령어 목록 • 숙제: 다음의 자주 쓰는 FTP 명령어 조사하기 • ls, cd, lcd, binary(약자로 bi), ascii, get, put, mget, mput, pwd, bye
사용자 인터페이스(User Interface) • 예제 2 $ ftp challenger.atc.fhda.edu Connected to challenger.atc.fhda.edu 220 Server ready Name: forouzan Password: xxxxxxx ftp > ls /usr/user/report 200 OK 150 Opening ASCII mode ........... ........... 226 transfer complete ftp > close 221 Goodbye ftp > quit
익명 FTP(Anonymous FTP) • FTP를 사용하려면 원격 서버에 사용자는 사용자 계정의 이름과 패스워드가 필요하다 • 익명 FTP를 허용하면 사용자 계정이 없어도 접속할 수 있음 • 사용자 이름: anonymous • 패스워드: guest 또는 email address • 단, 디렉터리나 파일접근이 제한적일 수 있음
익명 FTP(Anonymous FTP) • 예제(example) 3 $ ftp internic.net Connected to internic.net 220 Server ready Name: anonymous 331 Guest login OK, send "guest" as password Password: guest ftp > pwd 257 '/' is current directory ftp > ls 200 OK 150 Opening ASCII mode bin ... ftp > close 221 Goodbye ftp > quit
11.5 HTTP • HTTP(Hypertext Transfer Protocol) • WWW (World Wide Web)에서 데이터를 엑세스하는데 주로 사용되는 프로토콜 • 평문(Plaintext), 하이퍼텍스트(hypertext), 오디오, 비디오등 다양한 형태의 데이터 전송을 지원 • TCP 서비스이용 • 클라이언트는 서버의 포트번호 80번을 통해 웹 페이지를 요청 • 서버는 요청된 웹 페이지를 전송하여 요청에 응답
트랜잭션(Transaction) • 트랜잭션 • 비록 TCP를 이용하지만 HTTP 자체는 상태를 기억하지 않는 프로토콜임 • 클라이언트가 요청을 할 때 트랜잭션을 초기화 • 서버는 클라이언트의 요청에 대한 응답만을 함 요청메시지 응답메시지
요청 메시지(Request Message) • 요청 메시지는 요청라인(request line), 헤더(header), 본문(body)으로 구성됨
요청 라인(Request Line) • 요청 타입(Request type), URL, HTTP version 등을 정의함 • 요청 타입(Request type) • 요청 메시지를 여러 가지 메소드(method)로 분류함 • URL (Uniform Resource Locator) • 전세계에 있는 문서및 자원들에 대한 액세스를 가능하게 하기 위해 그 위치를 식별(identification)하기 위한 locator • URL에서 method, host computer, port, path의 네 가지 부분 정의 • HTTP version • HTTP version 1.1
URL • Method • 문서를 검색하는데 사용되는 프로토콜로 HTTP와 FTP가 있음 • 이 메소드는 요청 타입(request type)에 있는 메소드와는 다름 • Host • 정보가 위치하고 있는 컴퓨터의 DNS 이름이나 IP 주소 • Port • 서버의 포트 번호로 특별히 지정하지 않으면 80번이 선택됨 • Path • 정보가 위치하고 있는 파일의 경로 명
응답 메시지(Response Message) • 상태라인(Status line), 헤더(header), 그리고 때때로 본문(body)으로 구성됨
상태 라인(Status Line) • 응답 메시지의 상태를 정의 • HTTP 버전 • 요청 라인에 있는 필드와 같음 • 상태 코드(Status code) • FTP와 SMTP에 있는 것과 유사, 세 자리 숫자로 구성 • 200대: 성공, 400대: 클라이언트에서 오류, 500대: 서버에서 오류 • 상태 문구(Status phrase) • 텍스트형태로 상태 코드를 설명
헤더(Header) • 클라이언트와 서버사이에 추가적인정보를 교환할 때 사용 • 예 • 클라이언트가 특별한형식으로 문서가 전송되도록 요청할 때 • 서버가 문서에 대한 추가적인 정보를 전송할 때 • 헤더의 구성 • 헤더이름(Header name), 콜론(colon), 공백(space), 헤더값(header value)
헤더(Header) • 헤더의 종류 • 일반헤더(general header), 요청헤더(request header), 응답헤더(response header), 엔터티 헤더(entity header) • 요청 메시지는 일반, 요청, 엔터티만 포함 • 응답 메시지는 일반, 응답, 엔터티만 포함
헤더(Header) • 일반 헤더 • 메시지에 대한 일반적인 정보제공 • 요청 헤더 • 클라이언트가 받고자 하는 문서의 형식을 지정 • 응답 헤더 • 요청에 대한 서버의 특별한 정보를 지정 • 엔터티 헤더 • 문서의 본문에 대한 정보 제공
예제 11.1 • GET method를 사용하여 경로 /usr/bin/image1에 있는 이미지를 읽어올 때 method HTTP version URL request line header status code HTTP version status phrase status line header
11.5.3 HTTP Version 1.1 • Version 1.0에서는 비영속적 연결(nonpersistent connection)을 사용했지만 version 1.1에서는 영속적 연결(persistent connection)을 기본으로 사용 • 비영속적 연결 • 과정 • 클라이언트가 TCP 연결을 열고 요청을 보낸다. • 서버가 응답을 보내고 연결을 닫는다. • 클라이언트는 end-of-file이 나타날 때까지 데이터를 읽고, 그 후 연결을 닫는다. • 단점 • N 개의 그림에 N개의 연결을 열어야 하므로 오버헤드가 크다. • 영속적 연결 • 서버가 응답을 한 후에도 연결을 계속 열어 놓는 것 • 서버는 클라이언트의 요청이 있을 때나 타임아웃이 될 때 연결을 닫음 • 클라이언트에게 문서의 끝을 알릴 수 없을 때에도 연결을 닫음
HTTP Version 1.1의 특성(feature) • 프록시 서버(proxy server) 지원 • 최신 요청에 대한 응답의 복사본을 가지고 있는 컴퓨터 • Proxy server가 설정되어 있는 경우 클라이언트는 proxy server에게 요청을 보냄 • Proxy server는 cash를 검사하여 응답이 저장되어 있지 않을 때 서버로 요청을 보냄 • 수신된 응답은 다음의 다른 요청에 대비해 proxy server에 저장됨 • Proxy server는 서버의 부하, 트래픽, 지연을 줄이기 위함이 목적이나 클라이언트에 서버 대신 proxy를 액세스하도록 설정되어 있어야 함