본문 바로가기
CS/NetWork

[네트워크] 애플리케이션 계층 및 구조(HTTP 프로토콜)

by 계범 2022. 1. 11.
네트워크 관련 글 순서(참조 영상 기준)

애플리케이션 계층
- 네트워크 애플리케이션의 원리
- DNS
- TCP를 이용한 Socket 프로그래밍

전송계층
- 전송 계층 서비스의 원리
- rdt 원리
- 연결 지향 전송: TCP
- TCP 흐름 제어(3-way handshake, 4-way handshake)
- TCP 혼잡 제어

네트워크 계층
- 네트워크 계층 서비스
- Network Address Translation(NAT), DHCP
- 라우팅 알고리즘(Link State, Distance Vector)
- 계층적 경로 변경(AS)

링크 계층
- 다중 엑세스 프로토콜
- LANs(근거리 통신망)

무선 및 모바일 네트워크
- 무선 네트워크

웹 요청 시 일어나는일

네트워크 보안
- 대칭키 & 공개키,RSA 암호화
- Secure e-mail, SSL, MAC
- IPSec(ESP), Firewall(방화벽)

 

 

애플리케이션 계층이란?

최상위 계층으로 사용자 또는 애플리케이션이 네트워크에 접속 할 수 있게 해주는 계층
애플리케이션의 예시) 페이스북,인스타그램,당근마켓 등

쉽게 얘기하면 사용자가 웹,이메일, 파일 공유 등 실제로 사용하는 것들을 체감할 수 있는 서비스를 제공하는 계층인데, 이 계층에 속한 프로토콜들로 인해 통신할 수 있게 된다.

관련 프로토콜) HTTP,SMTP,FTP,SSH,DNS 등등

 

애플리케이션은 네트워크를 통해 데이터를 통신해야 하는데 아래와 같은 두가지 구조가 있다.

 

네트워크 어플리케이션 구조

Client-server architecture

  • 서버와 클라이언트 간 통신
  • Client: 사용자를 뜻하는 것으로, 서버에게 요청(request)을 보내고, 응답(response)를 대기
  • Server: 24시간 대기하며, 요청을 받았을 때 해당하는 결과 응답을 보내줌
    • 서버의 주소는 고정되어야함

 

P2P(Peer-To-Peer) architecture

  • 서버에 의존하지 않고 호스트(Peer)끼리 직접 통신
  • 각각이 서버와 클라이언트가 둘다 될 수 있어서, 데이터를 주고 받음
  • 비트토렌트, 스카이프 등이 있음

 


이러한 각각의 구조에서 프로세스[각주:1] 간의 통신을 하기 위해선 서로의 주소를 알고 있어야하는데 IP,PORT 주소를 알아야한다.

 

IP: 특정 컴퓨터의 주소

PORT: 컴퓨터 내 특정 프로세스의 주소

 

 

 

아래에는 대표적인 Client-server 구조를 가진 웹 애플리케이션 프로토콜[각주:2]이다.

 

 

 

HTTP(HyperText Transfer Protocol)

: 웹 통신 프로토콜로, 다른 오브젝트에 대한 링크가 있는 텍스트를 전송하는 프로토콜이다.

 

 

Client-server 구조

TCP(데이터 전송 프로토콜)를 사용

 

stateless(무상태 지향)

  • 서버가 클라이언트의 상태를 가지고 있지 않음
  • 상태를 유지해야하는 경우, 쿠키나 세션을 통해 해결함(로그인 등)
    •  밑에서 다시 얘기할 예정

 

HTTP connections

  • non-persistent HTTP(비연결)
    • 데이터를 주고 받을때마다 연결 관계를 끊었다가 다시 연결하는 형태
    • 장점: 한정된 서버 자원을 효율적으로 쓸 수 있음. 클라이언트에게 할당되었던 자원을 끊음으로서 재사용 가능.
    • 단점: 연결을 새로 맺음으로 인해 같은 클라이언트와 재 통신 시 시간 증가(연결시간)
  • persistent HTTP(연결)
    • 연결을 이어서 사용하는 형태
    • 클라이언트의 요청들을 다 응답해주기전엔 연결을 이어서 사용하여 효율성 증가
      • 매번 새로 연결할 필요가 없어짐

 

message 구조

  • request
    •   
    • GET: 어떤 HTTP 메서드 사용했는지
    • search?q=hello&hl=ko: 요청대상
    • HTTP/1.1: 버전
  • response
    • HTTP/1.1 200 OK: 버전과 상태코드
      • 200 성공
      • 3xx 리다이렉션
      • 4xx 클라이언트 오류
      • 5xx 서버 오류
    • HTTP 헤더
      • HTTP 전송에 필요한 부가정보
      • Content-type: 컨텐츠 타입
      • Content-Length: 컨텐츠 길이
      • 기타 등등이 있다.
    • 구분을 위한 띄어쓰기 한줄
    • <html> ~: 메시지 바디. 실제 전송할 데이터

 

user-server state: cookies

  • 위에서 HTTP 프로토콜은 무상태를 지향한다고 했는데, 로그인 등의 경우 상태정보를 알기위해서 클라이언트측에 정보를 저장(쿠키저장)
  • 클라이언트측은 서버에 요청할때 해당 쿠키를 같이 보내고, 서버측은 쿠키를 통해 상태 정보를 알 수 있음
  • 쿠키가 없으면 임의의 쿠키를 만들어서 client에게 보내줌
  • 쿠키 세션 관련 참조 글 2022.01.05 - [CS/Web] - 쿠키vs 세션

 

웹 캐시(프록시 서버)

  • 웹 캐시: 웹 문서를 임시 저장하기위한 정보기술
  • 한번 받았던 데이터를 다시 요청할때, 서버에 있는 원본 데이터가 그대로라면 굳이 바꾸지 않고 그냥 써도 된다. 이때 서버는 너가 요청한 데이터가 변경되지 않았다는 것을 알려주고, 그러면 클라이언트는 웹 캐시에 있는 데이터를 그대로 사용한다.
    • if-modified-since, last-modified: 변경된 정보를 알려주는 헤더
    • 304 not modified: 변경되지 않았음을 알려주는 상태 코드
  • 프록시 서버
    • 클라이언트와 서버 사이에 데이터를 전달해주는 서버
    • 메인 서버가 모든 클라이언트의 요청을 받게 되면, 응답하고 답하는 과정이 늦어지고 부담도 많이 가게 된다.
    • 웹 캐시 기술을 적용한 프록시 서버가 먼저 요청을 받아, 요청에 해당하는 데이터를 프록시 서버가 있으면 클라이언트에게 전달. 없으면 서버측에 요청하여 받아서 전달한다.

 

http 1.1 vs http 2.0

  • 1.1은 구현의 단순성, 접근성을 중점으로 최적화
  • 2.0은 성능 위주
  • 세부내용 아래 블로그 참조( 추후 내용 정리..)
  • https://ijbgo.tistory.com/26

 

HTTPS

 

참조

 

KOCW 네트워크 강의 - 한양대 2018 1학기 이석복 교수님

 

컴퓨터네트워크

본 강의에서는 인터넷 내부의 동작을 이해하는데 초점을 둔다. 인터넷의 기본이 되는 다양한 컴퓨터네트워크 프로토콜을 응용계층으로부터 시작하여 링크계층까지 Top-down방식으로 소개한다.

www.kocw.net

 

 

김영한님 인프런 강의 - HTTP 웹 기본 지식

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다. 📣 확인해주세요!본 강의는 자바 스

www.inflearn.com

 

  1. 실행중인 프로그램. 자세한 참조는 아래링크 클릭

    2022.01.05 - [CS/OS(운영체제)] - 프로세스(Process)란

    [본문으로]

  2. 약속,규약,협약을 의미하는 단어로, 여기선 정보를 교환하는 형태나 방법을 정해둔 규약으로 보면 된다. [본문으로]

댓글