반응형

** KOCW에서 이석복 교수님의 네트워크(2015년) 강의를 수강한 내용을 정리한 글입니다.

http://www.kocw.net/home/search/kemView.do?kemId=1169634

 

컴퓨터네트워크

인터넷을 동작시키는 컴퓨터네트워크 프로토폴을 학습한다.

www.kocw.net

 

 

Application layer에 대해 알아볼 예정

 

계층 구조 (- 각각의 대표적인 프로토콜) → 탑 다운 방식으로 살펴볼 예정

Application - HTTP

Transport - TCP / UDP

(이상은 라우터에는 존재하지 않고, 네트워크 엣지에만 존재)

Network - IP

Link - WiFi / LTE / 3G / Ethernet

Physical

HTTP에 대해서 알아보자

 

 

Client-server architecture

  • Server
    • Always-on host
    • 고정된(Permanet) IP address
  • Client
    • Server와 통신
    • 동적 IP를 가지고 있을 것임
  • 서로 다른 host(컴퓨터)에 올라와 있는 프로세스(각각 서버, 클라이언트) 사이의 통신을 애기하는 중
  • 같은 host에 올라와 있는 프로세스 간 통신은(IPC - Inter-Process Communication) OS에서 처리
  • 통신 메시지를 주고 받는 공간을 Socket이라고 함
  • 양단을 연결하려면 주소가 특정되어야 함 → IP(컴퓨터 특정) + Port(프로세스에 물린 소켓 특정)의 조합으로 특정
    • IP를 DNS(Domain Name System)에 의해 별도의 주소(이름)로 연결할 수 있음
    • port 입력 안 하면 → 자동으로 80번
    • naver.com:80 해도 연결됨, 8080은 안됨
    • 우리가 알고 있는 모든 웹 서비스들이 80번 포트를 씀 → DNS를 쓰기 때문에, port 넘버는 80번으로 통일하자는 암묵적 합의

 

App은 Transport 계층에 이런 것을 원한다

  • Data integrity : 데이터 무결성
  • Timing : 낮은 딜레이 보장
  • Throughput : 최소한의 데이터 양 보장
  • Security : 보안

하지만 TCP에서 Data integrity를 제공하지만 UDP는 그마저도 안 해주고, 나머지 기능은 제공하지 않는다 → Application layer에서 처리해야 함

 

 

App들의 프로토콜 사용 예시

 

 

HTTP란?

  • HyperText Transfer Protocol
  • 웹의 Application layer protocol
  • Client / Server model
    • Client : 웹 오브젝트를 요청, 수신, 화면에 표시하는 브라우저
    • Server : Response에 담긴 오브젝트를 요청한 곳에 전달하는 웹 서버
    • 모두 HTTP를 사용
  • 쉽게 생각하면, Reqeust를 보내고 Response를 받아오는 프로토콜(규격, 방식)

 

 

HTTP는 기저에 TCP 서비스를 사용 → TCP Connection을 생성해야 한다.

  • Client는 서버에 TCP Connection을 실행(Socket 생성) (port 80)

→ Server는 Client에서 온 TCP Connection을 수용

→ HTTP 메시지가 브라우저(HTTP Client)와 웹 서버(HTTP Server) 사이에서 교환됨

→ TCP Connection 종료

 

 

HTTP는 “stateless(무상태)” 하다

→ Server는 Client의 과거 요청 정보(state)를 가지고 있지 않는다

만약 state를 유지하는 Protocol이라면?

  • 과거 기록이 계속 유지되어야 한다
  • 만약 Server나 Client가 충돌하면 → view의 상태는 일관성이 없어지고, 반드시 조정되어야 한다.

 

HTTP Connections

HTTP는 TCP Connection을 non-persistent(비영구적) / persistent(영구적)으로 사용하는지에 따라 분류된다.

  • Non-persistent HTTP
    • 1개의 오브젝트를 전송하면 TCP Connection을 바로 닫는다
    • 실제로는 파이프라인과 결합하여, n개의 메서드를 전송하고 Connection을 닫는 방식을 사용함

 

 

 

 

 

 

반응형

+ Recent posts