OSI 상위 계층과 TCP/IP의 응용 계층
-
사용자와 직접적으로 상호작용하고 데이터 통신의 높은 수준 기능을 담당하는 계층들이다!
-
하위 계층(전송, 네트워크, 데이터 링크, 물리 계층)이 기술적 데이터 전송을 담당한다면, 상위 계층은 사용자 관점의 통신 기능을 제공함
OSI 상위 계층
7계층 응용 계층(Application)
-
사용자 인터페이스와 직접 상호작용
-
HTTP, FTP, SMTP 등 최종 사용자 애플리케이션 프로토콜 제공
-
네트워크 서비스를 애플리케이션에 제공
-
예: 웹 브라우저, 이메일 클라이언트 등
6계층 표현 계층(Presentation)
-
데이터의 형식, 암호화, 압축을 담당
-
서로 다른 시스템 간 데이터 해석 표준화
-
데이터 변환 및 포맷팅
-
암호화/복호화 기능 수행
-
예: JPEG, GIF 이미지 포맷, SSL/TLS 암호화
5계층 세션 계층(Session)
-
통신 세션 관리
-
연결 설정, 유지, 종료
-
동기화 지점 생성
-
프로세스 간 통신 관리
-
예: NetBIOS, RPC(원격 프로시저 호출)
TCP/IP 응용 계층
-
OSI 7 Layer에서 세션계층 , 프레젠테이션계층, 애플리케이션 계층에 해당
-
응용프로그램들이 네트워크서비스, 메일서비스, 웹서비스 등을 할 수 있도록 표준적인 인터페이스를 제공
-
TCP/IP 기반의 응용 프로그램을 구분할 때 사용
-
대표 프로토콜 종류(포트 번호) : HTTP(80), FTP(21), Telnet(23), DNS(53), SMTP(25)
DNS(Domain Name System)
- 도메인 명을 이용해 IP 주소를 찾아주는 시스템
Field(Flags) | Description | Length (bits) |
---|---|---|
QR | 메시지가 요청(0)인지 답변(1)인지를 나타냄 | 1 |
OPCODE | 요청 유형은 QUERY(표준 쿼리, 0), IQUERY(역 쿼리, 1) 또는 STATUS(서버 상태 요청, 2)일 수 있음 | 4 |
AA | Authoritative Answer은 응답에서 DNS 서버가 요청된 호스트 이름에 대한 권한이 있는지 여부를 나타냄 | 1 |
TC | TrunCation은 메시지가 길이가 너무 길어서 잘렸음을 나타냄 | 1 |
RD | Recursion Desired은 클라이언트가 재귀 요청을 의미하는지 여부를 나타냄 | 1 |
RA | Recursion Available는 응답하는 DNS 서버가 재귀를 지원하는지 여부를 나타냄 | 1 |
Z | Zero, 향후 사용을 위해 예약됨 | 3 |
RCODE | Response CODE는 NOERROR(0), FORMERR(1, 형식 오류), SERVFAIL(2), NXDOMAIN(3, 존재하지 않는 도메인) 등일 수 있음 | 4 |
- 위와 같은 정보들을 애플리케이션과 DNS Resolver와 주고 받아 IP주소를 찾을 수 있게 된다
-
전체적 흐름
-
사용자가 브라우저(애플리케이션)에 도메인을 입력해 접속하려 함
-
브라우저는 먼저 Local Resolver에 도메인이 있는지 확인을 함
(최근에 접속했었더라면 남아 있을 수 있겟죠?) -
없다면 같은 네트워크 내의 기록을 내에서 다시 도메인이 있는지 확인
-
그럼에도 없다면 DNS 서버에 접속하여 도메인과 연결된 IP주소를 찾음
-
IP주소를 찾았다면 브라우저에게 전달하여 사용자는 사이트에 접속함
-
-
DNS 서버의 도메인 검색 ( 계층형 구조 )
-
Root DNS 서버에 받은 도메인 www.naver.com 에서의 com 부분(최상위 도메인)을 검색
-
최상위 도메인(com DNS) 에서 naver(2레벨 도메인)를 찾음
-
마지막으로 www(3레벨/서브 도메인)을 찾아 IP주소를 특정 짓게 됨
-
-
캐시의 종류
-
브라우저 캐시
-
설명: 웹사이트에 접속할 때, 브라우저는 도메인의 IP 주소를 자체 캐시에 저장,
이로 인해 최근에 방문한 사이트의 DNS 조회를 반복할 필요 없이 빠르게 접속가능! -
TTL (Time to Live)**: 캐시된 DNS 정보는 TTL이라는 유효 시간 동안만 저장되며,
이 시간이 지나면 브라우저는 다시 DNS 조회를 해야함 -
과정: 브라우저는 먼저 자신의 캐시에서 해당 도메인의 IP 주소가 저장되어 있는지 확인
-
-
운영체제(OS) 캐시
-
설명: 만약 브라우저 캐시에 IP 주소가 없다면, 운영체제의 DNS 캐시를 조회함
OS도 최근에 조회된 IP 주소를 일정 기간 동안 캐시에 저장함 -
TTL: 브라우저 캐시와 마찬가지로, 운영체제의 캐시도 TTL에 따라 IP 주소를 저장하며,
TTL이 만료되면 해당 IP 주소는 다시 조회되어야 함 -
과정: 운영체제는 DNS 조회 요청을 받으면, 먼저 자신의 DNS 캐시에서 IP 주소를 확인함
(이후 정보를 브라우저로 반환)
-
-
라우터 캐시
-
설명: 만약 운영체제에서도 IP 주소를 찾을 수 없다면, 네트워크 라우터로 요청이 넘어감
많은 라우터는 자체적으로 DNS 캐시를 관리하며, 이를 통해 네트워크에 연결된 모든 장치에 대해 DNS 조회 시간을 줄임 -
TTL: 라우터도 TTL 값을 기준으로 DNS 정보를 저장하며, 설정된 시간 동안 캐시를 유지!
-
과정: 라우터는 자신이 가지고 있는 DNS 캐시에서 해당 도메인의 IP 주소를 확인
( 이를 브라우저로 전달함 )
-
-
ISP(인터넷 서비스 제공자) 캐시
-
설명: 라우터에서도 IP 주소를 찾지 못할 경우, DNS 조회는 인터넷 서비스 제공자(ISP)의 DNS 서버로 넘어감
ISP는 대규모의 DNS 서버를 운영하며, 많은 도메인의 IP 주소를 캐시에 저장해 둠 -
TTL: ISP의 DNS 서버도 TTL 값에 따라 캐시를 유지하며, 이 시간이 지나면 새로운 DNS 조회가 필요
-
과정: ISP의 DNS 서버가 캐시에 해당 도메인의 IP 주소를 가지고 있다면 이를 라우터로 보내고, 라우터는 해당 IP 주소를 운영체제와 브라우저로 전달
-
-
HTTP(Hyper Text Transfer Protocol)
-
서버와 클라이언트 간에 데이터를 주고받기 위해 사용되는 통신 규약
-
HTTP는 웹 페이지 불러오기와 같은 요청을 처리하고, 전송 계층의 프로토콜인 TCP를 사용하여 안정적인 데이터 전송(연결성)을 보장함
-
HTTP는 사용자가 요청하는 정보를 서버가 이해할 수 있는 메시지로 변환하여 전송하는 역할을 함
( 주로 HTML 문서와 같은 웹 리소스를 전송하는 데 사용 ) -
비연결성과 연결성(HTTP/1.1 이상)이 특징
-
비연결성(stateless)이라는 것은 각 요청이 독립적이며, 이전 요청의 상태를 기억하지 않는다는 것을 의미
-
클라이언트가 요청을 보내면 서버가 응답한 후 TCP/IP 연결을 끊어 자원을 최소화
( 클라이언트가 많아져도 효율적으로 리소스를 사용할 수 있음 )
-
-
HTTP/1.1, HTTP/2, HTTP/3와 같은 다양한 버전이 존재하며, 이러한 버전들은 성능 개선과 보안 강화를 위해 지속적으로 발전하였음
-
메서드 종류
Method | Description |
---|---|
GET | 자원을 습득하기 위한 메서드 |
HEAD | GET과 동일하나 헤더만을 응답받는 메서드 |
POST | 서버로 하여금 특정 작업을 처리하게끔 하는 메서드 |
PUT | 자원을 대체하기 위한 메서드 |
PATCH | 자원에 대한 부분적 수정을 위한 메서드 |
DELETE | 자원을 삭제하기 위한 메서드 |
CONNECT | 자원에 대한 양방향 연결을 시작하는 메서드 |
OPTIONS | 사용 가능한 메서드 등 통신 옵션을 확인하는 메서드 |
TRACE | 자원에 대한 루프백 테스트를 수행하는 메서드 |