HA3 전의 마지막 파트를 공부했다. 배포나 git은 section1, 2에서 가볍게 공부했던 부분들에 대해 조금 더 깊게 배운 것 같다. 백 앤드는 공부하면 할수록 정말 신기한 것 같다. 정확하게 형체화되어 있지 않기에 제대로 알지 못하면 문제가 크게 발생할 것 같지만, 현재까지는 재밌고 신기하다. 더 깊은 내용들을 공부하게 된다면 머리가 약간 깨지겠지만 아직은 버틸만하다.
추석 연휴로 일주일간 휴식을 취하는 기간인데 며칠은 아무것도 하지 않고 쉬어야 될 것 같다. 활력소가 필요한 느낌이랄까🤤 시험을 얼마 안 남긴 상태기도 하고 이제 HA3를 통과하게 된다면 프로젝트에 바로 들어가게 되는 것을 아니까 마음이 약간 붕 뜬 느낌이다. 며칠간은 붕 뜬 현재 상황에서 공부해 봤자 효율성이 떨어지기 때문에, 억지로 외면하지 않고 아무것도 하지 않은 상태로 쉬고 수업에 들어가기 전에 다시 집중력을 발휘해야겠다👊
14주차 배운 내용 중 정리하고 싶은 내용
IP(인터넷 프로토콜)
: 주소를 컴퓨터에 부여하여 이를 이용해 통신. 지정한 IP 주소에 패킷이라는 통신단위로 데이터 전달[IP프로토콜 한계]
1. 비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
2. 비신뢰성: 중간에 패킷이 사라질 수 있음. 패킷의 순서를 보장할 수 없음
TCP | UDP |
---|---|
연결지향 - TCP 3 way handshake (가상 연결) | 비연결 지향형 프로토콜 |
전송순서보장 | 전송순서 보장하지 않음 |
데이터 수신 여부 확인함 | 데이터 수신 여부 확인하지 않음 |
신뢰성↑, 속도↓ | 신뢰성↓, 속도↑, |
[HTTP]
HTTP/1.1, HTTP/2는 TCP기반, HTTP/3은 UDP 기반 프로토콜
클라이언트 서버 구조
무상태프로토콜(Stateless)
=> 서버가 클라이언트의 상태를 보존하지 않음(서버확장성↑ but, 클라이언트가 추가 데이터를 전송해야함
=> 브라우저쿠키, 서버세션, 토큰 등을 이용해 상태를 유지)
비연결성(Connectionless)
=> 연결을 유지하지 않는 모델. 현재는 HTTP 지속연결로 문제 해결
[HTTP 헤더와 바디]
HTTP바디는 메세지본문(message body)을 통해 표현 데이터를 전달
메세지 본문 = 페이로드(payload)
표현은 요청이나 응답에서 전달할 실제 데이터를 뜻함
헤더 형식 <field-name>:<field-value>
HTTP헤더는 HTTP전송에 필요한 모든 부가정보를 담기 위해 사용
=> 메세지 body의 내용, body의 크기, 압축, 인증, 요청클라이언트, 서버정보
표현헤더는 요청, 응답 둘 다 사용
- Content-type: 표현데이터의 형식
- Content-Encoding: 표현데이터의 압축방식
- Content-Language: 표현데이터의 자연언어
- Content-Length: 표현데이터의 길이 *Transfer-Encoding 사용 시 chunked의 방식 사용하기에 사용 불가*
[HTTP 주요헤더]
요청(Request)에서 사용되는 헤더
-From: 유저 에이전트의 이메일 정보
-Referer: 이전 웹페이지 주소
-User-Agent: 유저 에이전트 애플리케이션 정보
-Host: 요청한 호스트 정보(도메인) => 필수헤더
-Origin: 서버로 POS요청을 보낼 때, 요청을 시작한 주소를 나냄
*요청 보낸주소와 받는 주소가 다를 경우 CORS에러 발생*
-Authorization: 인증 토큰(JWT)을 서버로 보낼 때 사용하는 헤더
응답(Response)에서 사용되는 헤더
-Server: 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보
-Date: 메세지 발생한 날짜, 시간
-Location: 페이지 리디렉션
-Allow: 허용가능한 HTTP 메서드
-Retry-After: 유저에이전트가 다음 요청을 하기까지 기다려야하는 시간
*콘텐츠 협상 우선순위*
Accept-Language: ko-KR, en-US; q=0.9 => 1부터 0까지 우선순위 부여(1은 생략가능)