패킷

라우터 경로 최적화를 위해 데이터를 쪼갠 것

라우터

데이터가 어디로 가야하는 지에 대한 목적지를 갖고 있는 장비

패킷 데이터 수신

데이터를 수신 시, 데이터가 무작위로 오는 것을 방지하기 위해 패킷에 번호를 부여한다.

수신 측은 패킷 번호를 통해 잃어버린 패킷 데이터를 추적하고, 무작위로 온 패킷을 재조립한다.

TCP

SYN/ACK 패킷 송수신

TCP 3 Way Handshake

총 3개의 패킷이 생성된다. ACK 패킷 수신 후 데이터 수신을 받을 수 있다 판단하여 데이터 전송

tcp

UDP

데이터 소실이 일어나든 말든 보낸다.

udp

패킷 데이터

  • HTTP 프로토콜의 상태 라인

응답 상태 코드

  • Header

응답에 대한 부가적인 정보

  • Body (본문)

서버에서 클라이언트로 전송되는 데이터

Response (결과 응답)

요청된 결과 프로토콜 상태에 따라 동작 상태가 결정난다.

200 : 응답 ok

404 : 페이지를 찾을 수 없음

Request (요청)

GET, POST, PUT, DELETE 등의 기능이 있다.

Get

주로 데이터를 가져올 때 사용 (SELECT)

패킷 데이터의 header 미포함

POST

데이터를 삽입, 삭제 할 때 사용 (INSERT, DELETE)

패킷 데이터에 header가 포함되어 있다.

PUT

데이터를 삽입할 때 사용 (INSERT)

DELETE

데이터를 삭제할 때 사용 (DELETE)

PATCH

일부 데이터를 수정할 때 사용 (UPDATE)

Session

서버에서 저장 시키는 작은 데이터 파일

클라이언트에 저장 시키는 작은 데이터 파일

Restful Stateless

서버가 여러대라면 session을 통해 사용자를 인증한다면 다른 서버와의 동기화작업이 필수적이며, 보안적인 이슈가 발생한다면 치명적이다.

하지만 token을 통해 사용자를 인증한다면 다른 서버와의 동기화작업을 할 필요가 없고, 만약 보안적인 이슈가 발생한다해도 클라이언트만의 문제이기 때문에 서버가 리스크를 부담할 필요가 없다. (=무상태)

RestAPI

규칙이 있는 API 목록을 작성한다.

  1. 행위를 포함하지 않는다.
    [X] POST https://kimhyunso.github.io/user/insert
    [X] POST https://kimhyunso.github.io/userInsert
    [O] DELETE https://kimhyunso.github.io/user/1
    
  2. 형용사가 아닌 명사를 사용한다.
    [X] https://kimhyunso.github.io/duplicating
    [O] https://kimhyunso.github.io/duplicate
    
  3. 소문자를 사용한다.
  4. _(하이픈) 대신 -(대시)를 사용한다.

댓글남기기