일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 풀이
- architecture
- 취약점
- DOCKER-USER
- cbpf
- edge trigger
- NAPT
- Compiler
- level trigger
- .net core 7
- C언어
- wrefresh
- LOB
- rfc5508
- packet flow
- doupdate
- ncurses
- REDIS
- ioctl
- .nret core 배포
- wnourefresh
- epoll_wait
- epoll
- mvwin
- vtable
- BOF
- Docker
- iptables
- packet filter
- 어셈블리어
- Today
- Total
목록Network (5)
Tuuna Computer Science
Nginx Event Loop Architecture 개론 nginx 이전의 웹서버들은 클라이언트의 접속에 대해 procss or thread를 생성하여 대처했다. 하지만 nginx는 epoll event driven을 통해서 한 스레드 내에서 여러 클라이언트의 접속을 처리하는 구조를 지닌다. nginx의 내부구조는 공식자료로서 설명이 훌륭하지만 아래의 궁금증을 해결해주진 않는다. **nginx은 어떤식으로 이벤트루프를 구성했을까** 이러한 궁금증을 해결하기 위해서는 nginx source code를 직접적으로 봐야만 해결할 수 있기에 분석을 시도했다. 아래 nginx 공식 개발 문서이다. nginx에서 사용된 함수, 구조에 대해서 자세히 설명이 되어있음. 추가) http://nginx.org/en/do..
패킷이 USERSPACE로 전송되는 과정 개론 netfilter hook에 대해서 살펴보는중 어쩌다보니 잠시 커널 소스를 조금 보게 되었는데 어쩌다보니 패킷이 네트워크 인터페이스에 도착해서 관련함수들을 콜하고 그 후 ip_rcv함수를 콜하는 것부터 udp_rcv, tcp_v4_rcv 함수를 콜하는 과정을 보게 되었는데 정리할겸 포스팅 (문서 참조 없이 커널 소스만 보면서 정리한것이기에 틀린것이 있을 수 있음) Netfilter Hook Netfilter Hook에는 주로 5가지의 Hook Point가 존재한다. NF_INET_PRE_ROUTING NF_INET_LOCAL_IN NF_INET_FORWARD NF_INET_PORT_ROUTING NF_INET_LOCAL_OUT 우리는 패킷이 로컬 호스트의 응..
BPF는 무엇인가 개론 네트워크 패킷 모니터링을 하기 위해서는 네트워크 인터페이스에서 들어오는 패킷을 사용자가 원하는 패킷만 필터링하고 나머지 패킷은 Reject하여 Accept되는 패킷만을 Userspace의 Application으로 패킷을 복사해주는 개념이다. 기존의 Unix Packet Filter 시스템은 CSPF(CMU/Stanform Packet Filter) 모델을 사용했었다. 하지만 CSPF는 메모리 스택기반의 Tree 모델을 사용했기 때문에 CPU와 메모리간의 병목현상이 자주 발생하는 성능적인 이슈와 중복파싱에 대한 이슈이 존재했었다. 위의 단점들을 극복하고 나온것이 BPF(BSD Packet Filter)이다. 초기 BPF는 Tcpdump에 주로 쓰였으나 오늘날 리눅스의 여러분야에서도 ..
epoll사용시 Edge-Trigger를 사용하려면 Socket은 Non-Blocking모드를 사용하는것을 권장 man페이지에 의하면 Edge-Trigger모드의 경우 알림이 한번 오기때문에 이때 해당 디스크립터를 처리해야하는데 블로킹될 수 있는 우려가 있음 https://stackoverflow.com/questions/26269448/why-is-non-blocking-sockets-recommended-in-epoll
우리가 흔히 사용하고 있는 NAT(Network Address Translator ) 또는 NAPT(Network Address Translator)의 기본적인 매커니즘음 "인터넷의 다른 부분에서 동일 집합의 IP주소를 재사용하는 것을 허용하는 것이다. " 차후 언급할 NAT는 NAT와 NAPT를 통용하는 말이다. 즉, NAT를 사용하면 IPv4의 주소 고갈문제를 임시적으로 해결할 수 있는 대비책이다. NAT로 구성되어 있는 하나의 네트워크는 하나의 Public IP를 부여받고 내부에 Private IP를 부여하는 식으로 하나의 IP로 다수의 호스트를 구성할 수 있음을 의미한다. 기본적인 동작과정으로는 20.20.20.20을 가진 Public IP를 Router겸을 하는 NAT에 부여되고 192.168...