목록Network (11)
개발자 키우기
주요 기능 SSL은 클라이언트와 서버 간의 HTTP 통신을 PKI로 암호화(JWT와 동일한 방식)하여 보안을 강화시킨다. 또한 해당 주소가 변조되지 않고 진짜임을 공증하는데도 사용이 된다. 자세히 설명하자면 클라이언트가 서버와 통신을 하는데 서버 IP가 0.0.0.0라고 가정하면 보통은 클라이언트는 0.0.0.0이 서버라고 생각하고 통신하지만 실제 서버가 아니고 WAF나 로드벨런서 등과 통신을 하고 있고 0.0.0.0에 SSL인증서가 설치되어 있기 때문에 0.0.0.0과 통신을 하면 통신 과정에서 받은 HASH 암호를 사전에 PC에 배포된 CA 공개키로 암호가 풀리면 위조나 변조가 돼지않은 공증된 사이트다 라는걸 알 수가 있다. 설치 장소 클라이언트와 서버사이의 네트워크에는 IPS나 WAF, 로드벨런서,..
HTTP 1.0 1. 클라이언트에서 서버로 TCP/IP 연결 2. HTML 요청 3. HTML 응답 4. 클라이언트에서 서버로 TCP/IP 연결 5. CSS 요청 6. CSS 응답 7. 클라이언트에서 서버로 TCP/IP 연결 8. JS 요청 9. JS 응답 10. 필요한 파일을 다 받을 때까지 반복 HTTP 1.1 ( TCP/IP 연결을 줄임 ) 1. 클라이언트에서 서버로 TCP/IP 연결 2. HTML 요청 3. HTML 응답 4. CSS 요청 5. CSS 응답 6. JS 요청 7. JS 응답 8. 필요한 파일을 다 받을때까지 반복 HTTP 2.0 ( 중복되는 헤더 압축 / 바이너리 프레이밍 레이어 추가 - 병렬화 전송 / 서버 푸시 / TSL 옵션 ) 1. 클라이언트에서 서버로 TCP/IP 연결 2...
1. 브라우저에 URL을 입력한다. ( https://twosharkbaby.tistory.com/ ) 2. 컴퓨터에 저장된 hosts에서 https://twosharkbaby.tistory.com/ 에 해당하는 ip 주소가 있는지 확인한다. 3. 위의 방법에서 ip값이 없다면 DNS Cache에서 https://twosharkbaby.tistory.com/ 에 해당하는 ip 주소가 있는지 확인한다. 4. 위의 방법에서 ip값이 없다면 DNS 서버에 DNS Query를 던져서 https://twosharkbaby.tistory.com/ 에 해당하는 ip 주소가 있는지 확인한다. 5. 브라우저는 획득한 IP주소로 TCP/IP 연결을 수행한다. 6. 연결이 성공적으로 완료되면 HTTP 프로토콜을 사용한 Re..
HTTP 상태 코드는 HTTP 프로토콜을 통해 클라이언트가 서버로부터 받는 응답의 상태를 나타내는 셋 자리 숫자로 이루어진 코드이다. 이 코드는 서버가 요청을 성공적으로 처리했는지, 오류가 발생했는지, 리다이렉션을 수행해야 하는지 등을 클라이언트에게 알려준다. Informational responses (100 – 199) Successful responses (200 – 299) Redirection messages (300 – 399) Client error responses (400 – 499) Server error responses (500 – 599) 모질라 status codes 관련 문서 참고 ( https://developer.mozilla.org/en-US/docs/Web/HTTP/St..
URI(Uniform Resource Identifier)는 인터넷에서 리소스를 식별하는 일반적인 방법을 제공하는 문자열이다 URI을 설계할 때는 리소스(명사)에 중점을 두고 설계하고 행위(동사)는 메서드로 구현해야 함 HTTP 프로토콜에서 주로 사용되는 메서드(Method)는 아래와 같다 GET은 리소스를 조회할 때 사용되며 헤드에 쿼리를 통하여 서버에 데이터 전달 POST는 데이터 처리와 대부분 등록할 때 사용되며 메시지 바디를 통하여 데이터 전달 PUT은 리소스가 없으면 생성하고 있으면 기존 리소스를 덮어쓰며 클라이언트가 리소스 위치를 알고 URI를 지정하여 사용하기 때문에 대부분 값을 수정할 때나 파일 등록할 때 사용되며 메시지 바디를 통하여 데이터 전달 PATCH는 리소스의 일부분을 변경할 때 ..
HTTP의 특징 중 Stateful과 Stateless가 있는데 웹 애플리케이션의 세션 관리 방식의 분류다 1. Stateful ( 상태 정보를 가지고 있음 ) 로그인 기능과 같이 상태 유지 방식에 사용되며 쿠키와 세션을 통해 유지 요청 크기가 작고 작업 흐름을 관리 할 수 있음 세션 관리가 필요하기 때문에 확장과 부하 분산이 어려움 2. Stateless ( 상태 정보를 가지고 있지 않음 ) RESTful API를 사용하여 각 요청이 독립적이며 캐싱을 통해 성능 향상 가능 상태를 관리하지 않기 때문에 서버의 부하 감소하고 확장성이 높음 로그인 기능과 같이 서버가 클라이언트의 상태 정보가 필요한 경우가 아니라면 대부분 Stateless를 사용
ISP는 일반적인 인터넷 사용자들에게 유동적인 IP를 할당해준다 그 이유는 IPv4의 갯수 문제도 있지만 효율적으로 ip를 관리하기 위해서이다 이러한 활동을 DHCP 할당이라고 하며 유동IP 라고도 한다 백앤드 개발자라면 서버를 운용하기에 유동IP는 부적절함으로 고정IP로 설정해야한다

DNS는 분산형 DB이며 계층적이라 최상단의 Root DNS가 존재한다 예를들어 www는 호스트 이름이고 naver.com은 도메인 이름이다 주소창에 www.naver.com 이라고 치면 첫번째로 PC메모리의 DNS케시(유효기간존재함)를 확인하고 여기에 없으면 두번째로 Host File을 확인하고 여기도 없으면 세번째로 공유기(DNS대리자처럼 행동/DNS 포워딩 기능을 제공)에서 확인하고 여기도 없으면 네번째로 통신사에서 제공하는 ISP의 DNS 캐시를 확인한다 여기도 없으면 DNS 캐시는 최상단의 Root DNS에게 *.com에 관련된 DNS 목록을 요청하고 요청받을 것중 최적의 .com에게 naver의 목록을 요청한다. 요청받은 목록 중 naver에게 호스트가 www인지 확인하고 맞다면 이때 IP주소..