웹 프로토콜: 통신 규약
url: [protocol]://[computer_name]/[document_name]?[parameters]
HTTP: 브라우저와 웹 서버 통신 주요 프로트콜 다양한 요청 메서드를 통해 서버와 통신이 가능합니다.
HTTP GET 요청 동작과정
url을 입력후 전송하면 브라우저에서 서버로 Get요청을 보낸다. 요청 받은 서버는 특정한 리소스를 클라이언트로 응답합니다. 상태 코드로 요청이 제대로 처리 되었는지 200 부터 500으로 표현합니다. get 요청은 데이터를 가져올 때만 사용해야 합니다.
Post와의 차이점
get은 데이터 요청할때 사용하고 Post는 데이터를 서버로 보내고 이를 서버에 기록할때 사용합니다.
PUT과 PATCH의 차이점
Put은 서버의 특정 아이템 전체를 수정하고 PATCH는 특정 아이템의 일부를 수정합니다.
Status Code
요청에 대한 처리 상태를 보여주는 숫자로 200번대부터 500번대까지 다양한 상태 코드가 있습니다 200을 수신하면 제대로 처리되었다는 것을 의미하고 404인 경우 요청이 잘못되어 리소스를 찾을수 없다는 것을 의미합니다.
이외에도 500은 서버에서 처리하지 못하는 상황이 발생했을때 나타납니다.
브라우저에서 캐싱
처리 시간이 오래걸리는 get요청 수를 줄이기 위해 브라우저는 데이터를 디스크에 저장하고 캐시로 사용합니다. 캐시를 사용하기 이전에 HEAD요청을 통해 최신 데이터인지 확인합니다. 모든 파일을 캐싱하는 것이 효율적인지 아닐지는 깊게 고민하고 캐싱하는 것이 필요합니다.
HEAD 요청: GET메서드와 요청과 응답 방식이 똑같지만 응답에 본문을 포함하지 않습니다.
HTTP, HTTPS의 차이
보안에대한 부분이 가장 큰 차이점입니다. HTTP는 암호화되지 않은 통신을 사용하여 데이터가 평문으로 전송되고 해커가 이를 가로채 악용할 수 있습니다. 반면 HTTPS는 SSL/TLS 프로토콜을 사용하여 통신을 암호화 합니다.
또한 인증서를 사용하여 신원을 확인하고 암호화된 연결을 설정합니다. 이로인해 HTTP보다 느릴 수 있습니다.
마지막으로 SEO 부분에서 HTTPS가 더 우선시 됩니다. 보안때문입니다.
포트 번호 HTTP 80, HTTPS 443
TLS는 SSL의 직접적인 후속이고 이제 모든 버전의 SSL은 사용되지 않습니다.
SSL/TLS 프로토콜은 인증서와 관련된 내용입니다. SSL/TLS 핸드셰이크로 인증서를 인증하여 암호키를 교환하게됩니다.
TCP와 UDP의 차이
TCP와 UDP는 전송 계층에서 사용되는 프로토콜입니다.
TCP는 신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜입니다. 반면, UDP는 비연결형 프로토콜로, 인터넷에서 서로 정보를 주고 받을 때 정보를 보낸다는 신호나 받는다는 신호 절차를 거치지 않고 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜입니다. 그래서 UDP가 TCP보다는 빠르고 네트워크 부하가 적지만, 신뢰성 있는 전송이 중요할 때는 TCP를 사용하는 것이 좋습니다.
TCP는 데이터를 받는 쪽의 연결을 확인하고 데이터 통신이 시작되는데 이를 TCP 3way handShake라고 부릅니다.
TCP 4way handShake는 TCP 연결을 끊을때 이뤄지는 작업입니다.
이러한 TCP를 통해 데이터 전달과 순서를 보장받을 수 있다.
데이터를 전달 받지 못한경우 TCP를 통해 서버는 클라이언트에 데이터를 받지 못했다고 응답한다.
운영체제란
OS는 컴퓨터 하드웨어와 응용 프로그램 간의 상호 작용을 관리하는 핵심 소프트웨어입니다. 대표적인 예로는 window, mac, linux가 있습니다.
가상 메모리란
- 보조 기억 장치의 일부를 주 기억 장치로 활용하여 실제 주기억장치보다 큰 메모리 영역을 제공하는 방법
- 어떤 프로세스가 실행될 때 메모리에 해당 프로세스 전체가 올라가지 않고 실행에 필요한 일부분만 메모리 올라감
- 프로세스들의 내용(페이지) 중 현재 실행에서 덜 중요한 것들을 하드 디스크의 공간에 옮겨 놓음으로써 적은 양의 메모리로 큰 효율을 냄
데드락
2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기를 기다리며 더 이상 진행하지 못하는 상태를 뜻합니다.
조건
- 상호 배제 한 프로세스가 사용하는 자원은 공유할 수 없는 배타적인 자원이어야 한다.
- 비선점 한 프로세스가 사용 중인 자원은 중간에 다른 프로세스가 빼앗을 수 없는 비선점 자원이어야 한다.
- 점유와 대기 프로세스가 어떤 자원을 할당받은 상태에서 다른 자원을 기다리는 상태여야 한다.
- 원형 대기 점유와 대기를 하는 프로세스 간의 관계가 원을 이루어야 한다.