[네트워크] 응용계층 복습 및 정리

2023. 4. 18. 17:48CS/네트워크

728x90

//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎

 

1. 응용계층

1-1. 네트워크 응용의 구조

  • Client-Server 구조: 응용을 서비스해 주는 컴퓨터를 따로 두는 구조
  • Peer-to-Peer(P2P) 구조: 클라이언트나 서버 개념 없이, 오로지 동등한 계층 노드들이 서로 클라이언트와 서버 역할을 동시에 네트워크 위에서 하는 구조
  • 하이브리드 구조: 필요할 때는 서버가 관여하지만, 둘이 직접 연결할 수 있을 때에는 직접 연결하는 구조

1-2. 프로세스 간 통신

  • 프로세스: 하나의 컴퓨터에서 독립된 메모리 공간을 가지고 수행되고 있는 프로그램의 단위
  • 프로세스 주소: IP 주소 + 포트 번호
    • 클라이언트의 웹브라우저는 포트번호가 정해져 있지 않음
  • 소켓: 전송계층과 세션계층을 연결해주는 일종의 인터페이스로, private channel에 하나의 소켓을 열어두면 받는 사람의 주소와 나의 주소를 일일이 적지 않아도 만들어 둔 소켓을 통해서 연결된 대상과 주기적으로 통신할 수 있다.

1-3. 인터넷 전송 계층의 서비스

  • TCP: 연결 기반 전송 계층, 연결에 대한 관리(데이터 유실 복구 서비스 제공), 데이터 순서 보장, 혼잡에 민감한 패킷 전송률 조정
  • UDP: 무연결 전송 계층, 연결에 대한 관리가 없음(데이터 유실 가능), 데이터 순서 역전 가능, 최대한의 성능으로 패킷을 전송
    • 연결을 만들어 놓지 않고 매 패킷마다 받는 사람이 주소를 써서 패킷에 담아 보내야 함

 

2. 세션계층

  • 세션계층: 컴퓨터끼리 어떻게 대화를 하는지에 대한 세부적인 내용에 대한 계층
  • FTP(File Transfer Protocol): 원격 호스트에 있는 파일을 가져오거나 보내기 위한 프로토콜
    • 세션 로그인과 종료가 존재
    • 로그인을 통하여 파일에 접근할 수 있는 권한 획득
    • 로그인 정보를 서버가 관리 → stateful protocol
    • 서버는 내 세션의 정보를 계속 유지하고 있다가 적절한 서비스를 제공해준다: 세션 계층의 역할
  • HTTP(Hyper Text Protocol): HTML을 기본 프레젠테이션 계층으로 사용하는 프로토콜
    • 상태 정보를 이용하지 않음stateless protocol

2-1. HTTP

  • 원하는 자료를 웹에 보내고 웹에서 받는 기본적인 동작

  • 인터넷 브라우저의 주소창에 url을 검색 → 웹 브라우저는 요청하는 패킷을 웹 서버에 보내고 → 웹서버는 html문서를 응답하는 패킷으로 보냄
  • HTTP는 프로토콜이 단순하다.
    • HTTP Transaction: 요청에 대해 응답을 하면 끝나고
    • Stateless Protocol: 한 번의 transaction이 끝나면 서버가 정보를 기억할 필요가 없다.

2-2. GET요청

  • 원하는 자원을 가져오는 목적을 가지고 수행
  • HTTP 요청 헤더
  • 서버의 응답 형식(헤더 + 바디)
  • 하나의 트랜젝션으로는 하나의 파일 밖에 가져오지 못하기 때문에 한 페이지 안에 있는 다른 파일을 가져오는 트랜젝션을 추가적으로 수행해야 한다.

 

2-3. POST 요청

  • 자원을 서버에 게시하는 목적, 게시할 내용을 바디에 함께 보냄
  • method = “get”으로도 자원을 서버에 게시할 수 있지만 이 때는 바디가 아닌 url을 이용해서 하나하나 보내야 함
    • URL ? 입력한 내용 = URI
      • URL: 자원의 위치
      • URI: 동적으로 생성된 자원의 위치
  • 간단한 내용은 get을 이용하고, 내용이 길어지거나 숨기고 싶은 내용을 보낼 때는 post를 이용

2-4. 쿠키

  • 웹서버는 서버 응용 - 서버 응용 엔진 - HTTP(stateless)의 과정을 거치는데 서버 응용과 세션 계층은 stateless → 서버 응용이 앞의 요청과 뒤 요청이 동일한 사람인지를 구별하는 방법이 필요하다.
  • 쿠키: 서버 응용이 클라이언트의 이전 작업 정보(state)를 파악하기 위한 도구

  • 서버 응용은 이전 정보를 가지고 있지 않지만 get요청 안에 있는 cookie 정보를 보고 이전에 접속했던 사용자임을 구분할 수 있다.
  • 기억해야 할 상황을 쿠키에 담아 클라이언트가 기억하도록 하고 서버는 클라이언트의 방문 시 주는 쿠키 정보에 맞추어 반환하게 되면 클라이언트에게 너무 많은 권한과 정보를 준다는 문제가 있다.
    • 클라이언트에게 세션 ID 정보만 쿠키로 전달하고 세션들의 특성은 서버가 관리하는 방법이 있다.

2-5. 다중 Transaction

  • 기본 HTTP: 하나의 트랜잭션을 수행하고 TCP 연결을 종결
  • Persistent HTTP: 한 번의 TCP 연결만으로 많은 트랜잭션을 수행
  • Pipelined HTTP: html 문서를 받은 후에 request를 연속적으로 요청
  • 성능을 측정할 때 고려해야 할 요소
    • 지연시간: 패킷을 보내기 시작한 시점에서 패킷을 받기 시작한 시점까지 걸리는 전송 지연 시간
    • 전송률: 단위시간(초) 당 전송되는 데이터의 양
    • 전송받고자 하는 정보의 크기, HTTP 헤더 크기, TCP 연결/종결 시간

2-6. 네트워크 구조상 성능향상

  • ISP: Internet Service Provider, 인터넷 서비스 제공자
  • 웹캐시: ISP에서 비용절감을 위해 이전에 가져온 적이 있는 문서를 DB에 임시 저장해 두었다가 동일 문서가 다시 요청될 때 재사용
  • 가상적으로 웹캐시는 클라이언트에게 서버 역할을 하고, 웹캐시 DB에 문서가 없다면 웹캐시가 클라이언트 역할을 해서 서버에게 문서를 요청한다 → 웹캐시는 중개상인의 개념

 

3. DNS(Domain Name System)

  • 응용계층(인터넷 5 계층)에서만 관여한다.
  • DNS: Domain Name → IP 주소 변환

3-1. Domain Name Server 계층

  • Local DNS(캐시 있음) - Authroized DNS(캐시 있음) - TLDNS(캐시 없음) - Root Name Server(캐시 없음)
    • Local DNS: Root NS에 의해 공인되지 않은 서버
    • 모든 캐시에는 타임아웃이 있다.
  • Local DNS의 캐시에 타임아웃이 발생하면 → Recursive/Iterative Domain Name Resolution
    • Recursive: Local DNS가 Root NS에게 물어보고, Root NS가 TLDNS를 거쳐 Authorized DNS에게 물어본 후 주소를 Local DNS에게 전해주는 프로토콜은 존재하지만 동작하지 않음, 루트서버는 Top Level DNS주소만 알려줌
    • Iterative: Local DNS가 Root NS와 TLDNS, Authorized DNS에게 차례로 물어보는 방법

 

 

 

 


한국항공대학교 김철기 교수님의 [컴퓨터 네트워크] 강의 정리입니다감사합니다.

728x90