Computer Science/네트워크

[컴퓨터네트워크] 14. 표준 클라이언트/서버 프로토콜 (1)

lumana 2024. 5. 23. 00:46

표준 클라이언트/서버 프로토콜 (1)


WWW and HTTP

  • World Wide Web (abbreviated WWW or Web)
    • 가장 많이 사용되는 인터넷 서비스
  • Hyper-Text Transfer Protocol (HTTP)
    • 웹 요청과 응답 메시지를 교환하는 프로토콜
    • (보통 웹 요청은 클라이언트가 서버에게, 응답 메시지는 서버가 클라이언트에게)

WWW

  • Tim Berners-Lee in 1989 at CERN
    • European Organization for Nuclear Research
  • 유럽의 여러 연구자들이 다른 위치에 있는 각자의 연구 자료들을 엑세스하기 위해 고안
  • 상용 웹은 1990년 초에 시작

HTTP

  • HyperText Transfer Protocol (HTTP)
    • 웹 페이지의 요청과 응답 전달 프로토콜
  • HTTP 클라이언트가 요청을 HTTP 서버에게 보내고, 서버가 응답
  • HTTP 서버 default 포트 번호 80
    • (값을 따로 지정하지 않으면 80번임)
    • 참고) HTTPS : 443번
  • HTTP 클라이언트는 시스템(OS)이 주는 임시할당 포트번호 사용
  • HTTP는 TCP 서비스를 이용
    • TCP는 연결지향이고, 신뢰적 프로토콜

Example 13.1

그림 13.2은 비지속(nonpersistent) 연결의 예이다.
클라이언트는 그림 링크를 가진 웹 문서를 엑세스한다. 
웹 문서는 텍스트 파일이고, 그림 파일과 같은 서버에 위치한다.
여기에서 2개의 연결을 필요로 한다. 
각각의 연결에서 연결을 설정하기 위해 3-way 핸드세이크를 필요로 한다. 
연결이 설정된 이후 파일이 전달된다. 
처음 웹 문서 파일을 받은 후, 또 다른 3-way 핸드세이크 이후에 그림 파일이 전달된다.

 

Example 13.2

그림 13.4는 예제 13.3과 같은 시나리오이지만, 지속(persistent) 연결을 사용한다.
하나의 연결을 통해서 여러 파일을 전달하는데, 각각의 요청과 응답은 같은 연결 안에서 따로 보내진다.

 

 

 

 

 

Example 13.3

그림 13.5은 문서를 가져오는 예제.

GET 메소드를 이용하여 경로 /usr/bin/image1의 그림을 가져옴. 
요청 라인은 GET 메소드와 URL을 보여주고, HTTP 버전 1.1을 사용. 
헤더의 2라인은 클라이언트가 GIF나 JPEG 포맷을 받을 수 있음을 나타낸다. 요청 메시지에는 body가 없다.
응답 메시지에는 상태라인과 헤더의 4개 라인이 있다. 
날자, 서버, 컨텐츠 인코딩 (MIME), 문서의 길이 등이다. 
문서의 body는 헤더 다음의 빈 줄 이후에 온다.

 

Example 13.4

그림 13.6은 서버로 정보를 올리는 예제
(서버로 정보를 올리려면 Body 부분에 내용을 채워서 올려야 함)

PUT 메시지 요청 메시지의 요청라인에 요청메소드(PUT), URL, HTTP 버젼(1.1)이 있다. 
헤더에 4개의 라인이 더 있다. 
빈 줄 이후에 요청 메시지의 바디가 오고, 여기에 서버로 업로드 하는 정보가 있다. 
응답 메시지에 상태라인과 4개의 헤더 정보가 있다. 
빈 줄 이후에 서버가 클라이언트로 정보를 body로 보낼 수 있다.

Example 13.7

 

2022 기출) 클라이언트 브라우저에서 서버의 index.html 문서를 요 청하고, 서버는 해당 문서를 성공적으로 응답하는 HTTP 메시지 구성 형태를 그리고 설명하라. 클라이언트는 Accept : image/gif, 서버는 Content-length: 500의 헤더만을 갖는다.

 

 

 

들어가기 앞서) 쿠기가 뭔지 알아보자

  • 서버가 Client쪽으로 내려보내는 정보
  • 이 정보를 Client는 브라우저에 저장하고 있다가 서버에 요청을 보낼 때 마다 쿠기를 넣어서 보낸다
  • 이렇게 함으로써 client 구분도 하고, client 상태 추적이 가능해진다

2023 기출) 웹 환경에서 쿠키의 생성과 사용을 자세히 설명하시오

브라우저가 최초로 웹서버에 요청을 보내면, 서버는 응답과 함께 메시 지의 헤더를 통해 쿠키를 내려보낸다. 쿠키는 기한과 내용이 있는 텍 스트 형태의 정보이다. 브라우저는 쿠키를 브라우저의 캐시에 저장하 고, 해당 서버에 요청을 보낼 때마다 쿠키를 같이 요청 헤더에 포함하 여 보낸다. 서버는 클라이언트의 요청에 포함된 쿠키를 통해 처음 접 속 여부를 판단하고, 클라이언트를 구별하며, 클라이언트의 상태를 파 악할 수 있다.

Example 13.8

 

그림 13.8은 온라인 상점에서 쿠키를 사용하는 이점을 보여준다.

  1. 구매자가 BestToy라는 상품을 온라인 상점으로부터 구매한다고 하자. 구매자 컴퓨터의 브라우저(클라이언트)는 BestToy 상점의 서버에게 요청을 보낸다.
  2. 서버는 클라이언트를 위한 비어있는 쇼핑카트를 만들고 카트에 ID(12343)를 할당한다. 서버는 클라이언트에게 Toy 그림을 클릭하면 Toy를 선택하는 링크를 가진 응답메시지를 보낸다. 이 응답 메시지는 Set-Cookie 헤더라인을 가지고, 그 값을 12343로 한다. 클라이언트는 브라우저 화면에 그림을 보여주고 쿠키값을 브라우저 내에 저장한다.
  3. 클라이언트가 한 Toy를 선택하면, 선택한 Toy에 연결된 URL 을 포함하는 요청 메시지를 서버로 보낸다. 이때, 메시지의 헤더에 전에 받았던 쿠키값을 포함시킨다.
  4. 서버는 해당 쿠키 값으로 이용자와 카트를 찾고, 카트에 선택한 물품을 넣고, 클라이언트에게 선택한 물품의 가격 정보를 갖는 페이지를 보낸다.
  5. 구매자는 해당 물품을 주문하는 정보를 서버로 보낸다. 이때 , 쿠키도 헤더에 첨가해 같이 올린다.
  6. 서버는 쿠키 값을 통해 해당 이용자와 해당카트를 찾아내고, 결재를 한 후에 주문결과를 통보한다.

Example 13.9

그림 13.9는 회사나 학교 같은 로컬 네트워크에서 프락시 서버의 사용예이다.
프락시 서버는 지역 네트워크에 설치한다. 클라이언트(브라우저)가 보낸 HTTP 요청이 생기면, 이 요청은 먼저 프락시 서버로 보내지고, 만일 프락시 서버가 해당 페이지를 가지고 있다면 바로 응답한다. 없는 경우, 프락시 서버가 클라이언트처럼 행동하여 인터넷의 웹서버로 요청을 보낸다. 웹서버로부터 응답이 도착하면, 프락시 서버는 응답을 복사해 캐시에 저장하고, 처음 요청을 보낸 클라이언트에게 보낸다.

 

추가 정보) 지역에 컴퓨터가 많으면 프락시가 네트워크 요청 중간에 껴서 조절을 해준다. 프락시는 캐시 메모리를 둬서 그 안에 서버에서 오는 데이터를 저장했다가, 다른 클라이언트가 같은 정보를 요청하는 경우 캐시에 있는 걸로 대신 전달해준다.

 

FTP

  • File Transfer Protocol (FTP)는 TCP/IP의 표준 응용 프로토콜
  • 하나의 호스트에서 다른 호스트로 파일 복사
  • 파일을 한 시스템에서 다른 시스템으로 복사하는 것은 간단하고 쉽지만, 몇 가지 고려해야만 하는 사항이 있다
  • Active Mode (제어연결, 데이터 연결 두가지 다 활용)
    • Default. 데이터 연결을 서버가 클라이언트로 시도
    • 포트 21(제어연결), 20(데이터연결) 이용
      • (제어 연결 : 연결을 맺고 명령을 주고 받는데 사용함)
  • 그런데 Active mode에서는 서버가 클라이언트 쪽으로 연결을 맺는데, 방화벽 문제를 겪을 수 있음 --> Passive Mode
  • Passive Mode
    • 데이터 연결도 클라이언트가 서버로 시도

2개의 연결

  • FTP는 2개의 연결을 사용하고, 서로 다른 lifetime을 갖는다
  • 제어 연결(control connection)은 전체 FTP 세션기간 동안 존재
  • 데이터 연결(data connection)은 각각의 파일 전달기간 동안 만들어지고, 없어진다
    • 데이터 연결은 파일 전달에 대한 명령이 있을때 생성되고, 파일전달 이후에 폐기된다.

제어 연결

  • 서버 포트 21번으로 연결
  • 제어 연결에서, FTP는 TELNET과 같은 접근방식 이용
    • Telnet에서 사용하는 NVT ACSII 문자 셋을 사용
  • 통신은 명령과 응답의 교환으로 구성
    • 이 방식은 한번에 하나의 명령을 보내고 응답을 받으므로, 제 어 연결에 적합
  • 각 라인은 CR, LF 두 개의 문자로 종료
    • end-of-line token

 

 

데이터 연결

(dir, ls 도 데이터 연결을 통해서 수행됨)

  • 데이터 연결은 서버 20번 포트 사용
  • 데이터 연결의 생성은 제어 연결과는 다른 방식
  1. 클라이언트는 임시 포트로 passive open
  2. PORT 명령으로 서버에게 포트번호 전달
  3. 서버는 자신의 20번 포트와, 클라이언트가 보내준 포트번호로 가는 연결의 active open

Example 13.10

그림 13.11은 하나의 파일을 가져오는 FTP 예제
제어 연결은 계속 열려있고, 데이터 연결은 열렸다 닫혔다를 반복한다. 
파일은 6개의 섹션으로 나뉘어 전달한다고 가정.
모든 파일 레코드를 전달하고, 서버는 파일 전달을 완료 했다고 알린다. 
클라이언트는 더 이상 가져올 파일이 없으므로 QUIT 명령을 발행하고, 서비스 연결은 종료된다.

Example 13.11

다음은 디렉토리의 목록을 가져와 보여주는 실제 FTP 세션의 예이다.

Passive FTP mode

안전한 FTP

  • 처음 FTP 프로토콜을 설계할 때 보안은 큰 이슈가 아니었음
  • FTP에서 패스워드로 사용자 인증을 하지만, 이 값은 암호화하지 않은 일반 텍스트로 보내는데, 이것은 공격자에게 노출된다
  • 데이터 연결을 통한 데이터의 전달 역시 일반 텍스트로 보내는데, 이 또한 안전하지 않다.
  • 안전하게 하려면 FTP 사이에 SSL(Secure Socket Layer)를 두면 된다. (SSL-FTP)
    • (정보 암호화를 해준다)

 

2023 기출) FTP의 동작을 active/passive 모드별로 자세히 설명하시오. (20)

 

FTP Active 연결에서는 21번 포트 제어연결과 20번 데이터 연결 포 트를 이용한다. 서버는 제어포트 21번을 열고 클라이언트이 접속을 기 다린다. 클라이언트가 서버의 21번 포트에 접속하여 제여 연결을 맺고, 데이터 교환이 필요한 경우 데이터의 교환을 위한 임시 포트를 열고 이를 서버에 알리면, 서버는 자신의 20번 포트로 클라이언트가 열고 대기하는 임시 포트로 접속을 하여 데이터 연결을 열고, 이 연결을

통해 파일의 업로드 혹은 다운로드를 수행한다. 이 방식은 클라이언트가 시설망이나 방화벽 내에 있을 때는 동작이 안 될 수 있다.

 

FTP Passive 연결에서는 21번 포트 제어 연결을 사용하고, 20번 포트 는 사용하지 않는다. 서버는 제어포트 21번을 열고 클라이언트이 접속을 기다린다. 클라이언트가 서버의 21번 포트에 접속하여 제여 연결을 맺고 패시브 명령으로 모드를 전환한 다음, 데이터 교환이 필요한 경우 서버가 데이터의 교환을 위한 임시 포트를 열고 이를 클라이언트에 알리면, 클라이언트는 새로운 포트를 열고, 서버가 열고 대기하는 임시 포트로 접속을 하여 데이터 연결을 맺고, 이 연결을 통해 파일의 업로드 혹은 다운로드를 수행한다.