이론공부/네트워크통신13 웹훅(Webhook)이란 무엇인가? 서비스를 만들다 보면 어디에서 무슨일이 일어나고 있는지 알아야 할때가 있다. 백엔드 개발자가 겪을 수 있는 예로는 CI/CD를 들 수 있다. 깃허브에 코드가 업데이트 되었는지 알고싶다면 어떻게 해야할까? 계속 요청을 보내서(polling 방식) 코드가 바뀌었는지 확인을 해야할까? 그렇다면 깃허브 서버에 부담이 늘어날 것이다. 또한 바뀌는 잠깐을 확인하기 위해서 계속해서 요청을 보내는 것 역시 매우 비효율적이다. 이러한 문제를 해결하기 위해 Webhook을 이용한다. Webhook이란 특정 이벤트가 발생하였을때 타 서비스 혹은 응용프로그램으로 알림을 보내는 기능이다. 즉, 깃허브에서 코드가 업데이트가 되었다면 CI/CD를 담당하는 Jenkins서버에 요청을 내고, Jenkins서버는 깃허브에서 코드를 가져.. 이론공부/네트워크통신 2021. 8. 23. OAuth란 무엇인가? OAuth OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. OAuth는 왜 사용해야 할까? OAuth가 나오기 전에는 모든 사이트를 이용할때마다 개인정보를 입력하여 회원가입을 해야했다. 그렇지만 보안적인 문제로 인하여 특정 사이트에 대한 신뢰성이 문제가 되었다. 이러한 문제를 해결하기 위해서 개인정보를 입력하지 않고 회원의 정보를 가져올 방법이 필요했고, 여러가지 방법이 나왔는데 구글의 AuthSub, AOL의 OpenAuth, 야후의 BBAuth 등이 있었다. OAuth는 위의 제각각인 방법을 표준화 시킨 인증방식이다. 인증방식 사진출처.. 이론공부/네트워크통신 2021. 8. 22. HTTPS란 무엇인가? HTTPS란 HyperText Transfer Protocol over Secure Socket Layer의 약자이다 HTTPS는 왜사용하는가? 외부에서 내가보낸 데이터를 훔처보지 못하게 하기위해서 사용한다. http통신에서는 평문통신을 하게되는데 이럴때는 외부에서 감청을 할 수 있게된다. 여기서 평문을 서버에서만 알아볼수 있도록 암호화 하는것이 https 이다. 어떻게 암호화를 하는것인가? 대칭키와 비대칭키를 이용한 암호화를 한다. 대칭키 : 암호화와 복호화 하는 방식이 같다. ex) 1 -> A, A->1 결국 대칭키를 전달하는 과정이 필요하기 때문에 문제점이 생긴다.(중간탈취) 비대칭키(공개키, 개인키) : 암호화와 복호화 하는 방식이 다른다. A키와 B키가 있다고 할때 A키로 암호화를 하면 B키로.. 이론공부/네트워크통신 2020. 10. 1. 인터넷은 어떻게 동작하는가? 출처 : https://developer.mozilla.org/ko/docs/Learn/Common_questions/How_does_the_Internet_work 인터넷은 어떻게 동작하는가? 인터넷은 웹의 핵심적인 기술입니다. 인터넷의 가장 기본적인 것은, 컴퓨터들이 서로 통신 가능한 거대한 네트워크라는 것입니다. developer.mozilla.org 면접을 준비하면서 많은 부족함을 느끼게 되었다. 그래서 처음부터 기초를 정리하기 위해 백엔드 개발자 로드맵을 보면서 하나하나 정리해 나가려고 한다. 요약 인터넷은 컴퓨터들이 서로 통신 가능한 거대한 네트워크이다. 인터넷은 1960년대 미 육군에서 기금한 연구프로젝트에서 시작되었다. 이후 1980년대에 많은 국립대학과 비공개 기업의 지원으로 공공의 기반.. 이론공부/네트워크통신 2020. 8. 12. HTTP는 무엇인가? 출처 : https://ko.wikipedia.org/wiki/HTTP HTTP - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. HTTP(HyperText Transfer Protocol, 문화어: 초본문전송규약, 하이퍼본문전송규약)는 W3 상에서 정보를 주고받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고받는 데에 �� ko.wikipedia.org https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP HTTP 기본 HTTP는 상당히 확장 가능한 프로토콜입니다. 자원과 URI의 개념, 메시지의 단순한 구조, 통신 흐름을 위한 클라이언트-서버 구조와 같은 몇 가지 기본 개념에 의존합니다. 이러한 기본 개념을 토대 deve.. 이론공부/네트워크통신 2020. 8. 9. OSI7계층에 대해서 OSI모델 컴퓨터 네트워크 운영을 규정하기 위해 개발되었다. 네트워크 프로토콜디자인과 통신을 계층으로 나누어서 설명한것이다. OSI7계층으로 나눈이유 모듈화를 함으로서 복잡도를 낮추어 흐름을 한눈에 알아보고 사람들이 이해하기 쉽도록 하기위해서이다. 또한 특정 레이어의 장비혹은 소프트웨어에 이상이 생긴다면 다른 단계의 장비는 건들이지 않고 고장난 부분만 고칠 수 있도록 하기위해서이다. 예를 들어서 편지를 쓰는 기계와, 암호화해주는 기계, 전달해주는 기계와 해당 기능을 모두 가지고있는 하나의 기계가 있다고 한다면 암호화되는 부분만 고장났을때 바꾸거나 수리하는 비용에서 차이가 생기게 된다. OSI7계층은 아래와 같으며 각 계층마다 불리는 메시지의 이름이 다르다. 이미지 출처 : https://www.lifew.. 이론공부/네트워크통신 2020. 8. 8. TCP/UDP/SCTP란 무엇인가?(특징, 차이점) 이미지 출처 : https://shjz.tistory.com/98 TCP TCP는 OSI7계층중 4계층인 전송계층에서 사용하는 신뢰성이 중요한 어떤 응용에 의해 사용될 수 있는 신뢰성 있는 연결-지형 프로토콜이다. 연결지향 서비스를 제공하기 위하여 연결설정, 데이터 전송, 연결 해제 단계를 정의한다. TCP는 전이중 통신을 제공하여 데이터는 동시에 양방향으로 전달 될 수 있다. 흐름제어와 혼잡제어, 오류제어를 제공한다. 흐름제어 : - 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리속도를 조절하여 수신자의 버퍼오버플로우를 방지한다. - 송신자가 데이터를 만드는 속도와 수신자가 데이터를 사용하는 속도의 균형을 맞춘다. 혼잡제어: - 네트워크 내의 패킷수가 넘치게 증가하지 않도록 방지 - 흐름을 제어한다고.. 이론공부/네트워크통신 2020. 8. 7. TCP 3-way handwake란 무엇인가? TCP란? TCP는 OSI7계층중 4계층인 전송계층에서 사용하는 신뢰성이 중요한 어떤 응용에 의해 사용될 수 있는 신뢰성 있는 연결-지형 프로토콜이다. 연결지향 서비스를 제공하기 위하여 연결설정, 데이터 전송, 연결 해제 단계를 정의한다. TCP는 전이중 통신을 제공하여 데이터는 동시에 양방향으로 전달 될 수 있다. TCP 3-way handwake TCP는 데이터를 전송하기 위해 근원지와 목적지 사이에 가상의 경로를 설정한다. 이러한 가상의 경로를 설정하는 과정을 3-way handwake라고 한다. 과정은 서버부터 시작이되며 서버 프로그램은 TCP에게 연결을 받을 준비가 되어있다고 알리며 이를 수동개방(passive open)요청 이라고 한다. 클라이언트 프로그램은 개방된 특정 서버와 연결이 필요하다.. 이론공부/네트워크통신 2020. 8. 6. 쿠키/세션이란 무엇인가? 시작전에 쿠키와 세션을 사용하는 이유에 대해서 알아봤다. 쿠키와 세션을 사용하는 이유는 HTTP특징때문이다. * connectionless, stateless한 특징때문에 HTTP 프로토콜 환경에서 서버는 클라이언트가 누구인지 확인해야 한다. - connectionless : 서버는 클라이언트에게 요청을 받으면 response를 보내고 접속을 끊는 특성 - stateless : 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태정보는 유지하지 않는 특성 * 쿠키와 세션은 이런 특징을 보완(해결)하기 위해 사용합니다. 쿠키 사용자의 컴퓨터에 저장하는 정보로써 key와 value가 들어있는 작은 데이터 파일이다. 유효시간을 명시할 수 있으며, 브라우저가 종료되어도 인증시간이 유지된다는 특징이 있다. 클.. 이론공부/네트워크통신 2020. 8. 3. CORS란 무엇인가? Django를 이용해서 REST API를 만드는데 프론트단에서 정보를 요청할때 CORS에러가 났던 적이있다. CORS관련된 라이브러리를 사용하여 해결하였는데 CORS가 무엇인지 궁금하여 해당 포스팅을 작성하게 되었다. CORS란 교차 출처 리소스 공유(Cross-origin resource sharing)의 약자로 서비스된 도메인 밖의 다른 다른 도메인으로부터 요청할 수 있게 허용하는 구조이다. 특정 도메인간(cross-domain) 요청, 특히 Ajax요청은 동일-출처 보안정책(same-origin policy)에 의해 기본적으로 금지된다고 한다. 보안 상의 이유로, 브라우저는 스크립트에서 시작한 교차 출처 HTTP 요청을 제한한다. CORS는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행중인 웹 .. 이론공부/네트워크통신 2020. 8. 2. CSRF란 무엇인가? 방어기법? Django를 이용하여 웹사이트를 만들때 POST로 요청을 보내면 CSRF 토큰이 존재하지 않는다며 에러가 났던적이 있다. CSRF 토큰을 form 사이에 {% csrf_token %} 와 같이 추가만 해도 해결되는 문제였는데 이것이 무엇인지 궁금하여 포스팅하게 되었다. CSRF(Cross Site Request Frogery)란 사용자가 자신의 의지와 상관없이 공격자(해커)가 의도한 대로 수정,등록,삭제 등의 행위를 웹사이트에 요청하게 하는 공격이다. 이러한 공격을 막기위한 방법이 있다. 1. Referrer 검증 Referrer 검증은 Backend에서 request의 referrer를 확인하여 도메인이 일치하는지 검증하는 방법이다. 일반적으로 referrer 검증만으로 대부분의 CSRF공격을 방어할.. 이론공부/네트워크통신 2020. 7. 31. GET, POST방식의 이해 1.GET 방식과 POST 방식의 이해 두개의 방식은 클라이언트에서 정보를 얻고 싶으면 서버에 요청 메시지를 보내서 응답을 받는 구조입니다. 데이터를 요청할 때 2가지 방법이 있습니다. 첫 번째는 GET 방식입니다. GET 방식은 헤더에 정보를 담아 요청을 합니다. 응답은 페이로드에 들어옵니다. 장점은 구현이 빠르고 편합니다. 단점은 보안에 취약합니다. (모든 요청 정보가 헤더에 있어서, ID, PW 요청하시면 안 됩니다.) 헤더의 크기가 한정적이라 보내는 데이터양에 제한이 있습니다. 두 번째는 POST 방식입니다. 포스트 방식은 페이로드에 정보를 넣어서 서버에서 페이로드의 정보에 따라 응답을 보내주는 방식입니다. 장점은 클라이언트에서 크기에 상관없이 서버에 정보 전달이 가능합니다. 정보가 헤더에 보.. 이론공부/네트워크통신 2020. 4. 25. 이전 1 2 다음 💲 광고입니다.