일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- HTTP
- 열혈 TCP/IP 소켓 프로그래밍
- 열혈 tcp/ip 프로그래밍
- 김영한
- 제프리리처
- C#
- FIFO paging
- BOJ
- 10026번
- 스프링 입문
- 이펙티브코틀린
- Spring
- 2475번
- inflearn
- Four Squares
- OS
- 윤성우 저자
- 토마토
- 우아한 테크 세미나
- Operating System.
- 에러핸들링
- TCP/IP
- 스프링 핵심 원리
- 우아한레디스
- 운영체제
- n타일링2
- C++
- redis
- Window-Via-c/c++
- Operating System
- Today
- Total
목록분류 전체보기 (206)
나의 브을로오그으
[목차] - Redis 소개 - 왜 Collection이 중요한가? - Redis Collections - Redis 운영 - Redis 데이터 분산 - Redis Failover [Redis 소개] - In-Memory 데이터구조 저장소 - 오픈소스 (BSD 3License) - 여러 자료구조를 지원 - 오직 1명의 커미터(Redis 개발자) [Cache] - Cache는 나중에 요청한 결과를 미리 저장했다가 빠르게 서비스를 해주는 것. (Cache Memory의 기능과 유사, Dynamic 프로그래밍도 이와 비슷 ex) 아주 큰 수의 factorial을 계산 할 때 이전에 계산해놓은 팩토리얼을 어딘가에 저장해놓으면 계산하기가 아주 쉬워진다.) [CPU Cache 그림] 위로갈수록 속도가 빨라지고 밑으..
캐시 기본 동작 캐시가 없을 때 첫 번째 요청 요청 GET /star.jpg HTTP/1.1 응답 HTTP/1.1 200 OK Content-Type: image/jpeg Content-Length: 34012 aksjdfikjbkjbnkjnzxcokjjifvnike15423kcv sodnvndkaskfkdvbk125kcvk2kvfk4kbkdsfbk 약 1.1M 크기의 이미지를 보내고, 웹브라우저에서 해당 이미지를 랜더링 이후 캐시가 없을 때 또 한번 요청을 하게되면 아까전 요청과 똑같이 응답을 내려준다. 캐시가 없을 때 - 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 한다. - 인터넷 네트워크는 매우 느리고 비싸다. - 브라우저 로딩 속도가 느리다. - 느린 사용자 경험 캐..
HTTP 헤더 개요 헤더 구조 - header-field : field-name":" OWS field-value OWS (OWS: 띄어쓰기 사용) HTTP 헤더 용도 - HTTP 전송에 필요한 모든 부가정보 - 예) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보 등등.... - 표준 헤더가 너무 많음 - 필요시 임의의 헤더 추가 가능 - helloworld:hihi HTTP 헤더 분류 - RFC2616(과거) - 헤더 분류 * General 헤더: 메시지 전체에 적용되는 정보 예) Connection: close * Request 헤더: 요청 정보, 예) User-Agent: Mozila/5.0 (Macintosh; ...) * Response ..
#1. Domain Name System DNS(Domain Name System) : IP주소와 도메인 이름 사이에서의 변환을 수행하는 시스템 도메인 이름이란? IP주소를 대신하여 도메인 이름이라는 것을 부여한 것. DNS 서버 인터넷 브라우저 주소 창에 네이버의 IP주소인 223.130.200.107를 직접 입력하면 네이버의 메인 페이지를 볼 수 있다. (주소가 변경될 수 있기 때문에 cmd -> nslookup www.naver.com을 을 입력) 사실 IP 주소를 직접 입력하나 도메인 이름을 입력하나 똑같이 네이버 메인 페이지를 볼 수 있다. 두 접속의 결과는 같지만 방법은 다르다. 도메인 네임은 서버에 부여된 별명(가상의 주소)이기 때문에 실제주소가 아니다. 따라서 도메인 네임을 실제 주소로 변..
지금까지의 종료는 그저 close(), closesocket()함수를 호출하여 상대방의 의사와 상관 없이 일방적으로 연결을 끊었었다. #1. TCP기반의 Half-close TCP에서는 사실 연결 보다 연결 종료과정이 더 중요하다. 연결과정에서는 큰 변수가 발생하지 않지만 종료과정에서는 예상치 못한 일이 발생할 수 있기 때문이다. 일방적인 연결종료의 문제점 리눅스의 close(), 윈도우의 closesocket() 함수호출은 소켓의 완전종료를 의미한다.(송수신 불가) 양방향으로 통신하고 있는 두 호스트간에 한 호스트가 연결종료를 하면 데이터가 존재해도 수신측 호스트는 데이터 수신이 불가능하다. 이를 해결하기위해 송수신에 사용되는 스트림의 일부만 종료(half-close)하는 방법이 제공되고 있다. (ha..
HTTP 상태 코드 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 - 1xx(informational): 요청이 수신되어 처리중 (거의 않씀) - 2xx(Successful): 요청 정상 처리 - 3xx(Redirection): 요청을 완료하려면 추가 행동이 필요 - 4xx(Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음 - 5xx(Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함 만약 모르는 상태 코드가 나온다면? - 클라이언트가 인식할 수 없는 상태코드를 서버가 반환하면? - 클라이언트는 상위 상태코드로 해석해서 처리 - 미래에 새로운 상태 코드가 추가되어드 클라이언트를 변경하지 않아도 됨. - 예) * 299 ??? ..
#1. UDP 소켓의 특성 UDP는 신뢰할 수 없는 전송방법을 제공한다. 그러나 SEQ, ACK와 같은 작업을 하는 일이 없기 때문에 좋은 성능을 발휘한다. 신뢰성보다 성능이 중요하다면 UDP가 더 나은 선택이 될 수 있다. 그렇다면 UDP의 역할은 어디까지일까? 앞서 TCP는 신뢰성 없는 IP를 기반으로 신뢰성 있는 데이터의 송수신을 위해서 '흐름제어(Flow Control)'를 한다고 설명했는데, 이 흐름제어가 UDP에는 존재하지 않는다. TCP와 UDP의 가장 큰 차이점이 바로 이 흐름제어이며, TCP의 흐름제어를 빼면, 별로 남는게 없다. 호스트 A -> 호스트 B : 패킷 전달될 때 호스트 B로 잘 도착하도록 하는것이 IP의 역할인데, 이렇게 전달된 UDP 패킷을 호스트 B내에 존재하는 UDP ..
- HTTP API - 컬렉션 * POST 기반 등록 * 예) 회원 관리 API 제공 - HTTP API - 스토어 * PUT 기반 등록 * 예) 정적 컨텐츠 관리, 원격 파일 관리 - HTML FORM 사용 * 웹 페이지 회원 관리 * GET, POST만 지원 회원 관리 시스템 API 설계 - POST 기반 등록 - 회원 목록 /members : GET - 회원 등록 /members : POST - 회원 조회 /members/{id} : GET - 회원 수정 /members/{id} : PATCH, PUT, POST - 회원 삭제 /members/{id} : DELETE (다시한번 강조하지만 URI 설계는 항상 리소스를 기준으로 설계를 해야 한다.) 회원 관리 시스템 POST - 신규 자원 등록 특징 ..
클라이언트에서 서버로 데이터 전송 데이터 전달 방식은 크게 2가지 - 쿼리 파라미터를 통한 데이터 전송 * GET * 주로 정렬 필터(검색어) - 메시지 바디를 통한 데이터 전송 * POST, PUT, PATCH * 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 클라이언트에서 서버로 데이터 전송 4가지 상황 - 정적 데이터 조회 * 이미지, 정적 텍스트 문서 - 동적 데이터 조회 * 주로 검색, 게시판 목록에서 정렬 필터(검색어) - HTML Form을 통한 데이터 전송 * 회원 가입, 상품 주문, 데이터 변경 - HTTP API를 통한 데이터 전송 * 회원 가입, 상품 주문, 데이터 변경 * 서버 to 서버, 앱 클라이언트 ,웹 클라이언트(Ajax) 정적 데이터 조회 쿼리 파라미터 미사용 GET ..
HTTP 메서드 - HTTP API를 만들어보자 - HTTP 메서드 - GET, POST - HTTP 메서드 - PUT, PATCH, DELETE - HTTP 메서드의 속성 요구사항 회원 정보 관리 API를 만들어라 - 회원 목록 조회 - 회원 조회 - 회원 등록 - 회원 수정 - 회원 삭제 요구 사항에 따라 URL를 설계한다. API URI 설계 URI(Uniform Resource Identifier) - 회원 목록 조회 - /read_member_list - 회원 조회 - /read_member - 회원 등록 - /insert_member - 회원 삭제 - /delete_member - 회원 수정 - /modify_member 이렇게 설계하는게 좋은 설계일까? - 리소스의 의미는 뭘까? * 회원을 ..