일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- TCP
- Clean code
- float
- 사설 IP
- ack
- 리펙토링
- osi 7
- refactoring
- 공인 IP
- floating point
- page
- network
- L3 Router
- 명령어
- CPU
- 가독성
- Code complete
- register
- ALU
- Public IP
- private ip
- L2 switch
- addressing mode
- MMU
- physical address
- 클린 코드
- 코드 컴플릿
- cache
- interrupt
- Sector
- Today
- Total
목록전체 글 (94)
Software Lab

방화벽, 공유기, 라우터 같은 많은 네트워크 제품들은 리눅스 커널의 넷 필터 프레임워크를 사용하여 개발한다. 다음 그림은 넷 필터 구조이다. 커널에 패킷이 들어오고 나가는 과정에서 5개(Prerouting, Input, Forward, Output, Postrouting) 의 후킹 지점을 거치게 된다. 이들 각각의 후킹 지점에는 룰들을 추가 할 수 있는 테이블이 있다. 그 룰들에 따라 패킷을 제어할 수 있다. 클라이언트, 서버 같은 호스트들의 패킷은 수신될 때 Prerouting, Input을 거쳐서 User 영역으로 올라간다. 반대로 패킷이 송신될 때는 User 영역에서 Output, Postrouting을 거쳐서 나가게 된다. 방화벽 같은 네트워크 장비에서는 패킷이 수신되면 Prerouting, Fo..

방화벽에는 패킷 필터(Packet Filter), IPS(Intrusion Prevention System)/IDS(Intrusion Detection System), WAF(Web Application Firewall) 등 여러 종류가 있다. 그중에서 가장 기본은 패킷 필터에 대해서 알아보자. 패킷 필터는 패킷에서 3, 4계층의 값에 따라 통과, 차단 등의 제어를 할 수 있다. 방화벽을 주로 사용하는 곳 중에는 은행이 있다. 아래와 같이 은행의 네트워크가 구성되어 있다. 중간에 패킷 필터 할 수 있는 방화벽 장비가 설치되어 있는것을 볼 수 있다. 방화벽 기능만 하는 제품이 있기보다는 L3 라우터에 패킷 필터 방화벽 기능이 포함된 제품들이 많다. Main Office : 은행 본점 사무실 네트워크이다. ..

공유기는 패킷의 3, 4계층의 주소를 변환하는 것이 핵심 기술이다. 사설 IP의 호스트(그림에서는 스마트폰)에서 패킷을 생성한다. 패킷이 공유기를 통과해 WAN으로 나가면서 3계층 출발 주소는 사설 IP였다가 공인 IP로 변환된다. 4계층 출발 주소는 아직 사용되지 않은 Port로 보통은 랜덤으로 찾아 변환된다. 그리고 그 변환된 3, 4계층 주소는 공유기 내부의 Nat table에 등록된다. 응답 패킷이 공유기로 다시 들어 올 때에는 3, 4계층의 도착 주소를 Nat table에 찾아 원래의 사설 IP와 Port로 변환한다. 공유기를 사용하게 되면 한 가지 제약이 생긴다. 사설 IP의 호스트들이 생성한 패킷이 먼저 WAN으로 나가야 한다. 그래야 3, 4계층의 출발 주소가 Nat table에 등록되고,..

공유기 내부에는 L2 스위치와 NAPT(Network Address Port Translation) 기술이 들어가 있다. L2 스위치에 연결된 호스트들의 영역은 하나의 LAN(Local Area Network)이다. 그리고 각각의 호스트들은 사설 IP를 가지게 된다. 그림에서 1.1.1.12, 1.1.1.10, 1.1.1.1 이 사설 IP이다. 그중에서 1.1.1.1은 GateWay가 된다. 그리고 GateWay를 넘어가는 것은 곧 WAN(Wide Area Network)이다. NATP는 GateWay와 연결되어 있다. 반대쪽은 공인 IP 10.10.10.10 으로 인터넷과 연결되어 있다. WAN으로 패킷이 나갈 때 NAPT 기술을 통과한다. 반대로 들어 올 때도 NATP 기술을 통과한다. NAPT는 패..

공유기는 주로 가정집에서 많이 사용한다. 인터넷 서비스에 가입하면 보통 한 개의 IP를 받게 된다. 하지만 요즘 가정집에서 인터넷 접속이 필요한 호스트는 스마트폰, IPTV, 노트북 등 여러 개이다. 공유기(Broadband Router)는 여러 호스트가 한 개의 IP를 공유하여 인터넷에 접속하게 해주는 장비이다. 그림에서 보면 인터넷 서비스에 가입해서 받은 IP 10.10.10.10 이 있다. 이것을 공인 IP(Public IP)라고 한다. 그리고 공유기에 연결된 스마트폰, IPTV, 데스크톱은 각각 1.1.1.12, 1.1.1.11, 1.1.1.10의 IP를 사용한다. 이것을 사설 IP(Private IP)라고 한다. 1.1.1.1은 호스트들의 GateWay가 된다. 이것 역시 사설 IP이다. 아래는..

TCP에서 접속 해제 과정을 4-Way Handshaking이라고 한다. 그렇다면 접속 해제 과정은 왜 필요한가? 신뢰성 있는 통신을 위해 생성된 커널 내부의 송수신 버퍼와 필요한 여러 변수가 더 이상 필요가 없다. 접속 해제 한다는 것은 결국 그것들을 메모리에서 해제하는 것을 의미한다. 서버나 클라이언트 상관없이 아무나 먼저 접속 해제를 시도 할 수 있다. 접속 해제를 먼저 시도하려는 송신 호스트는 소켓의 close 함수를 호출한다. 그러면 FIN 패킷이 간다. FIN은 접속 해제를 시도한다는 의미이다. 이것을 받은 수신 호스트는 그 응답으로 ACK 패킷을 보낸다. 그리고 곧이어 FIN 패킷을 보낸다. TCP는 양방향 통신이므로 서로 간에 접속이 된 상태이다. 그래서 접속도 서로 해제해야 하므로 상대방..

TCP에서 접속하는 과정을 3-Way Handshaking이라고 한다. 그렇다면 접속은 왜 필요한가? TCP의 신뢰성 있는 통신을 하기 위해서다. 그러기 위해서는 흐름제어, 혼잡제어, 오류제어를 해야 한다. 이러한 제어들을 하려면 커널 내부에는 송수신 버퍼와 필요한 여러 변수가 생성되어야 한다. 결국 "접속이 되었다"라는 의미는 "커널 내부에 송수신 버퍼와 필요한 여러 변수의 생성이 완료되어 본격적으로 신뢰성 통신을 할수 있게 되었다"라는 것이 된다. 반면에 UDP는 비 신뢰성 통신이다. 그래서 별다른 제어가 필요 없기 때문에 접속이란 과정이 없다. 그림에서 왼쪽 호스트가 오른쪽 호스트로 접속을 시도한다. 접속을 시도하는 쪽이 클라이언트(Client)가 되고 받는 쪽이 서버(Server)가 된다. 클라이..

왼쪽 송신 호스트에서 오른쪽 수신 호스트로 패킷 전송할 때 커널 내부는 어떻게 동작하는지 알아보자. User 영역에서는 5계층 이상의 데이터를 만든다. 이렇게 만든 데이터는 소켓의 Send API를 호출하여 커널 영역으로 넘어간다. 커널 내부에는 큐 구조의 송수신 버퍼가 있는데 연결된 Port 별로 있다. 데이터는 해당 Port의 송신 버퍼로 들어간다. 그리고 MSS(Maximum Transmission Unit) 단위(그림에서는 1000byte) 만큼 잘라서 패킷을 만든다. 커널에서는 2~4계층의 헤더를 차례대로 붙인다. Port, Sequence, Length 등의 4계층 헤더, IP 등의 3계층 헤더, MAC 등의 2계층 헤더를 각각 붙인다. 다음으로 1계층의 NIC(Network Interface..