전체 글 93

Wifi Network - IEEE 802.1X Authentication process

오늘은 지난 10월에 세미나를 통해 학습했던 내용 중 WIFI WPA2/3 의 인증 과정 중 하나인 IEEE 802.1X의 패킷 분석 내용에 대해 설명하려고 한다.   802.1X Authentication Protocol   먼저 802.1X란 WIFI의 수많은 통신 프로토콜인 802.11x와 매우 유사한 이름을 가지고 있지만, 그 특성 자체는 전혀 다른 종류의 프로토콜이다. 이 프로토콜은 WPA2 이후의 암호화 방식에서 Enterprise 모드의 더 고급화된 암호화 방식을 추가하기 위해 생겨난 방식이다. web에서 TLS를 활용하여 HTTPS로 통신 패킷을 보안하듯이 이 보안 방식 또한 TLS 터널링이라는 과정을 포함하여 패킷을 보안하여, 이후 암호화 과정에서 통신을 수행할 때 사용하는 Key를 안전..

모바일 2024.11.10

WiFi Enable process 분석 - Wifi Scanning (3)

블챌 3일차! 오늘은 어제 분석해보았던 WifiScan 요청의 시작의 흐름을 이어서 Wifi 탐색 요청을 어떻게 수행하는지그리고 주변 Wifi AP를 탐색한 결과를 Android Framework가 어떻게 받아오는지를 알아보자.     WifiManager.startScan() - Scan 요청의 시작  지난 포스팅에서 마지막으로 WifiManager의 startScan()으로 Wifi의 스캔 요청을 수행한다고 설명했다. 그리고 Android Framework에서는 사용자 측면에서 기기의 설정을 제어하기 위해 Manager를 사용하는데이는 권한문제때문에 Service 클래스와 격리되어있다. 그래서 Manager는 사용자 측면에서 요청을 대리로 수행하고, 권한이 필요한 내부 동작은 Manager가 Serv..

카테고리 없음 2024.11.09

WiFi Enable process 분석 - Wifi Scanning (2)

오블완 챌린지 2일차! 언제까지 유지되나 함 보자 싶지만,오늘까지는 일단써보자 (대충 내일 일기 쓸 궁리중) 오늘은 어제 리뷰한 State Machine을 사용해서 Wifi가 연결하기 위해 주변 AP를 Scanning하는 코드를 분석하겠다. 하면서 항상 느끼지만 나처럼 이런 내용을 분석해주는 사람이 단 한명도 없어서 골머리를 앓고 있는데누가 나대신 분석해서 이렇게 친절히 정리좀 해줬으면 좋겠음.    Wifi Scanning   Wifi Scanning을 하기 위해 이전 Wifi 버튼을 ON해서 따라오던 흐름으로 돌아가보자. WIFI_TOGGLED 명령어를 전달하여 Controller의 StateMachine에 전달되는데,이때 WifiController의 State가 당연히 아직 Wifi가 꺼져있었기 때..

모바일 2024.11.08

WiFi Enable process 분석 - StateMachine이란 ? (1)

나는 디바이스 제조 기업에서 무선통신 기능을 구현하는 Wireless team Engineer로 근무중이다.티스토리 블챌이 시작되서 참여하는김에 안드로이드 프레임워크의 Wifi 기능 코드를 분석한 내용을 리뷰하겠다.코드 분석한 내용은 'WiFi를 사용자가 켰을때 어떤 동작이 수행되는가'로 초점하였다.사용자가 Wifi를 켜는 순간 실행되는 코드  Wifi의 toggle이 onClick 이벤트를 발생시켜 STATE_ENABLE 상태로 전환된다. 그리고 Android의 wifiManager를 통해 setWifiEnabled가 실행된다.   WifiManager는 Binder를 통해 곧장 Framework layer의 WifiServiceImpl과 연결되어 있다. 이 연결 과정은 총 두가지인데, Manager ..

모바일 2024.11.07

[Gitistory] github에서 로컬 서버로 요청 연동하기 (feat. Github Webhook)

오늘은 블로그에 포스팅하도록 Google Chrome driver 코드를 짰기 때문에 이제 Gitistory 프로젝트의 두번째 목적인 github의 레포지토리의 PR이 올라오는 순간 해당 코드를 작동시키도록 Github와 코드를 연동하는 것을 진행했다. 원래는 EC2 인스턴스를 통해서 24시간 코드를 돌리려 했는데, 인스턴스의 메모리가 너무 작아서flask의 가상 환경이 memory를 가득 잡아먹는 탓인지 CPU가 메모리 가상화하는데 점유를 다해서 문제가 발생했다. 이 문제는 docker로 구워서 가동시키면 해결 될 수도 있을 것 같은데 flask를 docker로 구워서 실행시키는 것보다 일단 로컬에서 코드를 다 짜고 해당 방법으로 조금 개선하도록 프로젝트를 진행하려 한다..  웹 상의 github we..

프로그래밍 2024.08.02

[Backend-RoadMap] HTTP에 대한 모든 것 - (2)

지난 포스팅에서는 HTTP의 기초 개념과 초기 버전에 대해서 학습한 뒤 정리해보았다.  이번 포스팅은 HTTP/1.0 버전보다 개선되어 출시된 1.1버전과 2.0 버전 및 HTTP에 대한 새로운 시도에 대해 알아보며 새롭게 확장된 HTTP의 변화를 통해 호스트들에게 어떤 것이 가능해졌는지 공부해 보도록 할 것이다.  HTTP/1.11.0이 출시된지 3년만인 199년에 1.1이 출시되었고, 1.0 버전에 비해 많은 개선이 이루어졌다. 주요 개선 사항을 알아보자.   1. PUT, PATCH, OPTIONS, DELETE가 HTTP 메서드에 새롭게 추가된다.   2. 필수가 아니었던 호스트 식별 헤더가 필수로 변경된다.   3. 한 요청당 하나의 연결이 필요했던 문제를 해결하기 위해 지속적 연결(Persis..

프로그래밍 2024.08.01

[Backend-RoadMap] HTTP에 대한 모든 것 - (1)

Backend 개발자의 커리어를 체계적으로 쌓아가기 위해 백엔드라면 당연히 알아야 할 지식에 대해 차곡차곡 학습하려 한다. 오늘은 HTTP에 대해 학습한 것에 대한 포스팅을 작성하겠다. HTTP란?HTTP는 클라이언트와 서버가 서로 통신하는 방식을 표준화하는 TCP/IP 기반 어플리케이션 계층 통신 프로토콜이다. HTTP는 콘텐츠가 인터넷을 통해 요청되고 전송되는 방식을 정의한다.  이때, 어플리케이션 계층 프로토콜이란? 호스트(클라이언트와 서버. 즉 통신 송/수신 주체)가 통신하는 방식을 표준화하는 단순한 추상화 계층을 의미한다. HTTP 자체는 클라이언트와 서버 간의 요청과 응답을 얻기 위해 TCP/IP에 의존한다. 기본적으로 TCP 포트 80번을 사용되고, HTTPS는 443번 포트를 사용한다.  ..

프로그래밍 2024.07.31