분류 전체보기 22

HTTP 콘텐츠 협상

협상 헤더는 요청시에만 사용한다. Accept : 클라이언트가 선호하는 미디어 타입 전달 Accept-Charset : 클라이언트가 선호하는 문자 인코딩 Accept-Encoding : 클라이언트가 선호하는 압축 인코딩 Accept-Language : 클라이언트가 선호하는 자연 언어 ex) 다중 언어가 지원되는 서버(기본 : 영어)에 특정 자원 요청 시, Accept-Language : ko 헤더를 포함하는 경우 한국어 응답을 받을 수 있다. 우선 순위 설정은 Quality Value(q) 사용. q값은 0~1, 1에 가까울수록 우선 순위가 높아짐 Accept-Language : ko-KR(q=1인 경우 생략 가능),ko;q=0.9, en-US;q = 0.8,en;q=0.7

network 2022.02.22

HTTP 주요헤더

요청헤더 From : 유저 에이전트 이메일 정보, 검색엔진에서 사용 Referer : 현재 요청된 페이지의 이전 웹 페이지 주소(유입경로) User-Agent : 유저 에이전트 애플리케이션 정보(웹 브라우저 정보 등, 통계정보) Host : 요청한 호스트 정보(도메인), 필수 헤더. 하나의 IP주소에 여러 도메인이 적용되어 있을 때 호스트 정보를 명시하기 위해서 사용. Origin : 서버로 POST요청 보낼 때 요청 시작 주소 Authorization : 인증토큰(JWT 등)을 서버로 보낼 때 사용하는 헤더 응답헤더 Server : 요청을 처리하고 있는 origin 서버의 소프트웨어 정보 Date : 메시지 발생 날짜/시간 Location : 페이지 리디렉션 - 3XX 응답에 Location이 있는 경..

network 2022.02.22

HTTP

역사 HTTP/1.1 , HTTP/2 : TCP HTTP/3 : UDP 특징 주로 사용하는건 HTTP/1.1 클라이언트 서버 구조 (요청-응답) 무상태성(서버가 클라이언트의 상태를 보존하지 않음, 서버의 확장성이 높지만 클라이언트가 추가적인 데이터를 전송해야 함), 비연결성 (실제로 요청을 주고 받을 때에만 연결을 유지하고 응답을 주고 나면 연결 끊음) - 만약 무상태성이 아닌, 상태 유지 프로토콜이라면? : 한 클라이언트의 요청을 기억하는 서버가 하나 뿐이다. 그래서 항상 해당 서버가 응답해야 하는 상황이 생긴다. 해당 서버에 문제가 생기면 요청 처리 불가능. - 무상태성 프로토콜이라면? : 클라이언트가 요청할 때 필요한 데이터를 다 담아서 보낸다. 서버단에서 기억할 필요가 없기 때문에 어떤 서버라도 ..

network 2022.02.22

TCP 통신

TCP는 IP와 함께 사용되기 때문에 TCP/IP라고 불린다. IP의 비연결/비신뢰성을 보완하는 기능을 한다. TCP는 full -duplex이다. (하나의 연결을 통해 읽기/쓰기 모두 가능) TCP header 발신지/목적지 포트 주소(16bit) Sequence Number(32bit) : 바이트 단위로 구분되어 순서화 되는 번호(신뢰성, 흐름제어) ACK Number(32bit) : 수신 기대하는 다음 바이트 번호(마지막 수신 성공 순서번호 +1) HLEN(헤더 길이, 4bit) : TCP 헤더 길이를 4바이트 단위로 표시, TCP헤더 길이는 60바이트 이하 6 flag bits (URG,ACK,PSH,RST,SYN,FIN) : 흐름제어, 연결설정, 연결 종료, 연결 리셋, 데이터 전송 모드와 관련..

network 2022.02.22

TCP vs UDP

TCP - 연결 지향(3-way handshake, 가상 연결) *3-way handshake : 클라이언트와 서버 간 접속 성립을 위해 서로 확인하는 과정(악수~) 1. 클라이언트가 서버에 접속 요청하는 SYN 패킷 전송 2. 서버에서 SYN 요청을 받고 클라이언트에게 요청을 수락한다는 뜻의 ACK(Acknowledgment), 그리고 SYN(Syncronize)이 설정된 패킷 발송 3. 클라이언트가 다시 ACK으로 응답 - 데이터 전달 보증 : TCP는 데이터 전송에 성공하면 응답을 보낸다(비연결성 보완) - 신뢰할 수 있는 프로토콜 : 패킷이 순서대로 도착하지 않으면 패킷 전송을 다시 요청(순서 보장, 비신뢰성 보완) UDP - 기능이 거의 없다(커스터마이징 가능) - 비 연결 지향 : TCP처럼 ..

network 2022.02.22

IP Packet 구조, 한계점

IP Packet의 한계점 1. 비연결성 패킷을 받을 대상이 없어도 전송하는 측에서는 이걸 알 방법이 없다. 예를 들어, 클라이언트에서 서버로 특정 IP 패킷을 전달할 때, 서버가 고장난 경우, 클라이언트에서는 그 사실을 모르고 그냥 패킷을 전송한다. 2. 비신뢰성 패킷이 전달되는 과정에서 패킷이 중간에 소실되거나 순서가 바뀐 경우 전송측에서 알 수 없다. (1) 패킷이 중간에 소실된 경우 -> 전송측에서 알 수 없음 (2) 큰 용량의 데이터를 패킷으로 나누어 전달 중인 경우 ex) foo / bar / Hello 순서로 클라이언트에서 전송했는데 서버측에서는 Hello / bar / foo 순서로 패킷을 받게 될 수 있다.

network 2022.02.22

가비지컬렉션의 대표적인 방법과 캐싱

이전 포스팅에서 이런식으로 필사하며 학습하는 방법은 좋아하지 않는다고 했지만, 이렇게 개념적인 내용이 많을 때에는 또 나쁘지 않은것같기도 하다. 느리지만 머릿속에 눌러담기에는 좋은 방법인것같다. 추가적으로 멀티프로세스와 멀티스레드의 방식차이, 데드락, 뮤텍스, 세마포어 등 프로세스/스레드 관련 용어 및 동기화 방법에 대해 포스팅할 생각이다. 요 부분은 학습 외 Self study 부분이 되겠다. 여기를 배우다보니.. 학부생 때 우리 과 운영체제 안듣고 굳이굳이 컴공과꺼 듣다가 학점이 가루가 되도록 찢긴 기억이 난다 :) 정말 좋은 추억이야 ^^ 학점은 찢겼지만 그래도 꽤 열심히 했던것같은데 이렇게 다시 보니 반갑다.. 이번엔 더 열심히 해볼게..

컴공기초 간단정리-응용프로그램, 프로세스, 스레드, 멀티스레드(+가비지컬렉션의 정의)

이전 포스팅에 이어지는 필사 학습자료이다. 개인적으로 이런 필기식 자료는 정말 안좋아한다. 그럼에도 불구하고 이렇게 포스팅하는 이유는 .. 집중력 저하로 노트북만 쳐다보고 있기에는 한 글자도 머리속에 우겨넣기 힘들듯 해서 ㅜㅜ 보는사람이 있나 싶지만, 주관적일 수 있는 정보도 들어가 있을 수 있으니 그런 부분은 주의해주시길 바랍니다!

express - req.params / req.query

express 모듈을 사용하여 클라이언트 요청을 처리할 때, 요청 uri에 포함된 쿼리 스트링, params에 따라 다르게 데이터를 필터링 할 수 있다. 1. req. params ex : https://eunsu.com/api/{:id} 위와 같은 uri가 있다고 하면 아래와 같이 사용 가능하다. //server app.get('/api',(req,res)=>{ const id = req.params.id; res.send({id}); } 2. req.query ex : https://eunsu.com/login?id=eunsu&password=password //server app.get('/login',(req,res)=>{ const id = req.query.id; const passwoer =..

node.js 2022.02.13