Deadlock이 무엇인지 설명하고 해결할 수 있는 방안을 말해보세요
데드락 처리 방법
쿠키와 세션의 차이에 대해 설명해보세요
쿠키는 키-값 형태로 클라이언트의 정보를 로컬에 저장하는 역할을 하며 클라이언트 측에 저장되는 특성을 가짐
속도측면에선 쿠키가 세션보다 빠르나 로컬에 저장되는 특성상 request에서 스니핑을 당할 우려가 있고 보안이 취약함
세션은 서버측에 저장이 되며, 서버의 자원을 사용하게 되고 브라우저가 종료될 경우 사라짐
쿠키보다 비교적 보안면에서 우수하며 그 이유는 세션은 쿠키를 이용해서 session id만 저장하고 그것으로 구분하여 서버에서 처리하기 때문
OSI 7계층에 대하여 설명해보세요
OSI 7계층이란 통신이 일어나는 과정을 7단계로 정의한 국제 통신 표준 규약
물리 : 데이터를 전기적인 신호로 변환해서 주고받는 기능을 진행하는 공간으로, 장비로는 통신 케이블, 허브가 존재한다
데이터 링크 : 물리계층으로 송/수신되는 정보를 확인하고 오류없는 통신을 위해 여러 역할을 수행한다. MAC주소를 통해 통신하며 장비로는 브릿지와 스위치가 존재한다
네트워크 : 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능. 라우터를 통해 경로를 선택하여 IP주소를 지정하고 경로에 따라 패킷을 전달해준다. 장비로는 라우터가 존재한다
전송 : 두 호스트 시스템으로부터 발생하는 데이터의 흐름을 제공한다
세션 : 통신 시스템 사용자 간의 연결을 유지 및 설정한다
표현 : 세션 계층 간의 주고받는 인터페이스를 일관성있게 제공한다
응용 : 사용자가 네트워크에 접근할 수 있도록 서비스를 제공한다
TCP와 UDP를 비교하여 설명해보세요
TCP 와 UDP는 OSI 7계층에 전송계층에서 사용되는 프로토콜이며
두 프로토콜은 모두 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP프로토콜을 기반으로 구현되어있지만, 서로 다른 특징을 가지고있음
신뢰성이 요구되는 애플리케이션에서는 TCP를 사용하고 간단한 데이터를 빠른 속도로 전송하고자 하는 애플리케이션에는 UDP를 사용한다
TCP = Transmission Control Protocol
→ 연결형 프로토콜
→ 데이터의 경계를 구분하지 않음
→ 신뢰성 있는 데이터 전송
→ 일 대 일 통신
UDP = User Datagram Protocol
→ 비연결형 프로토콜
→ 데이터의 경계를 구분
→ 비신뢰성 있는 데이터 전송
→ 일 대 일, 일 대 다, 다 대 다 통신
HTTP와 HTTPS를 비교하여 설명해주세요
HTTP는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신규약으로 80번 포트를 사용합니다
애플리케이션 레벨의 프로토콜로 TCP/IP위에서 작동하며 HTTP는 상태를 가지고 있지 않은 Stateless 프로토콜이고 Method는 Path, Version, Headers, Body등으로 구성되어있습니다
하지만 HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이기때문에 비밀번호나 주민등록등을 주고받으면 제 3자가 정보를 조회할 수 있어 위험합니다
이러한 문제를 해결하기 위해 등장한것이 HTTPS입니다
HTTP에 Secure 즉 보안적인 측면에서 데이터 암호화가 추가된 프로토콜입니다
HTTP와는 다르게 443번 포트를 사용하고 중간에 제 3자가 정보를 볼 수 없도록 암호화를 지원하고있습니다
3-way handshake 에 대해 설명해주세요
TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정하는 과정으로 송수신자 사이에 연결을 확인하는 과정입니다
3-way Handshaking는 세가지 스텝으로 나눠볼 수 있습니다
STEP1 → A클라이언트는 B서버에 접속을 요청하는 SYN패킷을 보냅니다.
이때 A클라이언트는 SYN을 보내고 SYN/ACK응답을 기다리는 SYN_SENT 상태, B서버는 Wait For Client 상태입니다
STEP2 → B서버는 SYN요청을 받고 A클라이언트에게 요청을 수락한다는 ACK와 SYN flag가 설정된 패킷을 발송하고,
A가 다시 ACK로 응답하기를 기다립니다. 이때 B서버는 SYN_RECEIVED 상태가 됩니다
STEP3 → A클라이언트는 B서버에게 ACK를 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 되는 것입니다
이때 B서버의 상태는 ESTABLISHED 입니다
위와 같은 방식으로 통신하는 것이 신뢰성 있는 연결 맺어준다는 TCP의 3 Way handshake 방식입니다
www.naver.com 을 접속했을 시 화면이 출력되는 과정을 설명해보세요
브라우저에 www.naver.com 을 입력한다.
브라우저의 URL을 파싱해서 어떤 프로토콜, ULR, 포트로 보낼 지 해석합니다
기본값 : HTTP(80), HTTPS(443)
DNS Resolver가 도메인 주소를 IP 주소로 변환하는 과정을 거친다.
3-1. Local DNS에 해당 URL주소의 IP 주소를 요청
3-2. 없을 경우 root DNS 서버에 해당 URL의 IP 주소를 요청
3-3. root DNS에도 주소가 없을 경우 .com 도메인을 관리하는 TLD DNS 서버에 요청
3-4. naver.com의 IP 주소를 관리하는 하위 DNS서버에 요청
3-5. Local DNS에서 응답받은 IP 주소를 캐싱
라우터를 통하여 해당 서버의 게이트웨이까지 이동
ARP를 이용하여 IP 주소를 MAC 주소로 변환
TCP handshaking 과정을 통해 TCP 소켓 연결 수립한다.
브라우저가 Request Message 전송한다.
서버가 URL을 프로그램이나 정적 파일로 연결한다.
서버가 Response Message 전송한다.
브라우저가 응답을 형식에 맞춰서 화면에 표시한다.
루프백이란?
HTTP 메소드 중 GET, POST를 비교하여 설명해보세요
GET 방식
GET 방식의 특징
POST방식
POST 방식의 특징
HTTP 상태코드 정의를 말씀해주시고 알고있는 상태코드 모두 설명해주세요
200 OK
-> 요청이 성공적으로 되었습니다. 정보는 요청에 따른 응답으로 반환됩니다.
201 Created
→ 요청이 성공적이었으며 그 결과로 새로운 리소스가 생성되었습니다.
202 Accepted
→ 요청을 수신하였지만, 그에 응하여 행동할 수 없습니다
300 Multiple Choice
→ 요청에 대해서 하나 이상의 응답이 가능합니다. 사용자는 그중에 하나를 반드시 선택해야 합니다.
301 Moved Permanently
→ 이 응답 코드는 요청한 리소스의 URI가 변경되었음을 의미합니다
302
-> 클라이언트가 요청한 리소스를 다른 URI에서 GET 요청을 통해 얻어야 할 때, 서버가 클라이언트로 직접 보내는 응답입니다
400 Bad Request
→ 이 응답은 잘못된 문법으로 인하여 서버가 요청하여 이해할 수 없음을 의미합니다.
401 Unauthorized
→ 비록 HTTP 표준에서는 '미승인(unauthorized)'를 명확히 하고 있지만, 의미상 이 응답은 '비인증(unauthenticated)'를 의미합니다. 클라이언트는 요청한 응답을 받기 위해서는 반드시 스스로를 인증해야 합니다.
403 Forbidden
→ 클라이언트는 콘텐츠에 접근할 권리를 가지고 있지 않습니다. 예를 들어, 그들은 미승인이어서 서버는 거절을 위한 적절한 응답을 보냅니다. 401과 다른 점은 서버가 클라이언트가 누구인지 알고 있습니다.
404 Not Found
→ 서버는 요청받은 리소스를 찾을 수 없습니다. 브라우저에서는 알려지지 않은 URL을 의미합니다.
405 Method Not Allowed
→ 요청한 메소드는 서버에서 알고 있지만, 제거되었고 사용할 수 없습니다
500 Internal Server Error
-> 웹 사이트 서버에 문제가 있음을 의미하지만 서버는 정확한 문제에 대해 더 구체적으로 설명할 수 없습니다.
502 Bad Gateway
→ 서버가 게이트웨이로부터 잘못된 응답을 수신했음을 의미합니다. 인터넷상의 서버가 다른 서버로부터 유효하지 않은 응답을 받은 경우 발생합니다.
503 Service Unavailable
→ 서버가 요청을 처리할 준비가 되지 않았습니다. 일반적인 원인은 유지보수를 위해 작동이 중단되거나 과부하가 걸린 서버입니다
504 Gateway Timeout
→ 웹페이지를 로드하거나 브라우저에서 다른 요청을 채우려는 동안 한 서버가 액세스하고 있는 다른 서버에서 적시에 응답을 받지 못했음을 의미합니다