어플리케이션 계층

이정인·2022년 2월 28일
0

컴퓨터 네트워크

목록 보기
2/11

애플리케이션 계층

애플리케이션 계층은 웹이나 이메일과 같은 서비스를 제공하는 계층이다.
각 서비스는 자신만의 독자적인 프로토콜을 가지고 있다.
애플리케이션 계층은 사용자가 직접 사용하면서 체감할 수 있는 서비스를 제공한다.

사용자가 직접 사용하는 프로토콜

프로토콜동작 방식
HTTP웹 클라이언트와 웹 서버 사이에서 웹 페이지 데이터를 주고 받는다.
POP, SMTP, IMAP메일을 송수신하고 보관한다.
SMP,AFPLAN 안에서 파일을 공유한다.

사용자가 간접적으로 사용하는 프로토콜

프로토콜동작 방식
DNS도메인명과 IP어드레스의 정보를 서로 변환할떄 사용한다
DHCPLAN 내의 컴퓨터에게 IP 어드레스를 할당할 때 사용한다
SSL/TLS통신 데이터를 암호화하여 주요 정보를 안전하게 주고받을 때 사용한다

HTTP

웹 브라우저가 웹 서버로 특정 웹 페이지를 요청하면 웹 서버가 해당 페이지의 내용을 HTML 형식으로 응답한다.
클라이언트와 서버로 전송하는 메시지를 요청(request), 이에 대한 답으로 서버에서 클라이언트 측으로 전송하는 메시지를 응답(response)라고 한다

HTTP request message

Request line (GET, POST, HEAD)

Header line ( 응답 결과에 대한 메시지가 들어 있음)

data

User-server state : cookies

HTTP는 상태를 저장하지 않는다. 이러한 상태를 저장하지 않는 통신 형태를 stateless라고 한다. 상태를 유지하기 위해서는 쿠키를 사용한다. HTTP 쿠키는 서버가 사용자의 웹 브라우저에 전송하는 기록 정보 파일을 의미함. 상태가 없는 HTTP에서 브라우저는 쿠키 정보를 기록하여 동일한 서버에 재요청 시 저장된 쿠키 정보를 같이 전송한다. 서버는 이를 확인하고 각 요청이 동일한 사용자가 보낸 것인지 다른 사용자가 보낸 것인지 판단할 수 있다.

client : http 리퀘스트를 만들 때 쿠키가 없으면 일반적인 http request

server : cookie에 클라이언트 정보 저장 http request 필드에 기록

Web caches (proxy server)

클라인트와 서버 사이에서 요청을 대신 처리해주는 것
클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해준다. 보안상의 이유 등으로 직접 통신할 수 없는 경우 사용됨
프록시 서버는 서버에 요청된 내용들을 캐시를 이용하여 저장한다. 프록시 서버에 요청된 내용들을 캐시를 이용하여 저장하면 전송 시간도 절약할 수 있고 동시에 불필요하게 외부와의 연결을 하지 않아도 된다.

  • 빠르다 => 클라이언트 만족
  • 일관성 문제가 생길 수 있다.
    서버의 내용이 바뀔 경우 캐시의 내용도 바뀌어야함

Conditional GET

HTTP request msg

if modified-since

조건에 따라서 GET

  • 프록시에서 일관성 문제를 해결하는데 사용될 수 있다.

    프록시에서 서버에 요청할때 conditional GET를 사용하면 주기적으로 버전확인을 할 수 있다.

DNS

호스트 네임에 해당하는 IP 주소를 저장해놓은 것
사람이 읽을 수 있는 도메인 이름을 머신이 읽을 수 있는 주소로 변환한다.

전화 번호부라고 생각하면됨

하나의 서버에 저장하면 ??

  • 검색 시간이 오래 걸림
  • 서버가 다운되면 웹 브라우징 전체가 무너짐

따라서 분산화, 계층화 시킴

어떤 도메인 주소를 물어봤을 때 재귀적으로 순환하며 찾을 때 까지 반복한다.

  • Local DNS가 DNS Server로 도메인 주소를 물으면
  • Root DNS Server에서 자신에게 등록되어 있는 TLD에서 해당 도메인에 붙어 있는 TLD 주소를 찾아서 Local DNS에게 준다.
  • Local DNS는 Root DNS Server에게 받은 TLD Server에게 다시 물어본다.
    ....

TLD authoritative server

Top-level domain (TLD)

네트워크를 운영하는 각 기관은 자신의 authoritative DNS server를 운영해야한다.

authoritative DNS server란 도메인 네임에 대한 정보를 갖고 있으면서, 해당 도메인 네임에 해당하는 IP 주소를 갖고 있는 서버를 말한다.

각 기관이 보유하고 있는 도메인에 대한 호스트 매핑에 대한 문제를 책임지고 관리해야한다.

Local DNS name server

각 네트워크 기관들이 네트워크 캐시처럼 내부에서 요청하는 쿼리들을 캐싱해놓은 것
매번 순환하며 찾으면 비효율적이기 때문에 자주 쓰는 도메인 네임 주소를 저장해놓는다.
내부 사용자들은 로컬 서버에 물어보고 없으면 나감

DNS records

RR format : (name, value, type, ttl)

  • type = A

    어떤 호스트의 아이피 주소

  • type = NS

    어떤 도메인을 관리하는 호스트의 네임서버

DNS UDP

DNS에서 왔다 갔다 하는 데이터의 크기는 작음

유실될 가능성도 작고 유실돼도 손해가 적음

DNS는 결국 준비 과정

프로세스 통신

  • 프로그램을 OS위에서 실행시키면 프로세스.
  • 프로세스와 프로세스 사이의 메시지 교환이 프로세스 통신임
  • 소켓 : 인터 프로세스 통신을 위한 우체통
    네트워크와 관련된 시스템 콜
    소켓 인터페이스의 주소로 연결

IP 주소 : 포트 번호

  • IP 주소로 프로세스가 동작하는 머신을 특정
  • Port 번호로 머신 안에서도 어디 소켓인지
    웹 서버는 포트 번호 80번으로 고정되어 있음

소켓

OS에서 제공하는 API로 어플리케이션 계층과 네트워크 계층 사이의 인터페이스 역할을 한다.

종류

  • TCP
  • UDP

동작 순서

  • creation setup

  • establing a connection

  • seding and receiving data

  • tearing down a connection

TCP 소켓 function

  • socket (int domain, int type, int protocol)

    socket의 id 값이 리턴됨

    type : tcp 인지 udp 인지

  • bind

    socket id 값을 이용해서 특정 port에 바인딩

  • listen

  • accept(int sockfd, struct sockaadr* cliaddr, int* addrlen)

    클라이언트로부터 연결 될 때 까지 blocking

    두번째 인자로 클라이어언트의 IP 주소와 포트번호를 저장

    새로운 소켓 아이디를 리턴

UDP

blocking 없이 바로 연결

Email

전통적으로 3가지 컴포넌트

  • user agents
  • mail servers
  • simple mail transfer protocol :SMTP
    클라이언트 PC가 서버로 메일을 보내거나, 발신자의 메일 서버에서 수신자의 메일 서버로 메일을 중계할 때도 사용된다.

참고
http://www.kocw.net/home/cview.do?mty=p&kemId=1169634
https://yoeubi.github.io/network/Frontend-TCP-IP-2
https://hwan-shell.tistory.com/320
https://yunyoung1819.tistory.com/9

0개의 댓글