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 의 과정을 보자면
클라이언트는 서버에게 SYN 을 전송해 클라이언트의 존재를 알린다.
서버는 클라이언트에게 ACK (SYN + 1) 값을 포함한 응답으로 보내며 확인 과 서버의 존재를 알린다.
클라이언트는 서버의 존재를 알았다는 답장으로 받은 ACK + 1 을 하여 확인 응답을 보낸다.
원래는 4 HandShake 이지만 그것을 축약한것이다.
과정을 최소화 한것이 3 HandShake 이므로 더 간소화 할수도 없으며 그러면은 애초에 상대방이 내 신호를 받을 수 있는지 확인하고 전송 한다는 목적을 이룰수없다.
Tcp Packet은 어떻게 생성되나요?
스트림이 TCP/IP 로 넘어갈려면 소켓을 통해 넘겨야 하기에 스트림이 소켓에 입출력을 시도하면 저장된 스트림이 세그먼트 화 된 후 패킷형식으로 인캡슐레이션 되어서 생성된다.
Last updated