본문 바로가기

Programming/STUDY

[모두의 네트워크 기초] 7장 응용 계층 : 애플리케이션에 접속하는 단계

응용 계층의 역할

: 사용자가 사용하는 애플리케이션(응용 프로그램)이 동작하는 곳

 

클라이언트가 서비스 요청하면 서버가 서비스 제공

=> 데이터 전달을 위해 프로토콜이 사용됨

 

 

  • ex
프로토콜 내용 포트 번호
HTTP 웹 사이트 접속 80
DNS 이름 해석 53
FTP 파일 전송 20(데이터 전송)
21(명령, 응답 제어)
SMTP 이메일 송신 25
POP3 이메일 수신 110

 

 

 

HTTP 프로토콜

: 클라이언트, 서버가 어떻게 데이터를 교환할지 정한 규칙 (80번 포트)

 

문자 형태로 데이터가 전송되어 필요한 부분은 파싱(원하는 데이터를 특정 패턴, 순서로 추출해 가공)되어야 함 

 

시작 라인
헤더
공백 (1줄)
바디 ( 
<html>
    <head>
    	<title></title>
    </head>
    <body>
    	...
    </body>
</html>
)

 

 

시작 라인
<!-- 요청 -->
HTTP메서드 경로 HTTP버전
ex) GET /index.html HTTP/1.1

<!-- 응답 -->
HTTP메서드 상태코드
ex) HTTP/1.1 200 OK

 

요청/응답이 어떤 메시지인지 알려줌

 

 

  • HTTP 메서드 : 데이터를 수신하는 서버에서 어떤 작업을 해야 하는지 알려줌
    • GET : 서버로부터 데이터 획득
    • POST : 서버에 데이터를 추가, 생성
    • PUT : 서버의 데이터를 갱신 (전체)
    • PATCH : 서버의 데이터를 갱신 (일부)
    • DELETE : 서버의 데이터를 삭제

 

 

  • HTTP 버전

1.0 → 1.1 → 2.0 순서로 진화함

 

1.1 버전부터 KeepAlive 기능이 추가되어 한 번 연결이 수립되면 데이터 교환을 마칠 때까지 연결을 유지

 

2.0 버전부터 응용 계층에 Binary Frame을 추가해 기존 일반 텍스트 데이터를 바이너리(2진수)로 변환한 후, 데이터를 분할해 전송함

=> 빠른 전송 속도, 낮은 오류 발생 가능성

 

 

  • 응답 메시지의 상태 코드
상태 코드 의미 설명
1xx 정보 요청을 받았으며, 처리가 되고 있음
2xx 성공 요청이 성공했음
3xx 리다이렉션 클라이언트가 요청한 콘텐츠가 다른 곳에 있음
4xx 클라이언트 오류 클라이언트 측의 오류로 요청이 실패함
5xx 서버 오류 서버 측의 오류로 요청이 실패함

 

 

 

헤더

: 클라이언트와 서버가 통신하기 위한 부가적인 정보들 제공함

 

  • Host : 서버의 도메인 이름, 포트 번호
  • Connection : 현재 작업 종료 후에도 네트워크 상태를 연결 상태로 둘지 제어
  • Language : 서버가 응답에 사용한 언어

 

 

 

바디

=> 데이터 포함

 

 

 

DNS 서버

네트워크에서는 IP 주소와 MAC 주소로 통신함

하지만 현실에서 수백개의 IP 주소를 입력해 원하는 서버에 접속하기는 어려음

=> 도메인 주소를 통해 IP 주소를 전달받고 서버에 접속함

 

※ 도메인의 IP 주소를 확인하는 명령어 : tracert www.google.com 

 

 

  • 도메인 동작 과정

1. 사용자가 www.google.com을 웹 브라우저에 검색함

2. 요청이 DNS 서버로 전달되어, DNS 서버는 해당 도메인에 해당하는 IP 주소 (142.250.206.228) 전달함

3. 사용자는 전달받은 IP 주소를 이용해 웹 사이트에 접속함

4. 웹 서버는 사용자가 요청한 페이지를 보여줌

 

 

  • 순차적 DNS 질의

DNS 서버는 계층적으로 구성됨

 

1 - 루트 (.)

2 - com  edu net 

3- www.google.com  www.harvard.edu  

 

 

  • 도메인 동작 과정 2 (재귀적 쿼리)

1. 웹 브라우저에 www.google.com 입력하여 PC에 저장된 Local DNS(기지국 DNS 서버)에 IP 주소를 요청함

2. 해당 웹 사이트를 방문한 적이 없어 캐싱되어 있지 않으면, Local DNS는 Root DNS에 IP 주소를 요청함

3. Root DNS에게 IP 주소가 없으면 Local DNS는 TLD DNS 서버(최상위 도메인 서버 / com, net, ..)에 IP 주소를 요청함

4. TLD DNS에도 IP 주소가 없으면 Local DNS는 google.com DNS 서버에 IP 주소를 요청함

5. google.com DNS 서버에서 IP 주소를 전달하면 Local DNS는 수신하고 로컬 PC에 전달해 캐싱할 수 있도록 함

 

 

 

DHCP 서버

: (Dynamic Host Configuration Protocol) 사용자들에게 IP 주소를 자동적으로 할당/회수하는 서버

 

 

  • IP 할당 방식

1. 사용자 컴퓨터 => DHCP 서버를 찾음

2. DHCP 서버 => 사용자에게 IP 주소 할당 여부 물음

3. 사용자 => IP 주소가 필요하다고 요청함

4. DHCP 서버 => IP 주소를 할당해줌

 

 

 

SMTP, POP3 프로토콜

SMTP : 송신자가 사용하는 프로토콜

POP3 : 수신자가 이메일을 받을 때 사용하는 프로토콜

 

 

 

송신자 - 메일서버

 

1. 컴퓨터A => 메일서버에 25번 포트(SMTP)로 통신하겠다고 알림 / 메일서버 => OK + 자신의 이름 알려줌

2. 컴퓨터A => 자신의 이름 알려줌 / 메일서버 => OK 응답

3. 컴퓨터A => 자신의 이메일 주소 알려줌 / 메일서버 => OK 응답

4. 컴퓨터A => 상대의 이메일 주소 알려줌 / 메일서버 => OK 응답

5. 컴퓨터A => 본문 알려줌 / 메일서버 => OK 응답

6. 컴퓨터A => 연결 종료하겠다고 전달함 / 메일서버 => 연결 종료

 

 

 

메일서버 간 통신

 

1. 송신자 메일서버 => 메일을 수신자 메일서버로 전달함 (25번 포트)

2. 수신자 메일서버 => 이메일을 사용자B 편지함에 저장함

 

 

 

메일서버 - 송신자

 

1. 사용자B => 110번 포트(POP3)로 메일서버에 연결 시도 / 메일서버 => OK 응답

2. 사용자B => 연결 수립 시 사용자가 누구인지 밝힘 / 메일서버 => OK 응답

3. 사용자B => 내 편지함에서 메일 확인하기 위한 패스워드 알려줌 / 메일서버 => OK 응답

4. 사용자B => 메일 서버에서 이메일 목록 확인함 / 메일서버 => OK 응답

5. 사용자B => 해당 이메일을 컴퓨터B로 내려받음 / 메일서버 => OK 응답

6. 사용자B => 메일서버와 연결 종료 / 메일서버 => OK 응답

 

 

※ POP3는 편지함에서 메일 가져오면 서버에서 삭제됨 => IMAP(Internet Access Message Protocol) 사용 시 삭제되지 않음

 

 

 

응용 계층에서 사용하는 로드 밸런서

전송 계층 로드밸런서 기능도 포함함

IP 주소, 포트 + URI, HTTP 헤더, 쿠키 등 다양한 조건 기준으로 부하를 분산시켜줌

 

 

 

 

참고