일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 애플 디벨로퍼 아카데미 후기
- react
- StateObject
- 애플 아카데미 후기
- swift문법
- ObservedObject
- apple developer academy 후기
- 치지직
- 애플 디벨로퍼 아카데미 21주차 회고
- 소프트웨어분석및설계
- Swift 기능
- 제앱소
- Swift 디자인패턴
- 네이버 치지직
- SWIFT
- 데이터베이스
- 숭실대
- OS
- useReducer
- 운영체제
- iOS 개발 오류
- ObservableObject
- 네이버 부스트캠프
- global soop
- 애플 디벨로퍼 아카데미
- sqoop
- Swift 문법
- 앱 비교 프로젝트
- 데이터베이스 공부
- Apple Developer Academy @ POSTECH
- Today
- Total
사과하는 제라스
[CS 지식 공부] 공유기의 원리(feat. NAT(Network Address Translation)) 본문
목차
서론
안녕하세요~ 좋은 공유기를 사고싶은 개발자 제라스입니다~!👋🏻🤖👋🏻
여러분은 언제 처음 공유기를 접하게 되셨나용??
저는 중1 때 처음으로 스마트폰을 접했는데 그때 산게 갤럭시 플레이어입니다 ㅎㅎ
지금보니 정말 옛날 기기 같은데 실제로 14년 전 제품이네요...!!(혹시 나도 Old Boy...?)
이때 저는 처음으로 와이파이란 걸 알게 되고 어느 곳이든 와이파이를 연결하려고 애를 썼던 기억이 나네요.
근데 집에서 부모님께서 카톡이나 게임을 많이 할까봐 일부러 공유기를 안놔주셨던...ㅠㅠㅠㅠㅠ
그때부터였어요. 공유기에 집착하기 시작한게 ㅋㅋㅋㅋㅋㅋㅋ
근데 이 공유기가 어떤 원리인지도 모르고 왜 있는지도 모르고 마냥 데이터 무료 생성기 정도로만 생각하고 있었죠.
오늘은 한번 이 공유기에 대해 알아보면서 그 원리를 살펴보겠습니다.
그럼 시작해봅시다~~💨💨
공유기란?
공유기는 여러 대의 컴퓨터가 하나의 인터넷 라인을 공유해서 동시에 인터넷 접근이 가능하게 하는 네트워크 기기입니다.
사실 공유기는 라우터이기도 해요! 우리나라에선 공유기라고 해서 뭔가 Sharer 이런 느낌?이잖아요?
근데 외국에서는 이걸 SOHO Router라고 부른다고 합니다.
즉, 라우터의 소형 버젼인거죠!
공유기의 원리와 역할은 뭔데?
공유기는 WAN(Wide Area Network, 광대역 통신망), 즉, 다른 인터넷들과의 통신망과 LAN(Local Area Network, 근거리 통신망), 즉, 작은 지역에서 서로 연결된 여러 통신 기기들 간의 통신망을 연결하는 기기입니다.
다음 그림을 보시면 대충 위치를 이해하실 수 있습니다.
그럼 공유기의 역할을 한번 살펴볼게요.
우리는 일단 인터넷에서 나에게 부여하는 유일한 주소인 공인 IP(public IP)를 부여받습니다.
근데 이건 되게 제한적이죠? 전세계에 몇 억대의 통신기기가 있을테니까요!
그럼 얘네들한테 어떻게 일일히 다 부여하냐?
이때 등장하는 기술! NAT(Network Address Translation)입니다.
정해진 하나의 공인 IP가 공유기로 들어오면 그걸 공유기는 사설 IP(private IP) 여러개로 나눠요!
이때 사설 IP는 192.168.x.x로 하는게 국룰입니다.(그 외에도 172.x.x.x, 10.x.x.x 등도 있음.) 그 중 공유기는 192.168.0.1을 스스로 갖고 나머지를 나눠줍니다.
이러면 공유기에 연결된 스마트폰, 노트북, 데스크톱 등등이 이렇게 부여받는 사설 IP 중 하나씩을 가집니다.
자 이때 만약 공유기에 연결되어 있는 스마트폰에서 자기 공유기랑 연결된 기기들이 아닌 다른 외부 기기들과 통신을 하려고 합니다.
근데 이 스마트폰은 사설 IP를 갖고 있잖아요? 즉 다른 애들은 모른단 말이에요.
예를 들면, 집에서 부모님은 저를 뽀동이라고 부르시는데 학교수업에서 제가 저를 뽀동이라고 설명하면서 얘기하면 못 알아듣는 꼴과 같습니다.
그래서 이때 공유기는 IP 패킷의 TCP/UDP 포트 번호와 소스, 목적지의 IP 주소 등을 송신하면서 기록해 두고 자신의 공인 IP를 보내줍니다.
즉, 어떤 데이터 통신 요청이 스마트폰 A에서 왔으면 그 스마트폰 A의 사설 IP와 그에 할당된 포트번호를 연결지어서 테이블에 써두고 외부 망에 보낼 땐 공인IP와 포트번호를 함께 패킷에 담아 보내주는 겁니다.
그러면 외부망에선 작업 후 결과물을 공유기에 포트번호가 담긴 패킷으로 보내줄 거고 그것을 공유기는 읽고는 테이블에서 포트번호를 통해 매칭해서 어떤 사설IP를 가진 스마트폰과 연결되었는지 알 수 있죠.
위 그림을 가지고 설명하자면...
외부 망과 통신하기 위해 NAT를 통해 사설IP(10.0.0.1)를 공인IP(150.150.0.1)로 변경을 한 후 데이터 요청을 전송하고 그 결과물을 받아서 공인 IP(150.150.0.1)를 사설 IP(10.0.0.1)로 바꿉니다. 이때 NAT 혹은 NAPT(얘는 간단히 설명하면 NAT에서 조금 더 보완된 형태라고 보시면 됩니다.) 테이블을 참조해서 바꾸는 겁니다. 그래야 정확한 사설 IP로 접근할 수 있죠.
그럼 공유기와 라우터의 차이는?
아까 제가 공유기는 라우터의 소형 버젼이라고 했죠?
실제로 공유기는 라우터에 있는 수많은 기능들 중에서 NAT 기능을 쓱 빼와서 만들었습니다.
그리고 또 다른 큰 차이점으로는 통신 용량 차이가 있어요!
라우터는 한번에 큰 용량을 통신할 수 있지만 공유기에서는 그렇게 하는 순간 집안 전체의 통신이 마비가 될 겁니다.
비유하자면, 우리가 2차선 도로를 달리는데 엄청 커다란 화물차가 두 차선을 모두 차지하고서 달리고 있으니 뒤에 있는 차량들은 막히는 그런 모습과 비슷한 거죠.
'그러면 모두 라우터를 달면 되지 않냐...?'라고 생각하실 수 있는데
비싸요...그냥 개비싸요. 그래서 보통 서버실이나 사용 범위가 좀 큰 곳, 뭐 회사라든지...회사라든지...회사라든지 그런 곳에서 사용을 합니다.
마무리
이렇듯 공유기는 꽤나 우리 주변에서 접하기 쉬운 기기입니다.
하지만 그만큼 보안적인 부분도 중요하고 알아야 할 관련 개념들이 많습니다.
이번에 공부를 해보면서 라우터와 공유기의 차이를 중심으로 살펴도 봤는데 허브, 스위치와의 차이도 꽤 중요하거든요?
근데 와...이 영상 기깔납니다. 한번 보시면 후회 절대 안하십니다ㅋㅋㅋㅋㅋㅋㅋ 강추 그 잡채...
그럼 오늘도 끝까지 읽어주셔서 감사드리고 조만간 좋은 공유기 장만하시길 바랍니다 ㅎㅎㅎ
다음에 더 좋은 포스팅으로 돌아오겠습니다. 행복하세요~~
참고
https://ggangtalife.tistory.com/13
https://sete3683.tistory.com/77
https://enlqn1010.tistory.com/9
https://blog.naver.com/reductionist101/221468851236
https://code-lab1.tistory.com/320
https://blog.voidmainvoid.net/319
아직 꼬꼬마 개발자입니다.
더 나은 설명이나 코드가 있다면 언제든 환영입니다.
적극적인 조언과 피드백 부탁드립니다!
그럼 오늘도 개발 가득한 하루되세요!
- Xerath -
🤖🤖🤖🤖🤖🤖🤖
'CS 지식 공부' 카테고리의 다른 글
[CS 지식 공부] POP와 OOP의 차이에 관하여 (1) | 2024.04.01 |
---|---|
[CS 지식 공부] Virtual Memory란? (1) | 2024.02.09 |
[CS 지식 공부] PNG와 JPG의 차이는 무엇일까?(feat. JPEG) (0) | 2024.01.18 |
[CS 지식 공부] 그쪽도 라이브러리와 프레임워크의 차이를 아세요?(feat. API) (1) | 2023.12.26 |