1단계 준비 - PART 2 서버와 클라이언트

서버란 인터넷을 통해 연결된 클라이언트에 데이터 또는 서비스를 제공하는 프로그램

  • 크롤러를 만들 때 서버에게 응답받은 데이터를 찾고, 그 데이터를 서버에서 어떻게 가져오는지 판단하는 과정이 굉장히 중요. 이 부분이 크롤러를 만드는 과정 중 가장 많은 시간이 걸리는 부분.

서버의 종류


영상 제공, 파일, 도메인, 전자우편, 채팅 및 음성, 게임, 웹서버

데이터 또는 서비스를 제공하는 형태에 따라 서버의 종류는 많이 나뉨. 영상 서버의 경우 다른 서버와 다르게 데이터를 한 번에 주는 것이 아니라 일정량을 분할하여 전송한다. 이것을 스트리밍이라고 부른다. 영상을 한 번에 받는다면 부담되므로 스트리밍 방식을 사용. 웹 서버는 우리가 웹 브라우저를 통해 요청된 페이지를 받아오는 서버. 서버는 웹을 정적 페이지, 동적 페이지와 같은 형태로 제공. 동적 페이지는 게시판과 같이 데이터가 늘었다 줄어드는 페이지. 즉 페이지를 띄울 때마다 다른 데이터가 뜨는 페이지를 동적인 페이지라고 함. 정적인 페이지는 항상 같은 데이터를 띄어주는 페이지

서버와 클라이언트의 데이터를 주고받는 방법


서버와 클라이언트의 데이터를 주고받는 규약을 프로토콜이라고 함

요청 메소드

클라이언트가 서버에 데이터를 요청 할 땐 읽기, 쓰기, 수정, 삭제 (CRUD)의 네가지 타입을 이용. 이러한 요청을 헤더에 GET, POST, PUT, DELETE 형태로 메소드를 정의

  • GET: read
  • POST: crete
  • PUT: update
  • DELETE: delete

GET 요청은 클라이언트가 서버에 데이터를 요청할 때 사용하는 메소드. 웹 페이지를 요청할 수 있고, 특정 게시글을 요청할 수 있다. 영상 서버에는 영상을 요청할 것이다.

POST 요청은 특정 데이터를 추가하는 요청. 즉, 데이터베이스에 데이터를 추가한다는 의미.

데이터를 요청할 때 GET 요청만 할 필요는 없다. POST로 요청해도 되고, PUT으로 해도 된다. 실제로 GET과 POST를 이용해서 요청한다.

응답 코드


응답 코드는 서버가 클라이언트 요청을 처리하고 난 후 상태에 따라 반환하는 코드.

  • 1xx: 조건부 응답
  • 2xx: 성공
  • 3xx: 리다이렉션 완료
  • 4xx: 요청 오류(문제 발생 원인이 클라이언트)
  • 5xx: 서버 오류(서버의 설정, 코드 등의 문제)

헤더


서버와 클라이언트 간 데이터를 주고받을 때헤더라는 정보를 포함하여 보냄

  • 요청 헤더: 클라이언트가 서버에 데이터를 요청할 때 포함된 헤더
  • 응답 헤더: 서버가 클라이언트에게 응답할 때 포함된 헤더
  • 일반 헤더: 클라이언트와 서버 양측 모두에서 사용되는 일반적인 정보가 포함된 헤더(Date, Cache-control, Connection, Encoding, Via, Upgrade)
  • 엔티티 헤더: 메시지에 대한 설명 포함

  • 클라이언트: 일반 헤더+요청헤더+엔티티 헤더
  • 서버: 일반 헤더+응답헤더+엔티티 헤더

굳이 모든 헤더 정보를 포함할 필요는 없고, 상황에 따라 필요한 정보만 포함하여 헤더를 만든다.

URL


Uniform Resource Locator, 네트워크에서 자원을 요청하는 규약. 서버와 데이터를 주고받을 때 URL을 이용하여 데이터를 주고받음.

프로토콜://주소 또는 IP:(포트번호)/리소스 경로?쿼리스트링

인터넷에서 주로 사용하는 프로토콜은 HTTP, IP 주소는 우리가 데이터를 요청하는 타겟이 된다. 프로토콜과 포트 번호는 미리 정해진 규약이 있는데 HTTP는 80번 포트, HTTPS는 443번을 사용한다. 원격 컴퓨터에 접속하는 프로토콜 telnet은 23번, ssh는 22번을 사용. 이처럼 프로토콜에 따라 포트 번호가 미리 정의되있음.(http://를 입력하면 80번 포트 번호로 열린 서버에 데이터를 요청)

Header body

헤더의 바디라는 곳에 데이터를 포함하여 보낼 수 있다.POST 요청을 하게 되면 데이터를 BODY에 실어 보내게 된다. 네트워크 탭에서 Form data</라고 표현하고 쿼리 스트링의 경우 Query string parmeters라고 표현한다.

Reference

  • 파이썬으로 배우는 웹 크롤러 : 빅데이터