이 포스트는 해당 링크를 참고하여 작성했습니다.
GET | POST | |
---|---|---|
사용목적 | 서버의 리소스에서 데이터를 요청할 때(SELECT에 가까움) | 서버의 리소스를 새로 생성하거나 업데이트할 때(CREATE에 가까움) |
요청에 BODY 유무 | 없음, URL 파라미터에 요청하는 데이터를 담아보냄 | 있음, BODY에 데이터를 담아 보낸다. |
멱등성(idempotent) | 멱등 | 멱등X, 서버의 값이나 상태를 변경한다. |
💡 멱등이란?
멱등의 사전적 정의는 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다.
GET은 리소스를 조회한다는 점에서 (SELECT 느낌), 여러 번 요청하더라도 응답이 같을 것이다.
POST(CREATE 느낌)는 리소스를 새로 생성하거나 업데이트할 때 사용되기때문에 멱등이 아니라고 볼 수 있다.
TCP 3-way Handshake란?
STEP 1
클라이언트 A는 서버 B에 접속을 요청하는 SYN 패킷을 전송.
그 다음 A는 SYN를 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 된다.
STEP 2
SYN 요청을 받은 서버 B는 A에게 요청을 수락한다는 ACK와 SYN flag가 설정된 패킷을 발송한다.
그 다음 B는 클라이언트 A가 다시 ACK로 응답하기를 기다리는 SYN_RECEIVED 상태가 된다.
STEP 3
A는 B에게 ACK 패킷을 보내고 이후로부터는 연결이 이루어지고(세션 수립) 데이터가 오갈 수 있다. 이때 서버 B의 상태가 ESTABLISHED 이다.
TCP / UDP |
---|
포트 번호를 이용하여 주소를 지정 |
데이터 오류 검사를 위한 체크섬이 존재 |
TCP | UDP |
---|---|
연결이 성공해야 통신 가능(연결형 프로토콜) | 연결없이 통신 가능(비연결형 프로토콜) |
데이터의 경계를 구분하지 않음(Byte-Stream Service) | 데이터의 경계를 구분함(Datagram Service) |
신뢰성있는 데이터 전송(데이터의 재전송 존재) | 비신뢰성 데이터 전송(데이터의 재전송이 없음) |
일대일 통신 (Unicast) | 일대일(Unicast), 일대다(Broadcast), 다대다(Multicast)통신 |
https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network
https://noahlogs.tistory.com/35
https://mindnet.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-22%ED%8E%B8-TCP-3-WayHandshake-4-WayHandshake
https://velog.io/@hidaehyunlee/TCP-%EC%99%80-UDP-%EC%9D%98-%EC%B0%A8%EC%9D%B4