Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[7장] 응용 계층 : 애플리케이션에 데이터 전송하기 #8

Open
icstuckyi opened this issue Mar 7, 2023 · 6 comments
Open
Assignees
Labels
7장 응용 계층

Comments

@icstuckyi
Copy link
Owner

icstuckyi commented Mar 7, 2023

Lesson 28. 응용 계층의 역할

이 장에서 서술하는 응용 계층은 5계층인 세션 계층과 6계층인 표현 계층을 포함한다.

  • 응용 계층은 사용자 측(클라이언트)의 요청을 전달하기 위해 통신 대상(서버 등)이 이해할 수 있는 메시지(데이터)로 변환하고, 전송 계층으로 전달하는 역할을 한다.
  • 클라이언트 측 :
    • 사용자 측. 서비스를 요청하는 측.
    • 대표적인 애플리케이션: 웹 브라우저, 이메일 프로그램 등
  • 서버 측 :
    • 통신 대상. 서비스를 제공하는 측.
    • 대표적인 애플리케이션: 웹 서버 프로그램, 메일 서버 프로그램 등
  • 응용 계층은 각각의 애플리케이션에 대응되는 데이터를 전송하는 역할을 한다.
  • 응용 계층에서 보내려는 데이터는 하위 계층인 전송 계층, 네트워크 계층, 데이터링크 계층, 물리 계층 순서대로 처리된다.
  • 클라이언트 측 애플리케이션이 서버 측 애플리케이션과 통신하기 위해서는 응용 계층의 프로토콜을 사용하여야 한다.
    • HTTP : HyperText Transfer Protocol. 웹 사이트 전송
    • DNS : Domain Name System. 이름 해석
    • FTP : File Transfer Protocol. 파일 전송
    • SMTP : Simple Mail Transfer Protocol. 메일 송신
    • POP3 : Post Office Protocol version 3. 메일 수신

image

@icstuckyi icstuckyi added the 7장 응용 계층 label Mar 7, 2023
@icstuckyi
Copy link
Owner Author

icstuckyi commented Mar 7, 2023

Lesson 29. 웹 서버의 구조(웹 사이트 접속)

1. WWW란?

  • World Wide Web의 약자. (= W3, Web 등)
  • WWW는 HTML, URL(Uniform Resource Locator), HTTP 등 3가지 기술을 사용한다.
    • HTML(HyperText Markup Language) :
      • 웹 페이지에서 문장 구조나 문자를 꾸미는 태그를 사용하여 작성하는 마크업 언어이다.
      • HyperText를 작성하는 마크업 언어로서, 문자와 이미지를 표시하거나 하이퍼링크를 사용할 수 있다.
      • 클라이언트 측에서 html파일과 이미지를 요청하면, 서버 측에서 응답으로 html파일과 이미지를 별도로 전송한다.

image
image

2. HTTP란?

image

  • 특징 :
    • 비-연결 지향 (Connectionless)
      예전의 HTTP/1.0 버전에서는 클라이언트가 서버에게 리소스를 요청한 후 응답을 받으면 연결을 끊어버리는 특징이 있었다(비연결 지향). 연결을 유지하게 되면 서버에 많은 부담을 줄 수 있기 때문에 상당히 많은 클라이언트에게 요청을 받는 웹 서버의 경우 응답을 처리했으면 연결을 끊는 것이 좋았다. 이로 인해 서버의 부담을 줄일 수 있지만, 리소스를 요청할 때마다 연결해야 하는 오버헤드 비용이 발생(Ex. 느린 통신 속도)한다는 단점이 있었다.

image

이후 HTTP/1.1 버전부터 요청 헤더에 Connection: keep-alive 속성이 추가되어 지속적 연결 상태(Persistent connection)를 유지할 수 있게 되었다. 즉 요청을 할 때마다 연결하지 않고, 기존의 연결을 재사용하는 것이다.
HTTP 1.1부터는 지속적 연결 상태가 기본이며 이를 해제하기 위해서는 명시적으로 요청 헤더를 수정해야 한다.

image

HTTP/2 버전은 요청을 보낸 순서대로 응답을 반환하지 않아도 되므로 콘텐츠를 빠르게 표시할 수 있다.

image

  • 무상태성 (Stateless)
    각각의 요청이 독립적으로 여겨지는 특징으로, 서버는 클라이언트의 상태를 유지하지 않는다. 즉, 각 클라이언트에 맞게 리소스를 응답하는 것은 불가능하다. 이를 해결하기 위해, 쿠키나 세션 또는 토큰 방식의 OAuth 및 JWT가 사용된다.

  • Method :
    클라이언트가 서버에 요청방법을 정의하는 것으로, 주어진 리소스에 수행하길 원하는 행동을 나타낸다.

    • GET : 서버에게 조회할 리소스를 요청한다. (READ, 조회)
    • POST : 서버에게 본문(body)에 생성할 데이터를 삽입하여 전송한다. (CREATE, 생성)
    • PUT : 서버에게 본문에 수정할 데이터를 삽입하여 전송한다. (UPDATE, 수정)
    • DELETE : 서버에게 삭제할 리소스를 요청한다. (DELETE, 삭제)
    • PATCH : PUT과 비슷하지만 일부만 수정한다.
  • 응답 상태코드 :
    서버가 클라이언트에게 요청을 받으면, 응답상태에 따라서 다른 상태코드를 클라이언트에게 돌려준다.

    • 1xx (요청에 대한 정보) : 요청을 받았으면 작업을 계속한다.
    • 2xx (성공) : 요청을 성공적으로 수행했다.
      • 200(성공), 201(새 리소스 작성), 202(요청 접수, 아직 처리는 안함)
    • 3xx (리다이렉션) : 클라이언트가 요청을 마치기 위해 추가적인 동작을 취해야 한다.
      • 300(여러개의 응답, 선택해야 함), 301(영구이동, 요청한 페이지가 영구적으로 이동됨), 302(임시이동, 현재 응답이 다른 페이지이긴 하지만 임시적임)
    • 4xx (클라이언트 오류) : 클라이언트에 오류가 있다.
      • 401(권한 없음), 403(금지됨, 리소스에 대한 권한 없음), 404(찾을 수 없음, 서버에 없는 페이지)
    • 5xx (서버 오류) : 서버에 오류가 있다.
      • 500(내부 서버오류), 501(요청수행 기능없음, 메서드 인식불가), 503(서비스 사용불가)

참고자료: https://github.com/baeharam/Must-Know-About-Frontend/blob/main/Notes/network/http.md

@icstuckyi
Copy link
Owner Author

icstuckyi commented Mar 10, 2023

Lesson 30. DNS 서버의 구조(이름해석)

1. 도메인 이름이란?

  • IP 주소는 숫자로만 이루어져 있기에 사람들이 기억하기 어렵다.
  • 따라서 IP 주소가 아닌 URL 주소를 사용하여 접속하도록 돕는 것이 DNS의 이름 해석(name resolution)이다.
  • www.gilbut.co.kr의 이름 해석 :
    • www.gilbut.co.kr와 같이 컴퓨터나 네트워크를 식별하기 위해 붙여진 이름을 도메인 이름이라고 한다.
    • 도메인 이름 앞에 있는 www호스트 이름(서버 이름)이라고 한다.
  • 컴퓨터가 http://gilbut.co.kr에 접속하면 DNS서버가 이 웹사이트의 IP주소를 응답(이름 해석)하고, 컴퓨터는 그 IP주소를 이용하여 웹 서버에 접속하게 된다.
  • 만약 DNS서버가 요청받은 도메인의 IP주소를 모르는 경우, 다른 DNS서버에 요청하여 IP주소를 가져온다.
  • DNS서버는 전세계에 흩어져 있으며, 연계하여 동작할 수 있다.

image

@icstuckyi
Copy link
Owner Author

icstuckyi commented Mar 10, 2023

Lesson 31. 메일 서버의 구조(SMTP와 POP3)

1. 메일의 송수신 구조

SMTP : 클라이언트-서버 간, 또는 서버-서버 간 메일을 보내는 데 사용되는 프로토콜. (포트번호 25번)
POP3 : 서버-클라이언트 간, 또는 서버의 메일박스에서 메일을 받는 데 사용되는 프로토콜. (포트번호 110번)

메일을 보낼 때, 메일 서비스를 제공하는 포털사이트나 회사의 메일 서버에 메일을 보내게 된다.
메일 서버를 사용하려면, 송신측 컴퓨터에서 사용하는 메일 프로그램에 메일 서버의 호스트 이름(서버 이름)을 설정하여야 한다.

2. SMTP에 의한 메일 송신과 메일 전송

image

  • 컴퓨터 1은 메일 서버 1에게 메일 본문을 송신한다.
  • 메일을 받은 메일 서버 1은 SMTP를 사용하여 메일 서버 2에게 메일을 전송한다.

3. POP3에 의한 메일 수신

image

  • 메일 서버에는 메일을 보관해 주는 기능을 하는 메일 박스가 있다.
  • 메일 서버 2는 POP3를 사용하여 메일 서버 2의 메일 박스에서 메일을 가져와 컴퓨터 2로 전송한다.
  • 메일을 수신할 때는 사용자 이름과 비밀번호를 이용한 사용자 인증(user Athentication)이 필요하다.
    • 사용자 인증 : 시스템에 접근하려는 사용자가 올바른 사용자인지 판별하는 것.

image

@icstuckyi
Copy link
Owner Author

ping 명령

  • 목적지 컴퓨터와의 통신을 확인하려면 ping 명령을 이용한다.
  • ping명령은 ICMP(Internet Control Message Protocol)을 이용하여 목적지 컴퓨터에 ICMP 패킷을 전송하고, 패킷에 대한 응답이 제대로 오는지 확인하는 명령이다.
  • ping 명령이 정상적으로 실행되면 네트워크 연결이 정상이라고 판단할 수 있으므로 문제를 확인할 때 자주 사용된다.

@icstuckyi
Copy link
Owner Author

icstuckyi commented Mar 10, 2023

도메인과 URL

img

  1. 도메인
  • IP주소를 사람이 읽을 수 있는 인터넷 주소로 변환한 것이다.
  • URL은 도메인을 포함한 경로(프로토콜 + 도메인)이다.
  • 서브 도메인 : 하나의 도메인이 여러 개의 IP를 가리키게 하는 것.
  • 가상 호스트 : 여러 도메인이 하나의 IP를 가리키게 하고, 도메인의 이름에 따라 서로 다른 디렉토리의 파일들을 서비스하는 것.
  1. URL : 파일식별자(Uniform Resource Locator) 혹은 유일자원지시기
  • 네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약이다.
  • 우리는 URL을 흔한 웹 사이트 주소로 알고 있다. 하지만, URL은 주소뿐만 아니라, 컴퓨터 네트워크 상의 자원을 모두 나타낼 수 있다. 해당 주소를 접속하려면 URL에 맞는 프로토콜을 알아야 하고, 그와 동일한 프로토콜에 접속해야 한다.
  1. URI : 통합 자원 식별자(Uniform Resource Identifier)
  • URI는 인터넷에 있는 자원을 나타내는 유일한 주소이다.
  • URI의 존재는 인터넷에서 요구되는 기본 조건으로서 인터넷 프로토콜에 항상 붙어 다닌다.

image

참고자료 :
https://www.elancer.co.kr/blog/view?seq=74
https://sudo-minz.tistory.com/13
https://ivorycode.tistory.com/entry/JWTJson-Web-Token

@icstuckyi
Copy link
Owner Author

icstuckyi commented Mar 10, 2023

사용자 인증과 인가

  1. 사용자 인증(Authentication)
  • 사용자가 누구인지 확인하는 절차이다. (Ex. 회원가입-로그인 과정)
  • 식별 가능한 정보들로 서비스에 등록된 유저의 신원을 입증하는 과정이다.
  1. 사용자 인가(Authorization)
  • 인가는 인증을 바탕으로 한다.
  • 어떠한 리소스에 대해 어느 사용자가 그 리소스를 요청(request)했을 때, 해당 사용자가 그 리소스를 사용할 권한이 있는지를 체크하는 과정이다.
  • 따라서 인가란 인증된 사용자에 대한 자원(resource) 접근 권한을 확인하는 작업이다.

참고자료 :
인증과 인가, 쿠키와 세션
토큰과 JWT(JSON Web Token)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
7장 응용 계층
Projects
None yet
Development

No branches or pull requests

2 participants