💼 CS

    OAuth 정복기 (OAuth1.0 에서 OAuth2.0로)

    OAuth 정복기 (OAuth1.0 에서 OAuth2.0로)

    OAuth : Open Authorization (+Authentication) OAuth 는 “인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹 사이트 상의 자신들의 정보에 대해 웹사이트나 어플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준 프로토콜이다.” (위키백과) 무슨 말인데 이게 예를 들어 “juju” 라는 웹사이트가 있다고 하자. juju 는 사용자 인증을 위해 Google 이나 Kakao 등의 소셜 로그인 방식을 사용한다. 이렇게 로그인하게 되면 juju 는 외부 서비스 (Google, Kakao) 의 특정 자원을 접근 및 사용할 수 있는 권한을 인가 받게 된다. 이때 사용되는 프로토콜이 바로 OAuth ! 접근 권한을 위임 받을 수 있는..

    JWT가 뭔데요?

    JWT가 뭔데요?

    스터디에서 쿠키와 세션방식에 대해서 함께 토론하던 중 토큰 방식에 대한 얘기가 나왔다. 토큰에 대해 얘기하다보면 빠지지 않고 나오는 주제인 JWT 에 대해 공부해보았다. 맨날 안다고 하면서 잘 모르는 나 Session vs Token. (with JWT) 먼저 웹 서버에서 Session 기반으로 인증하는 시나리오 를 생각해보자. 유저 로그인 로그인 성공 시 Session 을 서버 단(메모리, DB 등)에 저장 Session ID 를 클라이언트로 전송, 클라이언트는 Session ID 를 Cookie 로 저장 브라우저는 매 요청마다 request 에 Session ID 를 쿠키에 담아 전송 서버는 Session ID 가 일치하는지 확인 Session 기반 인증의 장점 은 아래와 같다. 서버 쪽에서 사용자 ..

    Network :: Flow Control & Congestion Control

    Network :: Flow Control & Congestion Control

    Flow Control 상대와 나와 버퍼 크기를 맞추어가면서 받을 수 있는 상황에만 상대방이 보내도록 하는 것이 Flow control ! TCP header 안 receive window 항목에 현재 버퍼에 받을 수 있는 만큼의 공간인 rwnd 부분 value 를 채워서 상대에게 보내고, 상대는 최대 그만큼의 데이터만 보내게 된다. → 따라서 buffer overflow 가 일어나지 않음 ! 초기에는 receive window 에 RcvBuffer 사이즈가 설정되고 (일반적으로 4096) 이후에는 받을 수 있는 만큼(rwnd 값)을 receive window 에 보내면서 흐름 제어 ! Congestion Control 한 번에 너무 많은 데이터를 보내면 네트워크에 문제가 생길 수 있다. → 그래서 한 ..

    Network :: TCP

    Network :: TCP

    TCP 특징 point-to-point : 1대1 연결 reliable, in-order byte stream : 신뢰성 있는 연결, 순서를 가진 데이터 전송 pipelined : stop-and-wait 하지 않게 데이터를 전송 이 방식은 congestion control 과 flow control 이 같이 동반되어야 함 ! full duplex data : 양방향으로 데이터를 주고 받을 수 있음 MSS : maximum segment size connection-oriented : 연결 지향 handshaking flow controlled : 수신자가 받을 수 있는 용량을 송신자가 고려함 헤더 구조 source port / dest port : 각 2bytes sequence number : 4by..

    Network :: UDP

    Network :: UDP

    UDP User Datagram Protocol connectionless no handshaking 사용되는 곳 스트리밍 multimedia app DNS SNMP UDP 헤더 헤더 8byte 밖에 없다. source port : 16bit (0~65535) dest port : 16bit (0~65535) 1000번 이하 포트는 well-known 포트이므로 쓰지 말자 UDP Checksum 싹 다 더한다 1의 보수를 취한다

    Network :: Pipelined protocol

    Network :: Pipelined protocol

    등장 배경 Reliable 하게 전송을 하기 위해서는 패킷을 보내고 잘 받았는지 ACK 응답을 받아야 한다. 하지만 ACK 을 받고 다음 패킷을 전송하려면 stop-and-wait 문제가 발생하게 된다. 패킷을 실제 전송하는데는 시간이 거의 걸리지 않지만, 패킷이 네트워크를 타고 목적지까지 갔다가 ACK 신호를 가지고 돌아오는데까지 걸리는 RTT (Round Trip Time : 왕복시간) 가 너무 많이 걸리기 때문에 ACK 신호를 받고 다음 패킷을 보내는 것은 사실상 어렵다. 이를 극복하고자 나온 것이 Pipelined protocol ! Pipelined protocol pipelined protocol 에서 사용하는 방법은 두 가지가 있다. go-Back-N selective repeat Go-Ba..

    Network :: Routing protocol

    Network :: Routing protocol

    목표 목적지까지 가는 가장 좋은 path 를 찾아내는 것 좋은 path 란 ? 비용이 적게 들거나, 가장 빠르거나, least congested 하거나 ! 분류 Q. global or decentralized information ? global → link state algorithm decentralized → distance vector algorithm Q. static or dynamic ? static dynamic Link state algorithm Dijkstra’s algorithm 특정 출발지에서부터 모든 노드로 최단 경로 찾기 알고리즘 ! 특정 출발지에서 목적지까지 가는 경로 중 최소 비용으로 갈 수 있는 경로를 찾는 것 표기 방법 C(x, y) : x 에서 y 까지 가는데 드는 비..

    Network :: SDN

    Network :: SDN

    SDN Software-Defined Networking Router 의 개수도 많아지고, 단순히 Router 가 Routing 경로를 결정하는 것보다 해야 할 일들이 많아지면서 control plane 에서 정책들을 결정하고 이에 따라 Routing 을 할 수 있도록 만들기 위해 등장 ! control plane 과 data plane 을 나누고 Router 들에게서 정보를 받아서 중앙 집중식으로 table 을 만든 후, (control plane) 다시 Router 들에게 해당 정보를 뿌려서 Routing 할 수 있도록 하는 방식 ! (data plane) Router 들은 각각 CA 라는 control agent 가 있고, 이를 통해서 remote controller (서버) 는 정보를 수집한다. ..