티스토리 뷰
네트워크란? - 전선이나 혈관, 통로 등으로 이루어진 망형 조직
-> 컴퓨터와 컴퓨터를 연결해주는 망
네트워크를 구축하기 위해서는 프로토콜이라는 규격이 필요하다 - 대표적으로 TCP/IP
# TCP/IP란?
- 컴퓨터 간에 통신할 수 있도록 만든 프로토콜 중의 하나. 인터넷에서 사용되는 각종 프로토콜을 모아 일컫는 말.
(TCP와 IP 단 두개의 프로토콜을 의미하는 것이 아님.!!!)
- 과거의 OSI 7계층에서 유래한 것으로 4계층으로 더 간소화된 구조.
- 하드웨어, 운영체제, 접속 매체와 관계없이 동작할 수 없는 개방형 구조
1. Network Access Layer (네트워크 연결 계층) <-> (OSI: Physical + Data-link Layer)
- 물리적인 주소로 MAC주소 사용
▶Physical Layer
- 디지털 신호를 아날로그 신호로 변환(Encoding)
- 아날로그 신호를 디지털 신호로 변환(Decoding)
- 물리적으로 연결된 두대의 컴퓨터가 0과 1의 bitStream을 서로 주고받을 수 있게끔 하는 역할
▶Data-link Layer
- Framing 담당. 데이터 양끝에 데이터의 시작과 끝을 알 수 있는 비트를 씌운다
- 오류 제어, 흐름 제어 담당
2. Internet Layer (인터넷 계층) <-> (OSI: Network Layer)
- 같은 네트워크에 있는 여러대의 컴퓨터들이 데이터를 주고받기 위해 필요한 모듈
- TCP 세그먼트와 IP주소를 묶어 ★패킷★을 만든다.
- IP 프로토콜이 대표적으로 사용됨
- inter-network 속에서 어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위한 길찾기(라우팅) + 포워딩
- OS 커널상 SW로 구현
+) IP 패킷에는 유통기한이 있다 (TTL: Time to Live)
+) 인터넷 계층에서 사용되는 장비만 IP주소가 존재한다
+) 라우팅을 담당하는 라우터는 연결되어있는 네트워크 개수만큼 IP주소를 갖는다
+) inter-과 intra-의 차이?
inter: 어떤 것과 다른 것의 상호관계 - 인터넷
intra: 어떤 것의 안, 일정한 범위 - 인트라넷
3. Transport Layer (전송 계층)
- 포트 번호를 붙여 어느 프로세스에 데이터를 줄지 알게해준다
- TCP, UDP 등의 프로토콜이 대표적으로 사용됨.
- TCP 프로토콜이 TCP 헤더(포트번호, 컨트롤 비트 등을 포함)와 데이터를 묶어 세그먼트를 만든다.
▶ TCP는 데이터의 정확한 전달을 중시. (3-way hand shake 과정, 에러 시 재전송 요청, 신중파)
- TCP는 클라이언트 측 버퍼가 가득차면 전송을 멈추고 버퍼가 빌때까지 대기한다
+) 3 way hand shake 과정??
PC: 서버님 한판해요 (1) ->>
Server: 알겠어요 ㅇㅇ (2) <<-
PC: 수신완료 ㅇㅇ (3) ->> (실제로는 더 복잡하다)
▶UDP는 데이터의 빠른 전송속도를 중시. (제대로 오든 말든 무시하고 계속 보내기, 개썅 마이웨이 - VoIP, 스트리밍)
- UDP는 다른 처리 없이 전송만 한다. 버퍼에 데이터가 넘쳐도 무시.
- 최근에는 UDP가 더 각광받고 있다고 어디서 들은 것 같다. TCP는 한계가 있다나 뭐라나,, 어디서 들은거지??
+)클라이언트가 사용하는 포트는 그때그때 다르다 (0번부터 65535번까지 있음, 파트별로 영역 구분됨)
4. Application Layer (응용 계층) <-> (OSI: Session + Presentation + Application Layer)
- 서비스의 종류나 동작방식 등을 결정하는 중요한 계층
- HTTP, SSL, FTP 등의 네트워크 프로토콜로 구성.
- PC와 웹서버는 HTTP 프로토콜으로 통신한다
+) HTTP는 원래 통신시 정보를 한번만 주고받은 다음에 통신을 끊어버린다 - 상태 정보를 저장하지 않음
-> Stateless 방식, 무상태 프로토콜.
+) 그럼 웹사이트는 어떻게 내 정보를 기억하고 있나요? ==> "쿠키"
쿠키는 세션을 유지하는데 사용된다. - 여러 건의 요청처리를 동일한 사용자 세션으로 인식할 수 있도록 도와줌
- 쿠키는 세션 ID 등 식별정보만 저장하도록 제한함. - 보안 이슈가 있을 수 있기 때문
생각보다 더 빡세다;;
# IP 주소란?
IP주소는 TCP/IP로 연결된 네트워크에서 각각의 컴퓨터를 구분하려고 사용하는 고유 주소.
- IP주소는 네트워크부와 호스트부로 구분된다.
- 동일 네트워크에 있다면 네트워크부는 동일해야 하고, 호스트부는 달라야 함.
-> 네트워크부가 다른 IP끼리는 라우터같은 장비가 있어야 서로 연결이 가능.
어디까지가 네트워크부이고 어디까지가 호스트부인지 구분하기 위해 => "어드레스 클래스" 로 구분
A Class: 0.0.0.0 ~ 127.255.255.255 --> 2진법으로 보면 0으로 시작
- 네트워크 범위: 0xxx xxxx = 2^8 = 128개
- 호스트 범위: 2^24 - 2 = 개많음, 뒤의 세자리
B Class: 128.0.0.0 ~ 191.255.255.255 --> 2진법으로 보면 10으로 시작 (1000 0000)
- 네트워크 범위: 10xx xxxx xxxx xxxx = 2^14개
- 호스트 범위: 2^16 - 2개 = 많음, 뒤의 두자리
C Class: 192.0.0.0 ~ 223.255.255.255 --> 2진법으로 보면 110으로 시작 (1100 0000)
- 네트워크 범위: 110x xxxx xxxx xxxx xxxx xxxx = 2^21개
- 호스트 범위: 2^8 - 2 = 62개. 뒤의 한자리
ex) 192.168.0.4
- 네트워크 부분: 192.168.0
- 호스트 부분: 4
(호스트 범위에서 -2를 하는 이유는 네트워크, 브로드캐스트 주소를 제외하기 때문)
- 네트워크 주소: 모두 0인 경우 / ex) 13.0.0.0
- 브로드캐스트 주소: 모두 1인 경우 / ex) 127.255.255.255
머하는 역할인지는 잘 모르겠다
# 서브넷 마스크는 뭐죠?
서브네팅이란 네트워크를 세분화하여 서브 네트워크를 구성하는 방법
> 네트워크 부의 길이를 유연하게 늘릴 수 있다
IP주소는 결국 자원의 한계가 존재한다. 따라서 네트워크를 구성할 떄 빈공간이 최대한 없도록 알뜰하게 써야한다
> 그런데 호스트부의 길이가 불필요하게 길면? 같은 네트워크 상에 PC는 몇대 없는데 할당만 무식하게 크게 해놓게 되니 결국 쓰지도 않는 빈공간이 많이 생기게 된다. 또한 너무 큰 브로드캐스트 도메인(하나의 네트워크)은 네트워크 환경에서 패킷전송을 느리게 하고 성능 저하를 유발한다.
따라서 이를 방지하기 위해 네트워크부의 길이를 조절하여 하나의 네트워크를 작은 여러개의 네트워크로 쪼개고, 속도 향상 및 자원의 효율적인 사용을 도모하기 위해 서브넷 마스크 기법을 사용하게 된다.
서브넷 마스크에서 핵심: 1이 연속으로 이어져 있어야 한다
1111 1111 . 1111 1111 . 1111 1111 . 0000 0000 ==> 255.255.255.0 - 되게 많이 본 주소!
192.168.0.3/24 란? => 1이 24개 이어져있는 255.255.255.0 서브넷 마스크가 씌워져 있다는 뜻.
-> 1은 네트워크 영역으로 사용하겠다는 뜻이고 0 부분만 호스트 IP로 사용하겠다는 뜻.
-> 따라서 동일한 네트워크 하나에 총 2^8 - 2 = 256대의 장비를 연결 가능
그럼 192.168.0.3/26은?
-> 4개의 서브 네트워크를 생성하고 각각의 네트워크는 2^6 - 2 = 62대의 장비를 연결할 수 있다는 의미!!!
-> 그러므로 남는 IP주소가 적게끔 알뜰살뜰하게 쓸 수가 있다!!
1줄요약: 서브넷 마스크로 네트워크 영역을 늘리고 호스트 영역을 줄이겠다는 뜻
+) C 클래스를 그대로 사용한다는 것은 255.255.255.0 의 서브넷 마스크를 기본으로 사용하는 것과 동일하다.
- 서브넷 마스크를 씌우나 안씌우나 호스트/네트워크 영역 길이차이가 없기 때문.
+) B 클래스에 255.255.255.0 서브넷 마스크를 씌운다는 것은 B클래스를 C클래스의 주소처럼 사용하겠다는 것과 동일하다.
+) 서브넷 네트워크간 통신을 하기 위해서는 라우터가 필요하다
# 그럼 사설IP, 공용IP는 뭐죠?
▶ 사설 IP (Private IP Address)
- 인터넷이나 다른 네트워크에 연결되지 않음
- 와이파이 공유기가 공인IP 하나를 받아와서 집안에 여러 장비들이 연결할 수 있도록 사설IP를 뿌려준다
- 192.168.0.1 이런 IP 받아서 쓰고 있는게 사설IP,,
- 다른 네트워크에서 사용중인 주소를 사용해도 별 문제 없다
- 변환 라우터가 사설IP / 공용 IP를 둘다 가지고 있어서 가능
▶ 공용 IP (Public IP Address)
- 공용 IP는 절대 중복되어서는 안된다. 공인 기관에서 관리함
예전부터 궁금했던게 다른 사람의 IP를 알아내서 내가 IP를 수정해서 서로 주소가 겹치게 만들면 다른 사람의 인터넷 접속이 안되게 할 수 있을까 하는 것이었다.
방화벽이나 NAC 등으로 고의적인 충돌을 방지할 수 있는 것 같다.
+) Loopback Address = 127.0.0.1 (자기 자신을 의미)
# 진짜 마지막, DHCP란?
DHCP(Dynamic Host Configuration Protocol), IP주소를 자동으로 관리해주는 기능
1) 신규 유저가 네트워크에 추가
2) 브로드캐스트 방식으로 DHCP 발견 패킷을 전체에 뿌린다
3) DHCP 서버가 신규유저를 발견하고 IP주소 정보를 브로드캐스트 방식으로 전체에 뿌린다
4) 관련없는 유저는 해당 패킷을 버리고, 신규 유저는 해당 패킷을 받아 네트워크에 연결 완료.
생각보다 정리하는데 엄청 오래걸렸다!
매일 할 수 있을지 모르겠다;;
'웹' 카테고리의 다른 글
HTTP 박살내기 프로젝트 - 5 | 웹서버, 프록시, CDN (0) | 2021.09.20 |
---|---|
HTTP 박살내기 프로젝트 - 4 | TCP 커넥션 (0) | 2021.09.19 |
HTTP 박살내기 프로젝트 - 3 | HTTP 헤더 (0) | 2021.09.16 |
HTTP 박살내기 프로젝트 - 2 | HTTP 메시지 (0) | 2021.09.14 |
HTTP 박살내기 프로젝트 - 1 | 기본 개념잡기 (0) | 2021.09.14 |