컴퓨터 네트워크 02 : 네트워크 응용의 구조(Client-Server, P2P), 프로세스 종류, 프로토콜 종류, 인터넷 전송계층, FTP, HTTP

728x90

컴퓨터 네트워크 02 : 네트워크 응용의 구조(Client-Server, P2P), 프로세스 종류, FTP, HTTP


네트워크 응용의 구조

  • Client-Server구조 : 컴퓨터와 컴퓨터가 통신하는 구조.
    • 사용자의 요청(클라이언트 요청), + 서버의 응답 => N:1구조
    • LAN, WAN을 이용해 네트워크 서버에 요청을 수신하고 서버가 클라이언트에 응답을 전달함.
    • 중앙화
  • Peer-To-Peer(P2P)구조 : 클라이언트, 서버 없이 모든 컴퓨터가 데이터를 주고받을 수 있음. 이 때 각 컴퓨터를 노드 또는 피어라고 부름.
    • 모든 컴퓨터가 클라이언트이자 서버 역할을 하게 됨.
    • 탈중앙화
    • 토렌트, 비트코인
    • 장점: 필요 하드웨어 적음. 단일 시스템 의존하지 않음.
    • 단점: 안전에 취약함. 조직적 관리, 유지가 어려움.
  • 하이브리드

 

프로세스

프로세스: cpu에서 연속적으로 실행되고 있는 모든 프로그램.

여러 개의 프로세서를 사용하는 것을 멀티프로세싱이라고 하고, 같은 시간에 여러 개의 프로그램을 띄우는 방식을 멀티테스킹이라고 함.

  • 프로세스의 종류
    • 서버 프로세스
      • 서버  컴퓨터엣 실행되고 네트워크의 다른 프로그램이나 장치에 서비스를 제공하는 프로그램.
      • 클라이언트 또는 피어로부터 들어오는 요청을 수신하고 응답함.
      • 웹 서버, 이메일 서버, 파일 서버, 데이터베이스 서버 등
    • 클라이언트 프로세스
      • 클라이언트 컴퓨터에서 실행되고 특정 서비스 또는 리소스에 대한 요청을 서버 프로세스로 보내는 프로그램.
      • 웹 브라우저, 이메일 클라이언트, 파일 전송 유틸리티, 데이터 베이스 클라이언트 등
    • 피어 프로세스
      • P2P 네트워크에서 실행되는 프로그램. 여러 컴퓨터가 중앙 서버 없이 자원을 공유하고 서로 직접 통신 가능.
      • 각 피어가 클라이언트, 서버 역할을 모두 수행해 필요에 따라 리소스를 제공하고 소비함.
      • 토렌트 등
  • 프로세스 주소
    • IP 주소 + 포트번호

 

인터넷 전송계층의 서비스

  • 서로 다른 호스트에서 실행되는 응용 프로그램에 종단간 통신 서비스를 제공.
    • 전송 제어 프로트콜(TCP)
      • 연결 기반 전송 계층
      • 연결에 대한 관리
      • 데이터 순서 보장
      • 혼잡에 민감한 패킷 전송률 조정
    • 사용자 데이터그램 프로토콜(UDP)
      • 무연결 전송계층
      • 데이터 유실 가능
      • 데이터 순서 역전 가능

 

네트워크 프로토콜 종류

HTTP

  • 웹 페이지 내용을 웹 서버에서 클라이언트의 웹 브라우저로 전송
  • 단방향 시스템
  • 인증 필요X
  • 웹 페이지와 같은 작은 파일 전송에 더 효율적
  • 클라이언트 요청이 있을 때 서버가 해당 페이지에 대한 데이터를 전송하고 곧바로 연결 끊음
  • 서버에 과부하 줄 수 있음

FTP

  • FTP 서버와 FTP 클라이언트 간 파일을 업로드 및 다운로드 하는 데 사용.
  • 양방향 시스템
  • 웹 페이지보다는 더 큰 파일을 전송할 때 효율적.
  • 원하는 파일을 작업하는 동안 계속 서버와 연결되어 있음

소켓

  • 소켓: 데이터 송수신 역할을 하는 소프트웨어 구성 요소
  • 클라이언트와 서버가 연결되면 강제 접속 해제 전까지는 연결 유지
  • 서버 성능에 따라 클라이언트에 연결할 수 있는 개수가 제한됨.
  • 실시간으로 데이터 주고 받는 형식

 

FTP(파일 전송 프로토콜)

인터넷, 로컬 네트워크를 통해 한 호스트에서 다른 호스트로 파일을 전송하는 데 사용되는 표준 네트워크 프로토콜.(파일 송수신 서비스) 클라이언트-서버 아키텍쳐 사용.

 

Active 모드

(아래 포트는 디폴트 값으로, 서버 설정에서 수정할 수 있음.)

서버가 클라이언트에 접속하는 방식.

 

1. 클라이언트는 서버의 21번 포트로 접속한 후 자신이 사용할 두 번째 포트를 서버에 미리 알려준다.

2. 서버가 클라이언트 요청에 응답.(acks)

3. 서버의 20번 데이터 포트는 클라이언트가 알려준 두 번째 포트로의 접속을 시도.

4. 클라이언트가 서버 요청에 응답.(acks)

 

주의사항: 클라이언트 측 방화벽에 20번 포트가 차단됐다면 채널 연결 불가능.

서버측은 20번 포트는 아웃바운드 허용, 클라이언트는 인바운드 허용을 방화벽 설정에서 해줘야함.

 

Passive 모드

데이트 포트 번호를 특별히 지정하지 않는 경우 1024~65535번 중에서 사용 가능한 임의 포트를 사용하게 됨.

 

1. 클라이언트가 커맨드 포트로 접속을 시도.

2. 서버에서는 사용할 두 번째 포트를 클라이언트에게 알려줌.

3. 클라이언트는 다른 포트를 열어 서버가 알려준 포트로 접속 시도.

4. 서버가 클라이언트 요청에 응답함.(acks)

 

주의사항: 서버측 데이터 채널 포트가 막혀있는 경우 채널 연결 불가능.

서버 측에서 특정 범위의 포트만 허용해주면 포트 허용 문제를 해결할 수 있음.

 

HTTP

Hypertext Transfer Protocol, 브라우저와 서버 간 데이터를 주고받기 위한 프로토콜 방식.

Stateless 프로토콜: 상태없음이란, 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리됨.

기본 포트는 80번이며, 일반적으로 TCP/IP 통신 위에서 동작함.

URL: 서버에 자원을 요청하기 위해 입력하는 영문주소.

 

HTTP 요청 메서드

서버에 있는 데이터에 대한 특정 동작을 수행하는 방식

  • GET :  존재하는 자원에 대한 요청
  • POST: 새로운 자원을 생성
  • PUT: 존재하는 자원에 대한 변경
  • DELETE: 존재하는 자원에 대한 삭제
  • HEAD: 서버 헤더 정보 획득(Response Body 반환)
  • OPTIONS: 서버 옵션들을 확인하기 위한 요청. CORS에서 사용

HTTP 상태 코드

서버에서 설정해주는 응답코드를 받아올 수 있음.

프론트 단에서는 이 상태 코드로 에러 처리를 할 수 있기 때문에 중요함.

 

2xx - 성공

200번대의 상태 코드는 대부분 성공을 의미함.

  • 200 : GET 요청에 대한 성공
  • 204 : No Content. 성공했으나 응답 본문에 데이터가 없음
  • 205 : Reset Content. 성공했으나 클라이언트의 화면을 새로 고침하도록 권고
  • 206 : Partial Conent. 성공했으나 일부 범위의 데이터만 반환

3xx - 리다이렉션

300번대의 상태 코드는 대부분 클라이언트가 이전 주소로 데이터를 요청하여 서버에서 새 URL로 리다이렉트를 유도하는 경우.

  • 301 : Moved Permanently, 요청한 자원이 새 URL에 존재
  • 303 : See Other, 요청한 자원이 임시 주소에 존재
  • 304 : Not Modified, 요청한 자원이 변경되지 않았으므로 클라이언트에서 캐싱된 자원을 사용하도록 권고. ETag와 같은 정보를 활용하여 변경 여부를 확인

4xx - 클라이언트 에러

400번대 상태 코드는 대부분 클라이언트의 코드가 잘못된 경우. 유효하지 않은 자원을 요청했거나 요청이나 권한이 잘못된 경우 발생. 가장 익숙한 상태 코드는 404 코드. 요청한 자원이 서버에 없다는 의미.

  • 400 : Bad Request, 잘못된 요청
  • 401 : Unauthorized, 권한 없이 요청. Authorization 헤더가 잘못된 경우
  • 403 : Forbidden, 서버에서 해당 자원에 대해 접근 금지
  • 405 : Method Not Allowed, 허용되지 않은 요청 메서드
  • 409 : Conflict, 최신 자원이 아닌데 업데이트하는 경우. ex) 파일 업로드 시 버전 충돌

5xx - 서버 에러

500번대 상태 코드는 서버 쪽에서 오류가 난 경우.

  • 501 : Not Implemented, 요청한 동작에 대해 서버가 수행할 수 없는 경우
  • 503 : Service Unavailable, 서버가 과부하 또는 유지 보수로 내려간 경우

URL, 요청 메서드, 상태 코드를 조합하면 아래와 같은 구조가 나타난다.

728x90