지정한 IP 주소(IP Address)에 데이터 전달패킷(Packet)이라는 통신 단위로 데이터 전달 클라이언트와 서버가 IP 주소를 부여받는다. IP 패킷정보에는 나의 IP(출발지 IP), 목적지 IP와 전송할 데이터로 구성되어 있다. 클라이언트에서 인터넷망으로 패킷
프로그램이 메시지(Hello)를 생성한다. Socket 라이브러리를 통해 OS 계층으로 메시지가 전달이 된다.OS 계층의 TCP에서 메시지에 TCP 정보를 생성한다.IP에서 TCP정보가 포함된 메시지에 IP 패킷을 생성한다.네트워크의 LAN 카드에서 이더넷 프레임이 포
클라이언트가 두 대의 서버와 여러개의 통신하고 있다.(게임,화상통화,웹 브라우저)이 때 패킷들이 어떻게 올바르게 연결할 수 있을까? (게임 패킷은 게임으로 브라우저 패킷은 브라우저로..)클라이언트에서 게임 서버로 접속할 때는 서버IP:11220으로 접속하고게임 서버에서
IP는 기억하기 어렵다 ㅜㅜ IP가 변경되었는데 알지 못해서 접속을 할 수 없는 경우가 생긴다.전화번호부도메인 명을 IP 주소로 변환 DNS 서버에 도메인을 등록한다.도메인 명으로 접속을 한다면 DNS서버에서 해당 도메인에 해당하는 IP를 응답해준다.응답 받은 IP로
Uniform : 리소스 식별하는 통일된 방식Resource : 자원, URI로 식별할 수 있는 모든 것(제한 없음)Identifier : 다른 항목과 구분하는데 필요한 정보URL : Uniform Resource LocatorURN : Uniform Resource
위의 url로 웹브라우저 요청을 한다면??먼저 DNS 도메인명(www.google.com)에 해당하는 IP를 DNS 서버에서 찾는다.HTTP 요청 메시지를 생성한다.웹 브라우저가 HTTP 메시지를 생성한다.Socket 라이브러리를 통해 OS 계층으로 전달된다.A : T
HTTP/0.9 1991년 : GET 메소드만 지원, HTTP 헤더 XHTTP/1.0 1996년 : 메소드, 헤더 추가HTTP/1.1 1997년 : 가장 많이 사용HTTP/2 2015년 : 성능 개선HTTP/3 진행중 : TCP 대신에 UDP 사용, 성능 개선TCP :
TCP/IP는 기본적으로 연결을 유지한다. 때문에 클라이언트 2가 서버에 요청하고 응답을 할 때에도 클라이언트1은 서버와 계속 연결을 유지하고 있다.클라이언트 3이 서버에 요청하고 응답할 때에도 클라이언트 1,2는 서버와 계속 연결을 유지하고 있다.이는 곧 서버 자원이
시작라인헤더공백 라인 메시지 Body HTTP 메소드 (GET: 조회)요청 대상(/search?q=hello&hl=ko)HTTP Version종류 : GET, POST, PUT, DELETE ..서버가 수행해야 할 동작 지정 GET : 리소스 조회POST : 요청 내역
회원 목록 조회 : /members회원 조회 : /members/{id}회원 등록 : /members/{id}회원 수정 : /members/{id}회원 삭제 : /members/{id}cf) 계층 구조상 상위를 컬렉션으로 보고 복수단어 사용을 권장한다.ex) membe
안전(Safe Methods)멱등(Idempotent Methods)캐시가능(Cacheable Methods)호출해도 리소스를 변경하지 않는다.f(f(x)) = f(x)한 번 호출하든 두 번 호출하든 100번 호출하든 결과가 똑같다.멱등 메소드GET : 한 번 조회하든
GET주로 정렬 필터(검색어)POST, PUT, PATCH회원 가입, 상품 주문, 리소스 등록, 리소스 변경이미지, 정적 텍스트 문서조회는 GET 사용정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로를 단순하게 조회 가능하다.주로 검색, 게시판 목록에서 정렬 필
회원 목록 /members -> GET회원 등록 /members -> POST회원 조회 /members/{id} -> GET회원 수정 /members/{id} -> PATCH, PUT, POST회원 삭제 /members/{id} -> DELETE파일 목록 /files
상태 코드 클라언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 > - 1xx (Informational) : 요청이 수신되어 처리중 2xx (Successful) : 요청 정상 처리 3xx (Redirection) : 요청을 완료하려면 추가 행동이 필요 4xx
메시지 본문(message body)을 통해 표현 데이터 전달메시지 본문 = payload표현은 요청이나 응답에서 전달할 실제 데이터표현 헤더는 표현 데이터를 해석할 수 있는 정보를 제공한다.데이터 유형(html,json), 데이터 길이, 압축 정보 등등Content-
Accept : 클라이언트가 선호하는 미디어 타입 전달Accept-Charset : 클라이언트가 선호하는 문자 인코딩Accept-Encoding : 클라이언트가 선호하는 압축 인코딩Accept-Language : 클라이언트가 선호하는 자연 언어협상 헤더는 요청시에만 사
단순 전송압축 전송분할 전송범위 전송 Content에 대한 길이를 알 수 있을 때 사용한번에 요청하고 한번에 받는다.Content를 압축해서 보낸다. Encoding 방식을 서술해야한다.Content를 분할해서 보낸다. 용량이 너무 클 때 사용한다.Content-Len
Host : 요청한 호스트 정보(도메인)Location : 페이지 RedirectionAllow : 허용 가능한 HTTP 메소드Retry-After : 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간요청에서 사용된다.필수다.하나의 서버가 여러 도메인을 처리해야
Authorization : 클라이언트 인증 정보를 서버에 전달한다.WWW-Authenticate : 리소스 접근시 필요한 인증 방법을 정의한다.Authorization : Basic xxxxxxxxxxxxxxxx리소스 접근시 필요한 인증 방법을 정의한다.401 Una
Set-Cookie : 서버에서 클라이언트로 쿠키를 전달한다.(응답)Cookie : 클라이언트가 서버에서 받은 쿠키를 저장하고 HTTP 요청시 서버로 전달한다. 클라이언트에서 /welcome url로 접근하면 인사 메시지를 응답받는다.클라이언트에서 /login url로
웹브라우저에서 GET으로 /star.jpg url에 요청을 했을 때 만약 이미지에 해당 하는 크기가 HTTP 헤더가 0.1M, HTTP 바디가 1.0M으로 총 1.1M라고 가정해보자.서버는 클라이언트에게 이미지(1.1M)를 전송해준다.웹브라우저에서 똑같이 GET으로 /
캐시 유효 시간이 초과해서 서버에 다시 요청하면 다음 두 가지 상황이 나타난다.서버에서 기존 데이터를 변경함서버에서 기존 데이터를 변경하지 않음 생각해보면 데이터를 전송하는 대신에 저장해 두었던 캐시를 재사용 할 수 있다.단 클라이언트의 데이터와 서버의 데이터가 같다는
검증 헤더캐시 데이터와 서버 데이터가 같은지 검증하는 데이터Last-Modified, ETag조건부 요청 헤더검증 헤더로 조건에 따른 분기If-Modified-Since: Last-Modified 사용If-None-Match: ETag 사용조건이 만족하면 200 OK조
Cache-Control : 캐시 제어Pragma : 캐시 제어(하위 호환)Expires : 캐시 유효 기간(하위 호환)Cache-Control: max-age캐시 유효 시간, 초 단위Cache-Control: no-cache데이터는 캐시해도 되지만 항상 원(origi
한국 브라우저에서 미국에 있는 원서버와 연결을 맺으면 속도가 너무 느리다.한국에 프록시 캐시 서버를 만든다.브라우저에서 원 서버로 바로 오지 않고 프록시 캐시 서버를 거쳐서 오게한다.프록시 캐시 서버에서 공용으로 사용하는 캐시를 public 캐시라고 부른다.웹 브라우저
Cache-Control: no-cache, no-store, must-revalidatePragma: no-cacheHTTP 1.0 하위 호환no-cache데이터는 캐시해도 되지만 항ㅈ상 원 서버에 검증하고 사용(이름에 주의해야 한다.)no-store데이터에 민감한