크래프톤 정글 TIL : 1117

lazyArtisan·2024년 11월 17일
0

정글 TIL

목록 보기
140/147

🖥️ 네트워크 공부


http://www.kocw.net/home/search/kemView.do?kemId=1312397

app은 많은데 제일 대표적인 건 http 기반 웹 브라우저
app 계층 : 편지 써서 우체통에 넣는거.
다른 계층은 우편 배달부. 지금은 이해하지 않아도 됨.

클라 : 내가 필요할 때 요청
서버 : 24시간 같은 장소에서 기다림 (고정된 주소를 가져야 한다)

결국 프로세스 사이의 커뮤니케이션에 관한 이야기
프로그램을 OS 위에서 실행시키면 프로세스
OS가 프로세스 간 통신을 위한 인터페이스를 제공. 이걸 소켓이라고 함.

시스템 콜 : 운영체제로 뭔가 편하게 할 수 있도록 제공해주는 인터페이스
네트워크 관련된 시스템 콜이 소켓.

세상에 존재하는 무수히 많은 프로세스 중에 하나를 특정하려면 주소가 필요.
ip 주소가 해당 프로세스를 돌리고 있는 머신의 주소.

머신에서 돌아가는 수많은 프로세스 중 하나를 특정하려면 포트 번호
ip 주소 + 포트 번호로 프로세스를 지칭 가능

ip 주소 못 외우고 다니니까 dns로 이름을 ip 주소로 변환
포트 번호는 웹 서버는 포트 번호 80번 암묵적 규칙 정해놓음.

아래 계층(transportation 계층)은 data integrity(신뢰성) 이외에
어떠한 기능도 아래 계층에서 제공해주지 않음.
보안이나 이런건 기대할 수 없고 reliable transport만 믿을 수 있음.
내가 말한대로 유실 없이 간다.

HTTP는 웹이라는 것의 별칭
쉽게 말해 하이퍼 텍스트를 전송하는 프로토콜
request(hypertext 주세요)와 response로 이루어진다
TCP 기반 (유실 안되게) 으로 이루어진다

HTTP는 stateless(무상태성)을 갖는다.
요청에 대한 응답만 주고 요청자에 대한 정보 기억 x
TCP 한 번 생성한거 계속 쓸 수도 있고 매번 맺을 수도 있는데 매번 맺으면 비효율적

프로토콜의 메시지의 각 필드들의 의미를 이해하면 사실상 프로토콜 다 이해한거
근데 HTTP 메시지는 안 봐도 됨
TCP, UDP, IP 프로토콜은 필드들 이해하는거 도움됨

HTTP 요청 만들 때 쿠키 확인하고 쿠키 없으면 일반적 요청 보냄
쿠키는 statless 보완할 수 있는 트릭

웹 캐시(프록시 서버)
속도도 빨라지고 서버 부하도 줄어들고 비용도 줄어든다
근데 캐시라서 원본이 바뀌었을 때 일관성 문제 발생할 수 있다



🎤 기술 면접 준비


RESTful API란 무엇인가?

API는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의하는 것

REST (Representatioal State Transfer)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처
API 만들 때 대충 이런식으로 만들어라~
이런식은 뭐냐면

  • 무상태성 : 각 요청은 독립적이며, 서버는 클라의 상태를 유지하지 않음.모든 필요한 정보는 요청에 포함돼있어야 함.
  • 일관된 인터페이스 : 서버가 표준 형식으로 정보를 전송하여 클라가 api 이해하고 사용할 때 일관된 방식으로 접근 가능
  • 캐시 가능성 : RESTful 웹 서비스는 응답 시간을 개선하기 위해 클라 또는 중개자에 일부 응답을 저장하는 캐싱을 지원함.
  • 계층화 시스템 : 클라와 서버 사이에 중개자를 놓거나, 다른 서버로 요청을 전달하거나, 보안, 비즈니스 로직 등 여러 계층으로 여러 서버에서 실행되도록 RESTful 웹 서비스를 설계할 수 있다. 클라는 이를 모름.
  • 온디맨드 코드 : 서버가 코드를 클라에게 전송하여 클라 기능을 일시적으로 확장하거나 커스텀할 수 있다.

RESTful API의 장점

  • 확장성 : REST API를 구현하는 시스템은 클라-서버 상호 작용을 최적화하기 때문에 효율적으로 확장 가능. 무상태는 서버가 클라의 과거 기록을 유지할 필요가 없기 때문에 서버 로드를 제거. 잘 관리된 캐싱은 클라-서버 상호 작용을 일부 또는 전부 제거 가능. 이것들을 통해 성능 저하시키는 통신 병목 현상 일으키지 않으면서 확장성을 지원함.
  • 유연성 : RESTful 웹 서비스는 완전한 클라-서버 분리 지원. 서버가 플랫폼이나 기술을 바꿔도 클라 앱에 영향을 주지 않는다. 앱 함수를 계층화하기 때문에 앱 로직을 다시 작성하지 않고도 데이터베이스 계층을 변경 가능.
  • 독립성 : REST API는 사용되는 기술과 독립적. 다양한 프로그래밍 언어로 클라 및 서버 앱 모두 작성 가능.

RESTful API 작동 원리
: 클라가 api 문서에 따라 요청을 전송하면 서버는 클라의 권한을 확인한 뒤에 응답을 반환한다. 응답에는 요청이 성공했는지 여부와 클라가 요청한 모든 정보가 포함됨.

RESTful 서버 응답에 포함된 것
1. 요청 성공 또는 실패를 알리는 상태 표시줄. 2로 시작하면 성공, 4나 5로 시작하면 오류, 3으로 시작하면 URL 리디렉션.
2. 메시지 본문.
3. 응답에 대한 추가 컨텍스트를 제공하는 헤더 또는 메타데이터

URL과 URI 차이?
HTTP는 웹에서만 쓰이는가?

프레임워크와 라이브러리의 차이

라이브러리는 단순히 특정 기능들을 수행하는 코드나 함수들의 집합이기 때문에 개발자가 주도적으로 코드를 작성하면서 라이브러리에서 필요한 함수나 메서드를 가져다 쓰면 되지만,
프레임워크는 프로그램의 구조와 흐름을 정의하고, 개발자는 그 구조를 지키면서 개발해야 합니다. 즉, 제어의 역전 개념이 적용되어 있습니다.

라이브러리에는 파이썬에서 pip으로 까는 패키지들, C++의 STL 등이 있고,
프레임워크에는 Spring, Android 등이 있습니다.

0개의 댓글