둘 다 HTTP 프로토콜을 이용해서 서버에 무엇인가를 요청할 때 사용하는 방식이다.
www.example.com?id=mommoo&pass=1234
// ?와 &가 구분자 역할을 해줌
// URI?key1=value1&key2=value2
💡 application/x-www-form-urlencoded // Default
💡 text/plain // text
💡 multipart/form-data // 파일 전송
🙄 둘이 뭐가 다른뎁쇼
A. Get은 Select적 성향을 갖고 있어서 서버에서 어떤 데이터를 가져와서 보여주는 용도이다. 반면, Post는 서버의 값이나 상태를 변경(추가)하기 위해서 사용된다.
또한, Get 방식의 요청은 브라우저에서 캐싱할 수 있다. 따라서 Get 방식으로 요청한다면 기존에 캐싱되었던 데이터가 응답될 가능성이 존재한다.
추가로, 캐싱이 기본인 Get은 Post보다 속도가 빠르다는 특징도 있다.
3-Way Handshake 는 TCP의 접속,4-Way Handshake는 TCP의 접속 해제 과정이다.
포트(PORT) 상태 정보
플래그 정보
TCP Header에는 CONTROL BIT(6비트)가 존재하며, 각각의 bit는 "URG-ACK-PSH-RST-SYN-FIN"의 의미를 가진다.
SYN(Synchronize Sequence Number) / 000010
💡 연결 설정. Sequence Number를 랜덤으로 설정하여 세션을 연결하는 데 사용하며, 초기에 Sequence Number를 전송한다.
ACK(Acknowledgement) / 010000
💡 응답 확인. 패킷을 받았다는 것을 의미한다. ACK Number 필드가 유효한지 나타내며 양단 프로세스가 쉬지 않고 데이터를 전송한다고 가정하면 최초 연결 설정 과정에서 전송되는 첫번째 세그먼트를 제외한 모든 세그먼트의 ACK 비트는 1로 지정된다.
** 보낸 시퀀스 번호에 TCP 계층에서의 길이 또는 양을 더한 것과 같은 값을 ACK에 포함하여 전송
FIN(Finish) / 000001
💡 연결 해제. 세션 연결을 종료시킬 때 사용되며, 더 이상 전송할 데이터가 없음을 의미한다.
TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정(Connection Establish) 하는 과정
양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기 전에 한 쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 한다.
즉, TCP/IP 프로토콜을 이용해서 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.
TCP 통신은 PAR을 통해 신뢰적인 통신을 제공한다.
💡 PAR을 사용하는 기기는 ack을 받을 때까지 데이터 유닛을 재전송한다!
⇒ 이 과정에서 클라이언트와 서버 사이에서 3개의 Segment가 교환되는 것을 확인할 수 있다. 이것이 바로 3-way handshake의 기본 매커니즘이다.
📍 Step 1(SYN)
클라이언트는 서버와 커넥션을 연결하기 위해 SYN을 보낸다. (seq : x)
송신자가 최초로 데이터를 전송할 때 swquence number를 임의의 랜덤 숫자로 지정하고, SYN 플래그 비트를 1로 설정한 세그먼트를 전송한다.
📍 Step 2(SYN+ACK)
서버가 SYN을 받고, 클라이언트로 받았다는 신호인 ACK와 SYN 패킷을 보냄 (seq : y, ACK : x + 1)
- 접속 요청을 받은 Server가 요청을 수락했으며 접속 요청 프로세스인 클라이언트도 포트를 열어달라는 메세지를 선종(SYN-ACK signal bits set)
- ACK number 필드를 시퀀스넘버+1 로 지정하고 SYN과 ACK 플래그 비트를 1로 설정한 세그먼트 전송 (Seq=y, Ack=x+1, SYN, ACK)
📍 Step 3(ACK
클라이언트는 서버의 응답으로 ACK(x+1)와 SYN(y) 패킷을 받고, ACK(y+1)를 서버로 보냄
마지막으로 접속 요청 프로세스(클라이언트측)가 수락 확인을 보내 연결을 맺음
이때, 전송할 데이터가 있으면 이 단계에서 데이터 전송 가능하다.
Step 1, 2에서는 P→Q 방향에 대한 연결 파라미터(시퀀스 번호)를 설정하고 이를 승인한다.
Step 2, 3에서는 Q→P 방향에 대한 연결 파라미터(시퀀스 번호)를 설정하고 이를 승인한다.
⇒ 이를 통해 full-duplex 통신이 구축됨!