Internet

301과 302 상태 코드의 의미와 차이는 무엇인가요?

301 오류

: 영구 리다이렉트

  • 다른 페이지로 옮겨갈때 데이터를 가져갈수없음

302 오류

: 일시 리다이렉트

  • 다른 페이지로 옮겨갈때 데이터를 가져갈수있다.

  • 기존의 사이트 랭크, 점수는 유지 하되 새로운 컨텐츠 URI 를 조회할때 유용하다.\

Forward 와 Redirect의 차이는 무엇인가요?

Foward

포워드는 서버 쪽에서 행해지는 기능이다.

클라이언트가 첫번째 URL 로 요청하면 서버 안에서 가공하여 두번째 URL에 대한 응답을 클라이언트에게 보낸다. 클라이언트는 URL 이 바뀌지 않으므로 안에서 어떻게 동작했는지 알수없다.

Redirect

클라이언트가 URL 로 요청하면 해당 URL 말고 모종의 이유로 다른 URL 을 응답을 보낸다.

클라이언트는 응답받은 URL 을 요청한다. 보통 만료된 페이지를 요청한 경우 새로운 페이지를 응답해 새로운 페이지로 요청을 받는 로직으로 많이 사용된다.

차이점 정리

  • 리다이렉트는 URL 주소가 달라지고, 포워드는 URL 주소가 달라지지 않는다.

  • 리다이렉트는 Request, Response 객체가 여러 번 생성되고, 포워드는 한 번만 생성된다. 그렇기에 포워드는 생성, 변경 같은 로직을 하면 요청정보가 유지되어 두번 생성 되거나 두번 변경되는 상황이 발생해 READ 만 하는것이 좋다. 반대로 리다이렉트는 요청 마다 생성 되기에 생성, 변경 같은 로직에 적합하다.

  • 리다이렉트는 클라이언트 단, 포워드는 서버단에서 동작한다.

TCP 와 UDP 의 차이점을 말해주세요.

TCP

Transmission Control Protocol (전송 제어 규약)

  • 연결형 서비스로 연결이 성공해야 통신이 가능하다.

  • 데이터 전송 순서를 보장한다. index 처럼 각 바이트마다 번호가 부여됨

  • 이와 같은 번호를 기반으로 신뢰성 있는 데이터를 전송한다.

  • 데이터 흐름제어, 혼잡제어 기능

  • 3-way HandShaking, 4-way handshaking

단점

  • 1 대 1 통신만 가능하다

  • 상대적으로 UDP 보다 속도가 느리다.

UDP

User Datagram Protocol (비연결 지향적 프로토콜)

비연결형 서비스로 연결없이도 통신이 가능하다.

  • 신뢰성 없는 데이터를 전송한다.

  • 연결을 보장하거나 데이터의 신뢰성 보장 기능이 없다.

  • 1대1, 1대N, N대M 연결이 가능하다.

  • 전송 순서 보장 X

정리 하자면 데이터의 신뢰도 보다 전송속도 곧 성능이 우선시 되면 UDP

데이터의 신뢰성, 연결의 신뢰성이 중요하다면 TCP를 사용한다.

ex. 동영상 스트리밍 (UDP), 파일전송(TCP)

왜 TCP는 3 handshakes를 필요로 하나요? 왜 2개가 아니죠?

3 HandShake 의 과정을 보자면

  1. 클라이언트는 서버에게 SYN 을 전송해 클라이언트의 존재를 알린다.

  2. 서버는 클라이언트에게 ACK (SYN + 1) 값을 포함한 응답으로 보내며 확인 과 서버의 존재를 알린다.

  3. 클라이언트는 서버의 존재를 알았다는 답장으로 받은 ACK + 1 을 하여 확인 응답을 보낸다.

원래는 4 HandShake 이지만 그것을 축약한것이다.

과정을 최소화 한것이 3 HandShake 이므로 더 간소화 할수도 없으며 그러면은 애초에 상대방이 내 신호를 받을 수 있는지 확인하고 전송 한다는 목적을 이룰수없다.

Tcp Packet은 어떻게 생성되나요?

스트림이 TCP/IP 로 넘어갈려면 소켓을 통해 넘겨야 하기에 스트림이 소켓에 입출력을 시도하면 저장된 스트림이 세그먼트 화 된 후 패킷형식으로 인캡슐레이션 되어서 생성된다.

Last updated