애플리케이션 계층
TCP/IP 모델에서 최상위 계층으로 사용자와 가장 가까운 소프트웨어
여러 프로토콜 개체들의 서비스에 대한 사용자 인터페이스 제공
HTTP, DNS, SMTP, SSH, BGP, DHCP 등이 이 범주에 속함
DNS(Domain Name Service)
호스트(도메인) 이름을 IP주소로 변환 - Port 53
웹사이트 접속 or 이메일 전송 시 *.google.com 등의 도메인 이름으로 접속
계층적 구조
- Root DNS는 전세계적으로 13개 정도 있다고 함
쿼리 과정
- Recusive Query : Local DNS 서버가 재귀적으로 여러 서버에게 질의하여 응답을 받음
- Iterative Query : Local DNS 서버가 반복적으로 질의
Resource Records
DNS 레코드, DNS 서버가 가지고 있는 IP 매핑 정보 테이블
4 tuple: {Name, Value, Type, TTL}
- Type
A : 호스트, IP
NS : 네임서버
CNAME : 별칭
MX : 메일서버
DNS 메시지
쿼리와 응답으로 구분
- Query : 2개, Header + Question
- Response : 5개, Header + Question + Answer + Authority + Additional
- Identifier : 쿼리와 응답 구분
- Flag : DNS 쿼리의 속성
- Question : 질의
- Answers : 응답 Resource Records
- Authorities : 책임 Resource Records
- Additional : 추가 Resource Records
Hosts.txt
호스트 이름과 IP 주소가 맵핑되어 저장된 파일
Local DNS로 쿼리 전에 우선 참조하는 파일
DNS 캐시 테이블
기존에 응답 받은 DNS 정보를 일정시간(TTL) 저장하고 동일한 질의 시 응답
HTTP
WWW상에서 정보를 공유하는 프로토콜 - Port 80
- URL(Uniform Resource Locator) : 웹 페이지를 찾기 위한 주소
- HTML(HyperText Markup Language) : 웹 페이지 언어
HTTP Request
Client가 Server에게 특정 Method를 사용하여 요청
Head
- Accept : 클라이언트가 허용 가능한 파일 형식
- User-Agent : 클라이언트의 OS, 브라우저 정보
- Host : 서버의 도메인 네임
HTTP Response
Client 요청에 따른 Server의 응답
- Head + Body
- Version / Status / Status Message
- Version : HTTP 버전, Status : 상태, Status Message : 상태 메시지
- Date, Content-location, etag : 캐시 정보 업데이트
- Last-modified : 요청한 데이터의 최종 수정일
- Content-Length : 요청한 데이터 길이
Status Code
- 2** Success - 200 OK
- 3** Redirection - 307 Temporary Redirect
- 4** Client Error - 400 Bad Request, 401 Unauthorized, 404 Not Found
- 5** Server Error - 500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable
HTTP 속성
Stateless
- HTTP는 통신이 끝나면 상태 정보를 유지하지 않는다
- 서버는 HTTP 요청에 대한 응답을 보내고 접속을 끊어 커넥션 리소스 비용을 줄인다
- 단순 페이지 or 문서 정보 열람은 가능하지만 클라이언트가 새로운 페이지를 접속 할 때마다 서버는 신원을 알 수 없음
- 해결책 = Cookie & Session
HTTP Cookie
클라이언트 웹 브라우저 로컬에 저장되는 키와 값이 들어있는 파일
이름, 값, 도메인, 만료일, 경로 - 일정시간 정보 저장 -> 로그인, 장바구니 등
- Session : 서버는 일정시간 같은 웹브라우저의 요청이 들어오면 하나의 상태로 유지
- 서버는 클라이언트에 대한 세션ID 발급 및 보유 -> 쿠키로 전달 -> 동일 세션ID로 접속 -> 정보확인
- Cookie는 사용자 로컬에 정보가 저장 - 유출 or 조작 가능
- Session은 서버에 정보를 저장(안전) - 인증에 세션을 사용
- 세션 하이재킹의 위험이 있음 - HTTPS(안전)
SSL/TLS
SSL(Secure Socket Layer)/TLS(Transport Layer Security)
TCP/IP 네트워크 통신간 보안을 제공하는 프로토콜
기능
- 인증 - Client to Server 통신 간 상대방에 대한 인증 - RSA, DSS
- 무결성 - 메시지 인증 코드로 제공 HMAC - MD5, SHA-2
- 기밀성 - 데이터 암호 - 3DES, RC4
프로토콜 구성
-
상위
HandShake : 키교환 방식, 암호화 방식, HMAC 방식, 압축 방식 등을 협상
Change Cipher Spec : 협상 정보가 적용됨을 알림
Alert : 협상 과정에서 제시한 암호화 방식을 지원 못하는 경우 알림
-
하위
Record : 데이터 교환, 메시지를 전송
TLS Stack
TLS 계층은 상위 3개 프로토콜, 하위 Record 프로토콜로 구분
상위 계층에서 협상 후 Record 프로토콜에서 Application 데이터를 분할, 압축, 암호화해서 전달
메일 서비스
- SMTP(Simple Mail Transfer Protocol) : 전자 메일 전송을 위한 표준 프로토콜
- POP3(Post Office Protocol Version3) : 수신 서버의 메일 박스에서 메일을 가져오고 삭제하는 프로토콜
- IMAP4(Internet Message Access Protocol4) : 메일서버로 접속하여 메일을 읽거나 삭제하는 프로토콜
동작 과정
구성
메일 서버, 메일 클라이언트
- 메일 서버 : MTA(Mail Transfer Agent) : 메일 전송
- 메일 클라이언트 : MUA(Mail User Agent) : 메일 송수신 프로그램
- MDA(Mail Delivery Agent) : MTA가 수신한 메일을 수신자 우편함에 기록
- MRA(Mail Retrieval Agent) : 원격 서버의 우편함에서 사용자에게 메일을 가져오는 프로그램
A 메일 서버에서 B 메일 서버로 메일 전송
- A : MUA에서 SMTP를 메일 송신 - MTA - MDA(큐에 저장하고 순서대로 전송)
- B : MTA에서 메일 수신 - MDA - 지정된 메일박스로 전달 - MRA(POP3 or IMAP4) - MUA